Cisco ASA 5500 シリーズ コンフィギュレーション ガイド(CLI を使用)
アプリケーション検 査の特別なアクションの 設定(検査ポリシーマップ)
アプリケーション検査の特別なアクションの設定(検査ポリシーマップ)
発行日;2012/02/01 | 英語版ドキュメント(2012/01/17 版) | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 15MB) | フィードバック

目次

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

検査ポリシーマップに関する情報

デフォルトの検査ポリシーマップ

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

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

関連情報

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

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

制限事項

ポリシーマップには、複数の 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 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
 

手順の詳細


ステップ 1 (オプション)「検査クラスマップ内のトラフィックの特定」の説明に従って、検査クラスマップを作成します。または、ポリシーマップ内でトラフィックを直接特定できます。

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

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

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

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

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


) 複数の class コマンドや match コマンドを含める方法については、「制限事項」を参照してください。


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

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

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

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

適用可能な検査の章でアプリケーションごとに説明されている 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}
 

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

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

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

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

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

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

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

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

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

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 クエリー内のドメイン名と照合可能です。

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

制限事項

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

手順の詳細


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

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

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

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

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 コマンドについては、該当する検査の章を参照してください。


 

次の例では、すべての基準に一致する必要がある 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
 

関連情報

検査ポリシーを使用するには、「モジュラ ポリシー フレームワークを使用したサービス ポリシーの設定」を参照してください。