Configure Commonly Used IP ACLs
Introduction
このドキュメントでは、一般的に使用されているIPアクセス コントロール リスト(ACL)のサンプル構成を提供しています。
- 送信元アドレス
- 送信先アドレス
- パケットの種類
- これらの項目の組み合わせ
ネットワークトラフィックをフィルタリングするために、ACLはルーティングされたパケットがルーターのインターフェイスで転送されるかブロックされるかを制御します。 ルーターは、ACL内で指定された基準に基づいて、パケットを転送するかドロップするかを決定するために、各パケットを調べます。
- トラフィックのソースアドレス
- トラフィックのデスティネーションアドレス
- 上位層プロトコル
このドキュメントの例のようにACLを構築するために、以下のステップを完了してください:
- ACLを作成します。
- ACLをインターフェイスに適用する。
IP ACLは、IPパケットに適用される許可と拒否の条件を連続的に集めたものです。
最初のマッチで、Cisco IOS® Softwareがパケットを受け入れるか拒否するかを決定します。
最初の一致は、Cisco IOS® ソフトウェアがパケットを受け入れるか拒否するかを決定します。 条件が一致しない場合、ルーターは暗黙的なdeny all句のためにパケットを拒否します。
以下は、Cisco IOS Softwareで設定できるIP ACLの例です。
- 標準 ACL
- 拡張 ACL
- 動的 (ロック アンド キー) ACL
- IP-named ACL
- Reflexive ACL
- 時間範囲を使用する時間ベースの ACL
- コメントされた IP ACL エントリ
- Context-ベースのACL
- 認証プロキシ
- ターボACL
- 分散型時間ベースのACL
このドキュメントでは、一般的に使用されている標準および拡張ACLについて説明しています。
標準的なACLのコマンド構文フォーマットは、access-list access-list-number {permit|deny} {host|source source-wild}です。
標準ACLは、トラフィックを制御するために、IPパケットの送信元アドレスとACLに設定されたアドレスを比較します。
拡張ACLは、トラフィックを制御するために、IPパケットの送信元アドレスと送信先アドレスをACLに設定されたアドレスと比較します。
- プロトコル
- ポート番号
- DSCP(Differentiated Services Code Point)値
- プリシード値
- SYN(Synchronize Sequence Number)ビットの状態
拡張ACLのコマンド構文フォーマットは以下のとおりです。
IP
access-list access-list-number ]{deny | permit} protocol source source-wildcard destination destination-wildcard
Internet Control Message Protocol (ICMP)
access-list access-list-number ] {deny | permit} icmp source source-wildcard destination destination-wildcard
| ]
Transport Control Protocol (TCP)
access-list access-list-number ] {deny | permit} tcp source source-wildcard ] destination destination-wildcard ]
。
User Datagram Protocol (UDP)
access-list access-list-number ] {deny | permit} udp source source-wildcard ] destination destination-wildcard ]
前提条件
必要条件
この設定を行う前に、以下の条件を満たしていることを確認してください。
-
IP アドレス指定の基本的な理解
追加情報については、「新規ユーザーのための IP アドレス指定とサブネット設定」を参照してください。
使用したコンポーネント
このドキュメントは、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境のデバイスから作成されたものです。 このドキュメントで使用されているすべてのデバイスは、クリア(デフォルト)の構成でスタートしています。
構成
以下の構成例では、最も一般的なIP ACLを使用しています。
Allow a Select Host to Access the Network
この図は、選択したホストにネットワークへのアクセス許可を与えているところです。 ホスト B から NetA へ向かうトラフィックはすべて許可され、NetB から NetA へ向かうその他のトラフィックはすべて拒否されます。
R1 テーブルの出力は、ネットワークがホストへのアクセスをどのように許可するかを示しています。
-
この設定では、R1のEthernet 0インターフェイスを通じて、IPアドレス192.168.10.1のホストのみを許可しています。
-
このホストはNetAのIPサービスにアクセスできます。
-
NetBの他のホストはNetAにアクセスできません。
-
ACLにはdeny文が構成されていません。
デフォルトでは、すべてのACLの最後に暗黙のdeny all句があります。
R1
hostname R1!interface ethernet0 ip access-group 1 in!access-list 1 permit host 192.168.10.1
注:このACLは、NetBからソースされたパケットを除き、NetBからNetAへのIPパケットをフィルタリングします。
注:ACL access-list 1 permit 192.168.10.1 0.0.0.0 は、同じルールを構成する別の方法です。
Deny a Select Host to Access the Network
この図では、ホストBからNetAに向けて発信されたトラフィックは拒否され、NetBからNetAにアクセスするその他のトラフィックはすべて許可されています。
この構成では、R1のEthernet 0を介したホスト192.168.10.1/32からのすべてのパケットを拒否し、それ以外のすべてのパケットを許可しています。 すべての ACL には暗黙の deny all 節があるため、他のすべてのものを明示的に許可するには、access list 1 permit any というコマンドを使用する必要があります。
R1
hostname R1!interface ethernet0 ip access-group 1 in!access-list 1 deny host 192.168.10.1access-list 1 permit any
注意: ステートメントの順序は ACL の動作に不可欠です。 このコマンドのようにエントリの順序を逆にすると、最初の行がすべてのパケットソースアドレスにマッチしてしまいます。
access-list 1 permit anyaccess-list 1 deny host 192.168.10.1
Allow Access to a Range of Contiguous IP Addresses
この図では、ネットワーク アドレス 192.168.10.0/24 を持つ NetB のすべてのホストが、NetA のネットワーク 192.168.200.0/24 にアクセスできることを示しています。
この設定では、ネットワーク192.168.10.0/24にソースアドレスがあり、ネットワーク192.168.200.0/24にデスティネーションアドレスがあるIPヘッダーを持つIPパケットがNetAにアクセスすることを許可します。 ACLの最後には暗黙のdeny all句があり、R1のインバウンドでイーサネット0を通過する他のすべてのトラフィックを拒否します。
R1
hostname R1!interface ethernet0 ip access-group 101 in!access-list 101 permit ip 192.168.10.0 0.0.0.255 192.168.200.0 0.0.0.255
注:access-list 101 permit ip 192.168.10.0 0.0.0.255 192.168.200.0.0.0.255というコマンドの「0.0.0.255」は、ネットワーク192.168.10.0のマスク255.255.255.0の逆マスクです。 ACLは、ネットワークアドレスの何ビットを一致させる必要があるかを知るために、逆方向のマスクを使用します。
ネットワークアドレスのマスクとACLに必要な逆マスクの計算方法の詳細については、「Configuring IP Access Lists」の「マスク」のセクションを参照してください。
Deny Telnet Traffic (TCP, Port 23)
より高度なセキュリティに対応するために、パブリックネットワークからプライベートネットワークへのTelnetアクセスを無効にしなければならない場合があります。
TelnetはTCPの23番ポートを使用します。
R1
hostname R1!interface ethernet0 ip access-group 102 in!access-list 102 deny tcp any any eq 23access-list 102 permit ip any any
Allow Only Internal Networks to Initiate a TCP Session
この図では、NetAからNetBに向けて発信されたTCPトラフィックは許可され、NetBからNetAに向けて発信されたTCPトラフィックは拒否されています。
この例のACLの目的は次のとおりです。
-
NetAのホストがNetBのホストに対してTCPセッションを開始・確立することを許可する。
-
NetBのホストが、NetAのホストを宛先とするTCPセッションを開始・確立することを拒否する。
この構成では、データグラムが以下の場合、R1のインターフェイスEthernet 0インバウンドを通過することができます。
-
応答(ACK)またはリセット(RST)ビットがセットされている(TCPセッションが確立されていることを示す)
-
宛先ポートの値が1023より大きい
R1
hostname R1!interface ethernet0 ip access-group 102 in!access-list 102 permit tcp any any gt 1023 established
IPサービス用のよく知られたポートのほとんどは1023未満の値を使用しているため、1023未満の宛先ポートを持つデータグラムは、R1のインターフェイスEthernet 0のインバウンドを通過します。 宛先ポートが1023未満であったり、ACK/RSTビットが設定されていないデータグラムは、ACL102によって拒否されます。 したがって、NetBからのホストが、1023未満のポート番号に対して最初のTCPパケット(SYN/RST(シンクロナイズ/スタートパケット)ビットが設定されていない)を送信してTCP接続を開始しても、拒否されてTCPセッションは失敗する。
ポートの完全なリストはRFC 1700を参照してください。
Deny FTP Traffic (TCP, Port 21)
この図は、NetBからNetAに向けて発信されたFTP (TCP, port 21)とFTP data (port 20 )のトラフィックが拒否され、その他のIPトラフィックがすべて許可されていることを示しています。
FTPはport 21とport 20を使用します。
R1
hostname R1!interface ethernet0 ip access-group 102 in!access-list 102 deny tcp any any eq ftpaccess-list 102 deny tcp any any eq ftp-dataaccess-list 102 permit ip any any
Allow FTP Traffic (Active FTP)
FTPは、アクティブとパッシブという2つの異なるモードで動作します。
FTPがアクティブモードで動作する場合、FTPサーバーは制御用にポート21を、データ用にポート20を使用します。 FTPサーバー(192.168.1.100)はNetAに設置されています。 この図では,NetBからFTPサーバ(192.168.1.100)に向けて発信されたFTP(TCP,ポート21)とFTPデータ(ポート20)のトラフィックは許可され,それ以外のIPトラフィックはすべて拒否されています。
R1
hostname R1!interface ethernet0 ip access-group 102 in!access-list 102 permit tcp any host 192.168.1.100 eq ftpaccess-list 102 permit tcp any host 192.168.1.100 eq ftp-data established!interface ethernet1 ip access-group 110 in!access-list 110 permit host 192.168.1.100 eq ftp any establishedaccess-list 110 permit host 192.168.1.100 eq ftp-data any
FTPトラフィックの許可 (Passive FTP)
FTPは、アクティブとパッシブという2つの異なるモードで動作します。
FTPがパッシブモードで動作する場合、FTPサーバーは制御用にポート21を使用し、データ用に1024以上のダイナミックポートを使用します。 FTPサーバー(192.168.1.100)はNetAに設置されています。 この図では,NetBからFTPサーバ(192.168.1.100)に向けて発信されたFTP(TCP,ポート21)とFTPデータ(1024以上のポート)のトラフィックは許可され,それ以外のIPトラフィックは拒否されています。
R1
hostname R1!interface ethernet0 ip access-group 102 in!access-list 102 permit tcp any host 192.168.1.100 eq ftpaccess-list 102 permit tcp any host 192.168.1.100 gt 1023!interface ethernet1 ip access-group 110 in!access-list 110 permit host 192.168.1.100 eq ftp any establishedaccess-list 110 permit host 192.168.1.100 gt 1023 any established
Allow Pings (ICMP)
この図では、NetAからNetBへのICMPを許可し、NetBからNetAへのPingを拒否しています。
この設定では、インターフェイスEthernet 0でNetBからNetAへのecho-reply(ping response)パケットの受信のみを許可しています。 しかし、NetBをソースとし、NetAをデスティネーションとするPingの場合は、すべてのecho-request ICMPパケットをブロックします。 そのため、NetAのホストはNetBのホストにpingを行うことができますが、NetBのホストはNetAのホストにpingを行うことができません。
R1
hostname R1!interface ethernet0 ip access-group 102 in!access-list 102 permit icmp any any echo-reply
Allow HTTP, Telnet, Mail, POP3, FTP
この図では、HTTP、Telnet、SMTP(Simple Mail Transfer Protocol)、POP3、FTPのトラフィックのみが許可され、NetBからNetAに向けて発信された残りのトラフィックは拒否されています。
この構成では、宛先ポートの値がWWW(ポート80)、Telnet(ポート23)、SMTP(ポート25)、POP3(ポート110)、FTP(ポート21)、FTP data(ポート20)に一致するTCPトラフィックを許可します。 ACLの最後に暗黙のdeny all句があると、permit句にマッチしない他のすべてのトラフィックが拒否されることに注意してください。
R1
hostname R1!interface ethernet0 ip access-group 102 in!access-list 102 permit tcp any any eq wwwaccess-list 102 permit tcp any any eq telnetaccess-list 102 permit tcp any any eq smtpaccess-list 102 permit tcp any any eq pop3access-list 102 permit tcp any any eq 21access-list 102 permit tcp any any eq 20
Allow DNS
この図では、ドメイン ネーム システム (DNS) トラフィックのみが許可され、NetB から NetA に向けて発信された残りのトラフィックは拒否されています。
この構成では、宛先ポート値53のTCPトラフィックを許可しています。
R1
hostname R1!interface ethernet0 ip access-group 102 in!access-list 102 permit udp any any eq domain access-list 102 permit udp any eq domain anyaccess-list 102 permit tcp any any eq domain access-list 102 permit tcp any eq domain any
Permit Routing Updates
インターフェイスにインバウンドACLを適用する際に、ルーティングアップデートがフィルタリングされないようにします。
Routing Information Protocol (RIP)を許可するために、このコマンドを入力します。
access-list 102 permit udp any any eq rip
Interior Gateway Routing Protocol (IGRP)を許可するために、このコマンドを入力してください。
access-list 102 permit eigrp any any
Open Shortest Path First (OSPF)を許可するために、このコマンドを入力してください。
access-list 102 permit tcp any any eq 179 access-list 102 permit tcp any eq 179 any
Debug Traffic Based on ACL
デバッグコマンドの使用には、メモリや処理能力などのシステムリソースの割り当てが必要で、極端な状況では高負荷のシステムがストールすることもあります。 デバッグコマンドの使用には注意が必要です。 デバッグコマンドの影響を軽減するために、検査が必要なトラフィックを選択的に定義するためにACLを使用してください。
この設定では、ホスト10.1.1.1と172.16.1.1の間のパケットに対してのみdebug ip packetコマンドをオンにします。
R1(config)#access-list 199 permit tcp host 10.1.1.1 host 172.16.1.1R1(config)#access-list 199 permit tcp host 172.16.1.1 host 10.1.1.1R1(config)#end
R1#debug ip packet 199 detailIP packet debugging is on (detailed) for access list 199
デバッグコマンドの影響については、「デバッグコマンドに関する重要な情報」を参照してください。
デバッグコマンドでのACLの使用については、「Understanding the Ping and Traceroute Commands」の「Use the Debug Command」のセクションを参照してください。
MAC Address Filtering
特定のMAC層局の送信元または送信先アドレスを持つフレームをフィルタリングできます。 システムには、パフォーマンスに影響を与えることなく、いくつでもアドレスを設定することができます。
Router#config terminal bridge irb bridge 1 protocol ieee bridge 1 route ip
トラフィックをフィルタリングする必要のあるインターフェイスにブリッジプロトコルを適用し、アクセスリストを作成します。
Router#config terminal
int fa0/0 no ip address bridge-group 1 {input-address-list 700 | output-address-list 700} exit
Bridged Virtual Interfaceを作成し、Ethernetインターフェースに割り当てられたIPアドレスを適用します:
Router#config terminal
int bvi1 ip address exit ! ! access-list 700 deny <mac address> 0000.0000.0000 access-list 700 permit 0000.0000.0000 ffff.ffff.ffff
この設定では、ルーターはアクセスリスト700に設定されたMACアドレスのみを許可します。 アクセスリストでは、アクセスできないMACアドレスを拒否し、それ以外を許可します。
注意:アクセスリストはMACアドレスごとに1行ずつ作成してください。
検証
現在、この設定で利用できる検証手順はありません。
トラブルシューティング
現在、この設定で利用できる特定のトラブルシューティング情報はありません。