ACL【拡張ACLの設定】


CCNAの試験に向けて学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。

前回投稿記事

こちらのACL【ACLの概要 / 標準ACLの設定】」投稿記事の続きです。

2.ACL / 拡張ACL

2-1.拡張ACLの概要

■拡張ACLとは?

拡張ACLとは、、送信元アドレス以外に宛先IPアドレス、プロトコル番号、送信元ポート番号、
宛先ポート番号
を指定出来る為、標準ACLよりも細かくパケットフィルタリングを掛ける事が
出来ます。

例えば、「192.168.0.0./24」からのHTTPアクセスは許可するが、TELNETは拒否するといった
分けて通信をする事が出来たり、
「172.16.0.1」へは許可、「172.16.0.2」へは拒否といったような、宛先事に許可と拒否を変えると
いった事も出来ますので、柔軟で細かい制御が出来る点で標準ACLと大きく異なります。

また、標準ACLと同様に、拡張ACLには名前付き拡張ACL番号付き拡張ACLがあります。


2-2.拡張ACLの設定と確認

■2-2-1.拡張ACLの設定

拡張ACLの設定の手順は、① 拡張ACLを作成する、② インターフェイスに適用する
といった標準ACLと同様の設定手順になります。
名前付き拡張ACLと番号付き拡張ACL、それぞれの作成方法で作成します。

① 拡張ACLを作成する

▶︎ 番号付き拡張ACLの作成
番号付き拡張ACLを作成するには、グローバルコンフィギューレションモード
次の access-listコマンドを実行します。

(config)# access-list < ACL番号 > < permit / deny > < プロトコル > < 送信元アドレス > < ワイルドカードマスク > 
      [< 送信元ポート番号 >] < 宛先IPアドレス > < ワイルドカードマスク > [< オプション >]

<ACL番号>には、拡張ACL識別する為に、100 ~ 199、2000 ~ 2699 の範囲で指定する。
通常は100 ~ 199を使用します。こちらの全てを使用した場合に 2000 ~ 2699 を使用して行きます。

<permit / deny>は、条件文のパケット許可する場合は permit、拒否する場合は denyを使用します。
<プロトコル>には、プロトコル名を指定します。( 例 : ip / icmp / tcp / udp )
<送信元アドレス>と<宛先IPアドレス>、それぞれの<ワイルドカードマスク>を指定します

<送信元ポート番号>は、省略可能です。
プロトコルでTCP、UDPを指定した際に指定する事が出来ます。
指定方法は、パラメータ+ポート番号となります。パラメータには以下の種類があります。
eq ( equal = 等しい) / neq ( not equal = 等しくない) / gt ( greater than = より大きい )
lt ( less than = より小さい ) / range ( ポート番号の範囲 )

<オプション>は、プロトコルで指定したプロトコルによって指定出来る値が異なります。※1

拡張ACLを作成する場合も、標準ACLと同様に、作成する順番に注意が必要です。
拡張ACLでも、最後に全て拒否するという暗黙のdenyが存在します。拡張ACLでは、
最後に自動的に追加される行は、「deny ip any any」です。

※ anyは、ワイルドカードマスクを使用せず、全てのIPアドレスを指定する場合の表記
2つ並んでいるのは、送信元アドレスと宛先IPアドレスそれぞの分

※1 プロトコルのオプション例一覧

プロトコル 説明 オプション例
ip      IPに関する項目。省略するとIPを使用する全通信を指定可能 dscnなど
tcp パラメータ+ポート番号、ポート番号は数字またはポート名 eq www eq 80
udp パラメータ+ポート番号 eq snmp eq 161
icmp ICMPのメッセージのタイプ echo(エコー要求)、echo-reply(エコー応答)



▶︎ 名前付き拡張ACLの作成
名前付き拡張ACLの作成には、グローバルコンフィギューレションモード
次の ip access-list extendedコマンドを実行します。

(config)# ip access-list extended < ACL名 >

このコマンドを実行すると、拡張ACLグローバルコンフィギューレションモードに移行し、
プロンプト(config-ext-nacl)#に変わります。その後、条件を指定していきます。

(config-ext-nacl)# < permit / deny > < 送信元アドレス > < ワイルドカードマスク >
           [< 送信元ポート番号 >] < 宛先IPアドレス > < ワイルドカードマスク > [< オプション >]

プロトコルとオプションの指定方法や、最後に暗黙のdenyが自動的に追加される点も、
番号付き拡張ACLと同様です。



◇ ② インターフェイスに適用する
作成した拡張ACLをインターフェイスに適用するには、インターフェイスコンフィギューレションモード
次の ip access-groupコマンドを実行します。

(config)# ip access-group < ACL番号 | ACL名 > < in | out >



標準ACLは、宛先に近いインターフェイスに設定される事を推奨していますが、
拡張ACLは、送信元に近いインターフェイスに適用する事が推奨されています。


■2-2-2.拡張ACLの設定例

通信要件:
①「192.168.0.11」のホストから、「10.1.1.1」のWebサーバーに対してポート番号80の通信を拒否する
②「192.168.0.12」のホストから、「10.1.1.1」のWebサーバーに対してポート番号23の通信を拒否する
③上記内容を除く、全ホストからの宛先へのIP通信を許可する

▶︎ 番号付き標準ACLで作成

① 拡張ACLを作成する

Router1(config)# access-list 100 deny tcp host 192.168.0.11 host 10.1.1.1 eq 80
Router1(config)# access-list 100 deny tcp host 192.168.0.12 host 10.1.1.1 eq 23
Router1(config)# access-list 100 permit ip any any

ACL番号は、1 ~ 99を指定すると標準ACLになってしまうので注意。
Telnetサーバは、TCPの23番ポートで待ち受けしているので、「eq telnet」と表記指定も問題なし。

②インターフェイスに適用する

Router1(config)# interface FastEthernet 0/1
Router1(config)# ip access-group 100 in

拡張ACLは、送信元に近いインターフェイスに適用する事が推奨されているので
「 in 」を指定しています。

▶︎ 名前付き標準ACLで作成

① 拡張ACLを作成する

Router1(config)# ip access-list extended ETTEST
Router1(config-ext-nacl)# deny tcp host 192.168.0.11 host 10.1.1.1 eq 80
Router1(config-ext-nacl)# deny tcp host 192.168.0.12 host 10.1.1.1 eq 23
Router1(config-ext-nacl)# access-list 100 permit ip any any
Router1(config-ext-nacl)#  exit

②インターフェイスに適用する

Router1(config)# interface FastEthernet 0/1
Router1(config)# ip access-group ETTEST in



上記意外の番号付き拡張ACLの条件文の例

要件                       ACLの設定
192.168.1.1 から 10.1.1.1 へのIP通信を許可 access-list 100 permit ip host 192.168.1.1 host 10.1.1.1
192.168.1.0/24 から全ての宛先へのIP通信を拒否 access-list 100 deny ip 192.168.1.0 0.0.0.255 any
全ての送信元から 10.1.1.1 へのHTTP通信を許可 access-list 100 permit tcp any host 10.1.1.1 eq 80
10.1.1.1 のWebサーバから全ての宛先への通信を許可 access-list 100 permit tcp host 10.1.1.1 eq 80 any
全てのICMP通信を許可 access-list 100 permit icmp any any
192.168.1.1 から 10.1.1.0/24 へのICMP通信を許可 access-list 100 permit icmp host 192.168.1.1 10.1.1.0 0.0.0.255
全てのIP通信を拒否 access-list 100 deny ip any any( 最終行に自動で追加される )


参考記事

ACL - Extended ACLという記事参照