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

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

図 アクセスコントロールリストの概要
図 アクセスコントロールリストの概要
図では、イーサネットなどのレイヤ2ヘッダは省略しています。
Webサーバアプリケーションからのリプライは分割されて複数となることがほとんどです。
アクセスコントロールリストは単に「アクセスリスト」または「ACL」と呼ぶことも多いです。
用途によっては、アクセスコントロールリストはフローの識別のための条件ではありません。また、用途によってpermitまたはdenyの動作の意味が変わります。

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

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

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

  • パケットフィルタ
  • NAT変換対象パケット(フロー)の指定
  • ルートフィルタ
  • IPSecで暗号化する対象パケット(フロー)の指定
  • ルートマップのmatch条件

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

「アクセスコントロールリスト = パケットフィルタ」という風に考えてしまうことが多いのですが、いろんな用途があるということをしっかりと理解しておきましょう。

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

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

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

関連記事

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

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

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

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

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

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

図 ルートフィルタリング

ACLの用途:IPSecで暗号化する対象パケット(フロー)の指定

IPSecで暗号化するパケット(フロー)を指定するためにACLを利用できます。この場合、permitされたフローはIPSecで暗号化されます。denyされたフローは破棄するわけではなくIPSecの暗号化を行わないということです。

図  IPSecで暗号化する対象パケット(フロー)の指定
図 IPSecで暗号化する対象パケット(フロー)の指定

ACLの用途:ルートマップのmatch条件

ルートマップのmatch条件にACLを関連付けられます。ルートマップとは、ルータが処理する対象を特定するための条件と動作をまとめているリストです。ACLよりもより詳細な条件やさまざまな動作を設定することできます。そして、さまざまな用途でルートマップを利用します。ルートマップのmatch条件にACLを関連付ける場合は、ACLのpermitはmatch条件を満足するという意味です。denyはmatch条件を満足しないことを意味します。

図  ルートマップのmatch条件
図 ルートマップのmatch条件

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

アクセスコントロールリストの設定を行うときには、以下の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アクセスコントロールリストのポイント

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

セキュリティの基礎