前のシナリオではルータのリモート操作に Telnet を使用しましたが、今回は SSH を使用します。SSH は Telnet 同様にリモートルータにログインして、各種操作を行うことができます。SSH と Telnet の大きな違いは、ネットワーク上に流れるパケットを暗号化できる (SSH) か、できない (Telnet) か、です。
Telnet を使用すると、パケットキャプチャなどでネットワーク上を流れるパケットを解析され、ログインパスワードを盗まれて、悪意の第三者にルータの設定を勝手に変更される可能性があります。そのため、インターネットなどの公衆ネットワークを介してルータのリモート操作を行う場合、Telnet は使用せず、SSH を使用します。
SSH には v1 と v2 があります。
ただし、SSH1 にはセキュリティホールがあることが判明しており、SSH2 のみ使用するよう推奨されています。
Cisco ルータは、SSH サーバー機能と SSH クライアント機能を実装しており、SSH1 と SSH2 の両方をサポートしています。
Cisco ルータを SSH サーバーとして機能させるには、事前に以下のことを行っていなければいけません。
1) ホスト名を設定する
2) ドメイン名を設定する
3) SSH で使用する鍵を生成する (これにより自動的に SSH が有効化される)
4) SSH でログインするためのユーザを作成する
5) 作成したユーザを SSH でのログインで使用するように設定する
6) 接続は SSH のみで、Telnet は接続できないようにする (任意)
また、Cisco ルータの SSH クライアント機能を使用する場合、次の注意点があります。
1) ip ssh ver コマンドで、バージョン指定した場合
SSH サーバー側だけでなく、そのルータの SSH クライアントもそのバージョンが使われる
(ただし、別のバージョンを指定して接続することは可能)
2) SSH サーバー側で ip ssh ver 1 を指定した場合
SSH クライアントで接続バージョンを 1 に指定 (-v 1) して接続しなければ接続は失敗する
では、Cisco ルータを SSH サーバーにして、SSH 接続してみましょう。
ただし、Windows に SSH クライアント機能は付属していないので、PC 側は Tera Term を使用します。
(Tera Term の SSH クライアント機能を使う)
- RT-A、PC-A に、ネットワーク構成図に示す通り設定しなさい。
< RT-A >
Router# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# host RT-A
RT-A(config)# int f0/0
RT-A(config-if)# ip add 192.168.1.1 255.255.255.0
RT-A(config-if)# no shut
RT-A(config-if)# ^Z
RT-A#
< PC-A >
C:\> netsh interface ipv4 set address "イーサネット" static 192.168.1.2 255.255.255.0
C:\> ipconfig
Windows IP 構成
イーサネット アダプター イーサネット:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 192.168.1.2
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .:
C:\>
- PC-A から RT-A へ ping を実行しなさい。
< PC-A >
C:\> ping 192.168.1.1
192.168.1.1 に ping を送信しています 32 バイトのデータ:
192.168.1.1 からの応答: バイト数 =32 時間 =1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.1.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 1ms、平均 = 0ms
C:\>
- 以下の情報を基に RT-A で SSH サーバーを構成をしなさい。
< RT-A >
RT-A# conf t
Enter configuration commands, one per line. End with CNTL/Z.
RT-A(config)# ip domain-name jukenki.local ← ドメイン名の設定
RT-A(config)# crypto key generate rsa ← SSH で使用する RSA 鍵の生成
The name for the keys will be: RT-A.jukenki.local
Choose the size of the key modulus in the range of 360 to 4096 for your
General Purpose Keys. Choosing a key modulus greater than 512 may take
a few minutes.
How many bits in the modulus [512]: 1024 ← 鍵の長さを指定 (1024以上を推奨)
% Generating 1024 bit RSA keys, keys will be non-exportable...
[OK] (elapsed time was 2 seconds)
RT-A(config)# username ccna password cisco ← SSH で使用するユーザ名とパスワードの設定
RT-A(config)# line vty 0 4
RT-A(config-line)# login local ← ローカルで作成したアカウントでログイン認証を行う
RT-A(config-line)# transport input ssh ← SSH のみ許可するように設定
RT-A(config-line)# ^Z
RT-A#
■ 注意事項
1. 鍵の生成の前に、ホスト名とドメイン名の設定が必要
ホスト名とドメイン名の設定前に、鍵を生成しようとするとエラーメッセージが出ます。
Router(config)# crypto key generate rsa
% Please define a hostname other than Router.
Router(config)# host RT-A
RT-A(config)# crypto key generate rsa
% Please define a domain-name first.
2. 鍵を生成する前に SSH のバージョン指定をすると、RSA 鍵の作成を促すメッセージが出る
(SSH のバージョン指定は必須ではありません。指定しなければ v1 と v2 の両方に対応します。)
RT-A(config)# ip ssh version 2
Please create RSA keys to enable SSH (and of atleast 768 bits for SSH v2).
- running-config で設定内容を確認しなさい。
< RT-A >
RT-A# sh run
Building configuration...
・
・
!
hostname RT-A
!
・
・
!
ip domain name jukenki.local
!
!
!
username ccna password 0 cisco
!
・
・
!
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
!
・
・
!
line con 0
line aux 0
line vty 0 4
login local
transport input ssh
!
end
- show ip ssh コマンドを実行しなさい。
< RT-A >
RT-A# sh ip ssh
SSH Enabled - version 1.99
Authentication timeout: 120 secs; Authentication retries: 3
Minimum expected Diffie Hellman key size : 1024 bits
IOS Keys in SECSH format(ssh-rsa, base64 encoded):
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCVHFSwb5E75xucYauGt4esEPud4hoz8i4YY2pbQnYY
UsQJsxVN6yPImpk5rD2+xRMqDi7fS5RZx8n5PEHkf3f9XeUs9pBqw2MEFNv1kdoRQ7uKgJ78IES5l+No
KZ0YelLuDZSiF6wUds0bFkEt2YNFIMLvS+/G/HSGl5zopDnVJQ==
RT-A#
show ip ssh コマンドは、SSH のバージョンと設定データを表示します。
SSH Enabled - version 1.5 | バージョン 1 のみ |
---|
SSH Enabled - version 2.0 | バージョン 2 のみ |
---|
SSH Enabled - version 1.99 | バージョン 1 と 2 |
---|
- Tera Term を使って、PC-A から RT-A に ssh 接続 (SSHv2) しなさい。
1) 現在 RT-A 用に開いている Tera Term のメニューバーから「新しい接続...」を選びます。
2) 「TCP/IP」を選び、RT-A の F0/0 のIPアドレスを入力し、「SSH2」を選び、「OK」ボタンを押します。
3) 「このホストをknown hostsリストに追加する」にチェックを入れたまま、「続行」ボタンを押します。
4) RT-A に登録したユーザ名とパスワードを入力し、「OK」ボタンを押します。
5) これで RT-A への SSH 接続が完了です。
- 特権モードに入りなさい。
< PC-A の SSHv2 接続の Tera Tarm のウィンドウでの操作 >
RT-A> en
% No password set
RT-A>
特権モードに入ることができません。
これは、SSH サーバーである RT-A に、特権パスワードを設定していないからです。
今回のシナリオでは、Cisco ルータに特権パスワードは設定しませんが、Telnet サーバー同様、SSH サーバーとなる Cisco ルータにも特権パスワードが必要なことは忘れないようにしてください。
- RT-A で、show ssh コマンドを実行しなさい。
< RT-A >
RT-A# sh ssh
Connection Version Mode Encryption Hmac State Username
0 2.0 IN aes256-cbc hmac-sha1 Session started ccna
0 2.0 OUT aes256-cbc hmac-sha1 Session started ccna
%No SSHv1 server connections running.
RT-A#
show ssh コマンドは、SSH サーバの接続状態を表示します。
Connection | セッション番号 |
---|
Version | SSH のバージョン |
---|
Mode | セッションの方向 |
---|
Encryption | 暗号化アルゴリズム |
---|
Hmac | ハッシュアルゴリズム |
---|
State | 認証接続状態 (Session started:ユーザ認証終了後) |
---|
Username | SSH で接続してきたクライアントのユーザ名 |
---|
- 現在の SSH 接続は維持したまま、新たに Tera Term を使って、PC-A から RT-A に ssh 接続 (SSHv1) しなさい。
1) 現在 RT-A 用に開いている Tera Term のメニューバーから「新しい接続...」を選びます。
2) 「TCP/IP」を選び、「SSH1」を選び、「OK」ボタンを押します。
3) 「このホストをknown hostsリストに追加する」にチェックを入れたまま、「続行」ボタンを押します。
4) RT-A に登録したユーザ名とパスワードを入力し、「OK」ボタンを押します。
5) これで RT-A への2つ目の SSH 接続が完了です。
- RT-A で、show ssh コマンドを実行しなさい。
< RT-A >
RT-A# sh ssh
Connection Version Encryption State Username
1 1.5 3DES Session started ccna
Connection Version Mode Encryption Hmac State Username
0 2.0 IN aes256-cbc hmac-sha1 Session started ccna
0 2.0 OUT aes256-cbc hmac-sha1 Session started ccna
RT-A#
Connection: 1、Version: 1.5 が追加されました。
これが後から接続した SSHv1 の接続セッションです。
- 最初に接続した SSHv2 のセッションを PC-A から切断しなさい。
< PC-A の SSHv2 接続の Tera Tarm のウィンドウでの操作 >
RT-A> exit
デフォルトでは Tera Tarm のウィンドウが閉じます。
閉じない場合は Tera Tarm 側の設定ですので、クローズボックスで閉じてください。
- RT-A で、show ssh コマンドを実行しなさい。
< RT-A >
RT-A# sh ssh
Connection Version Encryption State Username
1 1.5 3DES Session started ccna
%No SSHv2 server connections running.
RT-A#
SSHv1 接続のセッションのみ残っています。
- SSHv1 のセッションの方も PC-A から切断しなさい。
< PC-A の SSHv1 接続の Tera Tarm のウィンドウでの操作 >
RT-A> exit
- RT-A で、show ssh コマンドを実行しなさい。
< RT-A >
RT-A# sh ssh
%No SSHv2 server connections running.
%No SSHv1 server connections running.
RT-A#
SSH による接続セッションは全てなくなりました。