Catalyst 6500 シリーズ スイッチ/Cisco 7600 シ リーズ ルータ Firewall Services Module コンフィ ギュレーション ガイド(CLI を使用)
モジュラ ポリシー フレームワークの使用
モジュラ ポリシー フレームワークの使用
発行日;2012/02/02 | 英語版ドキュメント(2010/04/08 版) | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 13MB) | フィードバック

目次

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

の詳細

モジュラ ポリシー フレームワークでサポートされている機能

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

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

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

デフォルト クラス マップ

最大クラス マップ数

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

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

検査ポリシー マップの概要

検査ポリシー マップ内のアクションの定義

検査クラス マップ内のトラフィックの識別

正規表現の作成

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

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

レイヤ 3/4 ポリシー マップの詳細

ポリシー マップに関する注意事項

機能の方向性

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

複数の機能アクションの適用順序

特定の機能アクションの非互換性

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

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

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

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

の例

HTTP トラフィックへの検査のグローバルな適用

特定のサーバに対する HTTP トラフィックの検査および接続制限の適用

NAT を使用した HTTP トラフィックへの検査の適用

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

この章では、モジュラ ポリシー フレームワークを使用して、サポートされている機能のセキュリティ ポリシーを作成する方法について説明します。この章では、次の内容について説明します。

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

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

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

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

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

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

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

モジュラ ポリシー フレームワークを使用すると、一貫性のある柔軟な方法で FWSM の機能を設定できます。たとえば、モジュラ ポリシー フレームワークを使用してタイムアウトを設定すると、すべての TCP アプリケーションにではなく、特定の TCP アプリケーションに固有に適用できます。ここでは、次の内容について説明します。

「モジュラ ポリシー フレームワークでサポートされている機能」

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

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

モジュラ ポリシー フレームワークでサポートされている機能

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

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

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

PISA 統合を使用したアプリケーション タイプの許可または拒否:「PISA 統合でのアプリケーション タイプの許可または拒否」を参照してください。

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

モジュラ ポリシー フレームワークの設定には、次のタスクが含まれます。

1. レイヤ 3/4 クラス マップを作成して、モジュラ ポリシー フレームワークのアクションを実行するトラフィックを識別します。たとえば、FWSM を通過するすべてのトラフィックでアクションを実行する場合や、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 global_policy
class inspection_default
inspect dns maximum-length 512
inspect ftp
inspect h323 h225
inspect h323 ras
inspect netbios
inspect rsh
inspect skinny
inspect sqlnet
inspect sunrpc
inspect tftp
inspect sip
inspect xdmcp
service-policy global_policy global

) デフォルト クラス マップで使用する特別な match default-inspection-traffic コマンドの詳細については、「特定の機能アクションの非互換性」を参照してください。


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

レイヤ 3/4 クラス マップでは、アクションを適用するレイヤ 3 および 4 トラフィックを識別します。レイヤ 3/4 ポリシー マップごとに複数のレイヤ 3/4 クラス マップを作成できます。

ここでは、次の内容について説明します。

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

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

デフォルト クラス マップ

設定には、デフォルト グローバル ポリシー内で FWSM が使用するデフォルトのレイヤ 3/4 クラス マップなど、内部作成された多数のデフォルト クラス マップが含まれています。これは inspection_default といい、デフォルトの検査トラフィックに一致します。

class-map inspection_default
match default-inspection-traffic
 

) デフォルト クラス マップで使用する特別な match default-inspection-traffic コマンドの詳細については、「特定の機能アクションの非互換性」を参照してください。


デフォルト設定に含まれるもう 1 つのクラス マップは class-default といい、すべてのトラフィックに一致します。

class-map class-default
match any
 

このクラス マップはすべてのレイヤ 3/4 ポリシー マップの最後に出現し、原則的に他のすべてのトラフィックのどのアクションも実行しないよう FWSM に通知します。必要に応じて、独自の match any クラス マップを作成する代わりに、class-default クラス マップを使用できます。

デフォルト クラス マップには検査クラス マップも含まれます。

デフォルト クラス マップおよびユーザ作成のクラス マップを表示するには、 show running-config all class-map コマンドを入力します。

最大クラス マップ数

すべてのタイプのクラス マップの最大数は、シングル モードまたはマルチ モードの各コンテキストで 255 です。クラス マップには次のタイプが含まれます。

レイヤ 3/4 クラス マップ

検査クラス マップ

正規表現クラス マップ

検査ポリシー マップで直接使用される match コマンド

この制限には、すべてのタイプのデフォルト クラス マップも含まれます。「デフォルト クラス マップ」を参照してください。

通過トラフィックのレイヤ 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 は、class-map コンフィギュレーション モードを開始します。

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

hostname(config-cmap)# description string
 

ステップ 3 次の特性のいずれかと一致させて、クラスに含めるトラフィックを定義します。別途指定のないかぎり、 match コマンド 1 つだけをクラス マップに含めることができます。

任意のトラフィック:クラス マップはすべてのトラフィックと一致します。

hostname(config-cmap)# match any
 

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

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

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

Network Address Translation(NAT; ネットワーク アドレス変換)を使用したアクセス リストの作成の詳細については、「NAT 使用時のアクセス リスト用の IP アドレス」を参照してください。

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

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

ヒント 連続しない複数のポートを使用するアプリケーションの場合、match access-list コマンドを使用して、各ポートと一致するよう Access Control Entry(ACE; アクセス制御エントリ)を定義します。


ポートのリストについては、「TCP ポートおよび UDP ポート」を参照してください。

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

hostname(config-cmap)# match tcp eq 80
 

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

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

このコマンドはデフォルトのグローバル ポリシーで使用されますが、ポリシー マップで使用された場合にはトラフィックの宛先ポートに基づいて各パケットに正しい検査が適用されることを保証する特別な CLI ショートカットです。たとえば、ポート 69 の UDP トラフィックが FWSM に到達すると FWSM によって TFTP 検査が適用され、ポート 21 の TCP トラフィックが到着すると FWSM によって FTP 検査が適用されます。つまり、この場合にかぎり、同じクラス マップに複数の検査を設定できます(WAAS 検査は例外で、この検査は他の検査と一緒に設定できます。アクションの組み合わせの詳細については、「特定の機能アクションの非互換性」を参照してください)。通常、FWSM では、適用される検査の決定にポート番号を使用しません。これにより、たとえば、非標準ポートに検査を適用するといった柔軟性が提供されます。

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

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


 

次に、 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 ポリシー マップでインスペクション エンジンをイネーブルにするときに、 検査ポリシー マップ で定義されているアクションを任意でイネーブルにできます。検査ポリシー マップが、検査アクションを定義したレイヤ 3/4 クラス マップ内のトラフィックに一致すると、そのトラフィックのサブセットに指定どおりのアクションが実行されます(廃棄またはレート制限など)。

ここでは、次の内容について説明します。

「検査ポリシー マップの概要」

「検査ポリシー マップ内のアクションの定義」

「検査クラス マップ内のトラフィックの識別」

「正規表現の作成」

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

検査ポリシー マップの概要

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

検査ポリシー マップは次の 1 つまたは複数の要素で構成されます。検査ポリシー マップで使用できる正確なオプションは、アプリケーションによって異なります。

トラフィック一致コマンド:検査ポリシー マップで直接トラフィック一致コマンドを定義して、アプリケーション固有の基準(URL 文字列など)にアプリケーション トラフィックを一致させることができます。その後、このアプリケーションに対してアクションをイネーブルにします。

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

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

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

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


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


検査ポリシー マップ内のアクションの定義

レイヤ 3/4 ポリシー マップでインスペクション エンジンをイネーブルにするときに、検査ポリシー マップで定義されているアクションを任意でイネーブルにできます。

検査ポリシー マップを作成する手順は、次のとおりです。


ステップ 1 (任意)「検査クラス マップ内のトラフィックの識別」に従って検査クラス マップを作成します。または、ポリシー マップ内で直接トラフィックを識別できます。

ステップ 2 検査ポリシー マップを作成するには、次のコマンドを入力します。

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

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

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

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

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

次のコマンドを入力して、「検査クラス マップ内のトラフィックの識別」で作成した検査クラス マップを指定します。

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

すべてのアプリケーションで検査クラス マップがサポートされているわけではありません。

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

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

hostname(config-pmap-c)# {[drop | drop-connection | mask | reset] [log] | log}
 

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

drop キーワードでは、一致したすべてのパケットを廃棄します。

drop-connection キーワードでは、パケットを廃棄して、接続を終了します。

mask キーワードでは、パケットの一致部分をマスクします。

reset キーワードでは、パケットを廃棄し、接続を終了して、TCP リセットをサーバまたはクライアント(あるいはその両方)に送信します。

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


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

パケットが複数の異なる match または class コマンドと一致する場合、FWSM でアクションが適用される順序は、ポリシー マップに追加した順序ではなく、内部の FWSM ルールで決定されます。内部ルールは、アプリケーション タイプおよびパケット解析の論理的進行によって決定されます。ユーザによる設定はできません。たとえば、HTTP トラフィックの場合、要求方法フィールドの解析はヘッダー ホスト長フィールドの解析に先行するため、要求方法フィールドのアクションはヘッダー ホスト長フィールドのアクションよりも前に実行されます。たとえば、次の 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 つのクラス マップには 2 つのタイプの match コマンドが含まれています。 match content length (優先度が高い)と match content type (優先度が低い)です。sip3 クラス マップには両方のコマンドが含まれていますが、最低優先度コマンド match content type に応じてランク付けされます。sip1 クラス マップには最高優先度のコマンドが含まれているため、ポリシー マップの順序に関係なく最初に一致します。sip3 クラス マップは、同じく match content type コマンドを含む sip2 クラス マップと同じ優先度としてランク付けされます。これらはポリシー マップの順序に従って、sip3、sip2 の順に一致します。

class-map inspect type sip match-all sip1
match content length gt 1000
class-map inspect type sip match-all sip2
match content type sdp
class-map inspect type sip match-all sip3
match content length gt 1000
match content type sdp
 
policy-map type inspect sip sip
class sip3
log
class sip2
log
class sip1
log
 


 

ステップ 4 インスペクション エンジンに影響するパラメータを設定するには、次のコマンドを入力します。

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

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


 

次に、HTTP 検査ポリシー マップおよび関連するクラス マップの例を示します。このポリシー マップはレイヤ 3/4 ポリシー マップによって実行され、レイヤ 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
 

検査クラス マップ内のトラフィックの識別

このタイプのクラス マップを使用すると、アプリケーションに固有の基準と一致させることができます。たとえば、HTTP トラフィックの場合、特定の URL と一致させることができます。


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


クラス マップは(match-all クラス マップ内の)複数のトラフィック一致をグループ化します。またはクラス マップを使用して(match-any クラス マップ内の)いずれかの一致リストと一致させることができます。クラス マップの作成と検査ポリシー マップでのトラフィック一致の直接定義との違いは、クラス マップを使用すると、複数の match コマンドをグループ化したり、クラス マップを再利用したりできることです。このクラス マップで識別したトラフィックに対して、検査ポリシー マップ内で接続の廃棄、リセット、ロギングなどのアクションを指定できます。トラフィック タイプごとに異なるアクションを実行する場合は、ポリシー マップ内で直接トラフィックを識別する必要があります。

クラス マップ(レイヤ 3/4、検査、および正規表現)の最大数はシングル モードまたはマルチ モードの各コンテキストで 255 です。この制限には、デフォルト クラス マップも含まれます。「デフォルト クラス マップ」を参照してください。

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


ステップ 1 (任意)正規表現に基づいた一致については、「正規表現の作成」および 「正規表現クラス マップの作成」を参照してください。

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

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

application は、検査するアプリケーションです。サポートされているアプリケーションについては、CLI ヘルプのサポートされているアプリケーションのリストまたは「アプリケーション レイヤ プロトコル検査の適用」を参照してください。

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

match-all キーワード(デフォルト値)を指定した場合、トラフィックがクラス マップと一致するためにはすべての基準を満たす必要があります。

CLI はクラス マップ コンフィギュレーション モードを開始します。このモードでは、1 つまたは複数の match コマンドを入力できます。

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

hostname(config-cmap)# description string
 

ステップ 4 アプリケーションで使用可能な 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
 

正規表現の作成

正規表現は、正確な文字列として厳密にテキスト文字列を一致させるか、またはテキスト文字列の複数の変形と一致できるように、 メタ文字 を使用してテキスト文字列を一致させます。正規表現を使用すると、特定のアプリケーション トラフィックのコンテンツと一致させることができます。たとえば、HTTP パケット内の URL 文字列と一致させることができます。

CLI でクエスチョン マーク(?)またはタブなどのすべての特殊文字をエスケープするには、 Ctrl+V を使用します。たとえば、設定で d?g を指定するには、 d[Ctrl+V]g と入力します。

正規表現をパケットと一致させる場合にパフォーマンスに与える影響については、 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference regex コマンドに関する項を参照してください。


) 最適化として、FWSM では難読化を解除した URL を検索します。難読化の解除により、複数のスラッシュ(/)が単一のスラッシュに圧縮されます。「http://」のような一般にダブル スラッシュを使用する文字列では、必ず代わりに「http:/」が検索されるようにしてください。


表 19-1 に、特別な意味を持つメタ文字を示します。

 

表 19-1 regex のメタ文字

文字
意味
説明

.

ドット

任意の 1 文字と一致します。たとえば、 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 ,}

繰り返し限定作用素の最小数

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、b、c、q、r、s、t、u、v、w、x、y、z と一致します。 [a-cq-z] も同様です。

ダッシュ(-)文字は、角カッコ内の最後または最初の文字( [abc-] または [-abc] )として使用されている場合にだけ文字どおりに解釈されます。

""

引用符

文字列内の後続または先行スペースを保護します。たとえば、 " test" は一致検索時に先行スペースを保護します。

^

キャレット

行の先頭を示します。

\

エスケープ文字

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

char

文字

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

\r

復帰

復帰文字 0x0d と一致します。

\n

改行

改行文字 0x0a と一致します。

\t

タブ

タブ文字 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 文字まで入力できます。

CLI ですべての特殊文字をエスケープするには、 Ctrl+V キーを使用します。たとえば、 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 文字列と一致させることができます。

クラス マップ(レイヤ 3/4、検査、および正規表現)の最大数はシングル モードまたはマルチ モードの各コンテキストで 255 です。この制限には、デフォルト クラス マップも含まれます。「デフォルト クラス マップ」を参照してください。

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


ステップ 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 は、class-map コンフィギュレーション モードを開始します。

ステップ 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 つを割り当てることができます (ただし、設定では最大 64 個のポリシー マップを作成できます)。

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

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

クラス マップごとに 1 つまたは複数の機能タイプの複数のアクションを割り当てることができます(サポートされている場合)。「特定の機能アクションの非互換性」を参照してください。

機能の方向性

アクションは、サービス ポリシーがインターフェイスに適用されているかグローバルに適用されているかに応じて、双方向的または単一方向的にトラフィックに適用されます。サービス ポリシーがインターフェイスに適用されている場合、すべての機能は双方向になります。トラフィックが双方向のクラス マップと一致すると、ポリシー マップの適用先であるインターフェイスに発着するすべてのトラフィックが影響を受けます。グローバル ポリシーを使用すると、すべての機能は単一方向になります。通常、単一インターフェイスに適用された場合は双方向になる機能が、グローバルに適用された場合には各インターフェイスの入力方向にだけ適用されます。ポリシーはすべてのインターフェイスに適用されるため、双方向に適用されます。したがって、この場合の双方向性は冗長になります。

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

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

1 つのパケットは、各機能タイプのポリシー マップのクラス マップ 1 つと一致させることができます。

パケットが各機能タイプのクラス マップと一致すると、FWSM はパケットをその機能タイプの以降のクラス マップに一致させようとはしません。

ただし、パケットが別の機能タイプの以降のクラス マップと一致すると、FWSM は以降のクラス マップのアクションを適用します(サポートされている場合)。サポートされていない組み合わせの詳細については、「特定の機能アクションの非互換性」を参照してください。

たとえば、パケットが接続制限のクラス マップと一致し、アプリケーション検査のクラス マップとも一致した場合、両方のクラス マップのアクションが適用されます。

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


) アプリケーション検査には複数の検査タイプが含まれており、前述の一致に関する注意事項を考慮する場合、各検査タイプは別々の機能になります。


複数の機能アクションの適用順序

ポリシー マップ内の異なるアクション タイプが実行される順序は、ポリシー マップでアクションが表示される順序とは関係ありません。実行されるアクションは、次の順序で行われます。

1. TCP と UDP の接続設定、および TCP ステート バイパス

2. アプリケーション検査(複数のタイプ)

トラフィックのクラスが複数検査用に分類されている場合に適用されるアプリケーション検査の順序は、次のとおりです。1 つの検査タイプだけが同じトラフィックに適用されます。WAAS 検査は例外です。同じトラフィックの他の検査と一緒に適用できるためです。詳細については、「特定の機能アクションの非互換性」を参照してください。

a. CTIQBE

b. DNS

c. FTP

d. GTP

e. H323

f. HTTP

g. ICMP

h. ICMP エラー

i. ILS

j. MGCP

k. NetBIOS

l. PPTP

m. Sun RPC

n. RSH

o. RTSP

p. SIP

q. Skinny

r. SMTP

s. SNMP

t. SQL*Net

u. TFTP

v. XDMCP

w. DCERPC

3. PISA 統合を使用したアプリケーション タイプの許可または拒否

特定の機能アクションの非互換性

一部の機能には同じトラフィックに対して互いに互換性がありません。たとえば、同じトラフィック セットに対して PISA 統合と検査は設定できません。また、大多数の検査は別の検査と組み合わせることができないため、同じトラフィックに複数の検査を設定していても、FWSM は 1 つの検査しか適用しません。この場合、適用される機能は 「複数の機能アクションの適用順序」 のリストでより優先度が高い機能になります。

各機能の互換性の詳細については、その機能に関する章または項を参照してください。


match default-inspection-traffic コマンドは、デフォルトのグローバル ポリシーで使用されますが、すべての検査のデフォルト ポートと一致する特別な CLI ショートカットです。ポリシー マップで使用されると、このクラス マップは、トラフィックの宛先ポートに基づいて各パケットに正しい検査が適用されることを保証します。たとえば、ポート 69 の UDP トラフィックが FWSM に到達すると FWSM によって TFTP 検査が適用され、ポート 21 の TCP トラフィックが到着すると FWSM によって FTP 検査が適用されます。つまり、この場合にかぎり、同じクラス マップに複数の検査を設定できます。通常、FWSM では、適用される検査の決定にポート番号を使用しません。これにより、たとえば、非標準ポートに検査を適用するといった柔軟性が提供されます。


不適切な設定の例としては、同じポリシー マップで複数の検査を設定して default-inspection-traffic ショートカットを使用していない場合などがあります。例 19-1 では、ポート 21 宛てのトラフィックが誤って FTP 検査と HTTP 検査の両方に設定されています。例 19-2 では、ポート 80 宛てのトラフィックが誤って FTP 検査と HTTP 検査の両方に設定されています。不適切な設定の例のいずれの場合も、FTP 検査だけが適用されます。適用される検査の順序で FTP が HTTP の前にあるためです。

例 19-1 不適切な FTP パケットの設定:HTTP 検査も設定されている

class-map ftp
match port tcp 21
class-map http
match port tcp 21 [it should be 80]
policy-map test
class ftp
inspect ftp
class http
inspect http

例 19-2 不適切な HTTP パケットの設定:FTP 検査も設定されている

class-map ftp
match port tcp 80 [it should be 21]
class-map http
match port tcp 80
policy-map test
class http
inspect http
class ftp
inspect ftp
 

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

TCP および UDP トラフィック(および、ステートフル ICMP 検査をイネーブルにしている場合は ICMP)の場合、サービス ポリシーは個々のパケットだけでなくトラフィック フローにも作用します。トラフィックが、あるインターフェイス上のポリシーの機能と一致する既存の接続の一部である場合、そのトラフィック フローは別のインターフェイス上のポリシーの同じ機能とも一致できません。最初のポリシーだけが使用されます。

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

フローとして扱われないトラフィックの場合(ステートフル ICMP 検査をイネーブルにしていない場合の ICMP など)、戻りトラフィックは戻りインターフェイスの別のポリシー マップと一致する可能性があります。たとえば、内部および外部インターフェイスで接続制限を設定し、内部ポリシーでは最大接続数を 2000 に、外部ポリシーでは最大接続数を 3000 に設定した場合、ステートフルではない Ping は着信の場合よりも発信の場合により低いレベルで拒否される可能性があります。

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

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

デフォルトのポリシー マップ設定には、次のコマンドが含まれます。

policy-map global_policy
class inspection_default
inspect dns maximum-length 512
inspect ftp
inspect h323 h225
inspect h323 ras
inspect netbios
inspect rsh
inspect skinny
inspect sqlnet
inspect sunrpc
inspect tftp
inspect sip
inspect xdmcp
 

) デフォルト クラス マップで使用する特別な match default-inspection-traffic コマンドの詳細については、「特定の機能アクションの非互換性」を参照してください。


レイヤ 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
 

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

ステップ 4 このクラス マップに 1 つまたは複数のアクションを指定します。

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

TCP ステート バイパス。「TCP ステート バイパスの設定」を参照してください。

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

PISA 統合を使用したアプリケーション タイプの許可または拒否:「PISA 統合でのアプリケーション タイプの許可または拒否」を参照してください。


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


ステップ 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 と一致できても、この接続は他のクラスと以前に一致しているので FWSM ではこの一致は行われません。

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

レイヤ 3/4 ポリシー マップを実行するには、ポリシー マップを 1 つまたは複数のインターフェイスに適用するサービス ポリシーか、またはすべてのインターフェイスにグローバルに適用するサービス ポリシーを作成します。特定の機能について、インターフェイス サービス ポリシーはグローバル サービス ポリシーより優先されます。たとえば、FTP 検査を含むグローバル ポリシーと TCP 接続設定を含むインターフェイス ポリシーがある場合、FTP 検査と TCP 接続設定の両方がインターフェイスに適用されます。ただし、FTP 検査を含むグローバル ポリシーと FTP 検査を含むインターフェイス ポリシーがある場合、インターフェイス ポリシーの FTP 検査だけがそのインターフェイスに適用されます。

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

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
 

次のコマンドを使用すると、デフォルトのグローバル ポリシーがディセーブルになり、その他すべての FWSM インターフェイス上で new_global_policy という新しいポリシーがイネーブルになります。

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

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

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

「HTTP トラフィックへの検査のグローバルな適用」

「特定のサーバに対する HTTP トラフィックの検査および接続制限の適用」

「NAT を使用した HTTP トラフィックへの検査の適用」

HTTP トラフィックへの検査のグローバルな適用

この例では(図 19-1 を参照)、任意のインターフェイス経由で FWSM に入る HTTP 接続(ポート 80 上の TCP トラフィック)は HTTP 検査用に分類されます。

図 19-1 グローバル 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 トラフィックの検査および接続制限の適用

この例では(図 19-2 を参照)、外部インターフェイス経由で FWSM に入り、宛先がサーバ A である HTTP 接続(ポート 80 上の TCP トラフィック)は HTTP 検査用に分類され、最大接続が制限されます。

内部インターフェイス経由で FWSM に入り、宛先がサーバ B である HTTP 接続は、HTTP 検査用に分類されます。

図 19-2 特定のサーバの HTTP 検査および接続制限

 

この例に対応するコマンドは、次のとおりです。

hostname(config)# access-list serverA extended permit tcp any host 192.168.1.1 eq 80
hostname(config)# access-list ServerB extended permit tcp any host 10.1.1.2 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 http_map_serverA
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 http_map_serverB
 
hostname(config)# service-policy policy_serverB interface inside
hostname(config)# service-policy policy_serverA interface outside
 

NAT を使用した HTTP トラフィックへの検査の適用

この例では、内部ネットワーク上のホストに、実 IP アドレス 10.1.1.1 と、外部ネットワークで使用されるマップされた IP アドレス 209.165.200.225 があります(図 19-3 を参照)。ポリシーは内部インターフェイスに適用されているので、実アドレスが使用されている場合、実 IP アドレスをクラス マップのアクセス リストで使用する必要があります。ポリシーを外部インターフェイスに適用する場合、マップされたアドレスを使用してください。

図 19-3 NAT を使用した HTTP 検査

 

この例に対応するコマンドは、次のとおりです。

hostname(config)# static (inside,outside) 209.165.200.225 10.1.1.1
hostname(config)# access-list http_client extended permit tcp host 10.1.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