HOME > コンテンツリスト > ラボ・シナリオ for CCNA > [ < 前へ 次へ > ]

アクセスクラスでTelnet/SSHを禁止する

ネットワーク構成図

  1. RT-A、RT-B、RT-C をネットワーク構成図に示す通り設定し、シングルエリア OSPF を構成しなさい。
  2. < 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)# no keep
    RT-A(config-if)# int f0/1
    RT-A(config-if)# ip add 192.168.2.1 255.255.255.0
    RT-A(config-if)# no shut
    RT-A(config-if)# router ospf 1
    RT-A(config-router)# net 192.168.0.0 0.0.255.255 area 0
    RT-A(config-router)# ^Z
    RT-A#
    
    < RT-B >
    Router# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    Router(config)# host RT-B
    RT-B(config)# int f0/0
    RT-B(config-if)# ip add 192.168.2.2 255.255.255.0
    RT-B(config-if)# no shut
    RT-B(config-if)# int f0/1
    RT-B(config-if)# ip add 192.168.3.2 255.255.255.0
    RT-B(config-if)# no shut
    RT-B(config-if)# router ospf 1
    RT-B(config-router)# net 192.168.0.0 0.0.255.255 area 0
    RT-B(config-router)# ^Z
    RT-B#
    
    < RT-C >
    Router# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    Router(config)# host RT-C
    RT-C(config)# int f0/0
    RT-C(config-if)# ip add 192.168.3.3 255.255.255.0
    RT-C(config-if)# no shut
    RT-C(config-if)# router ospf 1
    RT-C(config-router)# net 192.168.0.0 0.0.255.255 area 0
    RT-C(config-router)# ^Z
    RT-C#
    
  3. 以下の情報を基に RT-B で SSH サーバーと Telnet サーバーを構成をしなさい。
  4. ドメイン名jukenki.local
    SSH で使用するユーザ名ccna
    SSH で使用するパスワードcisco
    SSH 暗号化鍵の長さ1024
    line vtySSH と Telnet のみ許可
    < RT-B >
    RT-B# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-B(config)# ip domain-name jukenki.local      ← ドメイン名の設定
    RT-B(config)# crypto key generate rsa           ← SSH で使用する RSA 鍵の生成
    The name for the keys will be: RT-B.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 6 seconds)
    
    RT-B(config)# username ccna password cisco       ← SSH で使用するユーザ名とパスワードの設定
    RT-B(config)# line vty 0 4
    RT-B(config-line)# login local                   ← ローカルで作成したアカウントでログイン認証を行う
    RT-B(config-line)# transport input ssh telnet    ← SSH と telnet のみ許可するように設定
    RT-B(config-line)# ^Z
    RT-B#
    
  5. RT-A から 192.168.2.2 (RT-B) へ Telnet 接続ができることを確認しなさい。
  6. < RT-A >
    RT-A# telnet 192.168.2.2
    Trying 192.168.2.2 ... Open
    
    User Access Verification
    
    Username: ccna
    Password: cisco   ← 実際には表示はされない
    RT-B> exit
    
    [Connection to 192.168.2.2 closed by foreign host]
    RT-A#
    
    プロンプトが RT-A から RT-B に変わっていますので、telnet は成功しています。
  7. RT-A から 192.168.3.2 (RT-B) へ Telnet 接続ができることを確認しなさい。
  8. < RT-A >
    RT-A# telnet 192.168.3.2
    Trying 192.168.3.2 ... Open
    
    User Access Verification
    
    Username: ccna
    Password: cisco   ← 実際には表示はされない
    RT-B> exit
    
    [Connection to 192.168.3.2 closed by foreign host]
    RT-A#
    
    RT-B には2つのインターフェイスがあり、それぞれのインターフェイスに設定したIPアドレスに対して、Telnet することができます。

  9. RT-C から 192.168.3.2 (RT-B) へ Telnet 接続ができることを確認しなさい。
  10. < RT-C >
    RT-C# telnet 192.168.3.2
    Trying 192.168.3.2 ... Open
    
    User Access Verification
    
    Username: ccna
    Password: cisco   ← 実際には表示はされない
    RT-B> exit
    
    [Connection to 192.168.3.2 closed by foreign host]
    RT-C#
    
  11. RT-C から 192.168.2.2 (RT-B) へ Telnet 接続ができることを確認しなさい。
  12. < RT-C >
    RT-C# telnet 192.168.2.2
    Trying 192.168.2.2 ... Open
    
    User Access Verification
    
    Username: ccna
    Password: cisco   ← 実際には表示はされない
    RT-B> exit
    
    [Connection to 192.168.2.2 closed by foreign host]
    RT-C#
    
    F0/0 からだけでなく、F0/1 からも Telnet パケットが入ってきますので、もし RT-B で Telnet を拒否する場合、F0/0 in と F0/1 in の両方で Telnet パケットを拒否するように設定しなければいけません。

  13. 192.168.1.1 から RT-B への telnet のみ許可し、それ以外の送信元からの RT-B への telnet を拒否するアクセスリストを作成し、
    インターフェイスに適用させなさい。ただし、他のパケットは全て許可させること。
  14. < RT-B >
    RT-B# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-B(config)# access-list 100 permit tcp host 192.168.1.1 host 192.168.2.2 eq 23   ← F0/0 への telnet を許可
    RT-B(config)# access-list 100 permit tcp host 192.168.1.1 host 192.168.3.2 eq 23   ← F0/1 への telnet を許可
    RT-B(config)# access-list 100 deny tcp any host 192.168.2.2 eq 23   ← F0/0 への telnet を拒否
    RT-B(config)# access-list 100 deny tcp any host 192.168.3.2 eq 23   ← F0/1 への telnet を拒否
    RT-B(config)# access-list 100 permit ip any any
    RT-B(config)# do sh access-lists
    Extended IP access list 100
        10 permit tcp host 192.168.1.1 host 192.168.2.2 eq telnet
        20 permit tcp host 192.168.1.1 host 192.168.3.2 eq telnet
        30 deny tcp any host 192.168.2.2 eq telnet
        40 deny tcp any host 192.168.3.2 eq telnet
        50 permit ip any any (4 matches)
    RT-B(config)# int f0/0
    RT-B(config-if)# ip access-group 100 in
    RT-B(config-if)# int f0/1
    RT-B(config-if)# ip access-group 100 in
    RT-B(config-if)#
    
  15. RT-A から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ Telnet しなさい。
  16. < RT-A >
    RT-A# telnet 192.168.2.2
    Trying 192.168.2.2 ...
    % Destination unreachable; gateway or host down
    
    RT-A# telnet 192.168.3.2
    Trying 192.168.3.2 ...
    % Destination unreachable; gateway or host down
    
    RT-A#
    
  17. RT-C から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ Telnet しなさい。
  18. < RT-C >
    RT-C# telnet 192.168.2.2
    Trying 192.168.2.2 ...
    % Destination unreachable; gateway or host down
    
    RT-C# telnet 192.168.3.2
    Trying 192.168.3.2 ...
    % Destination unreachable; gateway or host down
    
    RT-C#
    
    RT-B への telnet は、192.168.1.1 以外の送信元は全て拒否したので、RT-A (192.168.2.1 発) も RT-C (192.168.3.3 発) も失敗します。
  19. 192.168.1.1 のアドレスを使って、RT-A から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ Telnet しなさい。
  20. < RT-A >
    RT-A# telnet 192.168.2.2 /source-interface f0/0
    Trying 192.168.2.2 ... Open
    
    User Access Verification
    
    Username: ccna
    Password: cisco   ← 実際には表示はされない
    RT-B> sh users
        Line       User       Host(s)              Idle       Location
       0 con 0                idle                 00:08:23
    *194 vty 0     ccna       idle                 00:00:00 192.168.1.1   ← 接続元 192.168.1.1
    
      Interface    User               Mode         Idle     Peer Address
    
    RT-B> exit
    
    [Connection to 192.168.2.2 closed by foreign host]
    RT-A# telnet 192.168.3.2 /source-interface f0/0
    Trying 192.168.3.2 ... Open
    
    User Access Verification
    
    Username: ccna
    Password: cisco   ← 実際には表示はされない
    RT-B> sh users
        Line       User       Host(s)              Idle       Location
       0 con 0                idle                 00:08:55
    *194 vty 0     ccna       idle                 00:00:00 192.168.1.1   ← 接続元 192.168.1.1
    
      Interface    User               Mode         Idle     Peer Address
    
    RT-B> exit
    
    [Connection to 192.168.3.2 closed by foreign host]
    RT-A#
    
    telnet の /source-interface で、送信元インターフェイスを指定できます。
    f0/0 には 192.168.1.1 が設定されていますので、telnet の送信元IPアドレスがこのアドレスになります。

    アクセスリストで RT-B への telnet を 192.168.1.1 のみ許可したので、telnet は成功します。

    ルータへの Telnet を禁止したいだけなのに、上記の方法では非常にめんどくさく、ルータのインターフェイスが増えれば増えるほど更にめんどくさくなります。また、SSH も禁止させるとなると、アクセスリストの条件文が多くなり、更にめんどくさくなります。しかし、これを簡単にする方法があります。

    Cisco ルータへの Telnet や SSH 接続は全て vty ラインを使って行われます。この vty ラインへのアクセスを制御すれば、ルータへの Telnet や SSH 接続を簡単に禁止させることができます。vty ラインへアクセスリストを適用させる場合は access-class を使用します。

  21. RT-B の F0/0 と F0/1 に適用したアクセスリストを解除しなさい。
  22. < RT-B >
    RT-B(config-if)# int f0/0
    RT-B(config-if)# no ip access-group 100 in
    RT-B(config-if)# int f0/1
    RT-B(config-if)# no ip access-group 100 in
    RT-B(config-if)#
    
  23. 192.168.1.1 発のパケットのみを許可する標準IPアクセスリストを作り、access-class で line vty に適用しなさい。
  24. < RT-B >
    RT-B(config-if)# access-list 1 permit 192.168.1.1
    RT-B(config)# line vty 0 4
    RT-B(config-line)# access-class 1 in
    RT-B(config-line)#
    
    192.168.1.1 以外は「暗黙のdeny」で拒否されます。
  25. RT-A から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ Telnet しなさい。
  26. < RT-A >
    RT-A# telnet 192.168.2.2
    Trying 192.168.2.2 ...
    % Destination unreachable; gateway or host down
    
    RT-A# telnet 192.168.3.2
    Trying 192.168.3.2 ...
    % Destination unreachable; gateway or host down
    
    RT-A#
    
    送信元IPアドレスが F0/1 に設定された 192.168.2.1 なので接続できません。
  27. RT-C から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ Telnet しなさい。
  28. < RT-C >
    RT-C# telnet 192.168.2.2
    Trying 192.168.2.2 ...
    % Destination unreachable; gateway or host down
    
    RT-C# telnet 192.168.3.2
    Trying 192.168.3.2 ...
    % Destination unreachable; gateway or host down
    
    RT-C#
    
    送信元IPアドレスが F0/0 に設定された 192.168.3.3 なので接続できません。
  29. 192.168.1.1 のアドレスを使って、RT-A から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ Telnet しなさい。
  30. < RT-A >
    RT-A# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-A(config)# ip telnet source-interface f0/0   ← telnet で使用する送信元インターフェイスを指定
    RT-A(config)# ^Z
    RT-A# telnet 192.168.2.2
    Trying 192.168.2.2 ... Open
    
    User Access Verification
    
    Username: ccna
    Password: cisco   ← 実際には表示はされない
    RT-B> sh users
        Line       User       Host(s)              Idle       Location
       0 con 0                idle                 00:00:02
    *194 vty 0     ccna       idle                 00:00:00 192.168.1.1   ← 接続元 192.168.1.1
    
      Interface    User               Mode         Idle     Peer Address
    
    RT-B> exit
    
    [Connection to 192.168.2.2 closed by foreign host]
    RT-A# telnet 192.168.3.2
    Trying 192.168.3.2 ... Open
    
    User Access Verification
    
    Username: ccna
    Password: cisco   ← 実際には表示はされない
    RT-B> sh users
        Line       User       Host(s)              Idle       Location
       0 con 0                idle                 00:08:45
    *194 vty 0     ccna       idle                 00:00:00 192.168.1.1   ← 接続元 192.168.1.1
    
      Interface    User               Mode         Idle     Peer Address
    
    RT-B> exit
    
    [Connection to 192.168.3.2 closed by foreign host]
    RT-A#
    
    ip telnet source-interface コマンドで、予め telnet で使用する送信元インターフェイスを指定しておくことができます。
    f0/0 には 192.168.1.1 が設定されていますので、telnet の送信元IPアドレスがこのアドレスになります。
  31. 192.168.1.1 のアドレスを使って、RT-A から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ SSH 接続しなさい。
  32. < RT-A >
    RT-A# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-A(config)# ip ssh source-interface f0/0   ← SSH で使用する送信元インターフェイスを指定
    RT-A(config)# ^Z
    RT-A# ssh -l ccna 192.168.2.2
    Password: cisco   ← 実際には表示はされない
    RT-B> sh users
        Line       User       Host(s)              Idle       Location
       0 con 0                idle                 00:05:40
    *194 vty 0     ccna       idle                 00:00:00 192.168.1.1   ← 接続元 192.168.1.1
    
      Interface    User               Mode         Idle     Peer Address
    
    RT-B> exit
    
    [Connection to 192.168.2.2 closed by foreign host]
    RT-A# ssh -l ccna 192.168.3.2
    Password: cisco   ← 実際には表示はされない
    RT-B> sh users
        Line       User       Host(s)              Idle       Location
       0 con 0                idle                 00:06:39
    *194 vty 0     ccna       idle                 00:00:00 192.168.1.1   ← 接続元 192.168.1.1
    
      Interface    User               Mode         Idle     Peer Address
    
    RT-B> exit
    
    [Connection to 192.168.3.2 closed by foreign host]
    RT-A#
    
    このように、access-class を使うと、簡単に vty ラインを使ったアクセスの制御をすることができます。

  33. ip host コマンドで、RT-A、RT-B、RT-C に、RT-A、RT-B、RT-C を登録しなさい。
  34. < RT-A >
    RT-A# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-A(config)# ip host RT-A 192.168.2.1
    RT-A(config)# ip host RT-B 192.168.2.2
    RT-A(config)# ip host RT-C 192.168.3.3
    RT-A(config)# 
    
    < RT-B >
    RT-B# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-B(config)# ip host RT-A 192.168.2.1
    RT-B(config)# ip host RT-B 192.168.2.2
    RT-B(config)# ip host RT-C 192.168.3.3
    RT-B(config)# 
    
    < RT-C >
    RT-C# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-C(config)# ip host RT-A 192.168.2.1
    RT-C(config)# ip host RT-B 192.168.2.2
    RT-C(config)# ip host RT-C 192.168.3.3
    RT-C(config)# 
    
  35. 以下の情報を基に RT-A で Telnet サーバーを構成をしなさい。
  36. telnet で使用するパスワードcisco
    < RT-A >
    RT-A(config)# line vty 0 4
    RT-A(config-line)# password cisco
    RT-A(config-line)# login
    RT-A(config-line)# ^Z
    RT-A#
    
  37. 以下の情報を基に RT-C で Telnet サーバーを構成をしなさい。
  38. telnet で使用するパスワードcisco
    < RT-C >
    RT-C(config)# line vty 0 4
    RT-C(config-line)# password cisco
    RT-C(config-line)# login
    RT-C(config-line)# ^Z
    RT-C#
    
  39. 192.168.1.1 のアドレスを使って、RT-A から RT-B へ Telnet しなさい。
  40. < RT-A >
    RT-A# telnet RT-B
    Trying RT-B (192.168.2.2)... Open
    
    User Access Verification
    
    Username: ccna
    Password: cisco   ← 実際には表示はされない
    RT-B>
    
    ip telnet source-interface f0/0 が設定されたままなので、RT-A 発の telnet の送信元IPアドレスは 192.168.1.1 になります。
  41. 更に、そこから RT-C へ Telnet しなさい。
  42. < RT-A >
    RT-A# telnet RT-B
    Trying RT-B (192.168.2.2)... Open
    
    User Access Verification
    
    Username: ccna
    Password: 
    RT-B> telnet RT-C
    Trying RT-C (192.168.3.3)... Open
    
    
    User Access Verification
    
    Password: cisco
    RT-C>
    


    このように、RT-B に Telnet して、RT-B から他のルータやホストに Telnet することができます。
    これをセキュリティ的には「RT-A を踏み台にして、他のネットワーク機器にアクセスする」という言い方をし、これを許可するのは好ましくないと考える場合が多くあります。

    このような場合は、vty ラインを使って、他のネットワーク機器にアクセスするのを禁止します。
  43. RT-C への Telnet を切断し、更に、RT-B への Telnet も切断しなさい。
  44. < RT-A >
    RT-A# telnet RT-B
    Trying RT-B (192.168.2.2)... Open
    
    User Access Verification
    
    Username: ccna
    Password: 
    RT-B> telnet RT-C
    Trying RT-C (192.168.3.3)... Open
    
    
    User Access Verification
    
    Password: 
    RT-C> exit
    
    [Connection to RT-C closed by foreign host]
    RT-B> exit
    
    [Connection to RT-B closed by foreign host]
    RT-A#
    
  45. RT-B で、全てのパケットを拒否するアクセスリストを作り、access-class で line vty の out に適用しなさい。
  46. < RT-B >
    RT-B(config)# access-list 2 deny any
    RT-B(config)# line vty 0 4
    RT-B(config-line)# access-class 2 out
    RT-B(config-line)# ^Z
    RT-B#
    
  47. 192.168.1.1 のアドレスを使って、RT-A から RT-B へ Telnetし、更に、そこから RT-C に telnet しなさい。
  48. < RT-A >
    RT-A# telnet RT-B
    Trying RT-B (192.168.2.2)... Open
    
    User Access Verification
    
    Username: ccna
    Password: cisco
    RT-B> telnet RT-C
    Trying RT-C (192.168.3.3)...
    % Connections to that host not permitted from this terminal
    RT-B>
    
    RT-C への Telnet は拒否されました。
    このように、access-class で line vty の out を使用すると、自身が踏み台にされるのを防ぐことができます。
  49. RT-A から RT-B への telnet を切断しなさい。
  50. < RT-A >
    RT-A# telnet RT-B
    Trying RT-B (192.168.2.2)... Open
    
    User Access Verification
    
    Username: ccna
    Password: 
    RT-B> telnet RT-C
    Trying RT-C (192.168.3.3)...
    % Connections to that host not permitted from this terminal
    RT-B> exit
    
    [Connection to RT-B closed by foreign host]
    RT-A#
    

    踏み台による全てのネットワーク機器への Telnet を禁止するのではなく、ルータ同士の Telnet は許可し、ホストへの Telnet だけ拒否したい場合も多くあります。access-class を使用すると、特定のホスト (もしくはネットワーク) への踏み台による Telnet を許可/拒否することも可能です。
  51. RT-B を以下のとおり設定しなさい。
  52. < RT-B >
    RT-B# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-B(config)# access-list 3 permit 192.168.3.3
    RT-B(config)# line vty 0 4
    RT-B(config-line)# access-class 3 out
    RT-B(config-line)#
    
    access-class の out 側に適用させた場合、標準IPアクセスリストの「192.168.3.3」は宛先IPアドレスになります。
  53. 192.168.1.1 のアドレスを使って、RT-A から 192.168.2.2 (RT-B) へ Telnetし、更に、そこから RT-C に telnet しなさい。
  54. < RT-A >
    RT-A# telnet RT-B
    Trying RT-B (192.168.2.2)... Open
    
    User Access Verification
    
    Username: ccna
    Password: cisco
    RT-B> telnet RT-C
    Trying RT-C (192.168.3.3)... Open
    
    User Access Verification
    
    Password: cisco
    RT-C>
    
    今回は RT-C への Telnet が成功しました。
  55. RT-C への telnet を切断し、RT-A に telnet しなさい。
  56. < RT-A >
    RT-A# telnet RT-B
    Trying RT-B (192.168.2.2)... Open
    
    User Access Verification
    
    Username: ccna
    Password: 
    RT-B> telnet RT-C
    Trying RT-C (192.168.3.3)... Open
    
    User Access Verification
    
    Password: 
    RT-C> exit
    
    [Connection to RT-C closed by foreign host]
    RT-B> telnet RT-A
    Trying RT-A (192.168.2.1)...
    % Connections to that host not permitted from this terminal
    RT-B>
    
    アクセスリストの最後には「暗黙の deny」がありますので、192.168.3.3 以外のIPアドレスへの Telnet は失敗します。