標準アクセスリストは、送信元IPアドレスでしか制御できないため、実際の運用では標準アクセスリストよりも拡張アクセスリストを使用する機会の方が多いかもしれません。
ルータを通過する通信で、TCPパケットのみを通過させたい場合や、HTTPのパケットやTelnetのパケットといった、特定のプロトコルのみを許可させたい場合は、拡張アクセスリストを使用します。
拡張アクセスリストはプロトコルタイプ、プロトコルポート番号、宛先IPアドレスといったより詳細なレベルでフィルタリングを行うことが可能です。
拡張アクセスリストの設定は、以下の 2 つのコマンドから成り立っています。
Router(config)#access-list [アクセスリスト番号] [permit | deny] [プロトコル] [発信元IPアドレス] [発信元ワイルドカード] [宛先アドレス] [宛先ワイルドカード] (ポート番号) (log)
※()はオプションです。
Router(config-if)#ip access-group [アクセスリスト番号] [in | out]
標準アクセスリストに比べてアクセスリストの定義コマンドが長いのが分かると思います。
ここで標準アクセスリストには無かった設定を説明しておきましょう。
まず、[プロトコル]ですが、ここにはまさにプロトコルを指定します。TCPのみの定義であれば[TCP]ですし、ICMPの定義であれば[ICMP]を入れます。
定義できるプロトコルは、以下のようなプロトコルを指定することが出来ます。
<0-255> An IP protocol number
ahp Authentication Header Protocol
eigrp Cisco's EIGRP routing protocol
esp Encapsulation Security Payload
gre Cisco's GRE tunneling
icmp Internet Control Message Protocol
igmp Internet Gateway Message Protocol
ip Any Internet Protocol
ipinip IP in IP tunneling
nos KA9Q NOS compatible IP over IP tunneling
object-group Service object group
ospf OSPF routing protocol
pcp Payload Compression Protocol
pim Protocol Independent Multicast
sctp Stream Control Transmission Protocol
tcp Transmission Control Protocol
udp User Datagram Protocol
続いて(ポート暗号)には、プロトコルポート番号を指定したい場合に設定します。
ここでは、lt (less than、より小さい)、 gt (greater than、より大きい)、eq (equal to、と等しい)、 neq (not equal to、と等しくない)のいずれかに続けてポート番号を指定していします。
(log)を指定すると、この定義に合致したパケットが来たらログとしてメッセージを表示してくれます。
それでは実際に、拡張アクセスリストの設定をしてみましょう。
例として以下図のように、インターネットから192.168.17.1 のHTTPアクセスのみを許可するアクセスリストを作成してみよう。
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#access-list 100 permit tcp any host 192.168.17.1 eq 80
Router(config)#access-list 100 deny ip any any
最初の access-list コマンドでHTTPアクセス許可の定義をしています。
HTTPプロトコルはTCPを使用しますので、プロトコルは[TCP]を指定します。
送信元アドレスは全てのアドレスを意味する[any]を指定しています。
続いて、標準アクセスリストにはなかった、宛先のアドレスとして、Webサーバのアドレス「192.168.17.1」を指定しています。
最後にHTTPのポート番号は80番ですから、ポート番号に80を指定します。
続く access-list コマンドで全てのパケット拒否の設定をしています。
ここでプロトコルは特定のプロトコルではなく、IPそのものを指定しています。
上記定義をインタフェースへ適用します。
Router#conf t
Router#interface ethernet 0
Router(config-if)#ip access-group 100 in
Router(config-if)#end
この設定は、標準アクセスリストと同じですね。
先ほどの例は、分かりやすいポリシーでしたが、拡張アクセスリストは、より詳細な設定も可能です。
そこで、より詳細なポリシーを使用した例をもう1つ上げておきましょう。
以上のポリシーをインタフェースEth0のインバウンドアクセスリストを適用する。
それではそれぞれのポリシーを考えていきましょう。
この定義のポイントは、「宛先のポート番号もチェックする」という部分。
NTP(Network Time Protocol)は、送信元ポートと宛先ポートが両方とも123番のUDPパケットを使用します。
つまり送信元ポート番号が 123 以外のパケットは許可してはいけません。
そのため、送信元のポート番号についても 123 のみ許可させるように設定をします。
設定は以下のようになります。
access-list 100 permit udp any eq 123 host 192.168.10.1 eq 123
以上のように送信元アドレスに続いてポート番号を指定します。
この定義のポイントは、「送信元ポート番号が1023以上」という部分ですね。
「~以上」という指定には、「gt」を使用してポート番号を指定します。
access-list 100 permit tcp any gt 1023 host 192.168.10.2 eq 80
送信元ポート番号を「gt 1023」と指定することで、1023以上のポート番号のみを許可します。
この定義のポイントは、「宛先ポート3000~3003」という部分。
access-list 100 permit tcp 200.10.0.0 0.0.0.255 host 192.168.10.3 eq 3000
access-list 100 permit tcp 200.10.0.0 0.0.0.255 host 192.168.10.3 eq 3001
access-list 100 permit tcp 200.10.0.0 0.0.0.255 host 192.168.10.3 eq 3002
以上のように宛先ポート番号ごとに定義を 3 行に分けても OK ですが、どうせなら出来るだけアクセスリストは減らしたいもの。
この場合は「range」オプションを使用すれば 1 行にまとめることができます。
access-list 100 permit tcp 200.10.0.0 0.0.0.255 host 192.168.10.3 range 3000 3003
range に続いて、連続しているポート番号の最初と最後を指定します。
ここまでのリストに引っかからないものは、最後にアクセス拒否のアクセスリストでDropさせます。
access-list 100 deny ip any any
以上のように拡張アクセスリストは細かい設定をすることができます。
他にも色々出来ますので、試してみてください。
ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!
これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。
もちろん無料です!!
↓メールマガジン購読はこちら↓