Cisco ACL入門

ルータには、通過するパケットをチェックして、通信の許可/拒否を制御できる機能が付いています。
ACL(Access Control List)と呼ばれる許可/拒否のルールによって、パケットがチェックされます。

  • 標準ACL
    • 番号付き標準ACL
    • 名前付き標準ACL
  • 拡張ACL
    • 番号付き拡張ACL
    • 名前付き拡張ACL

標準ACL

番号付き標準ACL

番号付き標準ACLは、以下のコマンドで作成します。

(config)#access-list ACL番号 <permit|deny> 送信元IPアドレス ワイルドカードマスク

ACL番号は、1 ~ 99、もしくは、1300 ~ 1999が利用できます。
通信を許可する場合はpermitを、拒否する場合は、denyを指定します。

ACL番号1つに対して、複数のルールを定義することができます。
ルールは、定義した順番に評価され、ルールに一致するものがあればそこで評価が終了します。
評価終了後は、以降のルールは評価されません。

また、ACLには、暗黙のdenyと呼ばれるルールがあり、どのルールにも一致しなかったパケットは、
暗黙のdenyによって破棄されます。

作成したACLは、以下のコマンドでインターフェースに適用します。

(config-if)#ip access-group ACL番号 <in | out>

ACLの適用では、インターフェースにパケットが入っているタイミングでチェックするか(in)、出ていくタイミングでチェックするか(out)を指定します。

設定例

ここで、学校を想定して、以下のようなネットワークを扱います。
先生は成績データなど生徒から自由にみられては困るデータを扱うため、生徒用のネットワークから
アクセスされると困ったことになります。
そこで、先生からはどこへでもアクセス可能だが、生徒からは先生用ネットワークへアクセスできないように制限をかけてみます。

まずは、VLAN設定、ルーティング設定を行っていきます。


Would you like to enter the initial configuration dialog? [yes/no]: no


Press RETURN to get started!



Switch>en
Switch#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#ip routing
Switch(config)#
Switch(config)#vlan 10
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#exit
Switch(config)#
Switch(config)#do show vlan bri

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa0/1, Fa0/2, Fa0/3, Fa0/4
                                                Fa0/5, Fa0/6, Fa0/7, Fa0/8
                                                Fa0/9, Fa0/10, Fa0/11, Fa0/12
                                                Fa0/13, Fa0/14, Fa0/15, Fa0/16
                                                Fa0/17, Fa0/18, Fa0/19, Fa0/20
                                                Fa0/21, Fa0/22, Fa0/23, Fa0/24
                                                Gig0/1, Gig0/2
10   VLAN0010                         active    
20   VLAN0020                         active    
1002 fddi-default                     active    
1003 token-ring-default               active    
1004 fddinet-default                  active    
1005 trnet-default                    active    
Switch(config)#int f0/1
Switch(config-if)#switchport mode access 
Switch(config-if)#switchport access vlan 10
Switch(config-if)#
Switch(config-if)#exit
Switch(config)#
Switch(config)#int f0/2
Switch(config-if)#switchport mode access 
Switch(config-if)#switchport access vlan 20
Switch(config-if)#
Switch(config-if)#exit
Switch(config)#
Switch(config)#do show vlan bri

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa0/3, Fa0/4, Fa0/5, Fa0/6
                                                Fa0/7, Fa0/8, Fa0/9, Fa0/10
                                                Fa0/11, Fa0/12, Fa0/13, Fa0/14
                                                Fa0/15, Fa0/16, Fa0/17, Fa0/18
                                                Fa0/19, Fa0/20, Fa0/21, Fa0/22
                                                Fa0/23, Fa0/24, Gig0/1, Gig0/2
10   VLAN0010                         active    Fa0/1
20   VLAN0020                         active    Fa0/2
1002 fddi-default                     active    
1003 token-ring-default               active    
1004 fddinet-default                  active    
1005 trnet-default                    active    
Switch(config)#
Switch(config)#int vla
Switch(config)#int vlan 10
Switch(config-if)#
%LINK-5-CHANGED: Interface Vlan10, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan10, changed state to up

Switch(config-if)#

Switch(config-if)#ip address 192.168.1.1 255.255.255.0
Switch(config-if)#exit
Switch(config)#int vlan 20
Switch(config-if)#
%LINK-5-CHANGED: Interface Vlan20, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan20, changed state to up

Switch(config-if)#ip address 192.168.2.1 255.255.255.0
Switch(config-if)#
Switch(config-if)#exit
Switch(config)#
Switch(config)#do show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.1.0/24 is directly connected, Vlan10
C    192.168.2.0/24 is directly connected, Vlan20

Switch(config)#

この段階では、先生、生徒双方のネットワークを行き来することができます。

C:\>ipconfig

FastEthernet0 Connection:(default port)

   Connection-specific DNS Suffix..: 
   Link-local IPv6 Address.........: FE80::20A:41FF:FE98:144A
   IPv6 Address....................: ::
   IPv4 Address....................: 192.168.1.10
   Subnet Mask.....................: 255.255.255.0
   Default Gateway.................: ::
                                     192.168.1.1

C:\>ping 192.168.2.100

Pinging 192.168.2.100 with 32 bytes of data:

Request timed out.
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time=5ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127

Ping statistics for 192.168.2.100:
    Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 5ms, Average = 1ms

C:\>
C:\>ipconfig

FastEthernet0 Connection:(default port)

   Connection-specific DNS Suffix..: 
   Link-local IPv6 Address.........: FE80::206:2AFF:FED0:6576
   IPv6 Address....................: ::
   IPv4 Address....................: 192.168.2.10
   Subnet Mask.....................: 255.255.255.0
   Default Gateway.................: ::
                                     192.168.2.1

Bluetooth Connection:

   Connection-specific DNS Suffix..: 
   Link-local IPv6 Address.........: ::
   IPv6 Address....................: ::
   IPv4 Address....................: 0.0.0.0
   Subnet Mask.....................: 0.0.0.0
   Default Gateway.................: ::
                                     0.0.0.0

C:\>ping 192.168.1.100

Pinging 192.168.1.100 with 32 bytes of data:

Request timed out.
Reply from 192.168.1.100: bytes=32 time<1ms TTL=127
Reply from 192.168.1.100: bytes=32 time<1ms TTL=127
Reply from 192.168.1.100: bytes=32 time<1ms TTL=127

Ping statistics for 192.168.1.100:
    Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:\>

次にACLを作成し、割り当ててみます。

Switch(config)#access-list 1 deny 192.168.2.10 0.0.0.0
Switch(config)#access-list 1 deny 192.168.2.11 0.0.0.0
Switch(config)#access-list 1 permit any
Switch(config)#int vlan 10
Switch(config-if)#ip access-group 1 out

IPルーティングを行うのはSVIになるため、ACLはVLANに対して割り当てています。
今回は、生徒用端末と先生用ネットワークとの通信を禁止したいため、VLAN10へ向かう(out)方向に対して適用しています。
今のケースでは、VLAN20へ入ってくるタイミング(in)に適用しても同じ動きになります。
が、ほかにもネットワークが存在している場合、 inに適用すると意図したところ以外の通信もブロックしてしまうことがあります。そのため、ACLは、宛先に近いところに適用することがおすすめです。

改めて、疎通確認を行います。

C:\>ipconfig

FastEthernet0 Connection:(default port)

   Connection-specific DNS Suffix..: 
   Link-local IPv6 Address.........: FE80::206:2AFF:FED0:6576
   IPv6 Address....................: ::
   IPv4 Address....................: 192.168.2.10
   Subnet Mask.....................: 255.255.255.0
   Default Gateway.................: ::
                                     192.168.2.1

Bluetooth Connection:

   Connection-specific DNS Suffix..: 
   Link-local IPv6 Address.........: ::
   IPv6 Address....................: ::
   IPv4 Address....................: 0.0.0.0
   Subnet Mask.....................: 0.0.0.0
   Default Gateway.................: ::
                                     0.0.0.0

C:\>ping 192.168.1.100

Pinging 192.168.1.100 with 32 bytes of data:

Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.

Ping statistics for 192.168.1.100:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

C:\>ping 192.168.1.10

Pinging 192.168.1.10 with 32 bytes of data:

Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.

Ping statistics for 192.168.1.10:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

C:\>
C:\>ipconfig

FastEthernet0 Connection:(default port)

   Connection-specific DNS Suffix..: 
   Link-local IPv6 Address.........: FE80::20A:41FF:FE98:144A
   IPv6 Address....................: ::
   IPv4 Address....................: 192.168.1.10
   Subnet Mask.....................: 255.255.255.0
   Default Gateway.................: ::
                                     192.168.1.1

Bluetooth Connection:

   Connection-specific DNS Suffix..: 
   Link-local IPv6 Address.........: ::
   IPv6 Address....................: ::
   IPv4 Address....................: 0.0.0.0
   Subnet Mask.....................: 0.0.0.0
   Default Gateway.................: ::
                                     0.0.0.0

C:\>ping 192.168.2.100

Pinging 192.168.2.100 with 32 bytes of data:

Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127

Ping statistics for 192.168.2.100:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:\>ping 192.168.2.10

Pinging 192.168.2.10 with 32 bytes of data:

Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 192.168.2.10:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

C:\>

生徒用端末2台との通信ができなくなりました。
生徒用ネットワーク内のサーバとは、通信できています。

今回のACLの適用により、先生用の端末から生徒用の端末への通信もブロックされました。
Pingでの疎通確認は、行きと帰りの通信ができて成功となります。ACLにより、帰りの通信が通らなくなったため、Pingでの通信確認ができなくなっています。

名前付き標準ACL

(config)#ip access-list standard ACL名
(config-std-nacl)#<permit|deny> 送信元IPアドレス ワイルドカードマスク

番号付きACL同様、1つのACL名に対して複数のルールが定義できます。

作成したACLは、以下のコマンドでインターフェースに適用します。

(config-if)#ip access-group ACL名 <in | out>

ACLの評価のルールは、番号付きの場合と同様です。

拡張ACL

拡張ACLでは、送信元IPアドレスのほかに、プロトコルによって許可/拒否を決めることが可能です。
そのほかにも宛先IPアドレスやポート番号を指定することもできます。

番号付き拡張ACL

(config)#access-list ACL番号 <permit | deny> プロトコル 送信元IPアドレス ワイルドカードマスク (送信元ポート番号) 宛先IPアドレス ワイルドカードマスク (オプション)

拡張ACLで使用できる番号は、100~199と2000~2699になります。

標準ACLで見た設定例と同じ構成を再度引用し、以下の条件を課すことにします。

  • 生徒用ネットワークから先生ネットワークへの通信を禁止する
  • 先生用ネットワークから生徒用ネットワークへの通信は許可する
  • 生徒用サーバから先生用サーバへのPing通信を許可する
Switch(config)#access-list 100 permit tcp 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255 established 
Switch(config)#access-list 100 permit icmp host 192.168.2.100 host 192.168.1.100
Switch(config)#access-list 100 permit icmp 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255 echo-reply
Switch(config)#int vlan20
Switch(config-if)#ip access-group 100 in
Switch(config-if)#exit

Switch(config)#

access-list 100 permit tcp 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255 established
の部分は、先生用ネットワークから来た通信に応答できるようにするための設定です。
この記載がない場合は、先生用から生徒用にtcp通信が成立しません。
また、専用ネットワークからのPing応答を返せるように
access-list 100 permit icmp 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255 echo-reply
を追加しています。

先生端末からの通信を確認します。

C:\>ipconfig

FastEthernet0 Connection:(default port)

   Connection-specific DNS Suffix..: 
   Link-local IPv6 Address.........: FE80::20A:41FF:FE98:144A
   IPv6 Address....................: ::
   IPv4 Address....................: 192.168.1.10
   Subnet Mask.....................: 255.255.255.0
   Default Gateway.................: ::
                                     192.168.1.1

Bluetooth Connection:

   Connection-specific DNS Suffix..: 
   Link-local IPv6 Address.........: ::
   IPv6 Address....................: ::
   IPv4 Address....................: 0.0.0.0
   Subnet Mask.....................: 0.0.0.0
   Default Gateway.................: ::
                                     0.0.0.0
C:\>ping 192.168.2.100

Pinging 192.168.2.100 with 32 bytes of data:

Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127

Ping statistics for 192.168.2.100:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:\>ping 192.168.2.10

Pinging 192.168.2.10 with 32 bytes of data:

Reply from 192.168.2.10: bytes=32 time=6ms TTL=127
Reply from 192.168.2.10: bytes=32 time<1ms TTL=127
Reply from 192.168.2.10: bytes=32 time<1ms TTL=127
Reply from 192.168.2.10: bytes=32 time<1ms TTL=127

Ping statistics for 192.168.2.10:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 6ms, Average = 1ms

C:\>

先生用端末から生徒用サーバへのWebアクセスも問題なくできています。

次は、生徒用サーバからの通信確認です。
通信を許可した先生用サーバへのPingは通りますが、端末への通信はブロックされます。

C:\>ipconfig

FastEthernet0 Connection:(default port)

   Connection-specific DNS Suffix..: 
   Link-local IPv6 Address.........: FE80::2D0:D3FF:FE97:3683
   IPv6 Address....................: ::
   IPv4 Address....................: 192.168.2.100
   Subnet Mask.....................: 255.255.255.0
   Default Gateway.................: ::
                                     192.168.2.1

C:\>ping 192.168.1.100

Pinging 192.168.1.100 with 32 bytes of data:

Reply from 192.168.1.100: bytes=32 time=1ms TTL=127
Reply from 192.168.1.100: bytes=32 time<1ms TTL=127
Reply from 192.168.1.100: bytes=32 time<1ms TTL=127
Reply from 192.168.1.100: bytes=32 time<1ms TTL=127

Ping statistics for 192.168.1.100:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 1ms, Average = 0ms

C:\>ping 192.168.1.10

Pinging 192.168.1.10 with 32 bytes of data:

Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.

Ping statistics for 192.168.1.10:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

C:\>

名前付き拡張ACL

(config)#ip access-list extended ACL名
(config-ext-nacl)#<permit | deny> プロトコル 送信元IPアドレス ワイルドカードマスク (送信元ポート番号) 宛先IPアドレス ワイルドカードマスク (オプション)

コメント

タイトルとURLをコピーしました