概要

標準ACLと拡張ACLによるパケットフィルタリングの設定をより深く理解するための演習です。まず、標準ACLでパケットフィルタリングの設定を行います。

標準ACLは送信元IPアドレスしかチェックできません。そのため、「標準ACLでパケットフィルタリングを行うには宛先に近いところで標準ACLを適用」という解説がよくされています。

ただ、通信は双方向です。行きと戻りで当然ながら宛先と送信元は入れ替わることになります。このことをきちんと意識して設定しましょう。

関連記事

ネットワーク構成

図 標準ACLと拡張ACLのパケットフィルタリングをより深く理解するための演習 ~標準ACL~ ネットワーク構成
図 標準ACLと拡張ACLのパケットフィルタリングをより深く理解するための演習 ~標準ACL~ ネットワーク構成

パケットフィルタの条件

以下のネットワーク間でのみ通信可能にするように標準ACLでパケットフィルタリングを行います。

  • VLAN11(192.168.11.0/24)とVLAN21(192.168.21.0/24)間
  • VLAN12(192.168.12.0/24)とVLAN22(192.168.22.0/24)間

初期設定

以下の設定が初期設定として完了していて、各機器が通信できる状態から開始します。

  • IPアドレス
  • OSPFルーティング

設定と確認

Step1: VLAN11からVLAN21への通信のみを許可するパケットフィルタリングの設定

VLAN11(192.168.11.0/24)からVLAN21への通信を許可するパケットフィルタリングを行います。標準ACLでは、送信元IPアドレスしかチェックできません。送信元IPアドレスがVLAN11の192.168.11.0/24となっているパケットを許可する標準ACLを設定します。

標準ACLは宛先に近いところで適用することからL3SW2で設定します。そして、L3SW2のVLAN21(SVI)のアウトバウンドでACLを適用します。

L3SW2

ip access-list standard From_VLAN11
 permit 192.168.11.0 0.0.0.255
!
interface Vlan21
 ip access-group From_VLAN11 out

Step2: VLAN11からVLAN21への通信のみを許可するパケットフィルタリングの確認

VLAN11からVLAN21への通信を許可するパケットフィルタリングを確認します。L3SW2で以下のコマンドでACLの条件と適用されているインタフェースを確認します。

  • show ip access-lists
  • show ip interface vlan21

L3SW2

L3SW2#show ip access-lists
Standard IP access list From_VLAN11
    10 permit 192.168.11.0, wildcard bits 0.0.0.255
L3SW2#show ip interface vlan 21
Vlan21 is up, line protocol is up
  Internet address is 192.168.21.254/24
  Broadcast address is 255.255.255.255
  Address determined by non-volatile memory
  MTU is 1500 bytes
  Helper address is not set
  Directed broadcast forwarding is disabled
  Multicast reserved groups joined: 224.0.0.5 224.0.0.6
  Outgoing access list is From_VLAN11
  Inbound  access list is not set
~省略~

VLAN11のPC11からVLAN21のPC21へPingを実行すると、正常に応答が返ってきます。

PC11

PC11> ping 192.168.21.100
84 bytes from 192.168.21.100 icmp_seq=1 ttl=62 time=75.087 ms
84 bytes from 192.168.21.100 icmp_seq=2 ttl=62 time=89.889 ms
84 bytes from 192.168.21.100 icmp_seq=3 ttl=62 time=60.196 ms
84 bytes from 192.168.21.100 icmp_seq=4 ttl=62 time=59.860 ms
84 bytes from 192.168.21.100 icmp_seq=5 ttl=62 time=60.959 ms

図 VLAN11からVLAN21へのPing
図 VLAN11からVLAN21へのPing

一方、PC12やPC22からPC21へPingを実行すると応答は返ってきません。

PC12

PC12> ping 192.168.21.100
*192.168.0.2 icmp_seq=1 ttl=254 time=44.998 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.0.2 icmp_seq=2 ttl=254 time=45.145 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.0.2 icmp_seq=3 ttl=254 time=45.304 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.0.2 icmp_seq=4 ttl=254 time=45.337 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.0.2 icmp_seq=5 ttl=254 time=24.957 ms (ICMP type:3, code:13, Communication administratively prohibited)

PC22

PC22> ping 192.168.21.100
*192.168.22.254 icmp_seq=1 ttl=255 time=15.476 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.22.254 icmp_seq=2 ttl=255 time=15.440 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.22.254 icmp_seq=3 ttl=255 time=15.329 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.22.254 icmp_seq=4 ttl=255 time=15.184 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.22.254 icmp_seq=5 ttl=255 time=15.096 ms (ICMP type:3, code:13, Communication administratively prohibited)

図 VLAN12からVLAN21へのPing
図 VLAN12からVLAN21へのPing
図 VLAN22からVLAN21へのぴんg
図 VLAN22からVLAN21へのぴんg

さて、Step1で「VLAN11からVLAN21への通信のみを許可する」ための設定をしているわけです。つまり、VLAN21を「宛先」と考えているACLの設定です。ここできちんと「通信は双方向」ということを意識しておきましょう。

Step1のACL「From_VLAN11」で、VLAN21が「送信元」で「宛先」がVLAN12とVLAN22の通信を拒否することにもなっています。VLAN21からVLAN12およびVLAN22へ通信するときの「戻り」が「From_VLAN11」のACLで破棄されるからです。

たとえば、VLAN21のPC21からVLAN12のPC12へPingを実行します。Pingのリクエストは破棄されることなくPC12まで届きます。そして、PC12からPC21へPingのリプライを返します。このPingリプライが「From_VLAN11」のACLで破棄されます。そのため、PC21からPC12へのPingは失敗です。

PC12

PC21> ping 192.168.12.100
192.168.12.100 icmp_seq=1 timeout
192.168.12.100 icmp_seq=2 timeout
192.168.12.100 icmp_seq=3 timeout
192.168.12.100 icmp_seq=4 timeout
192.168.12.100 icmp_seq=5 timeout

図 VLAN21からVLAN12へのPing
図 VLAN21からVLAN12へのPing

通信は双方向です。パケットフィルタリングを設定するときには、双方向の通信の行きと戻りのどちらを対象にして考えているかをきちんと意識しておきましょう。

Step3: VLAN21からVLAN11への通信のみを許可するパケットフィルタリングの設定

Step1の逆方向のVLAN21からVLAN11への通信のみを許可するパケットフィルタリングの設定を行います。宛先となるVLAN11を接続しているL3SW1で設定します。

L3SW1

ip access-list standard From_VLAN21
 permit 192.168.21.0 0.0.0.255
!
interface Vlan11
 ip access-group From_VLAN21 out

Step4: VLAN21からVLAN11への通信のみを許可するパケットフィルタリングの確認

Step1とStep3の設定によって、VLAN11とVLAN21間の通信のみ許可するパケットフィルタリングの設定が完了です。PC11からPC21へPingを実行すると、正常に応答が返ってきます。

PC11

PC11> ping 192.168.21.100
84 bytes from 192.168.21.100 icmp_seq=1 ttl=62 time=60.348 ms
84 bytes from 192.168.21.100 icmp_seq=2 ttl=62 time=60.183 ms
84 bytes from 192.168.21.100 icmp_seq=3 ttl=62 time=46.232 ms
84 bytes from 192.168.21.100 icmp_seq=4 ttl=62 time=60.681 ms
84 bytes from 192.168.21.100 icmp_seq=5 ttl=62 time=60.245 ms

PC11からPC21へのPingリクエストは、L3SW2の「From_VLAN11」のACLで許可されています。そして、そのPingのリプライはL3SW1の「From_VLAN21」のACLで許可されています。

図 VLAN21からVLAN11へのPing
図 VLAN21からVLAN11へのPing

Step5: VLAN12とVLAN22間の通信のみを許可するパケットフィルタリングの設定

VLAN12とVLAN22間の通信のみを許可するパケットフィルタリングを設定します。考え方は、Step4までのVLAN11とVLAN21間の通信と同じです。

L3SW1で、送信元IPアドレスがVLAN22のアドレスとなっているパケットを許可する標準ACLを作成して、VLAN12(SVI)のアウトで適用します。

L3SW1

ip access-list standard From_VLAN22
 permit 192.168.22.0 0.0.0.255
!
interface Vlan12
 ip access-group From_VLAN22 out

L3SW2で、送信元IPアドレスがVLAN12のアドレスとなっているパケットを許可する標準ACLを作成して、VLAN22(SVI)のアウトで適用します。

L3SW2

ip access-list standard From_VLAN12
 permit 192.168.12.0 0.0.0.255
!
interface Vlan22
 ip access-group From_VLAN12 out

Step6: パケットフィルタリングの確認

ここまで設定したパケットフィルタリングの動作を確認します。VLAN11のPC11からVLAN21のPC21へPingを実行すると、応答が正常に返ってきます。VLAN12のPC12およびVLAN22のPC22へPingすると、応答は返ってきません。

PC11

PC11> ping 192.168.21.100
84 bytes from 192.168.21.100 icmp_seq=1 ttl=62 time=59.458 ms
84 bytes from 192.168.21.100 icmp_seq=2 ttl=62 time=59.898 ms
84 bytes from 192.168.21.100 icmp_seq=3 ttl=62 time=60.580 ms
84 bytes from 192.168.21.100 icmp_seq=4 ttl=62 time=59.456 ms
84 bytes from 192.168.21.100 icmp_seq=5 ttl=62 time=59.936 ms

PC11> ping 192.168.12.100
*192.168.11.254 icmp_seq=1 ttl=255 time=16.264 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.11.254 icmp_seq=2 ttl=255 time=15.012 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.11.254 icmp_seq=3 ttl=255 time=14.738 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.11.254 icmp_seq=4 ttl=255 time=15.112 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.11.254 icmp_seq=5 ttl=255 time=15.047 ms (ICMP type:3, code:13, Communication administratively prohibited)

PC11> ping 192.168.22.100
192.168.22.100 icmp_seq=1 timeout
192.168.22.100 icmp_seq=2 timeout
192.168.22.100 icmp_seq=3 timeout
192.168.22.100 icmp_seq=4 timeout
192.168.22.100 icmp_seq=5 timeout

また、VLAN12のPC12からVLAN22のPC22へPingを実行すると、応答が返ってきます。VLAN11のPC11およびVLAN21のPC21へPingすると、応答は返ってきません。

PC12

PC12> ping 192.168.22.100
84 bytes from 192.168.22.100 icmp_seq=1 ttl=62 time=36.285 ms
84 bytes from 192.168.22.100 icmp_seq=2 ttl=62 time=48.160 ms
84 bytes from 192.168.22.100 icmp_seq=3 ttl=62 time=36.572 ms
84 bytes from 192.168.22.100 icmp_seq=4 ttl=62 time=40.293 ms
84 bytes from 192.168.22.100 icmp_seq=5 ttl=62 time=48.945 ms

PC12> ping 192.168.11.100
*192.168.12.254 icmp_seq=1 ttl=255 time=15.060 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.12.254 icmp_seq=2 ttl=255 time=15.194 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.12.254 icmp_seq=3 ttl=255 time=15.156 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.12.254 icmp_seq=4 ttl=255 time=15.172 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.12.254 icmp_seq=5 ttl=255 time=15.316 ms (ICMP type:3, code:13, Communication administratively prohibited)

PC12> ping 192.168.21.100
192.168.21.100 icmp_seq=1 timeout
192.168.21.100 icmp_seq=2 timeout
192.168.21.100 icmp_seq=3 timeout
192.168.21.100 icmp_seq=4 timeout
192.168.21.100 icmp_seq=5 timeout

今回設定した標準ACLでのパケットフィルタリングでは、無駄なパケットの転送が起こってしまうことに注意してください。たとえば、PC11からPC22宛ての通信を考えます。

PC11からPC22宛てのパケットは、L3SW1では破棄されません。L3SW1からL3SW2へルーティングされて、L3SW2で破棄されることになります。そのため、L3SW1-L3SW2間のネットワークリソースを無駄に使用してしまうことになります。

図 無駄なパケットの転送の例
図 無駄なパケットの転送の例

標準ACLでは、送信元IPアドレスしかチェックできないため、PC11からPC22宛てのパケットをL3SW1では破棄できません。

セキュリティの基礎