Cisco IOS Telnet / SSH 認証設定 VTYライン セキュリティ

CiscoルータやスイッチにTelnet接続した際、ユーザ名とパスワードを入力させたい場面があります。初期状態ではVTYラインにパスワードのみ設定されていることが多く、ユーザ名認証が行われないケースがあります。

この記事では、Cisco機器でTelnet接続時にユーザ名とパスワードを要求する設定方法・ログイン後の権限(privilege)制御・enableパスワード設定、そして実務では必須となるSSHへの移行方法まで体系的に解説します。

👷 現場での体験談

引き継いだ環境で、スイッチへのTelnet接続にユーザ名が不要な状態になっていたことがありました。loginだけ設定されており、VTYパスワードを知っていれば誰でも入れる状態でした。

セキュリティ監査で「誰がいつログインしたか追跡できない」と指摘され、login localへの変更とSSH移行を対応しました。ユーザ名認証にするだけで、ログに誰がアクセスしたかが記録されるようになり、管理性が大幅に向上しました。

🚨 Telnetは本番環境では非推奨 Telnetは通信内容が平文(暗号化なし)でネットワーク上を流れます。パスワードを含むすべての操作内容が盗聴可能なため、本番環境ではSSHを使用してください。この記事ではTelnetの設定方法を説明しますが、最終的にはSSHへ移行することを強く推奨します。
Telnetユーザ認証構成図
Telnetユーザ認証:login local設定でユーザ名/パスワードによる個別認証を実現
Telnetユーザ認証構成図
Telnetユーザ認証:login local設定でユーザ名/パスワードによる個別認証を実現

VTYラインの認証方式と違い

Cisco IOSでは、VTYラインへの認証方式は3種類あります。設定方法によって、ログイン時の動作が大きく変わります。

設定コマンド認証方式ユーザ名要求推奨度
no login認証なしなし(誰でも入れる)本番NG
loginVTYパスワード認証パスワードのみ最低限
login localローカルユーザ認証ユーザ名+パスワード推奨

login localを設定すると、機器内に登録されたローカルユーザで認証を行います。誰がログインしたかがログに残り、権限レベルもユーザごとに制御できるため、loginより大幅にセキュリティが向上します。

Telnetログインでユーザ名とパスワードを要求する設定

設定コマンド全体(コピペ用)

Router# configure terminal

! ローカルユーザを作成(特権レベル15=enable相当)
Router(config)# username admin privilege 15 secret Cisco123

! VTYラインの設定
Router(config)# line vty 0 4
Router(config-line)# login local
Router(config-line)# transport input telnet

Router(config-line)# end

! 設定を保存
Router# copy running-config startup-config

各コマンドの詳細解説

① ローカルユーザの作成

username admin privilege 15 secret Cisco123
キーワード意味
username adminユーザ名「admin」を作成
privilege 15特権レベル15(最高権限)を付与。ログイン後すぐにRouter#(enable状態)になる
secret Cisco123パスワードをType 5(MD5)で暗号化して保存。passwordとの違い:passwordは弱い暗号化(Type 7)のため必ずsecretを使うこと

② VTYラインの設定

line vty 0 4
 login local
 transport input telnet
コマンド意味
line vty 0 45本の仮想端末ライン(0〜4)を設定対象にする。同時接続5セッションまで許可
login localローカルユーザデータベース(usernameコマンドで登録したユーザ)で認証する
transport input telnetTelnet接続のみ受け付ける。両方許可するにはtransport input telnet sshと指定する

Telnet接続時の動作確認

設定後にTelnet接続すると、ユーザ名とパスワードが要求されます。

Trying 192.168.100.1 ... Open

User Access Verification

Username: admin
Password: ********

Router#     ← privilege 15のため即時enable状態

privilegeレベルと権限制御

Cisco IOSではprivilegeレベル(0〜15)でユーザの権限を細かく制御できます。実務では主にレベル1・15が使われます。

privilegeレベルログイン後の状態利用シーン
0最小権限(logout等のみ)通常使わない
1(デフォルト)Router>(ユーザモード)参照のみの監視担当者など
2〜14カスタム権限(個別コマンドを割当可能)特定操作のみ許可したい場合
15Router#(特権モード)管理者・ネットワークエンジニア

privilege 1(ユーザモード)でログインする設定

ログイン後すぐに特権モードに入らせたくない場合は、ユーザ権限をprivilege 1にします。監視担当者など「show系コマンドのみ実行できればよい」ユーザに適しています。

! privilege 1ユーザを作成
Router(config)# username user1 privilege 1 secret Password123

! enableパスワードの設定(特権モード昇格用)
Router(config)# enable secret EnablePassword

privilege 1でログインすると以下の状態になります。

User Access Verification

Username: user1
Password: ********

Router>         ← ユーザモード(設定変更不可)

Router> enable  ← 特権モードへ昇格
Password: ****
Router#         ← 特権モード
⚠ enable secretは必ず設定すること privilege 1ユーザの運用では、特権モードへの昇格にenable secretが必要です。enable secretが未設定だとenableコマンドを実行してもパスワードなしで特権モードに入れてしまうため、必ず設定してください。またenable passwordよりもenable secretを使ってください(secretは暗号化強度が高い)。
図1:privilegeレベル別のアクセス権限と推奨セキュリティ設定

設定の確認方法

設定後は以下のコマンドで意図した通りに設定されているか確認します。

ローカルユーザの確認

Router# show running-config | include username
username admin privilege 15 secret 5 $1$XXXX$...  ← 暗号化されて表示される
username user1 privilege 1 secret 5 $1$YYYY$...

VTYライン設定の確認

Router# show running-config | section vty
line vty 0 4
 login local
 transport input telnet

現在のVTY接続セッション確認

Router# show users
    Line       User       Host(s)              Idle       Location
*  1 vty 0     admin      idle                 00:00:00   192.168.100.50
   2 vty 1     user1      idle                 00:05:32   192.168.100.51

show usersで現在接続しているユーザとIPアドレスが確認できます。login local設定後はユーザ名が表示されるため、誰がログインしているかの把握が容易になります。

本番環境ではSSHへ移行する

Telnetはパスワードを含む通信内容が平文でネットワーク上を流れます。セキュリティの観点から、本番環境ではSSHを使用することが必須です。SSHでは通信全体が暗号化されるため、パスワードが盗聴されるリスクを排除できます。

図2:TelnetとSSHのセキュリティ・機能比較

SSH設定の全手順

Router# configure terminal

! ① ホスト名を設定(必須:RSA鍵生成に必要)
Router(config)# hostname Router01

! ② ドメイン名を設定(必須:RSA鍵生成に必要)
Router01(config)# ip domain-name example.local

! ③ RSA鍵を生成(2048ビット以上推奨)
Router01(config)# crypto key generate rsa modulus 2048

! ④ SSHバージョン2を使用(セキュリティ向上)
Router01(config)# ip ssh version 2

! ⑤ ローカルユーザの作成(事前作成済みでも再確認)
Router01(config)# username admin privilege 15 secret Cisco123

! ⑥ VTYラインをSSHのみに変更
Router01(config)# line vty 0 4
Router01(config-line)# login local
Router01(config-line)# transport input ssh   ← Telnetを無効化しSSHのみに

Router01(config-line)# end
Router01# copy running-config startup-config
ℹ SSH設定の3つの必須前提条件 SSH(RSA鍵)の生成には以下が必須です。
  • ホスト名がRouter以外に設定されていること
  • ip domain-nameが設定されていること
  • ローカルユーザが少なくとも1つ作成されていること

SSH設定の確認

! SSHの動作確認
Router# show ip ssh
SSH Enabled - version 2.0
Authentication methods:publickey,keyboard-interactive,password
Authentication timeout: 120 secs; Authentication retries: 3

! RSA鍵の確認
Router# show crypto key mypubkey rsa
% Key pair was generated at: ...
Key name: Router.example.local
 Usage: General Purpose Key
 Key is exportable. The name of the key is Router.example.local
 Key Data:
  ...(鍵データ)...

追加セキュリティ設定

ユーザ認証の設定に加えて、以下のセキュリティ設定も合わせて行うことを推奨します。

接続タイムアウトの設定

line vty 0 4
 ! 10分間操作がなければ自動切断
 exec-timeout 10 0
 ! ログイン試行のタイムアウト(秒)
 login block-for 120 attempts 3 within 60

パスワードの暗号化と管理IPアクセス制限

! running-configに残るpassword設定を暗号化(Type 7)
service password-encryption

! 管理用VTYアクセスを特定のサブネットのみ許可
access-list 10 permit 192.168.100.0 0.0.0.255

line vty 0 4
 access-class 10 in   ← 上記ACLを適用
⚠ service password-encryptionはType 7(弱い暗号化) service password-encryptionpasswordコマンドで設定したパスワードをType 7形式で暗号化しますが、容易に復号できるため強力な暗号化ではありません。パスワードの設定は必ずsecretコマンドを使ってください。

設定の全体まとめ表

目的コマンド必須度
管理者ユーザ作成username admin privilege 15 secret [PW]必須
VTYユーザ認証login local必須
特権パスワード設定enable secret [PW]必須
SSH有効化crypto key generate rsa modulus 2048本番では必須
SSHバージョン指定ip ssh version 2本番では必須
タイムアウト設定exec-timeout 10 0推奨
接続元IP制限access-class [ACL番号] in推奨

まとめ

Cisco機器でTelnet接続時にユーザ名とパスワードを要求するには、VTYラインの認証方式をlogin localに変更し、ローカルユーザを作成します。

  • login localでユーザ名+パスワード認証が有効になる
  • privilege 15でログイン後すぐに特権モード(#)になる
  • privilege 1enable secretでユーザ権限を分離できる
  • パスワードは必ずsecretで設定(passwordは使わない)
  • 本番環境ではSSH(ip ssh version 2)へ移行しtransport input sshでTelnetを無効化する
  • タイムアウト設定(exec-timeout)と接続元IP制限(access-class)も合わせて設定する

Cisco機器の管理アクセスは、適切な認証設定とSSH移行をセットで考えることが重要です。