🍄

13. ACL_ハンズオン

に公開

第2部:ACLハンズオン演習 ~ACLの基本をマスターしよう!~

このハンズオンでは、Packet Tracer(または実機)を使用して、ACLの基本的な設定と動作確認を行います。

ハンズオン共通基本構成図(例)

ハンズオン準備:

  1. IPアドレスとVLA設定:
    上記構成図を参考に、各PCおよびルーターのインターフェースにIPアドレス、サブネットマスク、デフォルトゲートウェイを設定してください。
    R1には直接接続されたネットワーク間のルーティングが自動的に行われます。ACLを設定する前にPC-AとPC-B間でPingが通る状態にしておいてください。(RoASでVLAN間の通信を実現してください)
    R1のLAN側物理インターフェイスには192.168.1.254のIPアドレスを設定してください。
  2. ルーターのSSH基本設定 (R1に対して実施):
    ルーターへSSHでアクセスするための基本設定を行っておきます。

ハンズオン1:標準ACL ~特定のPCからのアクセスをブロック!~

  • シナリオ:
    • PC-A (192.168.1.10) から PC-B (192.168.2.10) への通信を拒否する。
    • 他の通信は特に制限しない。
  • 目的:
    • 標準ACLの基本的な作成方法と適用方法を理解する。
    • 送信元IPアドレスのみで制御するACLの動作を確認する。
    • ACLの適用場所と方向(インバウンド/アウトバウンド)の基本を学ぶ。
  • 設定ルーターとインターフェース(例): R1のGigabitEthernet0/0(PC-Aが接続されているインターフェース)にインバウンドで適用。
  • 手順:
    1. 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アドレスからの通信もすべて拒否されてしまいます。
    2. 作成したACLをR1のLAN側インターフェースにインバウンドで適用します。
      R1(config)# interface GigabitEthernet0/0
      R1(config-if)# ip access-group 1 in
      
      • 解説: in は、PC-Aからルーターに入ってくるパケットに対してACLを適用するという意味です。
    3. 動作確認:
      • 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 が機能していることを確認します。
    4. ルーターでの確認:
      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)
      
    5. クリーンアップ(次のハンズオンのため):
      適用した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
      

ハンズオン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) への 他の全ての通信は拒否する。
  • 目的:
    • 拡張ACLの基本的な作成方法と適用方法を理解する。
    • 送信元・宛先IPアドレス、プロトコルを指定した制御を体験する。
    • ACLの「暗黙のDeny」を意識した記述(許可するものだけを記述)を学ぶ。
  • 設定ルーターとインターフェース(例): R1のGigabitEthernet0/0(PC-Aが接続されているインターフェース)にインバウンドで適用。
    ※適用前に講師に声をかけてください(SSHサーバの機能確認のため)
  • 手順:
    1. 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への通信はすべて拒否されます。
    2. 作成したACLをR1のGigabitEthernet0/0インターフェースにインバウンドで適用します。
      R1(config)# interface GigabitEthernet0/0
      R1(config-if)# ip access-group 100 in
      
    3. 動作確認:
      • 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サーバの機能がないためラズベリーパイで代用)
    4. ルーターでの確認:
      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)
      
    5. クリーンアップ(次のハンズオンのため):
      適用した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
      

(オプション)ハンズオン3:VTYアクセス制御 ~ルーターを守ろう!~

  • シナリオ:
    • 管理用PCであるPC-A (192.168.1.10) からのみ、R1へのSSHアクセスを許可する。
    • 他のPC(例:PC-B 192.168.2.10)からはR1へのSSHアクセスを拒否する。
  • 目的:
    • ルーター自身の管理アクセス(VTYライン)を保護するためのACL設定を学ぶ。
    • access-class コマンドの基本的な使い方を理解する。
  • 前提: 「ハンズオン準備」でR1のSSH基本設定が完了していること。
  • 手順:
    1. 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アドレスからのアクセスを拒否し、その試みをログに記録します。
    2. 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を適用します。
    3. 動作確認:
      • PC-AからR1へSSH (ssh 192.168.1.254) を実行し、パスワードプロンプトが表示され、ログインできることを確認します。
      • PC-BからR1へSSH (ssh 192.168.1.254) を実行し、「Connection refused by remote host」やタイムアウトなどで接続できないことを確認します。
    4. ルーターでの確認:
      R1で show access-lists MANAGEMENT_ACCESS コマンドを実行し、ヒットカウントを確認します。また、show logging コマンドで、PC-Bからのアクセスが拒否されたログが出力されているか確認できます(logキーワードを付けている場合)。
    5. クリーンアップ:
      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
      

※終わったらextra問題も用意していますので講師まで

Discussion