STAGE 05 / ACLとポートセキュリティ

試験対策ドリル:ACL演習

考えてみよう

ACLの設定文は書けるようになりました。では、初見の「このACLは何を許可し、何を拒否するか」という問題を、制限時間内に正確に読み解けるでしょうか?

ACLの試験問題で受験者がつまずく最大の原因は、ワイルドカードマスクの計算ミスと、評価順序の見落としです。このドリルで、その2つの弱点を潰していきましょう。

このレッスンはドリル専用。まず型を再確認

前回までに学んだACLの2つの急所を、もう一度おさらいしておきます。

  1. ワイルドカードマスクは「サブネットマスクの逆」。0が「一致必須」、1が「気にしない」。計算するときは 255.255.255.255 − サブネットマスク で求められます。
  2. ACLは上から順に1行ずつ評価され、最初に一致した行で処理が確定します。それより下の行は一切見られません。一致する行が最後まで無ければ、暗黙のdenyによって破棄されます。

この2点を軸に、CCNA試験で頻出のパターンを解いていきます。

パターン1:ワイルドカードマスクを求める

問題例192.168.16.0/22 のネットワーク全体を1行で指定したいとき、ワイルドカードマスクはどれでしょう。

解説/22 のサブネットマスクは 255.255.252.0 です。ワイルドカードマスクは 255.255.255.255 − 255.255.252.0 = 0.0.3.255 になります。したがって access-list 1 permit 192.168.16.0 0.0.3.255 のように書けます。

確認問題

192.168.16.0/22 を1行で指定するワイルドカードマスクは?

答えを見る

サブネットマスク255.255.252.0255.255.255.255から引くと 0.0.3.255 です。access-list 1 permit 192.168.16.0 0.0.3.255 と書けば、192.168.16.0192.168.19.255の範囲全体を1行で表現できます。

パターン2:ワイルドカードマスクから対象範囲を読む

問題例access-list 10 permit 172.16.4.0 0.0.1.255 は、どの範囲を許可しているでしょう。

解説:ワイルドカードマスクの3オクテット目「1」は2進数で00000001、つまり最後の1ビットだけ「気にしない」という意味です。第3オクテットは4か5のどちらでもよく、第4オクテットは0〜255すべて許可されます。したがって対象範囲は 172.16.4.0172.16.5.255 です。

確認問題

access-list 10 permit 172.16.4.0 0.0.1.255 が許可する範囲は?

答えを見る

ワイルドカード0.0.1.255の第3オクテット「1」は最下位1ビットのみ無視する意味なので、第3オクテットは4か5。対象範囲は 172.16.4.0172.16.5.255 です。

パターン3:ACLの評価順序を読む(引っかけ問題の定番)

問題例:以下のACLで、192.168.1.10からのTelnet(TCP/23)は許可されるでしょうか。

access-list 100 deny tcp 192.168.1.0 0.0.0.255 any eq 23
access-list 100 permit tcp 192.168.1.10 0.0.0.0 any eq 23
access-list 100 permit ip any any

解説:ACLは上から順に評価されるため、1行目の deny tcp 192.168.1.0 0.0.0.255 any eq 23192.168.1.10が先に一致してしまい、そこで拒否が確定します。2行目に「個別に許可する行」があっても、もう評価されません。答えは拒否されます。これは「後から個別許可を足せば救済される」と誤解しやすい、試験の定番の引っかけです。

確認問題

上記のACLで、192.168.1.10からのTelnetは許可されるでしょうか?

答えを見る

拒否されます。 ACLは上から順に評価され、最初に一致した行で処理が確定するため、1行目のdenyがヒットした時点で2行目のpermitは評価されません。ACLでは「広い条件を狭い条件より先に書くと、狭い条件が無効化される」ことを必ず意識しましょう。

パターン4:暗黙のdenyを見抜く

問題例:以下のACLをinterface GigabitEthernet0/1in方向に適用したとき、どのトラフィックが通過できるでしょうか。

access-list 20 permit 10.0.0.0 0.0.0.255

解説:明示された条件は「送信元が10.0.0.0/24のトラフィックを許可」の1行だけです。しかしACLの末尾には、目に見えない暗黙のdeny(deny any)が必ず存在します。したがって、それ以外の送信元からのトラフィックはすべて拒否されます。1行しか書いていないACLほど、この暗黙のdenyを見落としがちなので注意が必要です。

確認問題

access-list 20 permit 10.0.0.0 0.0.0.255 だけを適用したとき、172.16.5.1からのトラフィックは通過できるでしょうか?

答えを見る

通過できません。 明示的な許可行に一致しないため、ACL末尾の暗黙のdenyによって拒否されます。ACLには最低1行のpermitがあっても、それに一致しない全トラフィックは自動的に破棄される点を忘れないでください。

パターン5:標準ACLと拡張ACLの設置場所を判断する

問題例:本社ルーターの複数インターフェースのうち、「送信元172.16.10.0/24全体からの通信を拒否したい」場合、標準ACLはどのインターフェースのどの方向に置くべきでしょう。

解説:標準ACLは送信元アドレスしか見られないため、宛先に近い場所に置かないと、本来許可したいはずの他ネットワーク宛の通信まで巻き添えで止めてしまう危険があります。したがって、宛先ネットワークに最も近いインターフェースのout方向(あるいは目的のセグメントの直前)に置くのが原則です。逆に拡張ACLは送信元・宛先・プロトコル・ポートまで指定できるため、送信元に近い場所に置いて早期に無駄なトラフィックを止めるのが定石です。

確認問題

標準ACLは、送信元・宛先どちらに近い場所に設置するのが原則でしょう?

答えを見る

宛先に近い場所です。標準ACLは送信元アドレスしか判断材料がないため、宛先の近くに置かないと、意図しない通信まで一緒に止めてしまう恐れがあります。対照的に拡張ACLは送信元・宛先・プロトコル・ポート番号まで判断できるので、送信元に近い場所に置いて早期に無駄な通信をカットするのが基本です。

仕上げの1問:総合力チェック

確認問題

access-list 101 deny tcp any host 192.168.10.5 eq 80 の次に access-list 101 permit ip any any を続けて interface Gi0/0in に適用しました。192.168.10.5のWebサーバー(TCP/80)宛の通信と、それ以外の通信はどうなるでしょう?

答えを見る

1行目で192.168.10.5宛のHTTP(TCP/80)だけが拒否され、2行目のpermit ip any anyによってそれ以外の通信はすべて許可されます。拡張ACLは「狭い条件(特定の宛先・ポート)を先に書き、広い条件を後に書く」のが基本パターンであることを、この問題で再確認しておきましょう。

試験でのポイント

ACLドリルで最も重要なのは、「ワイルドカードマスクの機械的な計算」と「上から評価して最初の一致で確定する」という2つのルールを、反射的に扱えるようにしておくことです。試験では、あえて広い条件を先に置いて後続の個別許可を無効化する構成や、暗黙のdenyの存在を忘れさせるような一見単純なACLがよく出題されます。「このACLは何行あるか」だけでなく「評価される順番」と「最後に見えないdeny anyがある」という2点を、必ずセットで確認する癖をつけてください。

ゆみちゃん
ゆみ

ワイルドカードマスクの計算と評価順序、体に染み込んだかな? ACLは「上から順番、最初に当たったら即確定、最後は必ずdeny any」——この3つを呪文みたいに覚えておくと、試験本番でも焦らず解けるよ。次からはガラッとテーマを変えて、無線LANの世界に入っていくよ。