1. 拡張 ACL の特徴
■ 標準 ACL と拡張 ACL の違い
| 項目 | 標準ACL | 拡張ACL |
|---|---|---|
| チェック項目 | 送信元IPのみ | 送信元/宛先IP、プロトコル、ポート番号 |
| 制御の細かさ | 粗い | 精密 |
| 番号範囲 | 1~99 / 1300~1999 | 100~199 / 2000~2699 |
| 推奨配置 | 宛先に近い(out) | 送信元に近い(in) |
標準 ACL は送信元 IP のみしか指定できないので、宛先ごとに許可や拒否をすることができません。しかし、拡張 ACL を使うと「宛先 IP」「プロトコル」「ポート番号」までパケットフィルタリングの条件に指定可能です。
なので、宛先が「192.168.0.1」へは許可、「192.168.0.2」へは拒否、といった設定ができたり、特定のサービス(通信の種類)だけを許可・拒否することも可能です。
例えば、TCP 80 番(HTTP)だけを拒否したり、UDP 53 番(DNS)だけを許可したり、ICMP(Ping)だけをブロックするといった細かい制御ができます。
このように拡張 ACL は、通信の内容(どこから・どこへ・どのサービスか)まで判断して制御できるため、ネットワーク運用において非常に柔軟で強力なアクセス制御を実現できます。
つまり拡張 ACL は、IP アドレスだけでなく通信の種類そのものを理解して制御できる ACL であり、標準 ACL では実現できない“サービス単位のアクセス制御”を可能にします。
2. 拡張 ACL の設定と確認
■ 拡張 ACL の設定
拡張 ACL の設定の流れは基本的に標準 ACL と同じで、
- ACLを作成
- インターフェイスに適用
■ 拡張 ACL の作成(番号付き)
(config)# access-list ACL番号(100~199) permit プロトコル 送信IP ワイルドカードマスク 送信元ポート番号 宛先IP ワイルドカード オプション
- プロトコルには「ip」「tcp」「udp」「icmp」などのプロトコルを指定
- 送信元ポート番号は省略可能
- オプションはプロトコルで指定したものによって指定できる値が変わります
TCP、UDP の際は宛先ポート番号をここで指定します
説明よりも、例を見たほうが早いと思うのでいくつか確認していきましょう
- 設定例
! 端末:192.168.1.1 ~ ネットワーク:172.16.0.0/24 までの通信を拒否
(config)# access-list 100 deny ip host 192.168.1.1 172.16.0.0 0.0.0.255
! 端末:192.168.1.1 ~ Web サーバ:172.16.0.1 までの HTTP 通信のみを許可
(config)# access-list 101 permit tcp host 192.168.1.1 host 172.16.0.1 eq 80
! 端末:192.168.1.1 ~ ネットワーク:172.16.0.0/24 までの通信を拒否
(config)# access-list 102 deny icmp host 192.168.1.1 172.16.0.0 0.0.0.255 echo
拡張 ACL でも暗黙の deny が存在します。
deny ip any any
■ 拡張 ACL の作成(名前付き)
(config)# ip access-list extended ACL名
(config-ext-nacl)# permit プロトコル 送信元IP ワイルドカード 送信元ポート番号 宛先IP ワイルドカード オプション
- 設定例
(config)# ip access-list extended test_exACL
(config-ext-nacl)# deny tcp host 192.168.1.1 host 172.16.0.1 eq 80
(config-ext-nacl)# deny tcp host 192.168.1.2 host 172.16.0.1 eq 23
(config-ext-nacl)# permit ip any any
(config-ext-nacl)# exit
(config)# int fa0/1
(config-if)# ip access-group test_exACL in
■ 拡張 ACLの確認
確認コマンドは標準 ACL の時と変わりません。
■ 作成した ACL の確認
! 全てのACL表示
# show access-lists
Extended IP access list test_exACL
10 deny tcp host 192.168.1.1 host 172.16.0.1 eq www
20 deny tcp host 192.168.1.2 host 172.16.0.1 eq telnet
30 permit ip any any (103 match(es))
! IP プロトコルのACL表示
# show ip access-lists
Extended IP access list test_exACL
10 deny tcp host 192.168.1.1 host 172.16.0.1 eq www
20 deny tcp host 192.168.1.2 host 172.16.0.1 eq telnet
30 permit ip any any (103 match(es))
! 特定のACL表示
# show access-lists test_exACL
Extended IP access list test_exACL
deny tcp host 192.168.1.1 host 172.16.0.1 eq www
deny tcp host 192.168.1.2 host 172.16.0.1 eq telnet
permit ip any any (103 match(es))
10、20、30の番号は「シーケンス番号」と呼ばれているものです。
特定の ACL 表示の場合、シーケンス番号を省略する機器もあります。
Packet Tracer の IOS は簡易版なので、show access-lists では番号を出さない仕様になっています。また、設定の時にはポート番号で指定していても確認するときには、
「80は www」「23は telnet」のように置き換わっています。
(103 match(es)) と表記のある場所は ACL に該当したパケットの数を表しております。
■ ACL を適用したインターフェイスの確認
! show ip interfaceからの確認
# show ip interface
! (省略)
Outgoing access list is not set
Inbound access list is test_exACL
! (省略)
! running-configからの確認
# show running-config
! (省略)
interface FastEthernet0/0
ip address 192.168.1.254 255.255.255.0
ip access-group test_exACL in
duplex auto
speed auto
! (省略)
ip access-list extended test_exACL
deny tcp host 192.168.1.1 host 172.16.0.1 eq www
deny tcp host 192.168.1.2 host 172.16.0.1 eq telnet
permit ip any any
! (省略)
3. 拡張 ACL の削除
■ 作成した ACL の削除
削除の方法も標準 ACL の時と変わりません。
! ACLの中身を全部削除
(config)# no access-list ACL名
! 特定の ACL のルールを削除(一部を削除)
! 1. シーケンス番号確認
# show access-lists
Extended IP access list test_exACL
10 deny ...
20 deny ...
30 permit ...
! 2. シーケンス番号で任意のルールを削除
(config)# ip access-list extended ACL名
(config-std-nacl)# no シーケンス番号
4. 名前付き ACL の編集
名前付き ACL (標準・拡張どちらも)はシーケンス番号を使って柔軟に編集できます。
Cisco IOS の 名前付き ACLでは、各エントリに付与される シーケンス番号(行番号) を利用して、ACL の途中にルールを挿入したり、削除した番号を再利用したりできます。
- 20 番を削除して、同じ番号に新しいルールを挿入してみます。
! シーケンス番号で任意のルールを削除
(config)# ip access-list extended test_exACL
(config-std-nacl)# no 20
(config-std-nacl)# 20 deny icmp host 192.168.1.2 host 172.16.0.1
(config-std-nacl)# end
# show access-lists
Extended IP access list test_exACL
10 deny tcp host 192.168.1.1 host 172.16.0.1 eq www
20 deny icmp host 192.168.1.2 host 172.16.0.1
30 permit ip any any (103 match(es))
まとめ
■ 標準 ACL と拡張 ACL の違い
| 項目 | 標準ACL | 拡張ACL |
|---|---|---|
| チェック項目 | 送信元IPのみ | 送信元/宛先IP、プロトコル、ポート番号 |
| 制御の細かさ | 粗い | 精密 |
| 番号範囲 | 1~99 / 1300~1999 | 100~199 / 2000~2699 |
| 推奨配置 | 宛先に近い(out) | 送信元に近い(in) |
■ 拡張 ACL の作成
! 拡張 ACL の作成(番号付き)
(config)# access-list ACL番号(100~199) permit プロトコル 送信IP ワイルドカードマスク 送信元ポート番号 宛先IP ワイルドカード オプション
! 拡張 ACL の作成(名前付き)
(config)# ip access-list extended ACL名
(config-ext-nacl)# permit プロトコル 送信元IP ワイルドカード 送信元ポート番号 宛先IP ワイルドカード オプション
■ 作成した ACL の確認
! 全てのACL表示
# show access-lists
! IP プロトコルのACL表示
# show ip access-lists
! 特定のACL表示
# show access-lists test_exACL
10、20、30の番号は「シーケンス番号」と呼ばれているものです。
特定の ACL 表示の場合、シーケンス番号を省略する機器もあります。
Packet Tracer の IOS は簡易版なので、show access-lists では番号を出さない仕様になっています。また、設定の時にはポート番号で指定していても確認するときには、
「80は www」「23は telnet」のように置き換わっています。
(103 match(es)) と表記のある場所は ACL に該当したパケットの数を表しております。
■ ACL を適用したインターフェイスの確認
# show ip interface
# show running-config
■ 作成した ACL の削除
削除の方法も標準 ACL の時と変わりません。
! ACLの中身を全部削除
(config)# no access-list ACL名
! 特定の ACL のルールを削除(一部を削除)
(config)# ip access-list extended ACL名
(config-std-nacl)# no シーケンス番号
■ 作成済み名前付き ACL の編集
! シーケンス番号で任意のルールを編集
(config)# ip access-list extended ACL名
(config-std-nacl)# no 20
(config-std-nacl)# 20 permit プロトコル 送信元IP ワイルドカード 送信元ポート番号 宛先IP ワイルドカード オプション
シーケンス番号を使った編集は
「標準 or 拡張」ではなく「名前付きかどうか」で決まります。