5. ACLの設定
5.1. ACLの用途と種類
ACL(アクセスリスト)は特定のトラフィックを抽出する条件リストでルータのインターフェイスに割り当てて使用する。
ACLはパケットフィルタリングのほかに以下機能と組み合わせ利用される。
- NAT
- VPN
- QoS
- ダイナミックルーティング
5.1.1. ACLの種類
アクセスリストは以下表のように規定されている。
種類 | 番号範囲 |
---|---|
標準IP | 1~99 |
拡張IP | 100~199 |
AppleTalk | 600~699 |
標準IPX | 800~899 |
拡張機能IPX | 900~999 |
IPX-SAP | 1000~1099 |
名前付きIP | 名前で定義 |
標準アクセスリスト
標準ACLではパケットの送信元IPアドレスをチェックする。 また標準ACLの種類には番号付き標準ACLと名前付き標準ACLがあり、それぞれ1~99の値を設定、名前を表す文字列を指定する。
拡張アクセスリスト
拡張ACLでは送信元IPアドレス、宛先IPアドレス、プロトコル番号、送信元ポート番号,宛先ポート番号をチェックする。 また拡張ACLの種類には番号付き拡張ACLと名前付き拡張ACLがあり、それぞれ100~199の値を設定、名前を表す文字列を指定する。
5.2. ワイルドカードマスクの補足
ワイルドカードマスクは2進数表記にした場合、0の部分のチェックを行い、1の部分は無視する。
ワイルドカードマスクが000.000.000.255
の場合は第1から第3オクテットまでは固定、第4オクテットは条件に含まない。
例えばIPアドレスが192.168.10.0
でワイルドカードマスクが000.000.000.255
の場合、ネットワーク範囲は192.168.10.0~192.168.10.255
までとなる。
なおワイルドカードマスクの省略形にanyやhostがあり意味は以下の通りである。
- any ... すべてのアドレスビットを無視する
- host ... すべてのアドレスビットをチェックする(特定のホストアドレス)
つまり0.0.0.0 255.255.255.255 → any
、IPアドレス 0.0.0.0 → host IPアドレス
となる。
5.2. 標準アクセスリスト/拡張アクセスリストの作成
5.2.1. アクセスリストの設定と確認
標準アクセスリストの作成
標準アクセスリストは送信元IPアドレスで判断し、以下コマンドで実行可能。
注意点としてはACLではリストの上から検索を行い該当行があった場合それ以降の行を検索しない。 そのため記述する順番を意識する必要がある。
なお、どのリストにも該当しない場合はそのトラフィックは拒否される(暗黙の拒否)。
denyの場合は条件に合致した場合はトラフィックを拒否。 permitの場合は条件に合致した場合はトラフィックを許可。
標準アクセスリストには送信元アドレスしか指定できなお。 そのため、送信元の近くに配置すると宛先に関係なくフィルタリングが早めにかかってしまい、意図しないトラフィックが拒否されてしまう。 そのため拒否するトラフィックの宛先近くに配置する必要がある。
拡張アクセスリストの作成
拡張アクセスリストではトランスポート層の情報であるTCP/UDP、ポート番号まで指定できる。 そのため特定のアプリケーションに対する動作を設定可能。
(config)#access-list <ACL番号:100~199, 2000~2699> <permit | deny> <L4プロトコル> <送信元IPアドレス> <ワイルドカードマスク> [送信元ポート番号] <宛先IPアドレス> <ワイルドカードマスク> [オプション]
以下に例をいくつか示す。
(config)#//端末192.168.1.11からネットワーク172.16.1.0/24へのIP通信を拒否
(config)#access-list 100 deny ip host 192.168.1.11 172.16.1.0 0.0.0.255
(config)#//すべての送信元から172.16.0.11へのHTTPアクセスのみ許可する例
(config)#access-list 100 permit tcp any host 172.16.0.11 eq www
(config)#//端末192.168.1.11からネットワーク172.16.1.0/24へのエコー要求を拒否
(config)#access-list 100 deny icmp host 192.168.1.11 172.16.1.0 0.0.255 echo
プロトコルごとのオプションは以下の通り。
プロトコル | オプション |
---|---|
ip | dhcpなど |
tcp | eq www, eq 80など |
udp | eq snmp, eq 161 |
icmp | echo, echo-replyなど |
なおポート番号は以下表よりキーワードでも指定可能。
ポート番号 | キーワード |
---|---|
20 | ftp-data |
21 | ftp |
23 | telnet |
25 | smtp |
53 | domain |
67 | bootps |
68 | bootpc |
69 | tftp |
80 | www |
110 | pop3 |
またプロトコルはチェックの対象となるプロトコルを指定する箇所へ「tcp」、「icmp」、「ospf」といったプロトコル名の代わりにプロトコルナンバーを使用できる。
プロトコル名 | プロトコル番号 |
---|---|
ICMP | 1 |
TCP | 6 |
UDP | 17 |
EIGRP | 88 |
OSPF | 89 |
拡張アクセスリストには送信元と宛先アドレスの両方を指定できる。適切な条件であればネットワーク上のどこに配置しても問題ない。 ただし拡張アクセスリストを不要なトラフィックを拒否する目的で使用する場合は送信元の近くに配置し、できるだけ早めにフィルタリングを行ってネットワーク全体に不要なトラフィックを流さないようにすることが推奨される。
アクセスリストの適用
ACLはインターフェイスのインバウンドかアウトバウンドどちらかに適用する。 両者でACLの認可を決めるタイミングが異なり、1つのインターフェイスにはL3プロトコルごとにインバウンド/アウトバンドどちらか片方しか設定できない。
- インバウンド ... ルータがパケット受信するタイミング
- アウトバウンド ... ルータがパケットを送信するタイミング
なおインターフェイスへのACL適用は以下コマンドで行える。
アクセスリストの確認
ルータに作成されているACLは以下コマンドで確認を行える。
5.3. 名前付きアクセスリストの作成
名前付きアクセスリストは名前でアクセスリストを識別できる他に、アクセスリスト中の特定のステートメントを削除やシーケンス番号を振りなおせる特徴がある。
5.3.1. 名前付き標準アクセスリスト
設定はip access-list standard <名称>
で可能。
方法は以下コマンドより。
(config)#ip access-list standard <名称>
(config-std-nacl)#<permit | deny> <IPアドレス> <ワイルドカードマスク>
(config-std-nacl)#exit
(config)#interface fastEthernet <ポート番号>
(config-if)#ip access-group <名称> <in | out>
なおACLのシーケンス番号を指定する際は上記コード2行目の\<permit | deny>の前に指定する。
5.3.2. 名前付き拡張アクセスリスト
設定方法は以下コマンドより。
(config)#ip access-list extended <名称>
(config-std-nacl)#<permit | deny> <L4プロトコル> <送信元ポート番号> <送信元IPアドレス> <宛先IPアドレス> <宛先ポート番号>
(config-std-nacl)#exit
(config)#interface fastEthernet <ポート番号>
(config-if)#ip access-group <名称> <in | out>
5.4. ACLによるVTYアクセス制御
ACLはVTY接続(SSH, TELNETによる接続)にも設定が可能。
設定にはaccess-class <ACL番号 | 名称> <in | out>
で行う。
5.5. ACLのトラブルシューティング
ACLの適用により通信が不能になる、ブロックされるはずの通信が届くなど予期せぬ動作が起きた場合、以下可能性を基に調査すると良い。
- ACLの作成順序の間違い
- ACLの内容(送信元/宛先IP、ワイルドカードマスク)の間違い
- ACL適用インターフェイスの間違い
- ACL適用方向(in/out)の間違い
- 暗黙のdenyを忘れたACL設計