ACL(アクセスリスト)とは ― ワイルドカードマスク
ACL
ACLとは、通信を許可・拒否するルールの一覧
ACLとは、ルータなどの機器に設定するルールの一覧で、どの通信を許可し、どの通信を拒否するかを決めます。正式名はアクセスコントロールリスト(Access Control List)で、短くアクセスリストと呼ぶこともあります。
考え方は、ファイアウォールの記事で説明したパケットフィルタリングと同じです。ルータを通過するパケットを、IPアドレスやポート番号などのルールと照合し、通してよいかどうかを判断します。専用のファイアウォール機器がなくても、ルータの設定だけで近いことができます。
ルータは、ACLを書いた順番どおりに照合します。順番を間違えると、通したい通信まで止まります。このあと、照合の順番とワイルドカードマスクの読み方を例で説明します。
照合の仕組み:上から順に、最初の一致で決まる
ACLには、通信を許可または拒否するルールを、1行ずつ順番に並べます。ルータに届いたパケットは、1行目から順にこのルールと照合されます。
最初に一致した行の動作が、そのまま適用されます。一致した時点で照合は止まり、それより下の行は見ません。
どの行にも一致しなかった通信は、最後に拒否されます。このルールを暗黙の拒否と呼びます。ファイアウォールの記事で説明した暗黙の拒否と、同じ考え方です。
動かして確かめる:パケットはどの行で止まるか
下には、インバウンド用とアウトバウンド用、2つのACLがあります。向きの意味は、この後の節で説明します。5つのパケットを選んで、どちらのACLのどの行で止まるかを確かめられます。
インバウンドACL(Gi0/0・到着時に照合)
| No | 送信元 | 宛先 | 宛先ポート | プロトコル | 動作 |
|---|---|---|---|---|---|
| 10 | any | host 203.0.113.60 | 443 | TCP | 許可 |
| 20 | any | host 203.0.113.60 | 80 | TCP | 許可 |
| (自動) | 0.0.0.0 255.255.255.255 | 0.0.0.0 255.255.255.255 | any | any | 拒否(暗黙の拒否) |
アウトバウンドACL(Gi0/0・送出直前に照合)
| No | 送信元 | 宛先 | 宛先ポート | プロトコル | 動作 |
|---|---|---|---|---|---|
| 10 | 192.168.10.0 0.0.0.255 | any | 53 | UDP | 許可 |
| (自動) | 0.0.0.0 255.255.255.255 | 0.0.0.0 255.255.255.255 | any | any | 拒否(暗黙の拒否) |
P1:外部のクライアントが、公開Webサーバに HTTPS で接続する(到着時)
送信元 198.51.100.20 → 宛先 203.0.113.60:443(TCP)・インバウンドACLで照合
- 行10一致 → ここで確定
- 行20不一致 → 次の行へ
- 行(自動)不一致 → 次の行へ
結果:許可(行10が決めた)
P2:外部のクライアントが、公開Webサーバに HTTP で接続する(到着時)
送信元 198.51.100.20 → 宛先 203.0.113.60:80(TCP)・インバウンドACLで照合
- 行10不一致 → 次の行へ
- 行20一致 → ここで確定
- 行(自動)不一致 → 次の行へ
結果:許可(行20が決めた)
P3:社内PCが、外部のDNSサーバに問い合わせる(送出直前)
送信元 192.168.10.25 → 宛先 198.51.100.1:53(UDP)・アウトバウンドACLで照合
- 行10一致 → ここで確定
- 行(自動)不一致 → 次の行へ
結果:許可(行10が決めた)
P4:外部の攻撃者が、公開Webサーバの SSH(22番)に接続を試みる(到着時)
送信元 198.51.100.9 → 宛先 203.0.113.60:22(TCP)・インバウンドACLで照合
- 行10不一致 → 次の行へ
- 行20不一致 → 次の行へ
- 行(自動)一致 → ここで確定
結果:拒否(暗黙の拒否が決めた)
P5:社内PCが、外部のWebサイトに HTTP で接続しようとする(送出直前)
送信元 192.168.10.30 → 宛先 192.0.2.10:80(TCP)・アウトバウンドACLで照合
- 行10不一致 → 次の行へ
- 行(自動)一致 → ここで確定
結果:拒否(暗黙の拒否が決めた)
P5に注目してください。社内PCが外部のWebサイトを見にいく通信(TCPの80番)です。アウトバウンドACLには、外部への問い合わせ(UDPの53番)を許可する行しかありません。そのため、P5はどの行にも一致せず、暗黙の拒否で止まります。
ファイアウォールの記事で説明したステートフルインスペクションのように通信の状態を記録する機能は、ここで扱う標準ACLと拡張ACLにはありません。そのため、許可したい通信は、行として書いた分しか通りません。
たとえば、P3の問い合わせは外へ出られます。しかし、DNSサーバからの応答はGi0/0に到着するので、インバウンドACLで照合されます。インバウンドACLには応答を許可する行がないため、応答は暗黙の拒否で止まります。
標準ACLと拡張ACLの違い
ACLには、標準ACLと拡張ACLの2種類があります。違いは、照合する項目の数です。
| 種類 | 照合する | 使う |
|---|---|---|
| 標準ACL | 送信元IPアドレスだけ | 送信元のネットワークごとに、大まかに許可・拒否したいとき |
| 拡張ACL | 送信元・宛先IPアドレス、プロトコル、送信元・宛先ポート番号 | Webサーバ・DNSサーバ宛てのように、宛先やサービスまで指定したいとき |
標準ACLは、送信元IPアドレスだけを見ます。宛先やポート番号は見ません。
さきほどのデモで使ったACLは、拡張ACLにあたります。宛先IPアドレスと宛先ポート番号まで指定しているためです。
Ciscoのルータでは、ACLに番号を付けて作れます。番号の範囲で、標準か拡張かが決まります。標準ACLは1〜99と1300〜1999、拡張ACLは100〜199と2000〜2699です。番号の代わりに名前で作るACLもあり、名前付きACLと呼びます。
ACLをどこに置くかには、一般的な目安があります。標準ACLは、宛先の近くに置きます。送信元しか見ないため、送信元の近くに置くと、ほかの宛先への通信まで止めてしまうからです。
拡張ACLは、送信元の近くに置きます。宛先まで指定できるので、止めたい通信だけを、ネットワークの中を流れる前に捨てられます。
ワイルドカードマスクの読み方
ワイルドカードマスクとは、IPアドレスのどのビットを照合するかを示す32ビットの値です。CiscoのルータなどのACLで、送信元や宛先のIPアドレスを指定するときに使います。0は照合するビット、1は照合しないビットを表します。
サブネットマスクの記事で説明したANDの考え方と、0と1の意味が逆になっています。サブネットマスクは、1がネットワーク部を、0がホスト部を表しました。ワイルドカードマスクは逆に、0が照合するビットを、1が照合しないビットを表します。
求め方は簡単です。サブネットマスクを8ビットずつに区切った各オクテットを、255から引くだけです。
| サブネットマスク | 計算 | ワイルドカードマスク |
|---|---|---|
| 255.255.255.0(/24) | 255−255, 255−255, 255−255, 255−0 | 0.0.0.255 |
| 255.255.255.192(/26) | 255−255, 255−255, 255−255, 255−192 | 0.0.0.63 |
| 255.255.0.0(/16) | 255−255, 255−255, 255−0, 255−0 | 0.0.255.255 |
たとえば255.255.255.192(/26)なら、最後のオクテットは255−192=63です。残り3つのオクテットは255−255=0なので、ワイルドカードマスクは0.0.0.63になります。
ACLの行では、IPアドレスとワイルドカードマスクを並べて書きます。書き方によって、対象になるアドレスの範囲が変わります。
| 書き方 | 対象に |
|---|---|
| 192.168.10.0 0.0.0.255 | 192.168.10.0〜192.168.10.255の256個 |
| 192.168.10.25 0.0.0.0 | 192.168.10.25の1台だけ(host 192.168.10.25と同じ意味) |
| 0.0.0.0 255.255.255.255 | すべてのIPアドレス(anyと同じ意味) |
デモのアウトバウンドACLにあった192.168.10.0 0.0.0.255は、この書き方です。192.168.10.0から192.168.10.255までの256個のアドレスが対象になります。これは、サブネットマスクの記事で説明した192.168.10.0/24と同じ範囲です。
適用する向き:インバウンドとアウトバウンド
ACLは、ルータのインターフェースに、インバウンドまたはアウトバウンドのどちらかの向きで設定します。向きによって、照合するタイミングが変わります。
インバウンドACLは、パケットがそのインターフェースに到着した直後に照合します。ルーティングの判断より前です。ここで拒否したパケットは、ルーティングの処理に進みません。
アウトバウンドACLは、ルーティングの判断で出口のインターフェースが決まった後に照合します。そのインターフェースから送り出す直前です。
さきほどのデモでは、外部からの通信(P1・P2・P4)をGi0/0のインバウンドACLで照合しました。社内PCからの通信(P3・P5)は、Gi0/0のアウトバウンドACLで照合しました。同じインターフェースでも、インバウンドとアウトバウンドでは別のルールの一覧を使います。
練習問題(全5問)
正解:
ACLは、
正解:
ACLの
正解:標準ACLは
標準ACLは、
正解:0.0.0.63
ワイルドカードマスクは、
正解:インバウンドACLは
インバウンドACLは、
選んでから「採点する」を押すと、解説つきで答え合わせができます。
関連記事
おすすめの本 PR
ネットワークを初めて学ぶ人向けの入門書です。
![『[改訂新版]3分間ネットワーク基礎講座』の表紙](https://m.media-amazon.com/images/P/4774143731.09.MZZZZZZZ.jpg)
