Cisco セキュリティ アプライアンス コマンドライン コンフィギュレーション ガイド Cisco ASA 5500 シリーズ/Cisco PIX 500 シリーズ用 ソフトウェア バージョン 7.2
mpc.fm
モジュラ ポリシー フレームワークの使用
発行日;2013/09/05 | 英語版ドキュメント(2012/01/17 版) | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 11MB) | フィードバック

目次

モジュラ ポリシー フレームワークの使用

の概要

モジュラ ポリシー フレームワークの機能

モジュラ ポリシー フレームワーク設定の概要

デフォルトのグローバル ポリシー

トラフィックの識別(レイヤ 3/4 クラス マップ)

デフォルトのクラス マップ

通過トラフィック用のレイヤ 3/4 クラス マップの作成

管理トラフィック用のレイヤ 3/4 クラス マップの作成

アプリケーション インスペクションの特別なアクションの設定(インスペクション ポリシー マップ)

インスペクション ポリシー マップの概要

インスペクション ポリシー マップのアクションの定義

インスペクション クラス マップ内のトラフィックの特定

正規表現の作成

正規表現クラス マップの作成

アクションの定義(レイヤ 3/4 ポリシー マップ)

レイヤ 3/4 ポリシー マップの概要

ポリシー マップのガイドライン

サポートされる機能タイプ

階層ポリシー マップ

機能の方向

ポリシー マップ内の一致機能に関する注意事項

複数のポリシー マップの場合の機能照合ガイドライン

複数の機能アクションが適用される順序

デフォルトのレイヤ 3/4 ポリシー マップ

レイヤ 3/4 ポリシー マップの追加

インターフェイスへのアクションの適用(サービス ポリシー)

の例

HTTP トラフィックへのインスペクションと QoS ポリシングの適用

HTTP トラフィックへのインスペクションのグローバルな適用

特定のサーバへの HTTP トラフィックに対するインスペクションと接続制限値の適用

NAT による HTTP トラフィックへのインスペクションの適用

モジュラ ポリシー フレームワークの使用

この章では、モジュラ ポリシー フレームワークを使用して、TCP、一般的な接続設定、検査、IPS、CSC、および QoS に関するセキュリティ ポリシーを作成する方法について説明します。

この章は、次の項で構成されています。

「モジュラ ポリシー フレームワークの概要」

「トラフィックの識別(レイヤ 3/4 クラス マップ)」

「アプリケーション インスペクションの特別なアクションの設定(インスペクション ポリシー マップ)」

「アクションの定義(レイヤ 3/4 ポリシー マップ)」

「インターフェイスへのアクションの適用(サービス ポリシー)」

「モジュラ ポリシー フレームワークの例」

モジュラ ポリシー フレームワークの概要

モジュラ ポリシー フレームワークを使用すると、一貫性のある柔軟な方法で セキュリティ アプライアンス の機能を設定できます。たとえば、モジュラ ポリシー フレームワークを使用してタイムアウトを設定すると、すべての TCP アプリケーションにではなく、特定の TCP アプリケーションに固有に適用できます。この項では、次のトピックについて取り上げます。

「モジュラ ポリシー フレームワークの機能」

「モジュラ ポリシー フレームワーク設定の概要」

「デフォルトのグローバル ポリシー」

モジュラ ポリシー フレームワークの機能

モジュラ ポリシー フレームワークでは、次の機能がサポートされています。

QoS 入力ポリシング

TCP 正規化、TCP 接続と UDP 接続の制限およびタイムアウト、TCP シーケンス番号のランダム化

CSC

アプリケーション インスペクション

IPS

QoS 出力ポリシング

QoS 標準プライオリティ キュー

QoS トラフィック シェーピング、階層型プライオリティ キュー

モジュラ ポリシー フレームワーク設定の概要

モジュラ ポリシー フレームワークの設定は、次のタスクで構成されています。

1. レイヤ 3/4 クラス マップを作成して、モジュラ ポリシー フレームワーク アクションを実行するトラフィックを特定します。たとえば、セキュリティ アプライアンス を通過するすべてのトラフィックでアクションを実行したり、10.1.1.0/24 から任意の宛先アドレスまでのトラフィックで特定のアクションだけを実行したりできます。

 

「トラフィックの識別(レイヤ 3/4 クラス マップ)」を参照してください。

2. 実行するアクションの 1 つがアプリケーション インスペクションであり、あるインスペクション トラフィックで追加のアクションを実行する場合は、検査ポリシーマップを作成します。インスペクション ポリシー マップはトラフィックを特定し、そのトラフィックで何をするかを指定します。たとえば、本文の長さが 1000 バイトを上回るすべての HTTP 要求をドロップできます。

 

match コマンドでトラフィックを直接特定する独立したインスペクション ポリシー マップを作成したり、再利用のために、またはより複雑な照合のためにインスペクション クラス マップを作成したりできます。「インスペクション ポリシー マップのアクションの定義」および「インスペクション クラス マップ内のトラフィックの特定」を参照してください。

3. 検査されたパケット内の正規表現とテキストを照合する場合、正規表現または正規表現のグループ(正規表現クラスマップ)を作成できます。そして、トラフィックがインスペクション ポリシー マップと一致するように定義するときに、既存の正規表現を呼び出すことができます。たとえば、「example.com」というテキストが含まれた URL を持つすべての HTTP 要求をドロップできます。

 

「正規表現の作成」および「正規表現クラス マップの作成」を参照してください。

4. レイヤ 3/4 ポリシー マップを作成して、各レイヤ 3/4 クラス マップで実行するアクションを定義します。次に、サービス ポリシーを使用して、ポリシー マップを適用するインターフェイスを決定します。

 

「アクションの定義(レイヤ 3/4 ポリシー マップ)」および「インターフェイスへのアクションの適用(サービス ポリシー)」を参照してください。

デフォルトのグローバル ポリシー

デフォルトでは、すべてのデフォルト アプリケーション インスペクション トラフィックに一致するポリシーがコンフィギュレーションに含まれ、特定のインスペクションがすべてのインターフェイスのトラフィックに適用されます(グローバル ポリシー)。すべてのインスペクションがデフォルトでイネーブルになっているわけではありません。適用できるグローバル ポリシーは 1 つだけなので、グローバル ポリシーを変更する場合は、デフォルトのポリシーを編集するか、デフォルトのポリシーをディセーブルにして新しいポリシーを適用します。(特定の機能では、グローバル ポリシーはインターフェイス ポリシーより優先されます)。

デフォルト ポリシー コンフィギュレーションには、次のコマンドが含まれます。

class-map inspection_default
match default-inspection-traffic
policy-map type inspect dns preset_dns_map
parameters
message-length maximum 512
policy-map global_policy
class inspection_default
inspect dns preset_dns_map
inspect ftp
inspect h323 h225
inspect h323 ras
inspect rsh
inspect rtsp
inspect esmtp
inspect sqlnet
inspect skinny
inspect sunrpc
inspect xdmcp
inspect sip
inspect netbios
inspect tftp
service-policy global_policy global

トラフィックの識別(レイヤ 3/4 クラス マップ)

レイヤ 3/4 クラス マップにより、アクションを適用するレイヤ 3 および 4 のトラフィックを特定します。レイヤ 3/4 クラス マップの最大数は、シングル モードでは 255 個、マルチ モードではコンテキストごとに 255 個です。この制限には、すべてのタイプのデフォルト クラス マップも含まれ、ユーザ設定のクラス マップを約 235 に制限します。各レイヤ 3/4 ポリシー マップに最大 63 のレイヤ 3/4 クラス マップを作成できます。次のタイプのクラス マップを作成できます。

「デフォルトのクラス マップ」

「通過トラフィック用のレイヤ 3/4 クラス マップの作成」

「管理トラフィック用のレイヤ 3/4 クラス マップの作成」

デフォルトのクラス マップ

コンフィギュレーションには、デフォルト グローバル ポリシーでセキュリティ アプライアンスが使用するデフォルトのレイヤ 3/4 クラス マップが含まれます。これは、 inspection_default と呼ばれ、デフォルト インスペクション トラフィックと一致します。

class-map inspection_default
match default-inspection-traffic
 

デフォルトのコンフィギュレーションに存在する別のクラス マップは、class-default と呼ばれ、これはすべてのトラフィックと一致します。

class-map class-default
match any
 

このクラス マップは、すべてのレイヤ 3/4 ポリシー マップの最後に表示され、原則的に、他のすべてのトラフィックでどんなアクションも実行しないようにセキュリティ アプライアンスに通知します。独自の match any クラス マップを作成するのではなく、必要に応じて class-default クラス マップを使用できます。実際のところ、class-default で使用可能な機能は、QoS トラフィック シェーピングなどの一部の機能だけです。

通過トラフィック用のレイヤ 3/4 クラス マップの作成

レイヤ 3/4 クラス マップでは、プロトコル、ポート、IP アドレス、およびレイヤ 3 またはレイヤ 4 の他の属性に基づいてトラフィックを照合します。

レイヤ 3/4 クラス マップを定義する手順は、次のとおりです。


ステップ 1 次のコマンドを入力して、レイヤ 3/4 クラス マップを作成します。

hostname(config)# class-map class_map_name
hostname(config-cmap)#
 

class_map_name は、最大 40 文字の文字列です。「class-default」という名前は予約されています。すべてのタイプのクラス マップで同じ名前スペースが使用されるため、別のタイプのクラス マップですでに使用されている名前は再度使用できません。CLI はクラスマップ コンフィギュレーション モードに移行します。

ステップ 2 (任意)次のコマンドを入力して、クラス マップの説明を追加します。

hostname(config-cmap)# description string
 

ステップ 3 次の特性のいずれかと照合して、クラスに含めるトラフィックを定義します。特に指定がない場合、クラス マップに含めることができる match コマンドは 1 つだけです。

任意のトラフィック:クラス マップは、すべてのトラフィックと照合されます。

hostname(config-cmap)# match any
 

アクセス リスト:クラス マップは、拡張アクセス リストで指定されたトラフィックと照合されます。セキュリティ アプライアンスがトランスペアレント ファイアウォール モードで動作している場合は、EtherType アクセス リストを使用できます。

hostname(config-cmap)# match access-list access_list_name
 

アクセス リストの作成の詳細については、「拡張アクセス リストの追加」または 「EtherType アクセス リストの追加」を参照してください。

NAT を使用するアクセス リストの作成の詳細については、「NAT 使用時にアクセス リストで使用する IP アドレス」を参照してください。

TCP または UDP 宛先ポート:クラス マップは、単一ポートまたは一定範囲の連続ポートと一致します。

hostname(config-cmap)# match port {tcp | udp} {eq port_num | range port_num port_num}
 

ヒント 複数の非連続ポートを使用するアプリケーションに対しては、match access-list コマンドを使用して、各ポートと一致する ACE を定義します。


指定できるポートのリストについては、「TCP ポートと UDP ポート」を参照してください。

たとえば、ポート 80 の TCP パケット(HTTP)と一致させるには、次のコマンドを入力します。

hostname(config-cmap)# match tcp eq 80
 

検査用のデフォルト トラフィック:クラス マップは、セキュリティ アプライアンス が検査できるすべてのアプリケーションで使用されるデフォルトの TCP および UDP ポートと一致します。

hostname(config-cmap)# match default-inspection-traffic
 

デフォルト ポートのリストについては、「デフォルトの検査ポリシー」を参照してください。セキュリティ アプライアンス には、デフォルトのインスペクション トラフィックに一致して、すべてのインターフェイス上のトラフィックに共通検査を適用するデフォルト グローバル ポリシーが含まれます。 match default-inspection-traffic コマンドにポートが含まれているすべてのアプリケーションが、ポリシー マップでデフォルトでイネーブルになっているわけではありません。

match access-list コマンドを match default-inspection-traffic コマンドとともに指定すると、一致するトラフィックを絞り込むことができます。 match default-inspection-traffic コマンドによって照合するポートが指定されるため、アクセス リストのポートはすべて無視されます。

IP ヘッダーの DSCP 値:クラス マップは、最大 8 個の DSCP 値と一致します。

hostname(config-cmap)# match dscp value1 [value2] [...] [value8]
 

たとえば、次のように入力します。

hostname(config-cmap)# match dscp af43 cs1 ef
 

優先:クラス マップは、最大 4 個の優先値と一致します。優先値は、IP ヘッダーのタイプ オブ サービス(TOS)バイトで表されます。

hostname(config-cmap)# match precedence value1 [value2] [value3] [value4]
 

value1 value4 は 0 ~ 7 になります。この値は該当の優先順位に対応します。

RTP トラフィック:クラス マップは RTP トラフィックと照合されます。

hostname(config-cmap)# match rtp starting_port range
 

starting_port には、2000 ~ 65534 の偶数番号の UDP 宛先ポートを指定します。 range には、 starting_port よりも上の追加 UDP ポートの数を 0 ~ 16383 で指定します。

トンネルグループ トラフィック:クラス マップは、QoS を適用するトンネルグループのトラフィックと照合されます。

hostname(config-cmap)# match tunnel-group name
 

トラフィック照合を調整するために、 match コマンドをもう 1 つ指定できます。上記のコマンドのいずれかを指定できますが、 match any match access-list 、および match default-inspection-traffic コマンドは指定できません。次のコマンドを入力して、各フローをポリシングすることもできます。

hostname(config-cmap)# match flow ip destination address
 

固有の IP 宛先アドレスに向かうトラフィックは、すべてフローと見なされます。


 

次に、 class-map コマンドの例を示します。

hostname(config)# access-list udp permit udp any any
hostname(config)# access-list tcp permit tcp any any
hostname(config)# access-list host_foo permit ip any 10.1.1.1 255.255.255.255
 
hostname(config)# class-map all_udp
hostname(config-cmap)# description "This class-map matches all UDP traffic"
hostname(config-cmap)# match access-list udp
 
hostname(config-cmap)# class-map all_tcp
hostname(config-cmap)# description "This class-map matches all TCP traffic"
hostname(config-cmap)# match access-list tcp
 
hostname(config-cmap)# class-map all_http
hostname(config-cmap)# description "This class-map matches all HTTP traffic"
hostname(config-cmap)# match port tcp eq http
 
hostname(config-cmap)# class-map to_server
hostname(config-cmap)# description "This class-map matches all traffic to server 10.1.1.1"
hostname(config-cmap)# match access-list host_foo
 

管理トラフィック用のレイヤ 3/4 クラス マップの作成

セキュリティ アプライアンスへの管理トラフィックに対して、この種類のトラフィックに特有のアクションの実行が必要になる場合があります。管理クラス マップを指定して、TCP または UDP のポートと照合できます。ポリシー マップの管理クラス マップで設定可能なアクションのタイプは、管理トラフィック専用です。つまり、このタイプのクラス マップでは、RADIUS アカウンティング トラフィックを検査できます。

セキュリティ アプライアンスへの管理トラフィックを対象としたクラス マップを作成するには、次の手順を実行します。


ステップ 1 次のコマンドを入力して、クラス マップを作成します。

hostname(config)# class-map type management class_map_name
hostname(config-cmap)#
 

class_map_name は、最大 40 文字の文字列です。「class-default」という名前は予約されています。すべてのタイプのクラス マップで同じ名前スペースが使用されるため、別のタイプのクラス マップですでに使用されている名前は再度使用できません。CLI はクラスマップ コンフィギュレーション モードに移行します。

ステップ 2 (任意)次のコマンドを入力して、クラス マップの説明を追加します。

hostname(config-cmap)# description string
 

ステップ 3 TCP または UDP ポートを照合して、クラスに含めるトラフィックを定義します。クラス マップに含めることができる match コマンドは 1 つだけです。

hostname(config-cmap)# match port {tcp | udp} {eq port_num | range port_num port_num}
 

指定できるポートのリストについては、「TCP ポートと UDP ポート」を参照してください。

たとえば、ポート 10000 の TCP パケットと一致させるには、次のコマンドを入力します。

hostname(config-cmap)# match tcp eq 10000
 


 

アプリケーション インスペクションの特別なアクションの設定(インスペクション ポリシー マップ)

モジュラ ポリシー フレームワークを使用すると、多くのアプリケーション インスペクションに対して特別なアクションを設定できます。レイヤ 3/4 ポリシー マップでインスペクション エンジンをイネーブルにする場合は、 インスペクション ポリシー マップ で定義されるアクションを必要に応じてイネーブルにすることもできます。インスペクション ポリシー マップが、インスペクション アクションを定義したレイヤ 3/4 クラス マップ内のトラフィックと一致すると、トラフィックのそのサブセットが指定したとおりに動作します(たとえば、ドロップやレート制限など)。

この項では、次のトピックについて取り上げます。

「インスペクション ポリシー マップの概要」

「インスペクション ポリシー マップのアクションの定義」

「インスペクション クラス マップ内のトラフィックの特定」

「正規表現の作成」

「正規表現クラス マップの作成」

インスペクション ポリシー マップの概要

インスペクション ポリシー マップをサポートするアプリケーションのリストについては、「アプリケーション検査の設定」を参照してください。

インスペクション ポリシー マップは、次に示す要素の 1 つ以上で構成されています。インスペクション ポリシー マップで使用可能な実際のオプションは、アプリケーションに応じて決まります。

トラフィック照合コマンド:インスペクション ポリシー マップで直接トラフィック照合コマンドを定義して、アプリケーションのトラフィックを、URL 文字列などのアプリケーションに固有の基準と照合できます。一致した場合にはアクションをイネーブルにします。

一部のトラフィック照合コマンドでは、正規表現を指定してパケット内部のテキストを照合できます。 ポリシー マップを設定する前に、正規表現クラス マップ内で、正規表現を単独またはグループで作成およびテストしておいてください。

インスペクション クラス マップ:(すべてのアプリケーションで使用できるわけではありません。サポートされるアプリケーションのリストについては、CLI ヘルプを参照してください)。インスペクション クラス マップには、アプリケーション トラフィックを URL 文字列などのアプリケーション固有の基準と照合するトラフィック照合コマンドが含まれています。その後、ポリシー マップ内のクラス マップを特定し、アクションをイネーブルにします。クラス マップを作成することと、インスペクション ポリシー マップ内で直接トラフィック照合を定義することの違いは、より複雑な一致基準を作成できる点と、クラス マップを再使用できる点です。

一部のトラフィック照合コマンドでは、正規表現を指定してパケット内部のテキストを照合できます。 ポリシー マップを設定する前に、正規表現クラス マップ内で、正規表現を単独またはグループで作成およびテストしておいてください。

パラメータ:パラメータは、インスペクション エンジンの動作に影響します。

デフォルトのインスペクション ポリシー マップ コンフィギュレーションには、次のコマンドが組み込まれています。このコンフィギュレーションでは、DNS パケットの最大メッセージ長を 512 バイトに設定しています。

policy-map type inspect dns preset_dns_map
parameters
message-length maximum 512
 

policy-map type inspect esmtp _default_esmtp_map など、他のデフォルトのインスペクション ポリシー マップもあります。これらのデフォルト ポリシー マップは、inspect protocol コマンドで暗黙的に作成されます。たとえば、inspect esmtp はポリシー マップ「_default_esmtp_map」を暗黙的に使用します。すべてのデフォルト ポリシー マップは、show running-config all policy-map コマンドを使用して表示できます。


インスペクション ポリシー マップのアクションの定義

レイヤ 3/4 ポリシー マップでインスペクション エンジンをイネーブルにする場合は、インスペクション ポリシー マップで定義されるアクションを必要に応じてイネーブルにすることもできます。

次のガイドラインを参照してください。

HTTP インスペクション ポリシー マップ:使用中の HTTP インスペクション ポリシー マップ( policy-map type inspect http )を変更する場合、変更を有効にするには inspect http map アクションを削除し、再適用する必要があります。たとえば、「http-map」インスペクション ポリシー マップを修正する場合、レイヤ 3/4 ポリシーから inspect http http-map コマンドを削除して再度追加する必要があります。

hostname(config)# policy-map test
hostname(config-pmap)# class httpO
hostname(config-pmap-c)# no inspect http http-map
hostname(config-pmap-c)# inspect http http-map
 

すべてのインスペクション ポリシー マップ:使用中のインスペクション ポリシー マップを別のマップ名と交換する場合は、 inspect protocol map コマンドを削除して新しいマップを使用して再度追加します。次に例を示します。

hostname(config)# policy-map test
hostname(config-pmap)# class sip
hostname(config-pmap-c)# no inspect sip sip-map1
hostname(config-pmap-c)# inspect sip sip-map2
 

インスペクション ポリシー マップを作成する手順は、次のとおりです。


ステップ 1 HTTP インスペクション ポリシー マップを作成するには、次のコマンドを入力します。

hostname(config)# policy-map type inspect application policy_map_name
hostname(config-pmap)#
 

インスペクション ポリシー マップをサポートするアプリケーションのリストについては、「アプリケーション検査の設定」を参照してください。

policy_map_name 引数は、最大 40 文字のポリシー マップ名です。すべてのタイプのポリシー マップで同じ名前スペースが使用されるため、別のタイプのポリシー マップですでに使用されている名前は再度使用できません。CLI はポリシー マップ コンフィギュレーション モードに入ります。

ステップ 2 一致トラフィックにアクションを適用するには、次の手順に従います。

a. 次のいずれかの方法を使用して、アクションを実行するトラフィックを指定します。

次のコマンドを入力して、「インスペクション クラス マップ内のトラフィックの特定」で作成したインスペクション クラス マップを指定します。

hostname(config-pmap)# class class_map_name
hostname(config-pmap-c)#
 

「アプリケーション層プロトコル検査の適用」でアプリケーションごとに説明されている match コマンドのいずれかを使用して、ポリシー マップで直接トラフィックを指定します。 match not コマンドを使用すると、 match not コマンドの基準に一致するどのトラフィックにもアクションは適用されません。

b. 次のコマンドを入力して、一致したトラフィックに対して実行するアクションを指定します。

hostname(config-pmap-c)# {[drop [send-protocol-error] | drop-connection [send-protocol-error]| mask | reset] [log] | rate-limit message_rate}
 

それぞれのアプリケーションですべてのオプションを設定できるわけではありません。アプリケーションに固有の他のアクションも適用可能な場合があります。使用できる正確なオプションについては、「アプリケーション層プロトコル検査の適用」を参照してください。

drop キーワードを指定すると、一致するすべてのパケットをドロップします。

send-protocol-error キーワードを指定すると、プロトコル エラー メッセージを送信します。

drop-connection キーワードを指定すると、パケットをドロップし、接続を閉じます。

mask キーワードを指定すると、パケットの一致部分をマスクします。

reset キーワードを指定すると、パケットをドロップして接続を閉じ、サーバとクライアントの両方またはいずれかに TCP リセットを送信します。

log キーワードを指定すると、システム ログ メッセージを送信します。このキーワードは単独で、または他のキーワードのいずれかと一緒に使用できます。

rate-limit message_rate 引数では、メッセージのレートを制限します。


) ポリシー マップには、複数の class コマンドまたは match コマンドを指定できます。

1 つのパケットが複数の異なる match コマンドまたは class コマンドと一致する場合、セキュリティ アプライアンス がアクションを適用する順序は、ポリシー マップにアクションが追加された順序ではなく、セキュリティ アプライアンスの内部ルールによって決まります。内部ルールは、アプリケーションのタイプとパケット解析の論理的進捗によって決まり、ユーザが設定することはできません。HTTP トラフィックの場合、Request Method フィールドの解析が Header Host Length フィールドの解析よりも先に行われ、Request Method フィールドに対するアクションは Header Host Length フィールドに対するアクションより先に行われます。たとえば、次の match コマンドは任意の順序で入力できますが、 match request method get コマンドが最初に照合されます。

match request header host length gt 100
reset
match request method get
log
 

アクションがパケットをドロップすると、インスペクション ポリシー マップではそれ以降のアクションは実行されません。たとえば、最初のアクションが接続のリセットである場合、それ以降の match コマンドまたは class コマンドとの照合は行われません。最初のアクションがパケットのログへの記録である場合、接続のリセットなどの 2 番目のアクションは実行されます (同じ match または class コマンドで、 reset (または drop-connection など)と log の両方のアクションを設定できます。この場合パケットは、指定された照合でリセットされる前にログに記録されます)。

パケットが、同じ複数の match コマンドまたは class コマンドと照合される場合は、ポリシー マップ内のそれらのコマンドの順序に従って照合されます。たとえば、ヘッダーの長さが 1001 のパケットの場合は、次に示す最初のコマンドと照合されてログに記録され、それから 2 番目のコマンドと照合されてリセットされます。2 つの match コマンドの順序を逆にすると、2 番目の match コマンドとの照合前にパケットのドロップと接続のリセットが行われ、ログには記録されません。

match request header length gt 100
log
match request header length gt 1000
reset
 

クラス マップは、そのクラス マップ内で重要度が最低の match コマンド(重要度は、内部ルールに基づきます)に基づいて、別のクラス マップまたは match コマンドと同じタイプであると判断されます。クラス マップに、別のクラス マップと同じタイプの重要度が最低の match コマンドがある場合、それらのクラス マップはポリシー マップに追加された順序で照合されます。クラス マップごとに最低重要度のコマンドが異なる場合は、最高重要度の match コマンドを持つクラス マップが最初に照合されます。たとえば、次の 3 つのクラス マップには、 match request-cmd (高プライオリティ)と match filename (低プライオリティ)という 2 つのタイプの match コマンドがあります。ftp3 クラス マップには両方のコマンドが含まれていますが、最低重要度のコマンドである match filename に従ってランク付けされています。ftp1 クラス マップには最高重要度のコマンドがあるため、ポリシー マップ内での順序に関係なく最初に照合されます。ftp3 クラス マップは ftp2 クラス マップと同じ重要度としてランク付けされており、 match filename コマンドも含まれています。これらのクラス マップの場合、ポリシー マップ内での順序に従い、ftp3 が照合されてから ftp2 が照合されます。

class-map inspect type ftp ftp1
match request-cmd get
class-map inspect type ftp ftp2
match filename regex abc
class-map inspect type ftp ftp3
match request-cmd get
match filename regex abc
 
policy-map type inspect ftp ftp
class ftp3
log
class ftp2
log
class ftp1
log
 


 

ステップ 3 検索エンジンに影響するパラメータを設定するには、次のコマンドを入力します。

hostname(config-pmap)# parameters
hostname(config-pmap-p)#
 

CLI はパラメータ コンフィギュレーション モードに移行します。各アプリケーションで使用可能なパラメータについては、「アプリケーション層プロトコル検査の適用」を参照してください。


 

次の例では、HTTP インスペクション ポリシー マップとその関連クラス マップを示します。このポリシー マップは、サービス ポリシーがイネーブルにするレイヤ 3/4 ポリシー マップによってアクティブになります。

hostname(config)# regex url_example example.com
hostname(config)# regex url_example2 example2.com
hostname(config)# class-map type regex match-any URLs
hostname(config-cmap)# match regex url_example
hostname(config-cmap)# match regex url_example2
 
hostname(config-cmap)# class-map type inspect http match-all http-traffic
hostname(config-cmap)# match req-resp content-type mismatch
hostname(config-cmap)# match request body length gt 1000
hostname(config-cmap)# match not request uri regex class URLs
 
hostname(config-cmap)# policy-map type inspect http http-map1
hostname(config-pmap)# class http-traffic
hostname(config-pmap-c)# drop-connection log
hostname(config-pmap-c)# match req-resp content-type mismatch
hostname(config-pmap-c)# reset log
hostname(config-pmap-c)# parameters
hostname(config-pmap-p)# protocol-violation action log
 
hostname(config-pmap-p)# policy-map test
hostname(config-pmap)# class test (a Layer 3/4 class map not shown)
hostname(config-pmap-c)# inspect http http-map1
 
hostname(config-pmap-c)# service-policy test interface outside
 

インスペクション クラス マップ内のトラフィックの特定

このタイプのクラス マップを使用して、アプリケーション固有の基準と照合できます。たとえば DNS トラフィックの場合は、DNS クエリー内のドメイン名と照合可能です。


) すべてのアプリケーションがインスペクション クラス マップをサポートするわけではありません。サポートされているアプリケーションのリストについては、CLI ヘルプを参照してください。


クラス マップは複数のトラフィックとの照合をグループ化します。クラス マップと一致するには、トラフィックは、 すべて の一致基準と一致する必要があります。代わりに、ポリシー マップで直接照合するトラフィックを指定することもできます。クラス マップを作成することと、インスペクション ポリシー マップ内で直接トラフィック照合を定義することの違いは、クラス マップを使用して複数一致をグループ化できる点と、クラス マップを再使用できる点です。このクラス マップで指定するトラフィックに対しては、インスペクション ポリシー マップで、接続のドロップ、リセット、またはロギングなどのアクションを指定できます。タイプの異なるトラフィックで異なるアクションを実行する場合は、ポリシー マップで直接トラフィックを指定してください。

検査クラス マップを定義する手順は、次のとおりです。


ステップ 1 次のコマンドを入力して、クラス マップを作成します。

hostname(config)# class-map type inspect application [match-all] class_map_name
hostname(config-cmap)#
 

application は、検査対象のアプリケーションです。サポートされているアプリケーションについては、「アプリケーション層プロトコル検査の適用」を参照してください。

class_map_name 引数は、最大 40 文字のクラス マップ名です。

match-all キーワードはデフォルトです。トラフィックがクラス マップと一致するには、すべての基準と一致する必要があることを指定します。

CLI がクラスマップ コンフィギュレーション モードに入り、1 つ以上の match コマンドを入力できます。

ステップ 2 (任意)クラス マップに説明を追加するには、次のコマンドを使用します。

hostname(config-cmap)# description string
 

ステップ 3 アプリケーションで使用可能な 1 つ以上の match コマンドを入力して、クラスに含めるトラフィックを定義します。

クラス マップと照合しないトラフィックを指定するには、 match not コマンドを使用します。たとえば、 match not コマンドで文字列「example.com」を指定すると、「example.com」が含まれるすべてのトラフィックはクラス マップと照合されません。

各アプリケーションで使用可能な match コマンドについては、「アプリケーション層プロトコル検査の適用」を参照してください。


 

次の例では、すべての基準に一致する必要がある HTTP クラス マップを作成します。

hostname(config-cmap)# class-map type inspect http match-all http-traffic
hostname(config-cmap)# match req-resp content-type mismatch
hostname(config-cmap)# match request body length gt 1000
hostname(config-cmap)# match not request uri regex class URLs
 

正規表現の作成

正規表現は、ストリングそのものとしてテキスト ストリングと文字どおりに照合することも、 metacharacters を使用してテキスト ストリングの複数のバリアントと照合することもできます。正規表現を使用して特定のアプリケーション トラフィックの内容と照合できます。たとえば、HTTP パケット内部の URL 文字列と照合できます。

Ctrl キーを押した状態で V キーを押すと、CLI において、疑問符(?)やタブなどの特殊文字をすべてエスケープできます。たとえば、設定で d?g を指定するには、 d[Ctrl+V]g と入力します。

正規表現をパケットと照合する場合のパフォーマンスへの影響については、『 Cisco Security Appliance Command Reference 』の regex コマンドを参照してください。


) 最適化のために、セキュリティ アプライアンスでは、難読化解除された URL が検索されます。難読化解除では、複数のスラッシュ(/)が単一のスラッシュに圧縮されます。「http://」などの、一般的に 2 つのスラッシュが使用されるストリングでは、代わりに「http:/」を検索してください。


表 21-1 は、特殊な意味を持つメタ文字のリストです。

 

表 21-1 regex メタ文字

文字
説明
注意事項

.

ドット

任意の単一文字と一致します。たとえば、 d.g は、dog、dag、dtg、およびこれらの文字を含む任意の単語(doggonnit など)に一致します。

( exp )

サブ表現

サブ表現は、文字を周囲の文字から分離して、サブ表現に他のメタ文字を使用できるようにします。たとえば、 d(o|a)g は dog および dag に一致しますが、 do|ag は do および ag に一致します。また、サブ表現を繰り返し限定作用素とともに使用して、繰り返す文字を区別できます。たとえば、 ab(xy){3}z は、abxyxyxyz に一致します。

|

代替

このメタ文字によって区切られている複数の表現のいずれかと一致します。たとえば、 dog|cat は、dog または cat に一致します。

?

疑問符

直前の表現が 0 または 1 個存在することを示す修飾子。たとえば、 lo?se は、lse または lose に一致します。

を入力してから疑問符を入力しないと、ヘルプ機能が呼び出されます。

*

アスタリスク

直前の表現が 0、1、または任意の個数存在することを示す修飾子。たとえば、 lo*se は、lse、lose、loose などに一致します。

+

プラス

直前の表現が少なくとも 1 個存在することを示す修飾子。たとえば、 lo+se は、lose および loose に一致しますが、lse には一致しません。

{ x }

繰り返し限定作用素

ちょうど X 回の繰り返し。たとえば、 ab(xy){3}z は、abxyxyxyz に一致します。

{ x ,}

最小繰り返し限定作用素

少なくとも x 回繰り返します。たとえば、 ab(xy){2,}z は、abxyxyz や abxyxyxyz などに一致します。

[ abc ]

文字クラス

カッコ内の任意の文字と一致します。たとえば、 [abc] は、a、b、または c に一致します。

[^ abc ]

否定文字クラス

角カッコに含まれていない単一文字と一致します。たとえば、 [^abc] は、a、b、c 以外の任意の文字に一致します。 [^A-Z] は、大文字のアルファベット文字以外の任意の単一の文字に一致します。

[ a - c ]

文字範囲クラス

範囲内の任意の文字と一致します。 [a-z] は、任意の小文字のアルファベット文字に一致します。文字と範囲を組み合わせて使用することもできます。 [abcq-z] および [a-cq-z] は、a、b、c、q、r、s、t、u、v、w、x、y、z に一致します。

ダッシュ(-)文字は、角カッコ内の最初の文字または最後の文字である場合にのみリテラルとなります( [abc-] [-abc] )。

""

引用符

文字列の末尾または先頭のスペースを保持します。たとえば、 " test" は、一致を検索する場合に先頭のスペースを保持します。

^

キャレット

行の先頭を指定します。

\

エスケープ文字

メタ文字とともに使用すると、リテラル文字と一致します。たとえば、 \[ は左角カッコに一致します。

char

文字

文字がメタ文字でない場合は、リテラル文字と一致します。

\r

復帰

復帰 0x0d と一致します。

\n

改行

改行 0x0a と一致します。

\t

Tab

タブ 0x09 と一致します。

\f

改ページ

フォーム フィード 0x0c と一致します。

\x NN

エスケープされた 16 進数

16 進数(厳密に 2 桁)を使用した ASCII 文字と一致します。

\ NNN

エスケープされた 8 進数

8 進数(厳密に 3 桁)としての ASCII 文字と一致します。たとえば、文字 040 はスペースを表します。

正規表現をテストおよび作成する手順は、次のとおりです。


ステップ 1 正規表現をテストして、一致するはずの対象と一致することを確認するには、次のコマンドを入力します。

hostname(config)# test regex input_text regular_expression
 

input_text 引数は、正規表現を使用して照合する、長さが最大で 201 文字の文字列です。

regular_expression 引数の長さは、最大 100 文字です。

Ctrl+V を使用して、CLI の特殊文字をすべてエスケープします。たとえば、 test regex コマンドの入力文字にタブを指定するには、 test regex "test[Ctrl+V Tab]" "test\t" と入力する必要があります。

正規表現が入力テキストと一致する場合は、次のメッセージが表示されます。

INFO: Regular expression match succeeded.
 

正規表現が入力テキストと一致しない場合は、次のメッセージが表示されます。

INFO: Regular expression match failed.
 

ステップ 2 テスト後に正規表現を追加するには、次のコマンドを入力します。

hostname(config)# regex name regular_expression
 

name 引数の長さは、最大 40 文字です。

regular_expression 引数の長さは、最大 100 文字です。


 

次に、インスペクション ポリシー マップで使用する 2 つの正規表現を作成する例を示します。

hostname(config)# regex url_example example\.com
hostname(config)# regex url_example2 example2\.com
 

正規表現クラス マップの作成

正規表現クラス マップで、1 つ以上の正規表現を指定します。正規表現クラス マップを使用して、特定のトラフィックの内容を照合できます。たとえば、HTTP パケット内の URL 文字列の照合が可能です。

正規表現クラス マップを作成する手順は、次のとおりです。


ステップ 1 「正規表現の作成」の項の説明に従って、正規表現を 1 つ以上作成します。

ステップ 2 次のコマンドを入力して、クラス マップを作成します。

hostname(config)# class-map type regex match-any class_map_name
hostname(config-cmap)#
 

class_map_name は、最大 40 文字の文字列です。「class-default」という名前は予約されています。すべてのタイプのクラス マップで同じ名前スペースが使用されるため、別のタイプのクラス マップですでに使用されている名前は再度使用できません。

match-any キーワードにより、トラフィックが正規表現の 1 つだけと一致する場合には、そのトラフィックがクラス マップと一致するように指定します。

CLI はクラスマップ コンフィギュレーション モードに移行します。

ステップ 3 (任意)次のコマンドを入力して、クラス マップの説明を追加します。

hostname(config-cmap)# description string
 

ステップ 4 正規表現ごとに次のコマンドを入力して、クラス マップに含める正規表現を指定します。

hostname(config-cmap)# match regex regex_name
 


 

次に、2 つの正規表現を作成し、これを正規表現クラス マップに追加する例を示します。トラフィックに「example.com」または「example2.com」というストリングが含まれている場合、このトラフィックはクラス マップと一致しています。

hostname(config)# regex url_example example\.com
hostname(config)# regex url_example2 example2\.com
hostname(config)# class-map type regex match-any URLs
hostname(config-cmap)# match regex url_example
hostname(config-cmap)# match regex url_example2
 

アクションの定義(レイヤ 3/4 ポリシー マップ)

この項では、レイヤ 3/4 ポリシー マップを作成して、アクションをレイヤ 3/4 クラス マップに関連付ける方法について説明します。この項では、次のトピックについて取り上げます。

「レイヤ 3/4 ポリシー マップの概要」

「デフォルトのレイヤ 3/4 ポリシー マップ」

「レイヤ 3/4 ポリシー マップの追加」

ポリシー マップのガイドライン

ポリシー マップを使用する場合は、次のガイドラインを参考にしてください。

各インターフェイスには、ポリシー マップを 1 つだけ割り当てることができます

同一のポリシー マップを複数のインターフェイスに適用できます。

1 つのレイヤ 3/4 ポリシーマップで複数のレイヤ 3/4 クラスマップを指定できます。

各クラス マップに対して、1 つ以上の機能タイプから複数のアクションを割り当てることができます。

階層型ポリシー マップを作成できます。「階層ポリシー マップ」を参照してください。

サポートされる機能タイプ

モジュラ ポリシー フレームワーク でサポートされ、ポリシー マップでイネーブルにできる機能タイプは次のとおりです。

QoS 入力ポリシング

TCP 正規化、TCP 接続と UDP 接続の制限およびタイムアウト、TCP シーケンス番号のランダム化

CSC

アプリケーション インスペクション

IPS

QoS 出力ポリシング

QoS 標準プライオリティ キュー

QoS トラフィック シェーピング、階層型プライオリティ キュー

階層ポリシー マップ

クラス マップで QoS トラフィック シェーピングをイネーブルにすると、オプションでシェーピングされるトラフィックのサブセットに対するプライオリティ キューイングをイネーブルにできます。これを行うには、プライオリティ キューイングのポリシー マップを作成する必要があります。そうすると、トラフィック シェーピングのポリシー マップ内で、プライオリティ クラス マップを呼び出すことができます。インターフェイスに適用できるのは、トラフィック シェーピングのクラス マップだけです。

この機能の詳細については、「QoS の設定」を参照してください。

階層型ポリシー マップは、トラフィック シェーピングとプライオリティ キューイングだけでサポートされます。

階層型ポリシー マップを実装するには、次の作業を実行します。

1. 「トラフィックの識別(レイヤ 3/4 クラス マップ)」の説明に従って、優先トラフィックを特定します。

階層型ポリシー マップで使用される複数のクラス マップを作成できます。

2. 「アクションの定義(レイヤ 3/4 ポリシー マップ)」の説明に従って、ポリシー マップを作成し、各クラス マップに対する単独のアクションを priority として指定します。

3. 「アクションの定義(レイヤ 3/4 ポリシー マップ)」の説明に従って、別のポリシー マップを作成し、 class-default クラス マップに shape アクションを指定します。

トラフィック シェーピングは class-default クラス マップだけに適用できます。

4. 同じクラス マップでは、ステップ 2 で作成したプライオリティ ポリシー マップを service-policy priority_policy_map コマンドを使用して特定します。

5. 「インターフェイスへのアクションの適用(サービス ポリシー)」の説明に従って、シェーピングのポリシー マップをインターフェイスに適用します。

機能の方向

アクションは、機能に応じて双方向または単方向にトラフィックに適用されます。双方向に適用される機能の場合、トラフィックが両方向のクラス マップと一致した場合に、ポリシー マップを適用するインターフェイスを出入りするすべてのトラフィックが影響を受けます。


) グローバル ポリシーを使用する場合は、すべての機能が単方向です。単一インターフェイスに適用する場合に通常双方向の機能は、グローバルに適用される場合、各インターフェイスの入力にのみ適用されます。ポリシーはすべてのインターフェイスに適用されるため、ポリシーは両方向に適用され、この場合の双方向は冗長になります。


たとえば、QoS プライオリティ キューのような単方向に適用される機能の場合は、ポリシー マップを適用するインターフェイスを出るトラフィックだけが影響を受けます。各機能の方向については、 表 21-2 を参照してください。

 

表 21-2 機能の方向

機能
単一インターフェイスでの方向
グローバルでの方向

TCP 正規化、TCP 接続と UDP 接続の制限およびタイムアウト、TCP シーケンス番号のランダム化

双方向

入力

CSC

双方向

入力

アプリケーション インスペクション

双方向

入力

IPS

双方向

入力

QoS 入力ポリシング

入力

入力

QoS 出力ポリシング

出力

出力

QoS 標準プライオリティ キュー

出力

出力

QoS トラフィック シェーピング、階層型プライオリティ キュー

出力

出力

ポリシー マップ内の一致機能に関する注意事項

ポリシー マップ内でパケットをクラス マップと一致させる方法の注意事項は、次のとおりです。

パケットは、各機能タイプのポリシー マップで、1 つのクラス マップにだけ一致します。

パケットが機能タイプのクラス マップと一致する場合、セキュリティ アプライアンスはその機能タイプについて後続のクラス マップと照合しません。

ただし、パケットが別の機能タイプについて後続のクラス マップと一致する場合、セキュリティ アプライアンスでは後続のクラス マップについてもアクションを適用します。

たとえば、パケットが接続制限についてのクラス マップと一致し、さらにアプリケーション インスペクションについてのクラス マップとも一致する場合は、両方のクラス マップ アクションが適用されます。

パケットがアプリケーション インスペクションのクラス マップと一致し、アプリケーション インスペクションを含む別のクラス マップとも一致した場合、2 番めのクラス マップのアクションは適用されません。

複数のポリシー マップの場合の機能照合ガイドライン

TCP および UDP トラフィック(およびステートフル ICMP 検査がイネーブルの場合は ICMP)の場合、モジュラ ポリシー フレームワークはトラフィック フローで動作し、個々のパケットに限定されません。トラフィックが、1 つのインターフェイスのポリシーで定義されている機能に一致する既存の接続の一部である場合、そのトラフィック フローを別のインターフェイスのポリシーにある同じ機能と照合することはできません。最初のポリシーのみが使用されます。

たとえば、HTTP トラフィックが、HTTP トラフィックを検査する内部インターフェイスのポリシーと一致するときに、HTTP インスペクション用の外部インターフェイスに別のポリシーがある場合、そのトラフィックが外部インターフェイスの出力側でも検査されることはありません。同様に、その接続のリターン トラフィックが外部インターフェイスの入力ポリシーによって検査されたり、内部インターフェイスの出力ポリシーによって検査されたりすることもありません。

ステートフル ICMP インスペクションをイネーブルにしない場合の ICMP のように、フローとして扱われないトラフィックの場合は、リターン トラフィックを戻り側のインターフェイスの別のポリシー マップと照合できます。たとえば、内部および外部のインターフェイスで IPS 検査を設定し、内部ポリシーでは仮想センサー 1、外部ポリシーでは仮想センサー 2 を使用している場合、非ステートフル ping は仮想センサー 1 の発信側と照合するだけでなく、仮想センサー 2 の着信側とも照合します。

複数の機能アクションが適用される順序

ポリシー マップの各種のアクションが実行される順序は、ポリシー マップ中に出現する順序とは無関係です。アクションは次の順序で実行されます。

QoS 入力ポリシング

TCP 正規化、TCP 接続と UDP 接続の制限およびタイムアウト、TCP シーケンス番号のランダム化


) セキュリティ アプライアンスがプロキシ サービス(AAA や CSC など)を実行したり、TCP ペイロード(FTP インスペクション)を変更したりするときは、TCP ノーマライザはデュアル モードで動作します。その場合、サービスを変更するプロキシやペイロードの前後で適用されます。


CSC

アプリケーション インスペクション

IPS

QoS 出力ポリシング

QoS 標準プライオリティ キュー

QoS トラフィック シェーピング、階層型プライオリティ キュー

デフォルトのレイヤ 3/4 ポリシー マップ

コンフィギュレーションには、デフォルト グローバル ポリシーでセキュリティ アプライアンスが使用する、デフォルトのレイヤ 3/4 ポリシー マップが含まれています。これは global_policy と呼ばれ、デフォルトのインスペクション トラフィックでインスペクションを実行します。適用できるのは 1 つのグローバル ポリシーだけなので、グローバル ポリシーを変更する場合は、デフォルト ポリシーを再設定するか、またはデフォルト ポリシーをディセーブルにして新しいポリシーを適用する必要があります。

デフォルトのポリシー マップ コンフィギュレーションには、次のコマンドが含まれます。

policy-map global_policy
class inspection_default
inspect dns preset_dns_map
inspect ftp
inspect h323 h225
inspect h323 ras
inspect rsh
inspect rtsp
inspect esmtp
inspect sqlnet
inspect skinny
inspect sunrpc
inspect xdmcp
inspect sip
inspect netbios
inspect tftp
 

レイヤ 3/4 ポリシー マップの追加

ポリシー マップの最大数は 64 です。レイヤ 3/4 ポリシー マップを作成する手順は、次のとおりです。


ステップ 1 次のコマンドを入力して、ポリシー マップを追加します。

hostname(config)# policy-map policy_map_name
 

policy_map_name 引数は、最大 40 文字のポリシー マップ名です。すべてのタイプのポリシー マップで同じ名前スペースが使用されるため、別のタイプのポリシー マップですでに使用されている名前は再度使用できません。CLI はポリシー マップ コンフィギュレーション モードに入ります。

ステップ 2 (任意)ポリシー マップの説明を指定します。

hostname(config-pmap)# description text
 

ステップ 3 次のコマンドを使用して、設定済みのレイヤ 3/4 クラス マップを指定します。

hostname(config-pmap)# class class_map_name
 

クラス マップを追加するには、「トラフィックの識別(レイヤ 3/4 クラス マップ)」を参照してください。

ステップ 4 このクラス マップに、1 つ以上のアクションを指定します。

IPS。「トラフィックの AIP SSM への転送」を参照してください。

CSC。「トラフィックの CSC SSM への転送」を参照してください。

TCP の正規化。「TCP 正規化の設定」を参照してください。

TCP および UDP の接続制限およびタイムアウト、TCP シーケンス番号のランダム化。「接続の制限値とタイムアウトの設定」を参照してください。

QoS。「QoS の設定」を参照してください。


) トラフィック シェーピング機能およびプライオリティ キュー機能に階層型ポリシー マップを設定できます。詳細については、「階層ポリシー マップ」を参照してください。


アプリケーション インスペクション。「アプリケーション層プロトコル検査の適用」を参照してください。


) クラス マップに match default_inspection_traffic コマンドがない場合、そのクラスに最大 1 つの inspect コマンドを設定できます。


ステップ 5 このポリシー マップに含めるクラス マップごとに、ステップ 3ステップ 4 を繰り返します。


 

接続ポリシーの policy-map コマンドの例を次に示します。このコマンドは、Web サーバ 10.1.1.1 への接続許可数を制限します。

hostname(config)# access-list http-server permit tcp any host 10.1.1.1
hostname(config)# class-map http-server
hostname(config-cmap)# match access-list http-server
 
hostname(config)# policy-map global-policy
hostname(config-pmap)# description This policy map defines a policy concerning connection to http server.
hostname(config-pmap)# class http-server
hostname(config-pmap-c)# set connection conn-max 256
 

次の例は、ポリシー マップでの複数の照合の動作を示しています。

hostname(config)# class-map inspection_default
hostname(config-cmap)# match default-inspection-traffic
hostname(config)# class-map http_traffic
hostname(config-cmap)# match port tcp eq 80
 
hostname(config)# policy-map outside_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect http http_map
hostname(config-pmap-c)# inspect sip
hostname(config-pmap)# class http_traffic
hostname(config-pmap-c)# set connection timeout tcp 0:10:0
 

次の例は、トラフィックが最初の利用可能なクラス マップと一致した場合に、同じ機能ドメインのアクションが指定されている後続のクラス マップと照合されないことを示しています。

hostname(config)# class-map telnet_traffic
hostname(config-cmap)# match port tcp eq 23
hostname(config)# class-map ftp_traffic
hostname(config-cmap)# match port tcp eq 21
hostname(config)# class-map tcp_traffic
hostname(config-cmap)# match port tcp range 1 65535
hostname(config)# class-map udp_traffic
hostname(config-cmap)# match port udp range 0 65535
hostname(config)# policy-map global_policy
hostname(config-pmap)# class telnet_traffic
hostname(config-pmap-c)# set connection timeout tcp 0:0:0
hostname(config-pmap-c)# set connection conn-max 100
hostname(config-pmap)# class ftp_traffic
hostname(config-pmap-c)# set connection timeout tcp 0:5:0
hostname(config-pmap-c)# set connection conn-max 50
hostname(config-pmap)# class tcp_traffic
hostname(config-pmap-c)# set connection timeout tcp 2:0:0
hostname(config-pmap-c)# set connection conn-max 2000
 

Telnet 接続は、開始時に class telnet_traffic と一致します。同様に FTP 接続は、開始時に class ftp_traffic と一致します。Telnet および FTP 以外の TCP 接続の場合は、 class tcp_traffic と一致します。Telnet 接続または FTP 接続は class tcp_traffic と一致しますが、すでに他のクラスと一致しているため、セキュリティ アプライアンス はこの照合を行いません。

インターフェイスへのアクションの適用(サービス ポリシー)

レイヤ 3/4 ポリシー マップをアクティブにするには、1 つ以上のインターフェイスに適用するサービス ポリシー、またはすべてのインターフェイスにグローバルに適用するサービス ポリシーを作成します。インターフェイス サービス ポリシーは、特定の機能に対するグローバル サービス ポリシーより優先されます。たとえば、インスペクションのグローバル ポリシーがあり、TCP 正規化のインターフェイス ポリシーがある場合、インターフェイスに対してインスペクションと TCP 正規化の両方が適用されます。ただし、インスペクションのグローバル ポリシーがあり、インスペクションのインターフェイス ポリシーもある場合、そのインターフェイスにはインターフェイス ポリシーのインスペクションのみが適用されます。

ポリシー マップとインターフェイスを関連付けてサービス ポリシーを作成するには、次のコマンドを入力します。

hostname(config)# service-policy policy_map_name interface interface_name
 

特定のポリシーを持たないすべてのインターフェイスに適用するサービス ポリシーを作成するには、次のコマンドを入力します。

hostname(config)# service-policy policy_map_name global
 

デフォルトでは、すべてのデフォルト アプリケーション インスペクション トラフィックに一致するグローバル ポリシーがコンフィギュレーションに含まれ、すべてのインスペクションがトラフィックにグローバルに適用されます。適用できるグローバル ポリシーは 1 つだけなので、グローバル ポリシーを変更する場合は、デフォルトのポリシーを編集するか、デフォルトのポリシーをディセーブルにして新しいポリシーを適用します。

デフォルト サービス ポリシーには、次のコマンドが含まれます。

service-policy global_policy global
 

たとえば、次のコマンドは、外部インターフェイスで inbound_policy ポリシー マップをイネーブルにします。

hostname(config)# service-policy inbound_policy interface outside
 

次のコマンドは、デフォルト グローバル ポリシーをディセーブルにし、他のすべてのセキュリティ アプライアンス インターフェイスで新しいポリシー new_global_policy をイネーブルにします。

hostname(config)# no service-policy global_policy global
hostname(config)# service-policy new_global_policy global
 

モジュラ ポリシー フレームワークの例

ここでは、モジュラ ポリシー フレームワークの例について説明します。内容は次のとおりです。

「HTTP トラフィックへのインスペクションと QoS ポリシングの適用」

「HTTP トラフィックへのインスペクションのグローバルな適用」

「特定のサーバへの HTTP トラフィックに対するインスペクションと接続制限値の適用」

「NAT による HTTP トラフィックへのインスペクションの適用」

HTTP トラフィックへのインスペクションと QoS ポリシングの適用

この例(図 21-1)では、外部インターフェイスを通過して セキュリティ アプライアンス を出入りするすべての HTTP 接続(ポート 80 の TCP トラフィック)が HTTP インスペクション対象として分類されます。外部インターフェイスを出るすべての HTTP トラフィックがポリシング対象として分類されます。

図 21-1 HTTP インスペクションと QoS ポリシング

 

この例について、次のコマンドを参照してください。

hostname(config)# class-map http_traffic
hostname(config-cmap)# match port tcp eq 80
 
hostname(config)# policy-map http_traffic_policy
hostname(config-pmap)# class http_traffic
hostname(config-pmap-c)# inspect http
hostname(config-pmap-c)# police output 250000
hostname(config)# service-policy http_traffic_policy interface outside
 

HTTP トラフィックへのインスペクションのグローバルな適用

この例(図 21-2)では、任意のインターフェイスを通過して セキュリティ アプライアンス に入るすべての HTTP 接続(ポート 80 の TCP トラフィック)が HTTP インスペクション対象として分類されます。このポリシーはグローバル ポリシーなので、インスペクションが発生するのは各インターフェイスにトラフィックが入ったときだけです。

図 21-2 グローバル HTTP インスペクション

 

この例について、次のコマンドを参照してください。

hostname(config)# class-map http_traffic
hostname(config-cmap)# match port tcp eq 80
 
hostname(config)# policy-map http_traffic_policy
hostname(config-pmap)# class http_traffic
hostname(config-pmap-c)# inspect http
hostname(config)# service-policy http_traffic_policy global
 

特定のサーバへの HTTP トラフィックに対するインスペクションと接続制限値の適用

この例(図 21-3)では、外部インターフェイスを通過して セキュリティ アプライアンス に入るサーバ A 宛ての HTTP 接続(ポート 80 の TCP トラフィック)が HTTP インスペクションおよび最大接続数制限値の対象として分類されます。サーバ A から発信されたホスト A への接続は、クラスマップのアクセス リストと照合しないので、影響を受けません。

内部インターフェイスを通じて セキュリティ アプライアンス に入るサーバ B 宛てのすべての HTTP 接続は、HTTP インスペクション対象として分類されます。サーバ B から発信されたホスト B への接続は、クラスマップのアクセス リストと照合しないので、影響を受けません。

図 21-3 特定のサーバに対する HTTP インスペクションと接続制限値

 

この例について、次のコマンドを参照してください。

hostname(config)# static (inside,outside) 209.165.201.1 192.168.1.2
hostname(config)# nat (inside) 1 192.168.1.0 255.255.255.0
hostname(config)# global (outside) 1 209.165.201.2
hostname(config)# access-list serverA extended permit tcp any host 209.165.201.1 eq 80
hostname(config)# access-list ServerB extended permit tcp any host 209.165.200.227 eq 80
 
hostname(config)# class-map http_serverA
hostname(config-cmap)# match access-list serverA
hostname(config)# class-map http_serverB
hostname(config-cmap)# match access-list serverB
 
hostname(config)# policy-map policy_serverA
hostname(config-pmap)# class http_serverA
hostname(config-pmap-c)# inspect http
hostname(config-pmap-c)# set connection conn-max 100
hostname(config)# policy-map policy_serverB
hostname(config-pmap)# class http_serverB
hostname(config-pmap-c)# inspect http
 
hostname(config)# service-policy policy_serverB interface inside
hostname(config)# service-policy policy_serverA interface outside
 

NAT による HTTP トラフィックへのインスペクションの適用

この例では、ネットワーク内のホストに 2 つのアドレスがあります。1 つは、実際の IP アドレスの 192.168.1.1 です。もう 1 つは、外部ネットワークで使用するマッピング IP アドレスの 209.165.200.225 です。ポリシーは、実際のアドレスを使用する内部インターフェイスに適用されるため、クラス マップのアクセス リストでは、実際の IP アドレスを使用する必要があります。外部インターフェイスに適用する場合は、マッピング アドレスを使用します。

図 21-4 NAT による HTTP インスペクション

 

この例について、次のコマンドを参照してください。

hostname(config)# static (inside,outside) 209.165.200.225 192.168.1.1
hostname(config)# access-list http_client extended permit tcp host 192.168.1.1 any eq 80
 
hostname(config)# class-map http_client
hostname(config-cmap)# match access-list http_client
 
hostname(config)# policy-map http_client
hostname(config-pmap)# class http_client
hostname(config-pmap-c)# inspect http
 
hostname(config)# service-policy http_client interface inside