- RT-A、RT-B、RT-C をネットワーク構成図に示す通り設定し、シングルエリア OSPF を構成しなさい。
< 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#
- 以下の情報を基に RT-B で SSH サーバーと 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#
- RT-A から 192.168.2.2 (RT-B) へ Telnet 接続ができることを確認しなさい。
< 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 は成功しています。
- RT-A から 192.168.3.2 (RT-B) へ Telnet 接続ができることを確認しなさい。
< 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 することができます。
- RT-C から 192.168.3.2 (RT-B) へ Telnet 接続ができることを確認しなさい。
< 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#
- RT-C から 192.168.2.2 (RT-B) へ Telnet 接続ができることを確認しなさい。
< 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 パケットを拒否するように設定しなければいけません。
- 192.168.1.1 から RT-B への telnet のみ許可し、それ以外の送信元からの RT-B への telnet を拒否するアクセスリストを作成し、
インターフェイスに適用させなさい。ただし、他のパケットは全て許可させること。
< 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)#
- RT-A から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ Telnet しなさい。
< 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#
- RT-C から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ Telnet しなさい。
< 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 発) も失敗します。
- 192.168.1.1 のアドレスを使って、RT-A から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ Telnet しなさい。
< 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 は成功します。
- RT-B の F0/0 と F0/1 に適用したアクセスリストを解除しなさい。
< 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)#
- 192.168.1.1 発のパケットのみを許可する標準IPアクセスリストを作り、access-class で line vty に適用しなさい。
< 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」で拒否されます。
- RT-A から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ Telnet しなさい。
< 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 なので接続できません。
- RT-C から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ Telnet しなさい。
< 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 なので接続できません。
- 192.168.1.1 のアドレスを使って、RT-A から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ Telnet しなさい。
< 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アドレスがこのアドレスになります。
- 192.168.1.1 のアドレスを使って、RT-A から 192.168.2.2 (RT-B) と 192.168.3.2 (RT-B) へ SSH 接続しなさい。
< 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 ラインを使ったアクセスの制御をすることができます。
- ip host コマンドで、RT-A、RT-B、RT-C に、RT-A、RT-B、RT-C を登録しなさい。
< 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)#
- 以下の情報を基に RT-A で Telnet サーバーを構成をしなさい。
< 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#
- 以下の情報を基に RT-C で Telnet サーバーを構成をしなさい。
< 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#
- 192.168.1.1 のアドレスを使って、RT-A から RT-B へ Telnet しなさい。
< 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 になります。
- 更に、そこから RT-C へ Telnet しなさい。
< 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 ラインを使って、他のネットワーク機器にアクセスするのを禁止します。
- RT-C への Telnet を切断し、更に、RT-B への Telnet も切断しなさい。
< 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#
- RT-B で、全てのパケットを拒否するアクセスリストを作り、access-class で line vty の out に適用しなさい。
< 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#
- 192.168.1.1 のアドレスを使って、RT-A から RT-B へ Telnetし、更に、そこから RT-C に telnet しなさい。
< 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 を使用すると、自身が踏み台にされるのを防ぐことができます。
- RT-A から RT-B への telnet を切断しなさい。
< 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 を許可/拒否することも可能です。
- RT-B を以下のとおり設定しなさい。
< 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アドレスになります。
- 192.168.1.1 のアドレスを使って、RT-A から 192.168.2.2 (RT-B) へ Telnetし、更に、そこから RT-C に telnet しなさい。
< 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 が成功しました。
- RT-C への telnet を切断し、RT-A に telnet しなさい。
< 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 は失敗します。