拡張アクセスリストを設定する

拡張アクセスリストについて

標準アクセスリストは、送信元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つ上げておきましょう。

  • インターネットからNTPサーバ(192.168.10.1)へのNTP通信のみを許可(宛先のポート番号もチェックする)
  • インターネットからのWebサーバ(192.168.10.2)への通信で、送信元ポート番号が1023以上の通信を許可
  • インターネットの 200.10.0.0/24 のネットワークから、DBサーバ(192.168.10.3)への宛先ポート3000~3003への通信を許可
  • それ以外のインターネットからのアクセスを拒否

以上のポリシーをインタフェースEth0のインバウンドアクセスリストを適用する。

それではそれぞれのポリシーを考えていきましょう。

インターネットからNTPサーバ(192.168.10.1)へのNTP通信のみを許可(宛先のポート番号もチェックする)

この定義のポイントは、「宛先のポート番号もチェックする」という部分。

NTP(Network Time Protocol)は、送信元ポートと宛先ポートが両方とも123番のUDPパケットを使用します。
つまり送信元ポート番号が 123 以外のパケットは許可してはいけません。

そのため、送信元のポート番号についても 123 のみ許可させるように設定をします。
設定は以下のようになります。

access-list 100 permit udp any eq 123 host 192.168.10.1 eq 123

以上のように送信元アドレスに続いてポート番号を指定します。

インターネットからのWebサーバ(192.168.10.2)への通信で、送信元ポート番号が1023以上の通信を許可

この定義のポイントは、「送信元ポート番号が1023以上」という部分ですね。

「~以上」という指定には、「gt」を使用してポート番号を指定します。

access-list 100 permit tcp any gt 1023 host 192.168.10.2 eq 80

送信元ポート番号を「gt 1023」と指定することで、1023以上のポート番号のみを許可します。

インターネットの 200.10.0.0/24 のネットワークから、DBサーバ(192.168.10.3)への宛先ポート3000~3003への通信を許可

この定義のポイントは、「宛先ポート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

以上のように拡張アクセスリストは細かい設定をすることができます。
他にも色々出来ますので、試してみてください。

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: