ACL

アクセスリスト(ACLAccess 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アドレスやプロトコル、ポート番号を指定できます。

指定可能な項目とその順番

  1. プロトコル
  2. 送信元アドレス
  3. 送信元ポート(オプション)
  4. 宛先IPアドレス
  5. 宛先ポート(オプション)

番号付き拡張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 Talk600~699
IPX標準800~899
IPX拡張900~999
プロトコルプロトコルナンバー
ICMP1
TCP6
UDP17
EIGRP88
OSPF89

名前付きACL

名前を指定して作成するACLです。、標準拡張IPアクセスリストがあります。

名前付きACLの作成(標準/拡張)
(config)#ip access-list < standard/extended > < acl-name >

インバウンドACL、アウトバウンドACL

  • インバウンドACLACL照合⇒ルーティングテーブル参照
  • アウトバウンドACLルーティングテーブル参照⇒ACL照合
  • パケットフィルタリングのためにインターフェースに適用できるACLの数は、レイヤ3プロトコル(IPやIPX)ごとに in方向とout方向に1つずつ

ワイルドカードマスク

ACLのステートメント(条件文)の中でIPアドレスを指定するときには、ワイルドカードマスクを使用します。

  • 0を指定した場合一致
  • 1を指定した場合無視

プロトコルとポート番号

ポート番号TCP/IPプロトコル用途
20TCPftp-dataファイル転送(データ本体)
21TCPftpファイル転送(コントロール)
22TCPsshリモートログイン(セキュア)
23TCPtelnetリモートログイン
25TCPsmtpメール送信
53TCP/UDPdomainDNS(名前解決はUDP,ゾーン転送はTCP)
66bootpc
67bootpc
69UDPTFTPファイル転送
80TCPhttpwww
110TCPpop3メール受信
123UDPNTP時刻合わせ
143TCPimapメール受信
161UDPSNMP通信機器の監視、制御。
443TCPhttpswww(セキュア)
520UDPRIPルーティングプロトコル

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