<ACLとは>
通信アクセスを制御するための条件を記述したリストのこと。ルータに入ってくるパケットや、出ていくパケットについて、許可/拒否を設定できる。ACLのパケットフィルタリングを実装することで、ネットワーク上のどのノードにアクセスできるかを制御したり、トラフィックの種類ごとに転送を許可するか拒否するかを指定できるため、ネットワークの基本的なセキュリティを確保できる。
①ACLの種類
・標準ACL パケット転送の許可/拒否を決める際、送信元IPアドレスのみを参照する。条件設定も、送信元IPアドレスしか設定できない。
・拡張ACL 送信元IPアドレスだけでなく、宛先IPアドレス、プロトコル、送信元ポート番号、宛先ポート番号も参照する。条件設定は、送信元IPアドレス、宛先IPアドレスの両方を設定できる。標準ACLと比べて柔軟であるため、よく使われる。
標準ACL、拡張ACLにはそれぞれに、番号付きACL、名前付きACLがある。
・番号付きACL ACLを作成する際、番号を指定して作成する。指定できる番号の範囲は標準ACL、拡張ACLそれぞれ決まっている。
番号付き標準ACL 1~99, 1300~1999
番号付き拡張ACL 2000~2699
・名前付きACL ACLを作成する際、任意の名前、プロトコル、標準/拡張を指定して作成する。例えば、FTPトラフィックを制御する場合、FTP-Filerとするなど、目的に合った名前でACLを作成すると管理しやすくなる。
②ACLの処理順序
ACLに書かれた条件文(ステートメント)は、上から順番に処理されていく。そして、条件に合致した時点でそのパケットは許可/拒否されてしまい、それ以降のステートメントはチェックされない。そのため、ステートメントの順番は非常に重要である。
<暗黙のdeny anyとは>
ACLのステートメントの最終行には必ず「暗黙のdeny」と呼ばれるすべてのパケットを拒否する条件文が追加される。つまり、ACLには最低一行のステートメントがなければ、すべてのパケットが拒否されてしまう。例えば、192.168.0.1だけを拒否するためには、192.168.0.1を拒否する条件文の後に、ほかのすべてのパケットを許可する条件文(any)を追加する必要がある。
・ACLの適用数
ACLはインターフェイスひとつにつき、インバウンドとアウトバウンドの合計2つのACLを設定することができる。ルータに2つのインターフェイスがある場合、合計4つのACLを設定することができる。
ひとつのインターフェイスに対して、標準ACL/拡張ACLのいずれか1種類しか適用できない。適用されるACLがINにひとつ、OUTにひとつでなければ、ルータがどのACLを参照したらいいのかわからなくなってしまうからである。
ただし、ネットワーク層のプロトコルが異なれば、同じ種類のACLを適用することができる。たとえば、IPv4標準ACLと、IPv6標準ACLならどちらもINに適用することができる。
<ACLを適用するインターフェイスの場所について>
ACLの適用する場所には、以下のような推奨ルールがある。
・標準ACLは宛先に近い場所
・拡張ACLは送信元に近い場所
標準ACLは送信元IPアドレスしかチェックすることができないので、拒否したい宛先から一番近い場所に配置する必要がある。
拡張ACLは、送信元IPアドレスと宛先IPアドレスのどちらも参照するので、基本的にどのインターフェイスに配置しても適用することができる。ただし、ネットワークの「無駄なトラフィックは流さない」を考えると、なるべく送信元に近い場所に配置するのが望ましい。(ネットワークの構成にもよるので一概には言えない)
<フィルタリングの対象となるパケット>
ルータ自身から発生したパケットには、ACLが適用されない。例えば、ACLがアウトバウンドに設定されたルータがあり、そのルータ自身からRIPのアップデートが発生しても、そのアウトバウンドのACLではチェックされず、送信されてしまう。
<ワイルドカードマスクとは>
ACLの条件文の中でIPアドレスを範囲を指定するときに、ワイルドカードマスクを使う。ワイルドカードマスクは、指定したIPアドレスのどの部分を読み取る必要があるのかを指定する。32ビット、1オクテットごとに.(ドット)で区切る。10進数表記。
ワイルドカードマスクの0は、指定したIPアドレスのビットを「チェックする」
ワイルドカードマスクの1は、指定したIPアドレスのビットを「チェックしない」
172.16.1.0/24のワイルドカードマスクは、0.0.0.255となる。第3オクテットまでは参照したいのですべて0にする。第4オクテットは参照しなくてよいのですべて1にする。
条件に特定のサブネットアドレスを指定するには、IPアドレスのサブネット部分のビットをチェックし、指定した値と一致するする必要がある。サブネットマスクは、ネットワーク部を「1」ホスト部を「0」で表現している。したがって、サブネットマスクの1と0を反対にすると。サブネットアドレスを指定するワイルドカードマスクとなる。そのため、ワイルドカードマスクはサブネットマスクの「反対マスク」と呼ばれている。
<ワイルドカードマスクの省略>
・条件に特定のホストアドレスを指定する場合
ACLの条件文の中で特定のホストアドレスを指定する場合、すべてのビットをチェックすればよいので、ワイルドカードマスクは0.0.0.0になる。この場合、0.0.0.0をhostと置き換えることができる。hostキーワードはホストアドレスの前に指定する。(例:host 172.16.1.0
・すべてのアドレスを指定する場合
条件にすべてのアドレスを指定する場合、ビットをチェックする必要がないため、ワイルドカードマスクは255.255.255.255となる。この場合、255.255.255.255をanyと置き換えることができる。anyキーワードを使用する場合、ホストアドレスの指定は何でも良いため、一般的には0.0.0.0とすることが多い。(例:0.0.0.0 255.255.255.255 省略→ any
今回は以上となります。私自身、ネットワークの勉強をはじめて間もないため、拙い文章となっておりますが、ACLのルールについては、CCNAの受験の際にも役に立つと思うので、参考にしていただければ幸いです。
以上、ありがとうございました。
参考資料:https://www.infraexpert.com/study/study33.html
https://www.itbook.info/network/cisco24.html
高橋隆志編2019『徹底攻略Cisco CCENT/CCNA Routing & Switching教科書ICND1編〔100-105J〕〔200-125J〕v3.0対応』株式会社ソキウスジャパン,422-442頁。