ネットワーク

ACLとかあれこれ

ACLとは

アクセスコントロールリスト。
通信アクセスを制限するためのリストのこと。フィルタリング。
ACLを定義することで、ルータを通過するパケットに対して、通信を許可するパケットと、通信を拒否するパケットのルールを決めることができる。

ファイアウォールとは何が違うの?
→応答パケットへを許可するかどうかがちがう。

  1. ファイアウォールの場合
    クライアント →(リクエスト)→ ファイアウォール(許可)     →(リクエスト)→ サーバ        ←(レスポンス)← ファイアウォール(無条件に許可) ←(レスポンス)←

※リクエストがルール上許可された通信の場合、応答パケットはルールに明記されていなくても許可する

  1. ACLの場合
    クライアント →(リクエスト)→ ファイアウォール(許可)     →(リクエスト)→ サーバ                 ファイアウォール(拒否)    ←(レスポンス)←
    ※リクエストがルール上許可された通信の場合でも、応答パケットはルールに明記されていない場合は拒否する

ACLの処理順序

例えば以下のようなACLがあるとする。

1行目 送信元アドレス192.168.0.1 拒否
2行目 送信元アドレス192.168.0.0/24 許可
3行目 暗黙のdeny any

ACLの処理は、上から順に行われる。ここがポイント。
例えば 
192.168.0.1 の送信元アドレスからパケットを受信した場合、1行目のルールに合致するため「拒否」となる。
2行目のルールにも合致するが、ルールに1つ合致した時点で以降のルールはチェックされないため、適用されない。
つまり、限定的な条件ほど、始めのほうに記述すること。
順番を間違えると、思っている通りの動きにならないため注意!

暗黙のdeny

上のACLの3行目にある、「暗黙のdeny any」の記述について。

ACLの最終行には「暗黙のdeny」と呼ばれる、全てのパケットを拒否するルールが追加される。
これはリストには表示されていないが、自動的に追加されるので注意する。

このため、ACLには最低1行は許可するルールが記述されていない場合は、全パケットが拒否されることになる。

ACLの種類

一般に使用されるACLとして、以下の2つがある(Cisco製品)。

1.標準ACL

送信元IPアドレスをもとにフィルタリングを行う。

image.png

上の図では、R1に設定すると、送信元のIPアドレスしか見れないため20.1.1.1への通信もできなくなってしまう。
通常、標準ACLは宛先に近いところで設定することが望ましい。  

2.拡張ACL

送信元IPアドレス、宛先IPアドレス、プロトコル番号、送信元ポート番号、宛先ポート番号。。などでフィルタリングできる。標準ACLよりも柔軟に制御可能であるため、こちらのほうがよく使われている。

image.png
上の図では、拡張ACLは宛先のIPアドレスが見れるので、R1でもR2でもどちらに設定しても条件は満たせる。
しかしR2に設定した場合、その分無駄なトラフィックが生じることになるので、R1で設定するほうが良い。

通常、標準ACLは送信元に近いところで設定することが望ましい。

参考

ACL - Check Rule