ACL

ACLとは 〜標準ACLと拡張ACLの違いと使い分け,暗黙のdeny,戻りのパケットの制御について〜

ACL とは

アクセスリストは正式にはアクセスコントロールリスト、略してACL (読み方:アクル) と呼びます。

IP 通信の通過を許可したり拒否したりするルールを記載するリストです。

ACL の中身は、「この IP アドレスからの通信を拒否する」「この IP アドレスからの通信を許可する」というルールを一行ずつ書いていったリストになります。

ACL の定義を行い、それをインタフェースに適用することで、そのインタフェースで通過させる、させない、の選択を ACL で定義したルール通りにさせることができます。

Cisco では標準 ACL拡張 ACL の 2 種類があり、それぞれ以下の書き方をします。

標準ACL

標準 ACL では、送信元 IP での制御しかできません (宛先 IP での制御は、必要に応じてルーティングで null ルートを設定すれば良い、という考え)。

ACL 番号 1~99、もしくは 1300~1999 で設定した場合、それは標準 ACL になります。

ACL#番号 10 の例です。

(config)# access-list 10 deny 192.168.1.1 0.0.0.0
(config)# access-list 10 permit 192.168.1.0 0.0.0.255
(config)# interface fastEthernet 0/1
(config-if)# ip access-group 10 in

この設定により、fastEthernet 0/1 に入ってくる通信は 192.168.1.1 を除いた192.168.1.0/24 からの通信だけが許可されます。上から順番に見るため、192.168.1.1 は拒否されます。

192.168.1.0/24 以外は書かれていませんが、書かれていない場合は暗黙のdeny (拒否) というルールにより拒否されます。ACL の最後に必ず deny any というルールが入るということです。

また、番号ベースではなく名前付き ACL というのも機能としては同じです。この場合、番号ではなく名前により管理ができます。

(config)# ip access-list standard EIGYOUBU
(config-std-nacl)# deny 192.168.1.1 0.0.0.0
(config-std-nacl)# permit 192.168.1.0 0.0.0.255
(config-std-nacl)# exit
(config)# interface fastEthernet 0/1
(config-if)# ip access-group EIGYOUBU in

この場合、効果は全く同じですが、名前付きのほうが、「これは営業部用の ACL だ」と管理しやすいです。

拡張 ACL

拡張 ACL では「送信元 IP アドレス」だけでなく、「宛先 IP アドレス」「プロトコル (ip/tcp/udp/icmp)」「送信元ポート」「宛先ポート」「(TCP の場合はさらに) established (TCP syn が送られた以降であることを意味する)」の組み合わせでのアクセス制御ができます。

つまり、TCP に限っては established を使うことで「戻りのパケットなら許可する」といった制御ができるのです。

ACL 番号 100~199、もしくは 2000~2699 で設定した場合、それは拡張 ACL になります。

ACL 番号 110 の例です。

(config)# access-list 110 deny tcp 192.168.1.0 0.0.0.255 10.1.1.0 0.0.0.255 eq 80
(config)# access-list 110 permit ip 192.168.0.0 0.0.255.255 10.1.1.0 0.0.0.255
(config)# interface fastEthernet 0/1
(config-if)# ip access-group 110 in

この場合、192.168.1.0/24 は 10.1.1.0/24 の tcp 80 (http) を拒否されますが、それ以外のプロトコルは下のルールで許可されています。

192.168.1.0/24 以外の 192.168.0.0/16 は 10.1.1.0/24 へは tcp 80 ももちろん、それ以外のポートもすべて許可されます。

名前付き ACL の場合は以下のようになります。

(config)# ip access-list extended GIJUTSUBU
(config-ext-nacl)# deny tcp 192.168.1.0 0.0.0.255 10.1.1.0 0.255.255.255 eq 80
(config-ext-nacl)# permit ip 192.168.0.0 0.0.255.255 10.1.1.0 0.255.255.255
(config-ext-nacl)# exit
(config)# interface fastEthernet 0/1
(config-if)# ip access-group EIGYOUBU in

正直、拡張 ACL は標準 ACL を包含しているので標準 ACL は無くても良いように思います。ただ、他のメーカでの例ではありますが、CoPP や SNMP への ACL については標準 ACL じゃないと動作しない、というコマンドもありますので、注意が必要です (Cisco でもあるかも)。

コメント

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