アクセスコントロールリストとは

アクセスコントロールリスト(Access Control List : ACL)とは、アプリケーションのフローを識別するための条件のリストです。アプリケーションのフローは、IPアドレスとTCP/UDPポート番号によって識別できます。そのため、アクセスコントロールリストは、主にIPヘッダとTCP/UDPヘッダについての条件をまとめているリストです。

アクセスコントロールリストの概要
図では、イーサネットなどのレイヤ2ヘッダは省略しています。
Webサーバアプリケーションからのリプライは分割されて複数となることがほとんどです。
アクセスコントロールリストは単に「アクセスリスト」または「ACL」と呼ぶことも多いです。

アプリケーションフローは、行きのフローと戻りのフローが必要です。「通信は双方向である」ということが、アクセスコントロールリストを考えるときにとても重要です。アクセスコントロールリストは、行きのフローと戻りのフローは別々に考えなければいけません。

アクセスコントロールリストの用途

アクセスコントロールリストは、適用してはじめて意味を持ちます。単にIPヘッダやTCP/UDPヘッダなどの条件のリストを作成するだけでは、まったく意味がありません。アクセスコントロールリストを適用する主な用途として、以下が挙げられます。

  • パケットフィルタ
  • NAT変換対象パケットの指定
  • ルートフィルタ

アクセスコントロールリストは、IP/TCP/UDPヘッダの条件だけではなく、permit(許可)/deny(拒否)という動作も決めています。permit/denyの動作がどのような意味であるかが用途によって違ってきます。動作の意味が違ってくるということは、アクセスコントロールリストを理解するうえで難しいポイントです。

ACLの用途:パケットフィルタ

パケットフィルタが最も多いアクセスコントロールリストの用途です。不要なアプリケーションのフローをルータで破棄することで、セキュリティを確保するためによく利用されています。パケットフィルタでのpermit/denyの動作は、そのままの言葉通りに解釈します。permitはフローのパケットを通過させるという意味です。denyはフローのパケットを拒否(破棄)します。

図 パケットフィルタリングでACLを利用
図 パケットフィルタリングでACLを利用

パケットフィルタについて、以下の記事をご覧ください。


ACLの用途:NAT変換対象パケットの指定

NAT変換対象を指定するためのアクセスコントロールリストでは、permitはNAT変換するという意味です。denyはパケットを破棄するのではなくてNAT変換しないという意味です。

図 NAT変換でACLを利用
図 NAT変換でACLを利用
図のSIPは送信元IPアドレス(Source IP address)

CiscoルータでACLによってNAT変換対象を決めてNAT変換を行うために設定について、以下の記事をご覧ください。


ACLの用途:ルートフィルタ

ルートフィルタでアクセスコントロールリストを利用するときは、アプリケーションフローの識別ではなく、ルーティングプロトコルでやり取りするルート情報のネットワークアドレスを識別します。permitはルート情報のネットワークアドレスを許可し、denyはルート情報のネットワークアドレスを拒否します。

ルートフィルタリング

ルートフィルタについては、以下の記事をご覧ください。


アクセスコントロールリストの注意点

アクセスコントロールリストの設定を行うときには、以下の2点に注意が必要です。

  • 条件の順序をよく考える
  • 最後に暗黙のdeny anyがある

アクセスコントロールリストの処理は、条件を上から順番にチェックします。一致する条件があれば、処理は終了します。そのため、条件の順序を考えて設定しなければ、意図した動作にならないことがあります。送信元IPアドレスが192.168.1.* (*は任意)のフローのパケットはdenyとし、送信元IPアドレスが192.168.1.1のフローのみが例外としてpermitという例を考えます。条件の順番を以下のように設定すると、送信元IPアドレスが192.168.1.1のフローもdenyされてしまいます。

  1. 送信元IPアドレス168.1.*のフロー deny
  2. 送信元IPアドレス168.1.1のフロー permit

意図した動作にするためには、例外とする条件を前に設定しなければいけません。

  1. 送信元IPアドレス168.1.1のフロー permit
  2. 送信元IPアドレス168.1.*のフロー deny

条件の順序として、例外的な条件やより詳細な条件を前に設定して、あいまいな条件を後ろにします。そして、アクセスコントロールリストの最後には、暗黙のdeny anyの条件があります。明示的に設定している条件としてdenyの条件しかなければ、暗黙のdeny anyによって結局すべてのフローはdenyされてしまいます。明示的に設定する条件には、少なくとも1つはpermitの条件が必要です。

図 アクセスコントロールリストの注意点
図 アクセスコントロールリストの注意点

アクセスコントロールリストの種類

アクセスコントロールリストは、フローを識別するための条件で指定できる情報の違いによって、2種類に分類できます。

  • 標準アクセスコントロールリスト
  • 拡張アクセスコントロールリスト

標準アクセスコントールリスト

標準アクセスコントロールリストは、フローの識別のために指定できる条件は、IPヘッダの送信元IPアドレスのみです。そのため、標準アクセスコントールリストでは、フローを詳細に識別することができません。

図 標準アクセスコントロールリスト
図 標準アクセスコントロールリスト

フローを詳細に識別できないため、パケットフィルタで標準アクセスコントロールリストを利用することはあまりありません。標準アクセスコントロールリストは、NAT変換対象の指定やルートフィルタ、VTYアクセス制御などの用途で利用することが多くなっています。次の範囲のアクセスコントロールリスト番号で設定すると、標準アクセスコントロールリストになります。

  • 1~99
  • 1300~1999

拡張アクセスコントロールリスト

フローを識別するために、IPヘッダをはじめとしてTCP/UDPなどのさまざまなプロトコルのヘッダ情報を条件として指定できるのが拡張アクセスコントロールリストです。フローの識別のために、主に次のような情報を指定できます。

  • 送信元/宛先IPアドレス
  • プロトコル番号
  • 送信元/宛先ポート番号
図 拡張アクセスコントロールリスト
図 拡張アクセスコントロールリスト
TCP/UDP以外のICMPなどのプロトコルのヘッダもチェックできます。TCPヘッダの場合、さらにフラグなども指定できます。

TCP/UDPヘッダのポート番号もチェックできるので、拡張アクセスコントロールリストは詳細にアプリケーションフローを識別できます。詳細にアプリケーションフローを識別した上で、フローを通過させる/拒否するというパケットフィルタの用途で利用することが多くなっています。拡張アクセスコントロールリストは、アクセスコントロールリスト番号として以下の範囲で設定します。

  • 100~199
  • 2000~2699

表 アクセスコントロールリストの種類
種類指定できる情報アクセスコントロールリスト番号
標準送信元IPアドレス1~99、1300~1999
拡張宛先/送信元IPアドレス
プロトコル番号
宛先/送信元ポート番号など
100~199、2000~2699

Ciscoアクセスコントロールリストのポイント

Ciscoアクセスコントロールリストのポイント
  • アクセスコントロールリストとは、フローを識別するための条件をまとめたリスト
  • アクセスコントロールリストの用途はパケットフィルタだけではなく、ルートフィルタやNAT変換対象の指定などさまざまある
  • フローを識別するために指定できる条件によって2つの種類がある
    • 標準ACL:送信元IPアドレス
    • 拡張ACL:宛先/送信元IPアドレス、プロトコル番号、宛先/送信元ポート番号など

関連記事

「ネットワークのおべんきょしませんか?」内の記事を検索