ネットワーク構成

以下のネットワーク構成でACLを利用したパケットフィルタの設定とその動作の確認を行います。

図 ACLパケットフィルタ ネットワーク構成
図 ACLパケットフィルタ ネットワーク構成

設定条件

  • ホスト3のみがWebサーバ1にHTTPでアクセスできる
  • その他の通信はすべて許可する
  • アクセスコントロールリストは3行で設定する

初期設定

  • R1
    • ホスト名/IPアドレス
  • サーバ/ホスト
    • ホスト名/IPアドレス/デフォルトゲートウェイ

設定と確認

Step1:アクセスコントロールリストの設定

アクセスコントロールリストの条件は、より詳細な条件から順番に設定します。Webサーバ1へのアクセスはホスト3だけに限定する条件が最も詳細なものです。そのため、まず、ホスト3からWebサーバ1へのHTTPアクセスを許可する以下の条件を設定します。

R1

access-list 100 permit tcp host 192.168.1.3 host 172.21.242.17 eq www

そして、ホスト3以外のWebサーバ1へのHTTPアクセスを拒否するための以下の条件の設定を行います。

R1

access-list 100 deny tcp any host 172.21.242.17 eq www

最後に上記以外のすべての通信を許可する条件を設定します。

R1

access-list 100 permit ip any any

ここまでの3行のアクセスコントロールリストを確認すると、以下のようになります。

R1

R1#show running-config | include access-list
access-list 100 permit tcp host 192.168.1.3 host 172.21.242.17 eq www
access-list 100 deny   tcp any host 172.21.242.17 eq www
access-list 100 permit ip any any

このACL設定例の条件は、DNSのことをきちんと考慮したものではありません。また、R1に直接接続されているネットワークしかないので、ルーティングプロトコルが不要なネットワーク構成です。実環境でACLを考えるときにはDNSやルーティングプロトコルをきちんと考えて条件を設定してください。

Step2:アクセスコントロールリストの適用

アクセスコントロールリストは作成しただけではまったく意味がありません。適切に適用しなければいけません。

Step1で作成したアクセスコントロールリストをR1のインタフェースに適用します。Fa0/0のInでもFa0/1のoutでも可能です。破棄するべきパケットはinで破棄したほうがルータのリソースの無駄を抑えることができるので、Fa0/0のInで適用します。

R1

interface FastEthernet0/0
 ip access-group 100 in

Step3:アクセスコントロールリストの確認

アクセスコントロールリストの条件は、show access-listsコマンドで確認します。また、インタフェースへの適用はshow ip interface FastEthernet0/0コマンドで確認します。

R1

R1#show access-lists
Extended IP access list 100
    10 permit tcp host 192.168.1.3 host 172.21.242.17 eq www
    20 deny tcp any host 172.21.242.17 eq www
    30 permit ip any any
R1#show ip interface FastEthernet 0/0
FastEthernet0/0 is up, line protocol is up
  Internet address is 192.168.1.254/24
  Broadcast address is 255.255.255.255
  Address determined by setup command
  MTU is 1500 bytes
  Helper address is not set
  Directed broadcast forwarding is disabled
  Outgoing access list is not set
  Inbound  access list is 100
  Proxy ARP is enabled
~省略~

ホスト3とそれ以外のホストからWebサーバ1へのHTTPアクセス(TCPポート80)とPingを試します。

ホスト3

H3> ping 172.21.242.17 -P 6 -p 80
Connect   80@172.21.242.17 timeout
Connect   80@172.21.242.17 seq=2 ttl=63 time=15.567 ms
SendData  80@172.21.242.17 seq=2 ttl=63 time=23.360 ms
Close     80@172.21.242.17 seq=2 ttl=63 time=33.295 ms
Connect   80@172.21.242.17 seq=3 ttl=63 time=17.656 ms
SendData  80@172.21.242.17 seq=3 ttl=63 time=21.499 ms
Close     80@172.21.242.17 seq=3 ttl=63 time=31.270 ms
Connect   80@172.21.242.17 seq=4 ttl=63 time=17.605 ms
SendData  80@172.21.242.17 seq=4 ttl=63 time=21.462 ms
Close     80@172.21.242.17 seq=4 ttl=63 time=33.209 ms
Connect   80@172.21.242.17 seq=5 ttl=63 time=16.592 ms
SendData  80@172.21.242.17 seq=5 ttl=63 time=23.624 ms
Close     80@172.21.242.17 seq=5 ttl=63 time=33.247 ms

H3> ping 172.21.242.17
84 bytes from 172.21.242.17 icmp_seq=1 ttl=63 time=16.704 ms
84 bytes from 172.21.242.17 icmp_seq=2 ttl=63 time=21.355 ms
84 bytes from 172.21.242.17 icmp_seq=3 ttl=63 time=21.740 ms
84 bytes from 172.21.242.17 icmp_seq=4 ttl=63 time=15.768 ms
84 bytes from 172.21.242.17 icmp_seq=5 ttl=63 time=21.241 ms

ホスト1

H1> ping 172.21.242.17 -P 6 -p 80
*192.168.1.254 tcp_seq=1 ttl=255 time=11.728 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.1.254 tcp_seq=3 ttl=255 time=3.892 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.1.254 tcp_seq=5 ttl=255 time=5.307 ms (ICMP type:3, code:13, Communication administratively prohibited)

H1> ping 172.21.242.17
84 bytes from 172.21.242.17 icmp_seq=1 ttl=63 time=14.991 ms
84 bytes from 172.21.242.17 icmp_seq=2 ttl=63 time=16.779 ms
84 bytes from 172.21.242.17 icmp_seq=3 ttl=63 time=16.879 ms
84 bytes from 172.21.242.17 icmp_seq=4 ttl=63 time=18.850 ms
84 bytes from 172.21.242.17 icmp_seq=5 ttl=63 time=16.017 ms

「ping 172.21.242.17 -P 6 -p 80」の「-P 6」はTCPを表し、「-p 80」は宛先ポート番号80です。このコマンドで宛先IPアドレス21.242.17、宛先ポート番号80でTCPセグメントを送信しています。

ホスト3からはWebサーバ1へのHTTPアクセスが可能です。Pingの応答も返ってきます。一方、ホスト1からWebサーバ1へは、Pingの応答は返ってくるもののHTTPアクセスはできないことがわかります。

そして、R1でshow access-listsコマンドを見ると、以下のように各条件に一致したパケット数がカウントされるようになり、パケットフィルタが正常に動作していることを確認できます。

R1

R1#show access-lists
Extended IP access list 100
    10 permit tcp host 192.168.1.3 host 172.21.242.17 eq www (23 matches)
    20 deny tcp any host 172.21.242.17 eq www (9 matches)
    30 permit ip any any (15 matches)

カウンタの数自体は、この手順をそのまま反映したものではありません。条件に一致するとカウントアップされることを確認すればOKです。

関連記事

「ネットワークのおべんきょしませんか?」内の記事を検索