アクセス制御リスト(ACL)は、送信元と送信先のIPアドレスまたはポート番号に基づいてトラフィックを制御およびフィルタするルールのリストです。 これは、ルーター、スイッチ、ファイアウォールなどのインターフェイスからパケットを許可またはブロックすることによって行われます。
アクセスリストの個々のエントリまたはステートメントは、アクセス制御エントリ (ACE) と呼ばれます。 各 ACE エントリは、許可またはブロックされるトラフィックフロー (ソース/宛先) を定義します。
ネットワークでのトラフィック制御とフィルタリングに加えて、ACL は、telnet (またはできれば SSH) でルーターにアクセスするために必要な IP アドレスまたはネットワークのみを許可することによってルーターへの接続に対するセキュリティ手段として使用することも可能です。
また、管理アクセス制御、ルート広告フィルタリング、デバッグ出力フィルタリング、VPNシナリオで暗号化するためのトラフィック識別など、他の用途もあります。
アクセスリストは基本的に、異なる種類の特殊操作を行うことができる興味深いパケットをマッチングするためのツールです。 これらは、標準アクセス制御リストと拡張アクセス制御リストです。
- Standard Access Lists
標準アクセスリストは、Ciscoルータのアクセスリストの基本形で、パケットヘッダのソースIPアドレスフィールドでパケットのマッチに使用できます。
- Extended Access Lists
ソースIPアドレス以外のものでパケットを照合したい場合、番号付きまたは名前付きの拡張アクセスリストが必要になります。
標準および拡張アクセスリストは、どちらも番号付きまたは名前付き形式で書くことができ、それは単にアクセスリストを書くための異なる方法です。
番号付きアクセスリストで実現できることは、同等の名前付きアクセスリストでも実現でき、これは標準および拡張ACLの両方に適用されます。
おそらくより読みやすいので名前付き形式を好む人もいますが、両方の形式が実際に広く使われており、どちらもCisco認定試験には重要です。
標準および拡張番号付きアクセスリストを作るために使用できる数字の範囲は、表1を参照してください。
表1 アクセスリストの番号範囲
アクセスリストの種類 | 番号範囲 |
IP標準アクセスリスト | 1-99 |
IP標準アクセスリスト(拡大範囲) | 1300- |
1300- | |
IP標準アクセスリスト | 1-99 |
IP Extended Access Lists | 100-199 |
IP Extended Access Lists (expanded range) | 2000-2699 |
これらのアクセス制御リストについて考えていきます。 はどのように機能し、Cisco ルーターでどのように設定するのか。
シナリオは、内部ネットワークとインターネットにそれぞれ接続された 2 つのインタフェース Fa0/0 と Fa0/1 を持つ単一のルータ R1 で構成されています。
アクセスリストは、内部ネットワークのユーザによるインターネットへのアクセスを制御することを目的としています。 これらのアクセスリストは、インバウンド方向のインタフェースFa0/0に適用されます。
図1 アクセスリストの適用
標準アクセスリストの設定例
標準アクセス制御リストでは、特定の送信元IPアドレスまたはIPネットワークからのトラフィックを許可または拒否することができるようにします。
番号付き標準アクセスリストの作成
まず、標準アクセスリストを番号付きで、次に名前付きで設定します。
Numbered Formatの標準アクセスリストを使用して、どのようにこれを行うことができるかを見てみましょう。
R1(config)#access-list 1 permit host 192.168.1.3
R1(config)#access-list 1 deny host 192.168.1.7 log
R1(config)#
上記の設定例ではhostキーワードを使って個々のホストを識別しましたが、逆のマスク0を使って同じ結果になることも可能です。0.0.0.0
このアクセスリストをインバウンド方向のインタフェースFa0/0に適用してみます。
R1(config)#interface Fa0/0
R1(config-if)#ip access-group 1 ?
in inbound packets
out outbound packets
R1(config-if)#ip access-group 1 in
R1(config-if)#end
R1#
名称アクセスリストは1〜99の番号で構成されています。
すべてのアクセスリストには、たとえ明示的に指定しなくても、ACL の最後に暗黙の deny all があります。
show access-list 1
The output will be:
access-list 1 permit host 192.168.1.3
access-list 1 deny host 192.168.1.3
access-list 1 permit host 192.168.1.3
show access-list 1access-list 2show access-list 3
アクセスリストを設定した場合どうなるでしょうか。168.1.7 log
access-list 1 deny any
Creating Named Standard Access Lists
次に同じ効果を得るために、named形式のアクセスリストを作成し、インターフェース Fa0/0 に適用してみましょう。 ここでは、個々のホストに一致させるために host キーワードの代わりに inverse mask を使用します。
R1>enable
R1#configure terminal
設定コマンドを 1 行に 1 つずつ入力します。 CNTL/Zで終了します。
R1(config)#ip access-list standard Filter
R1(config-std-nacl)#permit 192.168.1.3 0.0.0
R1(config-std-nacl)#deny 192.168.1.7 0.0.0.0 log
R1(config-std-nacl)#interface Fa0/0
R1(config-if)#ip access-group Filter in
R1(config-if)#end
R1#
拡張アクセスリストの設定例
拡張アクセスコントロールリストでは、特定のIPアドレスおよびポートからのトラフィックを拒否または許可することができます。
また、ICMP、TCP、UDPなどの転送可能なプロトコルの種類を制御できるようになります。 拡張アクセス制御リストの範囲は、番号付きACLの場合は100から199までです。
番号付き拡張ACLの例:
access-list 110 permit tcp 92.128.2.0 0.0.0.255 any eq 80
ACL 110 は 92.128.2.0 ネットワーク (ソースネットワーク) 上の任意のアドレスから、ポート 80 上の任意の宛先 IP に向かって来るトラフィックを許可します。
‘any’ ステートメントは、ポート 80 上の任意の IP 宛のトラフィックを許すために存在しています。 アクセスリストコマンドの最初のネットワークステートメント(92.128.2.0 0.0.255)はトラフィックの送信元を指し、2番目のネットワークステートメント(この例ではキーワード「any」)はトラフィックの送信先を指します。
別の例:
access-list 111 permit ip 192.168.1.0 0.0.255 192.168.2.0 0.0.255
上記の設定により、ソースネットワーク 192.168.2.0 0.0.255 からすべての IP トラフィックが許可されます。
また、ACLの設定におけるサブネットマスクは、常に逆マスクで表されることに注意してください (たとえば、255.255.255.0 を使用する代わりに 0.0.0.255 とします)。
番号付き拡張アクセスリストの作成
次に、拡張アクセスリストを最初に番号付き、次に名前付きの形式で構成してみます。 アクセスリストは、(上記のネットワーク図から) Bob がインターネット上の Web サーバーにアクセスすることを許可する一方、Smith のすべての Web アクセスをブロックし、Smith が Web サイトを開こうとして失敗したことを記録します。
Numbered Format の拡張アクセスリストを使用してこれを行う方法を説明します。 CNTL/Zで終了します。
R1(config)#access-list 100 permit tcp host 192.168.1.3 any eq www
R1(config)#access-list 100 deny tcp host 192.168.1.3 any eq www
R1(config)#access-list 100 allow tcp host 192.168.1.7 any eq www log
R1(config)#interface Fa0/0
R1(config-if)#ip access-group 100 in
R1(config-if)#end
R1#
名前付き拡張アクセスリストの作成
さて,同じ拡張アクセスリストで,名前付きの形式での設定をしてみましょう。
R1>enable
R1#configure terminal
設定コマンドを1行に1つずつ入力します。 CNTL/Zで終了してください。
R1(config)#ip access-list extended Filter
R1(config-ext-nacl)#permit tcp 192.168.1.3 0.0.0 any eq www
R1(config-ext-nacl)#deny tcp 192.168.1.7 0.0.0.0 any eq www log
R1(config-ext-nacl)#interface Fa0/0
R1(config-if)#ip access-group Filter in
R1(config-if)#end
R1#
今回はアクセスリストについて簡単に説明しました。 アクセスリストの最終テストは、アクセスリストが許可または拒否することになっているトラフィックを実際に発生させて、その結果を確認することで行います。
ACLの適用方法
ACLを設定した後、適用するインタフェースでどちらの方向に動作させたいか(inboundまたはoutbound)を指定します。
たとえば、「in」はインタフェースへのinbound、「out」はインタフェースからのoutboundを意味します。 ACL は次に「access-group」コマンドを使用して特定のインタフェースに適用されます。
上述したように、名前または番号を与えることによってアクセスリストを識別することができます。 以下は、使用するコマンドのセットです。
Router(config)#interface serial 0
Router(config-if)#ip access-group 111 out
Using Access Lists to secure Telnet access to a router
ACL によってルーター上の Telnet ラインも保護することが可能です。 これにより、特定のホストまたはネットワークに対してのみ、telnetログインへのアクセスを許可することができます。
access-list 25 permit 192.168.2.0 0.0.255
line vty 0 4
access-class 25 in
この ACL がある状態で、あなたは 192.168.2.0/24 ネットワーク上のホストだけが VTY ログインにアクセスすることを許可することになります。 他のネットワークからのすべての試みはブロックされます。
もう 1 つの例です。 例えば、telnet でルーターにアクセスすることを許可される特定の管理ステーション (10.1.1.1) があるとします。
access-list 10 permit host 10.1.1.1
line vty 0 4
access-class 10 in
他のすべてのホストはブロックされるはずです。