ACL の概要
パケット フィルタリングは、ネットワーク トラフィックを限定し、特定のユーザまたはデバイスによるネットワークの使用を制限するうえで役立ちます。ACL は、トラフィックをスイッチの通過時にフィルタリングし、パケットが指定されたインターフェイスを通過することを許可または拒否します。ACL は、パケットに適用される許可条件および拒否条件の順序付けられたコレクションです。パケットがインターフェイスに着信すると、スイッチはパケット内のフィールドを適用される ACL と比較し、アクセス リストに指定された基準に基づいて、パケットが転送に必要な権限を持っているかどうかを確認します。アクセス リスト内の条件を 1 つずつ調べ、パケットをテストします。最初に一致した条件によって、スイッチがパケットを受け入れるか拒否するかが決定されます。スイッチは一致する最初の条件が見つかった時点でパケットのテストを停止するため、条件の順序が重要な意味を持ちます。一致する条件がない場合、スイッチはパケットを拒否します。スイッチは、制限条件がない場合はパケットを転送し、制限条件がある場合はパケットを廃棄します。スイッチは、転送するすべてのパケットに ACL を使用できます。
スイッチにアクセス リストを設定することにより、ネットワークの基本的なセキュリティを確保できます。ACL を設定しなければ、スイッチを通過するすべてのパケットがネットワークのあらゆる部分で許可される可能性があります。ACL を使用すると、どのホストがネットワークのどの部分にアクセスできるかを制御したり、トラフィックの種類ごとに転送するかブロックするかを指定したりできます。たとえば、電子メール トラフィックの転送を許可し、Telnet トラフィックの転送を拒否することもできます。
ACL には、アクセス制御エントリ(ACE)の順序付けられたリストが含まれています。各 ACE には、 permit または deny と、パケットが ACE と一致するために満たす必要のある一連の条件を指定します。 permit または deny の意味は、ACL が使用されるコンテキストによって変わります。
スイッチは、IP ACL とイーサネット(MAC)ACL をサポートしています。
• IP ACL は、TCP、User Datagram Protocol(UDP; ユーザ データグラム プロトコル)、Internet Group Management Protocol(IGMP; インターネット グループ管理プロトコル)、および Internet Control Message Protocol(ICMP; インターネット制御メッセージ プロトコル)などの IPv4 トラフィックをフィルタリングします。
• イーサネット ACL は非 IP トラフィックをフィルタリングします。
このスイッチは、Quality of Service(QoS; サービス品質)分類 ACL もサポートしています。詳細については、「QoS ACL に基づく分類」を参照してください。
ここでは、次の概要について説明します。
• 「ポート ACL」
• 「フラグメント化されたトラフィックとフラグメント化されていないトラフィックの処理」
ポート ACL
ポート ACL は、スイッチのレイヤ 2 インターフェイスに適用される ACL です。ポート ACL がサポートされるのは物理インターフェイスだけで、EtherChannel インターフェイスではサポートされず、着信方向のインターフェイスだけに適用されます。以下のアクセス リストがサポートされています。
• 送信元アドレスを使用する IP アクセス リスト
• 送信元および宛先のアドレスと任意でプロトコル タイプ情報を使用できる拡張 IP アクセス リスト
• 送信元および宛先の MAC アドレスと任意でプロトコル タイプ情報を使用できる MAC 拡張アクセス リスト
スイッチは、インターフェイスに設定されたすべての着信機能に関連付けられた ACL を調べ、パケットが ACL 内のエントリとどのように一致するかに基づいてパケットの転送を許可または拒否します。このように、ACL がネットワークまたはネットワークの部分へのアクセスを制御します。図 29-1 に、すべてのワークステーションが同じ VLAN にある場合にポート ACL を使用してネットワークへのアクセスを制御する例を示します。レイヤ 2 入力に適用される ACL は、Host A に Human Resources ネットワークへのアクセスを許可しますが、Host B には同じネットワークへのアクセスを禁止します。ポート ACL は、着信方向のレイヤ 2 インターフェイスだけに適用できます。
図 29-1 ACL によるネットワークへのトラフィックの制御
ポート ACL をトランク ポートに適用すると、ACL はそのトランク ポート上のすべての VLAN でトラフィックをフィルタリングします。ポート ACL を音声 VLAN ポートに適用すると、ACL はデータ VLAN と音声 VLAN の両方でトラフィックをフィルタリングします。
ポート ACL では、IP アクセス リストを使用して IP トラフィックをフィルタリングでき、MAC アドレスを使用して非 IP トラフィックをフィルタリングできます。同じレイヤ 2 インターフェイス上で IP トラフィックと非 IP トラフィックの両方をフィルタリングするには、そのインターフェイスに IP アクセス リストと MAC アクセス リストの両方を適用します。
(注) レイヤ 2 インターフェイスに適用できるのは、IP アクセス リスト 1 つと MAC アクセス リスト 1 つだけです。すでに IP アクセス リストまたは MAC アクセス リストが設定されているレイヤ 2 インターフェイスに新しい IP アクセス リストまたは MAC アクセス リストを適用すると、設定済みの ACL が新しい ACL に置き換えられます。
フラグメント化されたトラフィックとフラグメント化されていないトラフィックの処理
IP パケットは、ネットワークを通過するときにフラグメント化されることがあります。その場合、TCP または UDP ポート番号や ICMP タイプおよびコードなどのレイヤ 4 情報は、パケットの最初の部分があるフラグメントだけに含まれます。他のフラグメントには、この情報はありません。
ACE には、レイヤ 4 情報をチェックしないため、すべてのパケット フラグメントに適用されるものがあります。レイヤ 4 情報を調べる ACE は、フラグメント化された IP パケットのほとんどのフラグメントに標準的な方法では適用できません。フラグメントにレイヤ 4 情報が含まれておらず、ACE が一部のレイヤ 4 情報をチェックする場合、一致ルールは次のように変更されます。
• フラグメント内のレイヤ 3 情報(TCP や UDP などのプロトコル タイプを含む)をチェックする許可 ACE は、含まれていないレイヤ 4 情報の種類にかかわらず、フラグメントと一致すると見なされます。
• レイヤ 4 情報をチェックする拒否 ACE は、フラグメントにレイヤ 4 情報が含まれていない限り、フラグメントと一致しません。
以下のコマンドで構成され、フラグメント化された 3 つのパケットに適用されるアクセス リスト 102 を例に取って説明します。
Switch(config)# access-list 102 permit tcp any host 10.1.1.1 eq smtp
Switch(config)# access-list 102 deny tcp any host 10.1.1.2 eq telnet
Switch(config)# access-list 102 permit tcp any host 10.1.1.2
Switch(config)# access-list 102 deny tcp any any
(注) 最初の 2 つの ACE には宛先アドレスの後に eq キーワードがありますが、これは既知の TCP 宛先ポート番号がそれぞれ Simple Mail Transfer Protocol(SMTP; シンプル メール転送プロトコル)および Telnet と一致するかどうかをチェックすることを意味します。
• パケット A は、ホスト 10.2.2.2 のポート 65000 からホスト 10.1.1.1 の SMTP ポートに送信される TCP パケットです。このパケットがフラグメント化された場合、レイヤ 4 情報がすべて揃っているため、完全なパケットである場合と同じように最初のフラグメントが最初の ACE(permit)と一致します。残りのフラグメントも最初の ACE と一致します。これは、それらのフラグメントに SMTP ポート情報が含まれていなくても、最初の ACE が適用されたときにレイヤ 3 情報だけをチェックするからです。この例の情報は、パケットが TCP であることと、宛先が 10.1.1.1 であることです。
• パケット B は、ホスト 10.2.2.2 のポート 65001 からホスト 10.1.1.2 の Telnet ポートに送信されます。このパケットがフラグメント化された場合、レイヤ 3 情報とレイヤ 4 情報がすべて揃っているため、最初のフラグメントが 2 つめの ACE(deny)と一致します。残りのフラグメントは、レイヤ 4 情報が含まれていないため、2 つめの ACE と一致しません。残りのフラグメントは 3 つめの ACE(permit)と一致します。
最初のフラグメントが拒否されたため、ホスト 10.1.1.2 は完全なパケットを再構成できず、その結果、パケット B は拒否されます。ただし、以降の許可されたフラグメントがネットワークの帯域幅を使用し、ホスト 10.1.1.2 がパケットを再構成しようとするときにホストのリソースが消費されます。
• フラグメント化されたパケット C は、ホスト 10.2.2.2 のポート 65001 からホスト 10.1.1.3 のポート ftp に送信されます。このパケットがフラグメント化された場合、最初のフラグメントが 4 つめの ACE(deny)と一致します。ACE はレイヤ 4 情報をチェックせず、すべてのフラグメントのレイヤ 3 情報に宛先がホスト 10.1.1.3 であることが示され、前の permit ACE は異なるホストをチェックしていたため、他のフラグメントもすべて 4 つめの ACE と一致します。
IPv4 ACL の設定
このスイッチで IP v4ACL を設定する手順は、シスコの他のスイッチやルータで IP v4ACL を設定する手順と同じです。ここでは、その設定手順を簡単に説明します。ACL の設定の詳細については、『 Cisco IOS IP Configuration Guide, Release 12.2 』の「IP Addressing and Services」にある「Configuring IP Services」を参照してください。コマンドの詳細については、『 Cisco IOS IP Command Reference, Volume 1 of 3: Addressing and Services, Release 12.2 』を参照してください。Cisco IOS のドキュメントには、Cisco.com ホームページ( Documentation > Cisco IOS Software > 12.2 Mainline > Configuration Guides または Command References )からアクセスできます。
このスイッチは、Cisco IOS ルータの ACL に関連する以下の機能をサポートしていません。
• 非 IP プロトコル ACL(表 29-1 を参照)またはブリッジ グループ ACL
• IP アカウンティング
• 着信および発信レート制限(QoS ACL によるレート制限を除く)
• リフレクシブ ACL またはダイナミック ACL(スイッチ クラスタリング機能で使用される専用のダイナミック ACL を除く)
• ACL ロギング
このスイッチで IP ACL を使用する手順は次のとおりです。
ステップ 1 アクセス リストの番号または名前とアクセス条件を指定して、ACL を作成します。
ステップ 2 その ACL をインターフェイスまたは端末回線に適用します。
ここでは、次の設定情報について説明します。
• 「標準 IPv4 ACL および拡張 IPv4 ACL の作成」
• 「端末回線への IPv4 ACL の適用」
• 「インターフェイスへの IPv4 ACL の適用」
• 「ハードウェアおよびソフトウェアによる IP ACL の処理」
• 「IPv4 ACL の設定例」
アクセス リスト番号
ACL を識別するために使用する番号は、作成するアクセス リストのタイプを表します。 表 29-1 に、アクセス リスト番号と対応するアクセス リスト タイプを挙げ、このスイッチでサポートされているかどうかを示します。このスイッチは、IPv4 標準アクセス リストおよび拡張アクセス リスト(1 ~ 199 および 1300 ~ 2699)をサポートします。
表 29-1 アクセス リスト番号
|
|
|
1 ~ 99 |
IP 標準アクセス リスト |
あり |
100 ~ 199 |
IP 拡張アクセス リスト |
あり |
200 ~ 299 |
プロトコル タイプコード アクセス リスト |
なし |
300 ~ 399 |
DECnet アクセス リスト |
なし |
400 ~ 499 |
XNS 標準アクセス リスト |
なし |
500 ~ 599 |
XNS 拡張アクセス リスト |
なし |
600 ~ 699 |
AppleTalk アクセス リスト |
なし |
700 ~ 799 |
48 ビット MAC アドレス アクセス リスト |
なし |
800 ~ 899 |
IPX 標準アクセス リスト |
なし |
900 ~ 999 |
IPX 拡張アクセス リスト |
なし |
1000 ~ 1099 |
IPX SAP アクセス リスト |
なし |
1100 ~ 1199 |
拡張 48 ビット MAC サマリー アドレス アクセス リスト |
なし |
1200 ~ 1299 |
IPX サマリー アドレス アクセス リスト |
なし |
1300 ~ 1999 |
IP 標準アクセス リスト(拡張範囲) |
あり |
2000 ~ 2699 |
IP 拡張アクセス リスト(拡張範囲) |
あり |
(注) 番号付き標準 ACL および番号付き拡張 ACL に加え、サポートされる番号を使用して名前付き標準 ACL および名前付き拡張 ACL も作成できます。標準 IP ACL の名前は 1 ~ 99 で、拡張 IP ACL の名前は 100 ~ 199 です。番号付きリストの代わりに名前付き ACL を使用することには、エントリを個別に削除できるという利点があります。
番号付き標準 ACL の作成
番号付き標準 ACL を作成するには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
access-list access-list-number { deny | permit } source [ source-wildcard ] |
送信元アドレスとワイルドカードを使用して標準 IPv4 アクセス リストを定義します。 access-list-number には、1 ~ 99 または 1300 ~ 1999 の 10 進数を指定します。 条件が一致した場合にアクセスを拒否する場合は deny 、許可する場合は permit を指定します。 source には、パケットの送信元となるネットワークまたはホストのアドレスを次の形式で指定します。 • ドット付き 10 進表記による 32 ビット長の値。 • source および source-wildcard の値 0.0.0.0 255.255.255.255 の省略形を意味するキーワード any 。source-wildcard 値を入力する必要はありません。 • source および source-wildcard の値 source 0.0.0.0 の省略形を意味するキーワード host 。 (任意) source-wildcard は、ワイルドカード ビットを送信元アドレスに適用します。 |
ステップ 3 |
end |
特権 EXEC モードに戻ります。 |
ステップ 4 |
show access-lists [number | name] |
アクセス リストの設定を表示します。 |
ステップ 5 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
ACL 全体を削除するには、 no access-list access-list-number グローバル コンフィギュレーション コマンドを使用します。番号付きアクセス リストから個々の ACE は削除できません。
(注) ACL を作成するときには、ACL の末尾にデフォルトで暗黙的な deny ステートメントが追加され、ACL の終わりに到達するまで一致する条件が見つからなかったすべてのパケットに適用されることに注意してください。標準アクセス リストでは、関連付けられた IP ホスト アドレス ACL の指定からマスクを省略すると、0.0.0.0 がマスクと見なされます。
次に、IP ホスト 171.69.198.102 へのアクセスを拒否し、他のすべてのホストへのアクセスを許可し、結果を表示する標準 ACL の作成例を示します。
Switch (config)# access-list 2 deny host 171.69.198.102
Switch (config)# access-list 2 permit any
Switch(config)# end
Switch# show access-lists
Standard IP access list 2
スイッチは、 host 一致条件があるエントリと don't care マスク 0.0.0.0 を含む一致条件があるエントリがリストの先頭に移動し、0 以外の don't care マスクを含むエントリよりも前に位置するように、標準アクセス リストの順序を書き換えます。そのため、 show コマンドの出力やコンフィギュレーション ファイルでは、ACE が必ずしも入力されたとおりの順序で配置されません。
作成した番号付き標準 IPv4 ACL を端末回線(「端末回線への IPv4 ACL の適用」を参照)やインターフェイス(「インターフェイスへの IPv4 ACL の適用」を参照)に適用できます。
番号付き拡張 ACL の作成
標準 ACL では照合に送信元アドレスだけを使用しますが、拡張 ACL では、照合操作に送信元アドレスと宛先アドレスを使用でき、任意でプロトコル タイプ情報を使用して制御のきめ細かさを高めることができます。番号付き拡張アクセス リストの ACE を作成するときには、作成した ACE がリストの末尾に追加されることに注意してください。番号付きリストでは、ACE の順序を変更したり、リスト内の特定の場所に対して ACE を追加または削除したりできません。
一部のプロトコルには、特定のパラメータやキーワードも適用されます。
以下の IP プロトコルがサポートされます(プロトコル キーワードはカッコ内に太字で示してあります)。
認証ヘッダー プロトコル( ahp )、Enhanced IGRP( eigrp )、Encapsulating Security Payload( esp )、Generic Routing Encapsulation( gre )、インターネット制御メッセージ プロトコル( icmp )、インターネット グループ管理プロトコル( igmp )、任意の内部プロトコル( ip )、IP-in-IP トンネリング( ipinip )、KA9Q NOS 互換 IP over IP トンネリング( nos )、Open Shortest Path First ルーティング( ospf )、Payload Compression Protocol( pcp )、Protocol Independent Multicast( pim )、Transmission Control Protocol( tcp )、ユーザ データグラム プロトコル( udp )
(注) ICMP エコー応答はフィルタリングできません。他の ICMP コードまたはタイプは、すべてフィルタリングできます。
各プロトコルのキーワードの詳細については、以下のコマンド リファレンスを参照してください。
• Cisco IOS IP Command Reference, Volume 1 of 3: Addressing and Services, Release 12.2
• Cisco IOS IP Command Reference, Volume 2 of 3: Routing Protocols, Release 12.2
• Cisco IOS IP Command Reference, Volume 3 of 3: Multicast, Release 12.2
これらのドキュメントには、Cisco.com ホームページ( Documentation > Cisco IOS Software > 12.2 Mainline > Command References )からアクセスできます。
(注) このスイッチは、ダイナミックまたはリフレクシブ アクセス リストをサポートしていません。また、Type of Service(ToS; サービス タイプ)の minimize-monetary-cost ビットに基づくフィルタリングもサポートしていません。
サポートされているパラメータのカテゴリは、TCP、UDP、ICMP、IGMP、その他の IP です。
拡張 ACL を作成するには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 a |
access-list access-list-number { deny | permit } protocol source source-wildcard destination destination-wildcard [ precedence precedence ] [ tos tos ] [ fragments ] [ time-range time-range-name ] [ dscp dscp ] 値の両方を入力できます。 |
拡張 IPv4 アクセス リストおよびアクセス条件を定義します。 access-list-number には、100 ~ 199 または 2000 ~ 2699 の 10 進数を指定します。 条件が一致した場合にパケットを拒否する場合は deny 、許可する場合は permit を指定します。 protocol には、IP プロトコルの名前または番号を入力します。使用できる値は、 ahp eigrp 、 esp 、 gre 、 icmp 、 igmp 、 igrp 、 ip 、 ipinip 、 nos 、 ospf 、 pcp 、 pim 、 tcp 、 udp 、および IP プロトコル番号を表す 0 ~ 255 の整数です。一致条件としてインターネット プロトコル(ICMP、TCP、UDP など)を指定するには、キーワード ip を使用します。 (注) この手順には、ほとんどの IP プロトコルのオプションが含まれています。TCP、UDP、ICMP、および IGMP の追加のパラメータについては、手順 2b ~ 2e を参照してください。 source には、パラメータの送信元であるネットワークまたはホストの番号を指定します。 source-wildcard は、ワイルドカード ビットを送信元アドレスに適用します。 destination には、パラメータの宛先であるネットワークまたはホストの番号を指定します。 destination-wildcard は、ワイルドカード ビットを宛先アドレスに適用します。 source、source-wildcard、destination、および destination-wildcard の値は、次の形式で指定します。 • ドット付き 10 進表記による 32 ビット長の値。 • 0.0.0.0 255.255.255.255(任意のホスト)を表すキーワード any 。 • 単一のホスト 0.0.0.0 を表すキーワード host 。 その他のキーワードはオプションであり、次の意味を持ちます。 • precedence :パケットを 0 ~ 7 の番号または名前で指定する優先度と一致させる場合に入力します。指定できる値は、 routine ( 0 )、 priority ( 1 )、 immediate ( 2 )、 flash ( 3 )、 flash-override ( 4 )、 critical ( 5 )、 internet (6)、 network ( 7 )です。 • fragments :2 つめ以降のフラグメントをチェックする場合に入力します。 • tos :パケットを 0 ~ 15 の番号または名前で指定するサービス タイプ レベルと一致させる場合に入力します。指定できる値は、 normal ( 0 )、 max-reliability ( 2 )、 max-throughput ( 4 )、 min-delay ( 8 )です。 • time-range :このキーワードの詳細については、「ACL での時間範囲の使用」を参照してください。 • dscp :パケットを 0 ~ 63 の番号で指定する DSCP 値と一致させる場合に入力します。また、指定できる値のリストを表示するには、疑問符(?)を使用します。 |
または |
access-list access-list-number { deny | permit } protocol any any [ precedence precedence ] [ tos tos ] [ fragments ] [ time-range time-range-name ] [ dscp dscp ] |
アクセスリスト コンフィギュレーション モードで、source および source wildcard の値 0.0.0.0 255.255.255.255 の省略形と destination および destination wildcard の値 0.0.0.0 255.255.255.255 の省略形を使用して、拡張 IP アクセス リストを定義します。 送信元と宛先のアドレスおよびワイルドカードの代わりに any キーワードを使用できます。 |
または |
access-list access-list-number { deny | permit } protocol host source host destination [ precedence precedence ] [ tos tos ] [ fragments ] [ time-range time-range-name ] [ dscp dscp ] |
source および source wildcard の値 source 0.0.0.0 の省略形と destination および destination wildcard の値 destination 0.0.0.0 の省略形を使用して、拡張 IP アクセス リストを定義します。 送信元と宛先のワイルドカードまたはマスクの代わりに host キーワードを使用できます。 |
ステップ 2b |
access-list access-list-number { deny | permit } tcp source source-wildcard [ operator port ] destination destination-wildcard [ operator port ] [ established ] [ precedence precedence ] [ tos tos ] [ fragments ] [ time-range time-range-name ] [ dscp dscp ] [ flag ] |
(任意)拡張 TCP アクセス リストおよびアクセス条件を定義します。 TCP の場合は tcp を入力します。 以下の例外を除き、手順 2a の説明にあるパラメータと同じパラメータを使用します。 (任意) operator および port を入力すると、送信元ポート( source source-wildcard の後に入力した場合)または宛先ポート( destination destination-wildcard の後に入力した場合)が比較されます。使用可能な演算子は、 eq (等しい)、 gt (より大きい)、 lt (より小さい)、 neq (等しくない)、 range (包含範囲)などです。演算子にはポート番号を指定する必要があります( range の場合は 2 つのポート番号をスペースで区切って指定する必要があります)。 port には、10 進数(0 ~ 65535)のポート番号または TCP ポート名を入力します。TCP ポート名を確認するには、? を使用するか、『 Cisco IOS IP Configuration Guide, Release 12.2 』の「IP Addressing and Services」にある「Configuring IP Services」を参照してください。TCP をフィルタリングするときには、TCP ポートの番号または名前だけを使用します。 他のオプションのキーワードの意味は次のとおりです。 • established :確立された接続と照合する場合に入力します。このキーワードは、 ack または rst フラグでの照合と同じ機能を果たします。 • flag :指定された TCP ヘッダー ビットを基準にして照合します。入力できるフラグは、 ack (確認応答)、 fin (終了)、 psh (プッシュ)、 rst (リセット)、 syn (同期)、または urg (緊急)です。 |
ステップ 2c |
access-list access-list-number { deny | permit } udp source source-wildcard [ operator port ] destination destination-wildcard [ operator port ] [ precedence precedence ] [ tos tos ] [ fragments ] [ time-range time-range-name ] [ dscp dscp ] |
(任意)拡張 UDP アクセス リストおよびアクセス条件を定義します。 ユーザ データグラム プロトコルの場合は、 udp を入力します。 UDP パラメータは TCP の説明にあるパラメータと同じです。ただし、[ operator [ port ]] ポート番号またはポート名は、UDP ポートの番号または名前でなければなりません。また、UDP では、 flag および established パラメータは無効です。 |
ステップ 2d |
access-list access-list-number { deny | permit } icmp source source-wildcard destination destination-wildcard [ icmp-type | [[ icmp-type icmp-code ] | [ icmp-message ]] [ precedence precedence ] [ tos tos ] [ fragments ] [ time-range time-range-name ] [ dscp dscp ] |
(任意)拡張 ICMP アクセス リストおよびアクセス条件を定義します。 インターネット制御メッセージ プロトコルの場合は、 icmp を入力します。 ICMP パラメータは手順 2a の IP プロトコルの説明にあるパラメータとほとんど同じですが、ICMP メッセージ タイプおよびコード パラメータが追加されています。オプションのキーワードの意味は次のとおりです。 • icmp-type :ICMP メッセージ タイプでフィルタリングする場合に入力します。指定できる値の範囲は、0 ~ 255 です。 • icmp-code :ICMP パケットを ICMP メッセージ コード タイプでフィルタリングする場合に入力します。指定できる値の範囲は、0 ~ 255 です。 • icmp-message :ICMP パケットを ICMP メッセージ タイプ名または ICMP メッセージ タイプとコード名でフィルタリングする場合に入力します。ICMP メッセージ タイプ名およびコード名のリストを確認するには、? を使用するか、『 Cisco IOS IP Configuration Guide, Release 12.2 』の「Configuring IP Services」を参照してください。 |
ステップ 2e |
access-list access-list-number { deny | permit } igmp source source-wildcard destination destination-wildcard [ igmp-type ] [ precedence precedence ] [ tos tos ] [ fragments ] [ time-range time-range-name ] [ dscp dscp ] |
(任意)拡張 IGMP アクセス リストおよびアクセス条件を定義します。 インターネット グループ管理プロトコルの場合は、 igmp を入力します。 IGMP パラメータは手順 2a の IP プロトコルの説明にあるパラメータとほとんど同じですが、次に示すオプションのパラメータが追加されています。 igmp-type :IGMP メッセージ タイプと照合するには、0 ~ 15 の番号またはメッセージ名( dvmrp 、 host-query 、 host-report 、 pim 、または trace )を入力します。 |
ステップ 3 |
end |
特権 EXEC モードに戻ります。 |
ステップ 4 |
show access-lists [ number | name ] |
アクセス リストの設定を確認します。 |
ステップ 5 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
アクセス リスト全体を削除するには、 no access-list access-list-number グローバル コンフィギュレーション コマンドを使用します。番号付きアクセス リストから個々の ACE は削除できません。
次に、ネットワーク 171.69.198.0 のすべてのホストからネットワーク 172.20.52.0 のすべてのホストへの Telnet アクセスを拒否し、他のすべてのアクセスを許可する拡張アクセス リストを作成し、表示する例を示します ( eq キーワードを宛先アドレスの後に指定すると、Telnet に対応する TCP 宛先ポート番号がチェックされます)。
Switch(config)# access-list 102 deny tcp 171.69.198.0 0.0.0.255 172.20.52.0 0.0.0.255 eq telnet
Switch(config)# access-list 102 permit tcp any any
Switch(config)# end
Switch# show access-lists
Extended IP access list 102
10 deny tcp 171.69.198.0 0.0.0.255 172.20.52.0 0.0.0.255 eq telnet
ACL の作成後に(端末からの入力などによって)追加したエントリは、リストの末尾に追加されます。番号付きアクセス リストの特定の場所にはアクセス リスト エントリを追加または削除できません。
(注) ACL を作成するときには、アクセス リストの末尾にデフォルトで暗黙的な deny ステートメントが追加され、ACL の終わりに到達するまで一致する条件が見つからなかったすべてのパケットに適用されることに注意してください。
作成した番号付き拡張 ACL を端末回線(「端末回線への IPv4 ACL の適用」を参照)やインターフェイス(「インターフェイスへの IPv4 ACL の適用」を参照)に適用できます。
名前付き標準 ACL および名前付き拡張 ACL の作成
IPv4 ACL を識別する手段として、番号ではなく英数字のストリング(名前)を使用できます。名前付き ACL を使用すると、ルータ上で番号付きアクセス リストの場合より多くの IPv4 アクセス リストを設定できます。アクセス リストの識別手段として名前を使用する場合のモードとコマンド構文は、番号を使用する場合とは多少異なります。ただし、IP アクセス リストを使用するすべてのコマンドを名前付きアクセス リストで使用できるわけではありません。
(注) 標準 ACL または拡張 ACL に指定する名前は、アクセス リスト番号のサポートされる範囲内の番号にすることもできます。標準 IP ACL の名前は 1 ~ 99 で、拡張 IP ACL の名前は 100 ~ 199 です。番号付きリストの代わりに名前付き ACL を使用することには、エントリを個別に削除できるという利点があります。
名前付き ACL を設定するときには、次の注意事項および制限事項に留意してください。
• 番号付き ACL で使用できるすべてのコマンドが名前付き ACL でも使用できるわけではありません。インターフェイスのパケット フィルタおよびルート フィルタ用の ACL では、名前を使用できます。
• 標準 ACL と拡張 ACL に同じ名前は使用できません。
• 「標準 IPv4 ACL および拡張 IPv4 ACL の作成」で説明したとおり、番号付き ACL も使用できます。
名前を使用して標準 ACL を作成するには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
ip access-list standard name |
名前を使用して標準 IPv4 アクセス リストを定義し、アクセス リスト コンフィギュレーション モードを開始します。 名前には、1 ~ 99 の番号を使用できます。 |
ステップ 3 |
deny { source [ source-wildcard ] | host source | any } または permit { source [ source-wildcard ] | host source | any } |
アクセス リスト コンフィギュレーション モードで、パケットを転送するのか廃棄するのかを決定する 1 つ以上の拒否条件または許可条件を 指定します。 • host source :source および source wildcard の値 source 0.0.0.0 • any :source および source wildcard の値 0.0.0.0 255.255.255.255 |
ステップ 4 |
end |
特権 EXEC モードに戻ります。 |
ステップ 5 |
show access-lists [number | name] |
アクセス リストの設定を表示します。 |
ステップ 6 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
名前付き標準 ACL を削除するには、 no ip access-list standard name グローバル コンフィギュレーション コマンドを使用します。
名前を使用して拡張範囲 ACL を作成するには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
ip access-list extended name |
名前を使用して拡張 IPv4 アクセス リストを定義し、アクセス リスト コンフィギュレーション モードを開始します。 名前には、100 ~ 199 の番号を使用できます。 |
ステップ 3 |
{ deny | permit } protocol { source [ source-wildcard ] | host source | any } { destination [ destination-wildcard ] | host destination | any } [ precedence precedence ] [ tos tos ] [ established ] [ time-range time-range-name ] |
アクセス リスト コンフィギュレーション モードで、許可条件または拒否条件を指定します。 プロトコルおよび他のキーワードの定義については、「番号付き拡張 ACL の作成」を参照してください。 • host source :source および source wildcard の値 source 0.0.0.0 • host destination :destination および destination wildcard の値 destination 0.0.0.0 • any :source および source wildcard の値または destination および destination wildcard の値である 0.0.0.0 255.255.255.255 |
ステップ 4 |
end |
特権 EXEC モードに戻ります。 |
ステップ 5 |
show access-lists [number | name] |
アクセス リストの設定を表示します。 |
ステップ 6 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
名前付き標準 ACL を削除するには、 no ip access-list extended name グローバル コンフィギュレーション コマンドを使用します。
標準 ACL または拡張 ACL を作成するときには、ACL の末尾にデフォルトで暗黙的な deny ステートメントが追加され、ACL の終わりに到達するまで一致する条件が見つからなかったすべてのパケットに適用されることに注意してください。標準 ACL では、関連付けられた IP ホスト アドレス アクセス リストの指定からマスクを省略すると、0.0.0.0 がマスクと見なされます。
ACL の作成後に追加したエントリは、リストの末尾に追加されます。ACL エントリを特定の ACL に選択的に追加できません。ただし、 no permit および no deny アクセスリスト コンフィギュレーション モード コマンドを使用すると、名前付き ACL からエントリを削除できます。次に、名前付きアクセス リスト border-list から ACE を個別に削除する例を示します。
Switch(config)# ip access-list extended border-list
Switch(config-ext-nacl)# no permit ip host 10.1.1.3 any
番号付き ACL ではなく名前付き ACL を使用する理由の 1 つとして、名前付き ACL では行を選択して削除できることがあります。
作成した名前付き ACL をインターフェイスに適用できます(「インターフェイスへの IPv4 ACL の適用」を参照)。
ACL での時間範囲の使用
time-range グローバル コンフィギュレーション コマンドを使用することによって、時刻および曜日に基づいて拡張 ACL を選択的に適用できます。まず、時間範囲の名前を定義し、その時間範囲内の時刻および日付または曜日を設定します。次に、ACL を適用してアクセス リストに制限を設定するときに時間範囲を入力します。時間範囲を使用すると、ACL の許可ステートメントまたは拒否ステートメントの有効期間(指定期間内や指定曜日など)を定義できます。 time-range キーワードおよび引数については、「標準 IPv4 ACL および拡張 IPv4 ACL の作成」および 「名前付き標準 ACL および名前付き拡張 ACL の作成」にある名前付きおよび番号付き拡張 ACL の作成に関する表を参照してください。
時間ベースのアクセス リストを使用すると、CPU に負荷が生じます。これは、アクセス リストの新しい設定を他の機能や TCAM にロードされた結合済みの設定とマージする必要があるためです。そのため、複数のアクセス リストが短期間に連続して(互いに数分以内に)有効となるような設定とならないように注意する必要があります。
(注) 時間範囲は、スイッチのシステム クロックに基づきます。したがって、信頼できるクロック ソースが必要です。Network Time Protocol(NTP)を使用してスイッチ クロックを同期させることをお勧めします。詳細については、「システム日時の管理」を参照してください。
ACL の時間範囲パラメータを設定するには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
time-range time-range-name |
作成する時間範囲には意味のある名前( workhours など)を割り当て、時間範囲コンフィギュレーション モードを開始します。名前にスペースや疑問符を含めることはできません。また、文字から始める必要があります。 |
ステップ 3 |
absolute [ start time date ] [ end time date ] または periodic day-of-the-week hh:mm to [ day-of-the-week ] hh:mm または periodic { weekdays | weekend | daily } hh:mm to hh:mm |
適用対象の機能がいつ動作可能になるかを指定します。 • 時間範囲には、 absolute ステートメントを 1 つだけ使用できます。複数の absolute ステートメントを設定した場合は、最後に設定したステートメントだけが実行されます。 • 複数の periodic ステートメントを入力できます。たとえば、平日と週末に異なる時間を設定できます。 設定例を参照してください。 |
ステップ 4 |
end |
特権 EXEC モードに戻ります。 |
ステップ 5 |
show time-range |
時間範囲の設定を確認します。 |
ステップ 6 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
複数の項目をそれぞれ異なる時間に有効にする場合は、上記の手順を繰り返してください。
設定した時間範囲の制限を削除するには、 no time-range time-range-name グローバル コンフィギュレーション コマンドを使用します。
次に、 workhours (営業時間)の時間範囲および会社の休日(2006 年 1 月 1 日)を設定し、設定を確認する例を示します。
Switch(config)# time-range workhours
Switch(config-time-range)# periodic weekdays 8:00 to 12:00
Switch(config-time-range)# periodic weekdays 13:00 to 17:00
Switch(config-time-range)# exit
Switch(config)# time-range new_year_day_2006
Switch(config-time-range)# absolute start 00:00 1 Jan 2006 end 23:59 1 Jan 2006
Switch(config-time-range)# end
time-range entry: new_year_day_2003 (inactive)
absolute start 00:00 01 January 2006 end 23:59 01 January 2006
time-range entry: workhours (inactive)
periodic weekdays 8:00 to 12:00
periodic weekdays 13:00 to 17:00
時間範囲を適用するには、時間範囲を実装できる拡張 ACL 内に時間範囲名を入力します。次に、拡張アクセス リスト 188 を作成して確認する例を示します。このアクセス リストでは、定義された休業時間中はすべての送信元からすべての宛先への TCP トラフィックを拒否し、営業時間中はすべての TCP トラフィックを許可します。
Switch(config)# access-list 188 deny tcp any any time-range new_year_day_2006
Switch(config)# access-list 188 permit tcp any any time-range workhours
Switch# show access-lists
Extended IP access list 188
10 deny tcp any any time-range new_year_day_2006 (inactive)
20 permit tcp any any time-range workhours (inactive)
次に、名前付き ACL を使用して同じトラフィックを許可および拒否する例を示します。
Switch(config)# ip access-list extended deny_access
Switch(config-ext-nacl)# deny tcp any any time-range new_year_day_2006
Switch(config-ext-nacl)# exit
Switch(config)# ip access-list extended may_access
Switch(config-ext-nacl)# permit tcp any any time-range workhours
Switch(config-ext-nacl)# end
Switch# show ip access-lists
Extended IP access list lpip_default
Extended IP access list deny_access
10 deny tcp any any time-range new_year_day_2006 (inactive)
Extended IP access list may_access
10 permit tcp any any time-range workhours (inactive)
ACL へのコメントの挿入
remark キーワードを使用すると、任意の IP 標準または拡張 ACL にエントリに関するコメント(注釈)を追加できます。コメントを使用すると、ACL の理解とスキャンが容易になります。1 つのコメント行の最大長は 100 文字です。
コメントは、permit ステートメントまたは deny ステートメントの前後どちらにでも配置できます。コメントがどの permit ステートメントまたは deny ステートメントの説明であるのかが明確になるように、コメントの位置に関して一貫性を保つ必要があります。たとえば、あるコメントは対応する permit または deny ステートメントの前にあり、他のコメントは対応するステートメントの後ろにあると、混乱を招く可能性があります。
番号付き IP 標準または拡張 ACL にコメントを挿入するには、 access-list access-list number remark remark グローバル コンフィギュレーション コマンドを使用します。コメントを削除するには、このコマンドの no 形式を使用します。
次の例では、Jones のワークステーションにはアクセスを許可し、Smith のワークステーションにはアクセスを許可しません。
Switch(config)# access-list 1 remark Permit only Jones workstation through
Switch(config)# access-list 1 permit 171.69.2.88
Switch(config)# access-list 1 remark Do not allow Smith through
Switch(config)# access-list 1 deny 171.69.3.13
名前付き IP ACL のエントリには、 remark アクセス リスト コンフィギュレーション コマンドを使用します。コメントを削除するには、このコマンドの no 形式を使用します。
次の例では、Jones のサブネットには発信 Telnet の使用が許可されません。
Switch(config)# ip access-list extended telnetting
Switch(config-ext-nacl)# remark Do not allow Jones subnet to telnet out
Switch(config-ext-nacl)# deny tcp host 171.69.2.88 any eq telnet
端末回線への IPv4 ACL の適用
番号付き ACL を使用して、1 つまたは複数の端末回線へのアクセスを制御できます。端末回線には名前付き ACL を適用できません。すべての仮想端末回線にユーザが接続する可能性があるため、すべてに同じ制限を設定する必要があります。
ACL をインターフェイスに適用する手順については、「インターフェイスへの IPv4 ACL の適用」を参照してください。
仮想端末回線と ACL に指定されたアドレス間の着信接続および発信接続を制限するには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
line [ console | vty ] line-number |
設定する回線を指定し、インライン コンフィギュレーション モードを開始します。 • console :コンソール端末回線を指定します。コンソール ポートは DCE です。 • vty :リモート コンソール アクセス用の仮想端末を指定します。 line-number は、回線タイプを指定する場合に、設定する連続グループ内で最初の回線番号です。指定できる範囲は 0 ~ 16です。 |
ステップ 3 |
access-class access-list-number { in | out } |
(デバイスへの)特定の仮想端末回線とアクセス リストに指定されたアドレス間の着信接続および発信接続を制限します。 |
ステップ 4 |
end |
特権 EXEC モードに戻ります。 |
ステップ 5 |
show running-config |
アクセス リストの設定を表示します。 |
ステップ 6 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
端末回線から ACL を削除するには、 no access-class access-list-number { in | out } ライン コンフィギュレーション コマンドを使用します。
インターフェイスへの IPv4 ACL の適用
ここでは、IPv4 ACL をネットワーク インターフェイスに適用する方法について説明します。以下の注意事項に留意してください。
• ACL は着信レイヤ 2 インターフェイスだけに適用してください。
• インターフェイスへのアクセスを制御する場合、名前付き ACL または番号付き ACL を使用できます。
インターフェイスへのアクセスを制御するには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
interface interface-id |
設定するインターフェイスを指定し、インターフェイス コンフィギュレーション モードを開始します。 |
ステップ 3 |
ip access-group { access-list-number | name } { in } |
指定されたインターフェイスへのアクセスを制御します。 |
ステップ 4 |
end |
特権 EXEC モードに戻ります。 |
ステップ 5 |
show running-config |
アクセス リストの設定を表示します。 |
ステップ 6 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
指定したアクセス グループを削除するには、 no ip access-group { access-list-number | name } { in } インターフェイス コンフィギュレーション コマンドを使用します。
次に、ポートにアクセス リスト 2 を適用して、ポートに着信するパケットをフィルタリングする例を示します。
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# ip access-group 2 in
着信 ACL の場合、スイッチはパケットの受信後に ACL とパケットを照合します。ACL がパケットを許可する場合、スイッチはパケットの処理を継続します。ACL がパケットを拒否する場合、スイッチはパケットを廃棄します。
未定義の ACL をインターフェイスに適用すると、スイッチは ACL がインターフェイスに適用されていないと判断し、すべてのパケットを許可します。ネットワーク セキュリティのために未定義の ACL を使用する場合は、このような結果が生じることに注意してください。
ハードウェアおよびソフトウェアによる IP ACL の処理
ACL の処理は主にハードウェアで実行されますが、トラフィック フローの中には CPU に転送してソフトウェア処理を行う必要があるものもあります。ハードウェアで ACL の設定を保存する領域が不足すると、パケットは転送のために CPU に送られます。ソフトウェア転送トラフィックの転送レートは、ハードウェア転送トラフィックより大幅に低くなります。
ACL により多数のパケットが CPU に送信されると、スイッチのパフォーマンスが低下する可能性があります。
show ip access-lists 特権 EXEC コマンドを入力した場合、表示される一致カウントには、ハードウェアでアクセスが制御されるパケットは含まれません。スイッチド パケットに関するハードウェアの ACL の基本的な統計情報を取得するには、show access-lists hardware counters 特権 EXEC コマンドを使用します。
IPv4 ACL の設定例
ここでは、IPv4 ACL を設定および適用する例を示します。ACL のコンパイルの詳細については、『 Cisco IOS Security Configuration Guide, Release 12.2 』と、『 Cisco IOS IP Configuration Guide, Release 12.2 』の「IP Addressing and Services」にある「Configuring IP Services」を参照してください。
次の例の ACL は、インターネット ホスト 172.20.128.64 へのポート アクセスを許可する標準 ACL です。
Switch(config)# access-list 6 permit 172.20.128.64 0.0.0
Switch# show access-lists
Standard IP access list 6
10 permit 172.20.128.64 wildcard bits 0.0.0.0
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# ip access-group 6 in
次の例の ACL は、ポート 80(HTTP)からのポート トラフィックを拒否する拡張 ACL です。この ACL は、それ以外のすべてのトラフィックを許可します。
Switch(config)# access-list 106 deny tcp any any eq 80
Switch(config)# access-list 106 permit ip any any
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# ip access-group 106 in
番号付き ACL
次の例の ACL は、ネットワーク 36.0.0.0 サブネット上のアドレスを受け入れ、56.0.0.0 サブネットからのすべてのパケットを拒否します。この ACL は、ポートに着信するパケットに適用されます。
Switch(config)# access-list 2 permit 36.0.0.0 0.255.255.255
Switch(config)# access-list 2 deny 56.0.0.0 0.255.255.255
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# ip access-group 2 in
拡張 ACL
次の例では、インターネットに接続されたネットワークがあり、そのネットワーク上の任意のホストがインターネット上の任意のホストと TCP 接続を確立できるようにする場合を想定しています。ただし、IP ホストからは、専用メール ホストのメール(SMTP)ポートを除き、ネットワーク上のホストと TCP 接続を確立できないようにします。
SMTP は、接続の一端では TCP ポート 25、もう一端ではランダムなポート番号を使用します。接続している間は、同じポート番号が使用されます。インターネットから着信するメール パケットの宛先ポートは 25 です。安全なネットワーク システムは、ポート 25 で常にメール接続を受け入れるため、着信サービスを制御します。
Switch(config)# access-list 102 permit tcp any 128.88.0.0 0.0.255.255 eq 23
Switch(config)# access-list 102 permit tcp any 128.88.0.0 0.0.255.255 eq 25
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# ip access-group 102 in
名前付き ACL
次に、 marketing_group という名前の拡張 ACL を作成する例を示します。 marketing_group ACL は、宛先アドレスとワイルドカードの値 171.69.0.0 0.0.255.255 への任意の TCP Telnet トラフィックを許可し、その他の TCP トラフィックを拒否します。この ACL は他のすべての IP トラフィックを許可します。
Switch(config)# ip access-list extended marketing_group
Switch(config-ext-nacl)# permit tcp any 171.69.0.0 0.0.255.255 eq telnet
Switch(config-ext-nacl)# deny tcp any any
Switch(config-ext-nacl)# permit ip any any
Switch(config-ext-nacl)# exit
marketing_group ACL は、ポートに着信するトラフィックに適用されます。
Switch(config)# interface gigabitethernet0/2
Switch(config-if)# ip access-group marketing_group in
IP ACL に適用される時間範囲
次に、月曜日から金曜日の午前 8 時~午後 6 時(18:00)の間、IP の HTTP トラフィックを拒否する例を示します。この例では、土曜日および日曜日の正午~午後 8 時の間に限り、UDP トラフィックを許可します。(20:00).
Switch(config)# time-range no-http
Switch(config)# periodic weekdays 8:00 to 18:00
Switch(config)# time-range udp-yes
Switch(config)# periodic weekend 12:00 to 20:00
Switch(config)# ip access-list extended strict
Switch(config-ext-nacl)# deny tcp any any eq www time-range no-http
Switch(config-ext-nacl)# permit udp any any time-range udp-yes
Switch(config-ext-nacl)# exit
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# ip access-group strict in
コメント付きの IP ACL エントリ
次に示す番号付き ACL の例では、Jones が所有するワークステーションにはアクセスを許可し、Smith が所有するワークステーションにはアクセスを許可しません。
Switch(config)# access-list 1 remark Permit only Jones workstation through
Switch(config)# access-list 1 permit 171.69.2.88
Switch(config)# access-list 1 remark Do not allow Smith workstation through
Switch(config)# access-list 1 deny 171.69.3.13
次に示す番号付き ACL の例では、Winter および Smith のワークステーションに Web 閲覧を許可しません。
Switch(config)# access-list 100 remark Do not allow Winter to browse the web
Switch(config)# access-list 100 deny host 171.69.3.85 any eq www
Switch(config)# access-list 100 remark Do not allow Smith to browse the web
Switch(config)# access-list 100 deny host 171.69.3.13 any eq www
次に示す名前付き ACL の例では、Jones のサブネットにアクセスを許可しません。
Switch(config)# ip access-list standard prevention
Switch(config-std-nacl)# remark Do not allow Jones subnet through
Switch(config-std-nacl)# deny 171.69.0.0 0.0.255.255
次に示す名前付き ACL の例では、Jones のサブネットに発信 Telnet の使用を許可しません。
Switch(config)# ip access-list extended telnetting
Switch(config-ext-nacl)# remark Do not allow Jones subnet to telnet out
Switch(config-ext-nacl)# deny tcp 171.69.0.0 0.0.255.255 any eq telnet