Cisco ASA 5500 シリーズ/Cisco PIX 500 シリーズ Cisco セキュリティ アプライアンス コマンド ライン コンフィギュレーション ガイド Version 7.1(1)
モジュラ ポリシー フレームワークの 使用
モジュラ ポリシー フレームワークの使用
発行日;2012/02/03 | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 6MB) | フィードバック

目次

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

の概要

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

クラスマップによるトラフィックの特定

ポリシーマップによるアクションの定義

ポリシーマップの概要

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

ポリシーマップの追加

サービス ポリシーによるインターフェイスへのポリシーの適用

の例

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

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

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

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

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

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

次の事項について説明します。

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

「クラスマップによるトラフィックの特定」

「ポリシーマップによるアクションの定義」

「サービス ポリシーによるインターフェイスへのポリシーの適用」

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

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

モジュラ ポリシー フレームワークは、Cisco IOS ソフトウェアの QoS CLI と同様の方法でセキュリティ アプライアンスの機能を設定できるように、一貫性と柔軟性のある手段を提供します。たとえば、モジュラ ポリシー フレームワークを使用すると、すべての TCP アプリケーションに適用されるタイムアウト コンフィギュレーションではなく、特定の TCP アプリケーションに固有のタイムアウト コンフィギュレーションを作成できます。

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

IPS

CSC

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

QoS ポリシング

QoS プライオリティキュー

アプリケーション検査

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

1. アクションを適用するトラフィックを特定します。「クラスマップによるトラフィックの特定」を参照。

2. アクションをトラフィックに適用します。「ポリシーマップによるアクションの定義」を参照。

3. インターフェイスでアクションをアクティブにします。「サービス ポリシーによるインターフェイスへのポリシーの適用」を参照。

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

デフォルトでは、すべてのデフォルト アプリケーション検査トラフィックに一致するポリシーがコンフィギュレーションに含まれ、すべての検査がすべてのインターフェイスのトラフィックに適用されます(グローバル ポリシー)。適用できるグローバル ポリシーは 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 rsh
inspect smtp
inspect sqlnet
inspect skinny
inspect sunrpc
inspect xdmcp
inspect sip
inspect netbios
inspect tftp
service-policy global_policy global

クラスマップによるトラフィックの特定

クラスマップは、アクションを適用するトラフィックを特定します。クラスマップの最大数は、シングルモードで 255、またはマルチモードのコンテキストごとに 255 です。コンフィギュレーションには、デフォルト グローバル ポリシーでセキュリティ アプライアンスが使用するデフォルト クラスマップが含まれます。これは inspection_default と呼ばれ、デフォルト検査トラフィックと一致します。

class-map inspection_default
match default-inspection-traffic
 

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


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

hostname(config)# class-map class_map_name
 

class_map_name は、最大 40 文字の文字列です。

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

hostname(config-cmap)# description string
 

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

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

hostname(config-cmap)# match any
 

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

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

アクセスリストの作成の詳細については、「拡張アクセスリストの追加」または 「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
 

検査のデフォルト トラフィック:デフォルトでセキュリティ アプライアンスが検査するトラフィックとクラスを一致させることができます。

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

match default-inspection-traffic コマンドは、デフォルトで検査するプロトコルとポートを指定します。デフォルト検査トラフィックのリストについては、『 Cisco Security Appliance Command Reference 』で、このコマンドを参照してください。セキュリティ アプライアンスにはデフォルト検査トラフィックと一致するデフォルト グローバル ポリシーが含まれ、すべてのインターフェイスのトラフィックに検査が適用されます。

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)# exit
hostname(config)# 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)# exit
hostname(config)# 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)# exit
hostname(config)# 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
hostname(config-cmap)# exit
 

ポリシーマップによるアクションの定義

この項では、ポリシーマップを作成して、アクションをクラスマップに関連付ける方法について説明します。ここでは、次の項目について説明します。

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

「デフォルト ポリシーマップ」

「ポリシーマップの追加」

ポリシーマップの概要

ポリシーマップで複数のクラスマップを識別し、1 つ以上の機能タイプの複数のアクションを各クラスマップに割り当てることができます。機能タイプには、次のものがあります。

IPS

CSC

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

QoS ポリシング

QoS プライオリティキュー

アプリケーション検査

パケットは、各機能タイプのポリシーマップで、1 つのクラスマップにのみ一致します。パケットが機能タイプのクラスマップに一致した場合、セキュリティ アプライアンスは、その機能タイプの後続のクラスマップとは照合しません。ただし、パケットが別の機能タイプの後続のクラスマップと一致した場合、セキュリティ アプライアンスは、後続のクラスマップのアクションも適用します。

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

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


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


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

 

表18-1 機能の方向

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

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

双方向

入力

CSC

双方向

入力

アプリケーション検査

双方向

入力

IPS

双方向

入力

QoS ポリシング

出力

出力

QoS プライオリティキュー

出力

出力

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

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

CSC

アプリケーション検査

IPS

QoS ポリシング

QoS プライオリティキュー

1 つのインターフェイスに割り当てることができるポリシーマップは 1 つだけですが、同じポリシーマップを複数のインターフェイスに適用することはできます。

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

コンフィギュレーションには、デフォルト グローバル ポリシーでセキュリティ アプライアンスが使用するデフォルト ポリシーマップが含まれます。これは global_policy と呼ばれ、デフォルト検査トラフィックに対して検査を実行します。適用できるグローバル ポリシーは 1 つだけなので、グローバル ポリシーを変更する場合は、デフォルトのポリシーを編集するか、デフォルトのポリシーをディセーブルにして新しいポリシーを適用します。

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

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

ポリシーマップの追加

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


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

hostname(config)# policy-map policy_map_name
 

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

hostname(config-pmap)# description text
 

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

hostname(config-pmap)# class class_map_name
 

クラスマップを追加するには、「クラスマップによるトラフィックの特定」を参照してください。

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

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

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

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

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

QoS ポリシングと QoS プライオリティ。「QoS ポリシーの適用」を参照してください。

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


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


ステップ 5 このポリシーマップに含めるクラスマップごとに、ステップ 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 と一致しますが、すでに他のクラスと一致しているため、セキュリティ アプライアンスはこの照合を行いません。

サービス ポリシーによるインターフェイスへのポリシーの適用

ポリシーマップをアクティブにするには、1 つ以上のインターフェイスに適用するサービス ポリシー、またはすべてのインターフェイスにグローバルに適用するサービス ポリシーを作成します。インターフェイス サービス ポリシーは、グローバル サービス ポリシーより優先されます。

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

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 ポリシングの適用

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

図 18-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 250000
hostname(config)# service-policy http_traffic_policy interface outside
 

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

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

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

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

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

図 18-3 特定のサーバに対する 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 トラフィックへの検査の適用

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

図 18-4 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