ACL
アクセスリスト(ACL:Access Control List)は、特定のパケットフローを識別し制御するための条件を記述したリストです。
ACLを使用すると、ルータを通過するパケットのフィルタリングを行うことができます。※ルータ自身から発信されるパケットはフィルタリングの対象にはなりません。
<ACLの種類>
- 標準ACL…条件として送信元IPアドレスだけ指定できる。宛先に近い位置に設置推奨(不要なフィルタリングを防ぐため)。
- 拡張ACL…条件として送信元IPアドレス、宛先IPアドレス、プロトコル、送信元ポート番号、宛先ポート番号を指定できる。送信元に近い位置に設置推奨。
<ACLの照合>
- シーケンス番号の小さい順(小さい順)に行われる
- 限定された条件ほど先に設定する必要がある
- ACLの最終行には自動的に「暗黙のdeny」が存在する
番号付きACL
番号を指定して作成するACL
番号付き標準ACLの作成
(config)#access-list <acl-number> { permit | deny | remark } <source> [<wildcard>] [ log ]
*permit‥許可、*deny‥拒否
番号付き標準ACLをインターフェイスに適用
(config-if)#ip access-group <acl-number> { in | out }
番号付き拡張ACL
条件に送信元IPアドレスだけでなく、宛先IPアドレスやプロトコル、ポート番号を指定できます。
【指定可能な項目とその順番】
- プロトコル
- 送信元アドレス
- 送信元ポート(オプション)
- 宛先IPアドレス
- 宛先ポート(オプション)
番号付き拡張ACLの作成
(config)#access-list <acl-number> { permit | deny | remark } <protocol> <source> <wildcard> [<operator-port>] <destination> <wildcard> [<operator-port>] [established] [ log ]
*source‥送信元アドレス、*destination‥宛先アドレス、*log‥パケットが条件に一致した場合にログメッセージを表示(オプション)
<番号付き拡張ACLステートメントの例>
条件 | ステートメントの例 |
---|---|
192.168.1.64/27から全てのping(ICMPエコー/エコー応答)を許可 | access-list 100 permit icmp 192.168.1.64 0.0.0.31 any echo access-list 100 permit icmp 192.168.1.64 0.0.0.31 any echo-reply |
プロトコル・種類 | ACL番号 |
---|---|
IPv4標準 | 1〜99、1300〜1999 |
Ipv4拡張 | 100〜199、2000〜2699 |
Apple Talk | 600~699 |
IPX標準 | 800~899 |
IPX拡張 | 900~999 |
プロトコル | プロトコルナンバー |
---|---|
ICMP | 1 |
TCP | 6 |
UDP | 17 |
EIGRP | 88 |
OSPF | 89 |
名前付きACL
名前を指定して作成するACLです。、標準と拡張IPアクセスリストがあります。
名前付きACLの作成(標準/拡張)
(config)#ip access-list < standard/extended > < acl-name >
インバウンドACL、アウトバウンドACL
- インバウンドACL…ACL照合⇒ルーティングテーブル参照
- アウトバウンドACL…ルーティングテーブル参照⇒ACL照合
- パケットフィルタリングのためにインターフェースに適用できるACLの数は、レイヤ3プロトコル(IPやIPX)ごとに in方向とout方向に1つずつ
ワイルドカードマスク
ACLのステートメント(条件文)の中でIPアドレスを指定するときには、ワイルドカードマスクを使用します。
- 0を指定した場合一致
- 1を指定した場合無視
プロトコルとポート番号
ポート番号 | TCP/IP | プロトコル | 用途 |
---|---|---|---|
20 | TCP | ftp-data | ファイル転送(データ本体) |
21 | TCP | ftp | ファイル転送(コントロール) |
22 | TCP | ssh | リモートログイン(セキュア) |
23 | TCP | telnet | リモートログイン |
25 | TCP | smtp | メール送信 |
53 | TCP/UDP | domain | DNS(名前解決はUDP,ゾーン転送はTCP) |
66 | bootpc | ||
67 | bootpc | ||
69 | UDP | TFTP | ファイル転送 |
80 | TCP | http | www |
110 | TCP | pop3 | メール受信 |
123 | UDP | NTP | 時刻合わせ |
143 | TCP | imap | メール受信 |
161 | UDP | SNMP | 通信機器の監視、制御。 |
443 | TCP | https | www(セキュア) |
520 | UDP | RIP | ルーティングプロトコル |
VTYポート
TelnetやSSHなどのリモートアクセスは、ルータのリモートアクセス用の仮想ポートで処理されます。この仮想ポートのことをVTYポートと呼びます。ルータにTelnetやSSHでアクセスした場合、物理インターフェイスではなくVTYポートにログインする形になります。
このVTYポートにACLを割り当てることでTelnetやSHHのリモートアクセスを効率よく制御できます。
アクセスクラス(access-class)
仮想回線に適用するアクセスリストのことをアクセスクラスと言います。アクセスクラスを使うことにより、ルータへのTelnetアクセスを制限できます。
仮想回線(vty回線)にアクセスリストを適用する
Router(config)#line vty 0 4
Router(config-line)#access-class {アクセスリスト番号} {in | out}
ACLステートメントの編集
シーケンス番号によるステートメントの挿入
■標準ACL
(config)#ip access-list standard { <acl-number> | <acl-name> }
(config-std-nacl)#<sequence-number> { permit | deny } <source> [ <wildcard> ] [log]
■拡張ACL
(config)#ip access-list extended { <acl-number> | <acl-name> }
(config-ext-nacl)#<sequence-number> { permit | deny } <protcol> <source> <wildcard> [ <operator-port> ] <destination> <wildcard> [ <operator-port> ] [ established ] [log]
標準ACL
ステートメントの確認
ACLの表示
#show [ ip | ipv6 ] access-lists [ 番号 | 名前 | interface { インターフェイス } ] [ in | out ]
・全てのACLの表示…show access-lists
・ACL100の表示…show access-lists 100
ステートメントの削除
ACL99にあるシーケンス番号20のステートメントを削除
(config)#ip access-list standard 99
(config-std-nacl)#no 20