Cisco ASA サービス モジュール CLI コンフィギュレーション ガイド ソフトウェア バージョン 8.5
アプリケーション インスペクションの特別なアクションの設定(インスペクション ポリシー マップ)
アプリケーション インスペクションの特別なアクションの設定(インスペクション ポリシー マップ)
発行日;2012/09/24 | 英語版ドキュメント(2012/05/21 版) | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 10MB) | フィードバック

目次

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

インスペクション ポリシー マップに関する情報

ガイドラインと制限事項

デフォルトのインスペクション ポリシー マップ

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

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

関連情報

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

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

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

「インスペクション ポリシー マップに関する情報」

「ガイドラインと制限事項」

「デフォルトのインスペクション ポリシー マップ」

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

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

「関連情報」

インスペクション ポリシー マップに関する情報

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

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

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

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

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

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

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

ガイドラインと制限事項

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
 

デフォルトのインスペクション ポリシー マップ

デフォルトのインスペクション ポリシー マップ コンフィギュレーションには、次のコマンドが組み込まれています。このコンフィギュレーションでは、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 コマンドと一致する場合、ASASM がアクションを適用する順序は、ポリシー マップにアクションが追加された順序ではなく、ASASMの内部ルールによって決まります。内部ルールは、アプリケーションのタイプとパケット解析の論理的進捗によって決まり、ユーザが設定することはできません。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

policy-map type inspect application policy_map_name

 

hostname(config)# policy-map type inspect http http_policy

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

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

ステップ 3

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

class class_map_name

 

hostname(config-pmap)# class http_traffic

hostname(config-pmap-c)#

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

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

インスペクションの章でアプリケーションごとに説明されている match コマンドの 1 つを使用して、ポリシー マップで直接トラフィックを指定します。

 

hostname(config-pmap)# match req-resp content-type mismatch

hostname(config-pmap-c)#

match not コマンドを使用すると、 match not コマンドの基準に一致するすべてのトラフィックにアクションは適用されません。

ステップ 4

{[ drop [ send-protocol-error ] | drop-connection [ send-protocol-error ]| mask | reset ] [ log ] | rate-limit message_rate }

 
hostname(config-pmap-c)# drop-connection log

一致したトラフィックに対して実行するアクションを指定します。それぞれのアプリケーションですべてのオプションを設定できるわけではありません。アプリケーションに固有の他のアクションも適用可能な場合があります。使用可能な実際のオプションについては、該当するインスペクションの章を参照してください。

drop :一致するすべてのパケットをドロップします。

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

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

mask :パケットの一致する部分をマスクします。

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

log :システム ログ メッセージを送信します。 log は単独で、または他のキーワードの 1 つと一緒に使用できます。

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

ステップ 5

parameters

 
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

class-map type inspect application [ match-all | match-any ] class_map_name

 

hostname(config)# class-map type inspect http http_traffic

hostname(config-cmap)#

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

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

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

match-any キーワードは、トラフィックが少なくとも基準の 1 つに一致したらクラス マップと一致することを指定します。

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

ステップ 3

(任意)

description string

 

hostname(config-cmap)# description All UDP traffic

クラス マップに説明を追加します。

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

関連情報

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