Cisco ASA 5580 適応型セキュリティ アプライアン ス コマンド ライン コンフィギュレーション ガイド
モジュラ ポリシー フレームワークの使用
モジュラ ポリシー フレームワークの使用
発行日;2012/01/16 | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 17MB) | フィードバック

目次

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

モジュラ ポリシー フレームワークについて

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

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

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

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

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

クラスマップの最大数

トラフィックを介するレイヤ 3/4 クラスマップの作成

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

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

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

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

検査クラスマップ内のトラフィックの指定

正規表現の作成

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

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

レイヤ 3/4 ポリシーマップについて

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

階層型ポリシーマップ

機能の方向

ポリシーマップ内での機能照合のガイドライン

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

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

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

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

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

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

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

HTTP トラフィックへの検査と QoS ポリシングの適用

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

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

NAT による HTTP トラフィックへの検査の適用

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

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

「モジュラ ポリシー フレームワークについて」

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

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

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

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

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

モジュラ ポリシー フレームワークについて

モジュラ ポリシー フレームワークはadaptive security appliance機能を設定するための一貫性と柔軟性のある方法を提供します。たとえば、モジュラ ポリシー フレームワークを使用すると、すべての TCP アプリケーションに適用されるタイムアウト コンフィギュレーションではなく、特定の TCP アプリケーションに固有のタイムアウト コンフィギュレーションを作成できます。この項は、次の内容で構成されています。

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

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

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

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

モジュラ ポリシー フレームワークは、次の機能をサポートします。

QoS 入力ポリシング: 第 22 章「QoS の設定」 を参照してください。

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

アプリケーション検査(複数タイプ): 第 23 章「アプリケーション レイヤ プロトコル検査の設定」 を参照してください。

QoS 出力ポリシング: 第 22 章「QoS の設定」 を参照してください。

QoS 標準プライオリティ キュー: 第 22 章「QoS の設定」 を参照してください。

QoS トラフィック シェーピング、階層型プライオリティ キュー: 第 22 章「QoS の設定」 を参照してください。

NetFlow セキュア イベント ロギングのフィルタリング:「NSEL イベントのフィルタリング」を参照してください。

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

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

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

 

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

2. 実行するアクションの中にアプリケーション検査があり、検査トラフィックに対して追加のアクションを実行する場合は、検査ポリシーマップを作成します。検査ポリシーマップでは、対象となるトラフィックと、そのトラフィックに対して実行するアクションを指定します。たとえば、本文の長さが 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

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


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

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

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

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

「クラスマップの最大数」

「トラフィックを介するレイヤ 3/4 クラスマップの作成」

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

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

コンフィギュレーションには、デフォルト グローバル ポリシーでadaptive security applianceが使用するデフォルト レイヤ 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 ポリシーマップの末尾に出現し、基本的に他のすべてのトラフィックに対してアクションを実行しないようにadaptive security applianceに指示します。独自の match any クラスマップを作成する代わりに、必要に応じて class-default クラスマップを使用できます。実際、QoS トラフィック シェーピングなど一部の機能は class-default 以外では使用できません。

クラスマップの最大数

あらゆるタイプのクラスマップの最大数は、シングルモードで 255、またはマルチモードのコンテキストごとに 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 はクラスマップ コンフィギュレーション モードに移行します。

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

hostname(config-cmap)# description string
 

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

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

hostname(config-cmap)# match any
 

アクセスリスト:このクラスマップは拡張アクセスリストによって指定されたトラフィックと照合します。adaptive security applianceが透過ファイアウォール モードで動作している場合は、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
 

検査のデフォルト トラフィック:このクラスマップはadaptive security applianceが検査できるすべてのアプリケーションで使用されているデフォルトの TCP および UDP ポートと照合します。

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

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

デフォルト ポートのリストについては、「デフォルトの検査ポリシー」を参照してください。デフォルトで、 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 クラスマップの作成

adaptive security applianceの管理トラフィックについては、この種類のトラフィックに固有のアクションを実行する場合があります。アクセスリスト、TCP ポート、または UDP ポートと照合する管理クラスマップを指定できます。ポリシーマップの管理クラスマップに使用できるタイプのアクションは、管理トラフィック用に特化されています。つまり、このタイプのクラスマップを使用して、RADIUS アカウンティング トラフィックを検査したり、接続制限値を設定したりできます。

adaptive security applianceへの管理トラフィックのクラスマップを作成するには、次の手順を実行します。


ステップ 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 次の特性のいずれかと照合して、クラスに含めるトラフィックを定義します。クラスマップに含めることができる match コマンドは 1 つだけです。

アクセスリスト:このクラスマップは拡張アクセスリストによって指定されたトラフィックと照合します。adaptive security applianceが透過ファイアウォール モードで動作している場合は、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
 


 

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

モジュラ ポリシー フレームワークを使用すると、多数のアプリケーション検査に特別なアクションを設定できます。レイヤ 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 ポリシーマップで検査エンジンをイネーブルにした場合は、必要に応じて検査ポリシーマップ内で定義されたとおりにアクションをイネーブルにすることもできます。

検査ポリシーマップを作成するには、次の手順を実行します。


ステップ 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)#
 

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

第 23 章「アプリケーション レイヤ プロトコル検査の設定」 の各アプリケーションで match コマンドの 1 つを使用してポリシーマップのトラフィックを直接指定します。 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}
 

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

drop キーワードは照合するすべてのパケットをドロップします。

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

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

mask キーワードはパケットの照合箇所をマスクします。

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

log キーワードはシステム ログ メッセージを送信します。これだけで使用したり、あるいは他のキーワードとともに使用したりすることもできます。

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


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

パケットが複数の異なる match コマンドまたは class コマンドと一致する場合、adaptive security applianceがアクションを適用する順番が内部のadaptive security applianceの規則により決定されます。ポリシーマップに追加される順番では決定されません。内部規則はアプリケーションのタイプで決定され、パケットを解析する論理的進行はユーザにより設定できません。たとえば HTTP トラフィックの場合、Request Method フィールドの解析は、Header Host Length フィールドの解析よりも先に行われます。つまり、Request Method フィールドのアクションは、Header Host Length フィールドのアクションよりも前に開始されます。たとえば、次の照合コマンドはどのような順番でも入力できますが、 match request method get コマンドが先に照合されます。

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

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

パケットが複数の match または class コマンドと照合する場合、ポリシーマップ内に表示される順番で照合されます。たとえば、ヘッダーの長さが 1001 であるパケットの場合、次の最初のコマンドと照合してロギングされます。次に、第 2 のコマンドと照合してリセットされます。2 つの match コマンドの順番を逆にすると、パケットはドロップされ、接続は次の match コマンドと照合する前にリセットされ、ロギングされません。

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

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

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


 

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

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

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


 

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 ヘルプを参照してください。


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

検査クラスマップを定義するには、次の手順を実行します。


ステップ 1 (オプション)正規表現に基づいて照合する場合は、「正規表現の作成」および「クラスマップ内の正規表現の作成」を参照してください。

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

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

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

class_map_name 引数は長さが 40 文字までのクラスマップの名前です。

match-all キーワードはデフォルトで、トラフィックはクラスマップと照合するすべての基準と一致しなければならないことを指定します。

match-any キーワードは、トラフィックが基準の少なくとも 1 つの表現と照合する場合、トラフィックはクラスマップと照合することを指定します。

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

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

hostname(config-cmap)# description string
 

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

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

各アプリケーションに使用できる match コマンドを確認するには、 第 23 章「アプリケーション レイヤ プロトコル検査の設定」 を参照してください。


 

次の例では、すべての基準に一致する必要がある 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 クラスマップが作成されます。

hostname(config-cmap)# class-map type inspect http match-any monitor-http
hostname(config-cmap)# match request method get
hostname(config-cmap)# match request method put
hostname(config-cmap)# match request method post
 

正規表現の作成

正規表現は、文字通り正確な文字列として、または メタ文字 を使用してテキスト文字列を照合するので、テキスト文字列の複数のバリアントを照合できます。正規表現を使用すると、特定のアプリケーション トラフィックの内容を照合できます。たとえば、URL 文字列内の HTTP パケットを照合できます。

Ctrl+V キーを使用して、疑問符(?)やタブなど、CLI 内のすべての特殊文字をエスケープします。たとえば、 d[Ctrl+V]?g とタイプして、コンフィギュレーション内に d?g と入力します。

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


) adaptive security applianceでは、最適化のため、明瞭化した URL で検索が行われます。明瞭化により、複数のスラッシュ文字(/)は 1 つのスラッシュ文字に圧縮されます。「http://」のように通常 2 重のスラッシュが使用される文字列については、代わりに「http:/」を検索するようにしてください。


表 15-1 には特殊な意味を持つメタ文字を一覧表示しています。

 

表 15-1 regex コマンドのメタ文字

文字
説明
注意

.

ドット

1 個の文字と照合します。たとえば、 d.g は、doggonnit など、これらの文字を含む単語、dog、dag、dtg と一致します。

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 ]

否定の文字クラスです。

カッコ内に含まれない 1 個の文字と照合します。たとえば、 [^abc] は a、b、c 以外の文字と一致します。 [^A-Z] は、大文字でない 1 個の文字と一致します。

[ 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 進数を使用する ASCII 文字(2 桁だけ)と一致します。

\ NNN

エスケープされた 8 進数値

8 進数を使用する ASCII 文字(3 桁だけ)と一致します。たとえば、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 ポリシーマップの追加」

レイヤ 3/4 ポリシーマップについて

この項では、レイヤ 3/4 ポリシーマップがどのように機能するかを説明します。次の項目を取り上げます。

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

「階層型ポリシーマップ」

「機能の方向」

「ポリシーマップ内での機能照合のガイドライン」

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

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

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

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

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

1 つのインターフェイスに割り当てられるポリシーマップは 1 つだけです (ただし、コンフィギュレーション内にはポリシーマップを最大 64 個まで作成できます)。

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

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

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

階層型ポリシーマップ

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

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

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

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

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

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

2. 「アクションの定義(レイヤ 3/4 ポリシーマップ)」の説明に従ってポリシーマップを作成し、クラスマップごとに 1 つのアクションを プライオリティ として特定します。

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

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

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

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

機能の方向

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


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


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

 

表 15-2 機能の方向

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

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

双方向

入力

NetFlow セキュア イベント ロギングのフィルタリング

該当なし

入力

QoS 入力ポリシング

入力

入力

QoS 出力ポリシング

出力

出力

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

出力

出力

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

出力

出力

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

双方向

入力

ポリシーマップ内での機能照合のガイドライン

ポリシーマップ内でのパケットとクラスマップの照合方法については、次のガイドラインを参照してください。

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

2. パケットが機能タイプのクラスマップに一致した場合、adaptive security applianceは、その機能タイプの後続のクラスマップとは照合しません。

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

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

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


) アプリケーション検査には複数の検査タイプが含まれており、照合に関する上記のガイドラインについて考える場合、各検査タイプは別個の機能です。


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

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


) NetFlow セキュア イベント ロギングのフィルタリングは、順序に関係なく適用されます。


アクションは次の順序で実行されます。

1. QoS 入力ポリシング

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


) adaptive security applianceがプロキシ サービス(AAA など)を実行するか、TCP ペイロード(FTP 検査)を修正する場合、TCP ノーマライザがデュアル モードで動作し、これはプロキシまたはペイロード修正サービスの前と後に適用されます。


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

あるクラスのトラフィックが複数のアプリケーション検査の対象として分類された場合のアプリケーション検査の適用順序は、次のとおりです。同じトラフィックに適用できる検査タイプは 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

x. インスタント メッセージ


) このリストに RADIUS アカウンティングがないのは、管理トラフィックに適用できる唯一の検査であるためです。このリストに WAAS がないのは、他の検査とともに同じトラフィックに設定できるためです。


4. QoS 出力ポリシング

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

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

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

一部の機能は、同じトラフィックで相互に互換性がありません。たとえば、QoS プライオリティ キューイングと QoS ポリシングを同じトラフィックのセットに対して設定できません。また、ほとんどの検査は別の検査と組み合わせて使用できないため、同じトラフィックに複数の検査を設定した場合、adaptive security applianceは 1 つの検査だけを適用します。その場合は、「複数の機能アクションの適用順序」に示した機能のうち、プライオリティのより高い機能が適用されます。

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


match default-inspection-traffic コマンドは、デフォルトのグローバル ポリシーで使用され、すべての検査に関してデフォルト ポートを照合する特殊な CLI ショートカットです。このクラスマップをポリシーマップ内で使用すると、トラフィックの宛先ポートに基づいて各パケットに確実に正しい検査が適用されます。たとえば、ポート 69 への UDP トラフィックがadaptive security applianceに到達すると、adaptive security applianceは TFTP 検査を適用し、ポート 21 の TCP トラフィックが到着すると、adaptive security applianceは FTP 検査を適用します。したがって、同じクラスマップに複数の検査を設定できるのはこの場合だけです。通常、adaptive security applianceは適用する検査をポート番号に基づいて決定しないため、たとえば、標準以外のポートにも検査を柔軟に適用できます。


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

例 15-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

例 15-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 ポリシーマップ

コンフィギュレーションには、デフォルト グローバル ポリシーでadaptive security applianceが使用するデフォルト レイヤ 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
 

) デフォルトのクラスマップで使用する特殊な 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 の正規化。「TCP 正規化の設定」を参照してください。

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

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


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


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


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


NetFlow セキュア イベント ロギングのフィルタリング:「NSEL イベントのフィルタリング」を参照してください。

ステップ 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 と一致しますが、すでに他のクラスと一致しているため、adaptive security applianceはこの照合を行いません。

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

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

次のコマンドは、デフォルト グローバル ポリシーをディセーブルにし、他のすべてのadaptive security appliance インターフェイスで新しいポリシー 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 ポリシングの適用

この例(図 15-1)では、外部インターフェイスを通じてadaptive security applianceを出入りするすべての HTTP 接続(ポート 80 の TCP トラフィック)が HTTP 検査対象として分類されます。外部インターフェイスを出るすべての HTTP トラフィックがポリシング対象として分類されます。

図 15-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 トラフィックへの検査のグローバルな適用

この例(図 15-2)では、任意のインターフェイスを通じてadaptive security applianceに入るすべての HTTP 接続(ポート 80 の TCP トラフィック)が HTTP 検査対象として分類されます。このポリシーはグローバル ポリシーなので、検査が発生するのは各インターフェイスにトラフィックが入ったときだけです。

図 15-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 トラフィックに対する検査と接続制限値の適用

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

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

図 15-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 アドレスを使用する必要があります。外部インターフェイスに適用する場合は、マッピング アドレスを使用します。

図 15-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