🍄
13. ACL_ハンズオン
第2部:ACLハンズオン演習 ~ACLの基本をマスターしよう!~
このハンズオンでは、Packet Tracer(または実機)を使用して、ACLの基本的な設定と動作確認を行います。
ハンズオン共通基本構成図(例)
ハンズオン準備:
-
IPアドレスとVLA設定:
上記構成図を参考に、各PCおよびルーターのインターフェースにIPアドレス、サブネットマスク、デフォルトゲートウェイを設定してください。
R1には直接接続されたネットワーク間のルーティングが自動的に行われます。ACLを設定する前にPC-AとPC-B間でPingが通る状態にしておいてください。(RoASでVLAN間の通信を実現してください)
R1のLAN側物理インターフェイスには192.168.1.254のIPアドレスを設定してください。 -
ルーターのSSH基本設定 (R1に対して実施):
ルーターへSSHでアクセスするための基本設定を行っておきます。
ハンズオン1:標準ACL ~特定のPCからのアクセスをブロック!~
-
シナリオ:
- PC-A (
192.168.1.10
) から PC-B (192.168.2.10
) への通信を拒否する。 - 他の通信は特に制限しない。
- PC-A (
-
目的:
- 標準ACLの基本的な作成方法と適用方法を理解する。
- 送信元IPアドレスのみで制御するACLの動作を確認する。
- ACLの適用場所と方向(インバウンド/アウトバウンド)の基本を学ぶ。
-
設定ルーターとインターフェース(例): R1の
GigabitEthernet0/0
(PC-Aが接続されているインターフェース)にインバウンドで適用。 -
手順:
- R1に標準ACL(例:番号1)を作成します。
R1(config)# access-list 1 deny host 192.168.1.10 R1(config)# access-list 1 permit any ! 他の全ての通信を許可 (これを忘れるとPC-A以外も影響)
-
解説:
-
access-list 1 deny host 192.168.1.10
: 送信元IPアドレスが192.168.1.10
のパケットを拒否します。host
キーワードは特定の1台のIPアドレスを指定する簡単な方法です(ワイルドカードマスク0.0.0.0
と同等)。 -
access-list 1 permit any
: それ以外の全ての送信元IPアドレスからのパケットを許可します。ACLの最後には「暗黙のDeny」があるため、明示的に許可しない通信はすべて拒否されます。このpermit any
がないと、192.168.1.10
以外のIPアドレスからの通信もすべて拒否されてしまいます。
-
-
解説:
- 作成したACLをR1の
LAN側
インターフェースにインバウンドで適用します。R1(config)# interface GigabitEthernet0/0 R1(config-if)# ip access-group 1 in
-
解説:
in
は、PC-Aからルーターに入ってくるパケットに対してACLを適用するという意味です。
-
解説:
-
動作確認:
- PC-AからPC-BへPing (
ping 192.168.2.10
) を実行し、通らない("Destination host unreachable" や "Request timed out")ことを確認します。 - 構成内にPC-Aと同じセグメントの別のPC
192.168.1.11
を接続しそのPCからPC-BへPingが通ることを確認し、permit any
が機能していることを確認します。
- PC-AからPC-BへPing (
-
ルーターでの確認:
R1でshow access-lists
コマンドを実行し、ACLのヒットカウント(matches
)を確認します。deny host 192.168.1.10
のカウントが増えていれば、ACLによってブロックされたことがわかります。R1# show access-lists Standard IP access list 1 10 deny host 192.168.1.10 (X matches) <-- ここのカウントを確認 20 permit any (Y matches)
-
クリーンアップ(次のハンズオンのため):
適用したACLを削除します。R1(config)# interface GigabitEthernet0/0 R1(config-if)# no ip access-group 1 in R1(config-if)# exit R1(config)# no access-list 1
- R1に標準ACL(例:番号1)を作成します。
ハンズオン2:拡張ACL ~特定のPCからの特定通信(Ping)だけ許可!~
-
シナリオ:
- PC-A (
192.168.1.10
) から PC-B (192.168.2.10
) への Ping (ICMP) 通信のみを許可する。 - PC-A (
192.168.1.10
) から PC-B (192.168.2.10
) への 他の全ての通信は拒否する。
- PC-A (
-
目的:
- 拡張ACLの基本的な作成方法と適用方法を理解する。
- 送信元・宛先IPアドレス、プロトコルを指定した制御を体験する。
- ACLの「暗黙のDeny」を意識した記述(許可するものだけを記述)を学ぶ。
-
設定ルーターとインターフェース(例): R1の
GigabitEthernet0/0
(PC-Aが接続されているインターフェース)にインバウンドで適用。
※適用前に講師に声をかけてください(SSHサーバの機能確認のため) -
手順:
- R1に拡張ACL(例:番号100)を作成します。
R1(config)# access-list 100 permit icmp host 192.168.1.10 host 192.168.2.10 echo R1(config)# access-list 100 permit icmp host 192.168.1.10 host 192.168.2.10 echo-reply ! Ping応答も考慮 ! これでPC-AからPC-BへのPingは許可。他の通信は暗黙のDenyで拒否される。 ! より明示的に拒否を示す場合は以下を追加してもよい。 ! R1(config)# access-list 100 deny ip host 192.168.1.10 host 192.168.2.10 ! R1(config)# access-list 100 permit ip any any ! 他のホスト間の通信は許可する場合
-
解説:
-
permit icmp host 192.168.1.10 host 192.168.2.10 echo
: PC-AからPC-BへのICMP echo (Pingリクエスト)を許可します。 -
permit icmp host 192.168.1.10 host 192.168.2.10 echo-reply
: PC-AからPC-BへのICMP echo-reply (Ping応答)を許可します。ルーターがステートフルなファイアウォールでない場合、戻りの通信も明示的に許可する必要がある場合があります。ただし、この構成でin
に適用する場合、PC-Bからの応答はout
方向なので、echo-reply
は主にout
側ACLや、送信元がPC-Bの場合のルールで考慮します。このハンズオンでは、まずecho
だけで試してみましょう。 -
注意: ACLの最後に記述がない場合、「暗黙のDeny (
deny ip any any
)」が自動的に適用されます。これにより、上記で許可したICMP以外のPC-AからPC-Bへの通信はすべて拒否されます。
-
-
解説:
- 作成したACLをR1の
GigabitEthernet0/0
インターフェースにインバウンドで適用します。R1(config)# interface GigabitEthernet0/0 R1(config-if)# ip access-group 100 in
-
動作確認:
- PC-AからPC-BへPing (
ping 192.168.2.10
) を実行し、通ることを確認します。 - PC-AからPC-BへSSH (
192.168.2.10 22
) を実行し、通らない(タイムアウトや接続拒否)ことを確認します。(PC-BでTelnetサービスが起動していなくても、ACLでブロックされれば同様の結果になります)
※動作確認の際は講師に声をかけてください(PCにはSSHサーバの機能がないためラズベリーパイで代用)
- PC-AからPC-BへPing (
-
ルーターでの確認:
R1でshow access-lists
コマンドを実行し、ACLのヒットカウントを確認します。R1# show access-lists Extended IP access list 100 10 permit icmp host 192.168.1.10 host 192.168.2.10 echo (X matches) 20 permit icmp host 192.168.1.10 host 192.168.2.10 echo-reply (Y matches)
-
クリーンアップ(次のハンズオンのため):
適用したACLを削除します。R1(config)# interface GigabitEthernet0/0 R1(config-if)# no ip access-group 100 in R1(config-if)# exit R1(config)# no access-list 100
- R1に拡張ACL(例:番号100)を作成します。
(オプション)ハンズオン3:VTYアクセス制御 ~ルーターを守ろう!~
-
シナリオ:
- 管理用PCであるPC-A (
192.168.1.10
) からのみ、R1へのSSHアクセスを許可する。 - 他のPC(例:PC-B
192.168.2.10
)からはR1へのSSHアクセスを拒否する。
- 管理用PCであるPC-A (
-
目的:
- ルーター自身の管理アクセス(VTYライン)を保護するためのACL設定を学ぶ。
-
access-class
コマンドの基本的な使い方を理解する。
- 前提: 「ハンズオン準備」でR1のSSH基本設定が完了していること。
-
手順:
- R1にTelnetアクセス制御用の標準ACL(例:名前付き
MANAGEMENT_ACCESS
)を作成します。R1(config)# ip access-list standard MANAGEMENT_ACCESS R1(config-std-nacl)# permit host 192.168.1.10 R1(config-std-nacl)# deny any log ! 他の全ての送信元からのアクセスを拒否し、ログも記録
-
解説:
-
permit host 192.168.1.10
: PC-Aからのアクセスを許可します。 -
deny any log
: それ以外のすべてのIPアドレスからのアクセスを拒否し、その試みをログに記録します。
-
-
解説:
- R1のVTYライン(Telnet/SSH接続に使われる仮想ポート)に作成したACLを適用します。
R1(config)# line vty 0 4 R1(config-line)# access-class MANAGEMENT_ACCESS in
-
解説:
access-class <ACL名> in
で、VTYラインへの着信接続に対してACLを適用します。
-
解説:
-
動作確認:
- PC-AからR1へSSH (
ssh 192.168.1.254
) を実行し、パスワードプロンプトが表示され、ログインできることを確認します。 - PC-BからR1へSSH (
ssh 192.168.1.254
) を実行し、「Connection refused by remote host」やタイムアウトなどで接続できないことを確認します。
- PC-AからR1へSSH (
-
ルーターでの確認:
R1でshow access-lists MANAGEMENT_ACCESS
コマンドを実行し、ヒットカウントを確認します。また、show logging
コマンドで、PC-Bからのアクセスが拒否されたログが出力されているか確認できます(log
キーワードを付けている場合)。 -
クリーンアップ:
VTYラインからACLの適用を解除し、ACL自体も削除します。R1(config)# line vty 0 4 R1(config-line)# no access-class MANAGEMENT_ACCESS in R1(config-line)# exit R1(config)# no ip access-list standard MANAGEMENT_ACCESS
- R1にTelnetアクセス制御用の標準ACL(例:名前付き
※終わったらextra問題も用意していますので講師まで
Discussion