Cisco Security Appliance コマンド ライン コンフィギュレーション ガイド Version 7.0(4)
アプリケーション層プロトコル検査の 適用
アプリケーション層プロトコル検査の適用
発行日;2012/01/08 | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 5MB) | フィードバック

目次

アプリケーション層プロトコル検査の適用

アプリケーション検査エンジン

概要

検査エンジンの動作

サポートされているプロトコル

選択したトラフィックへのアプリケーション検査の適用

概要

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

アプリケーション検査マップの使用

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

インターフェイスへのセキュリティ ポリシーの適用

CTIQBE 検査の管理

CTIQBE 検査の概要

制限事項

CTIQBE 検査のイネーブル化と設定

CTIQBE 検査の確認と監視

DNS 検査の管理

DNS アプリケーション検査の動作

DNS リライトの動作

DNS リライトの設定

DNS リライト用の alias コマンドの使用

DNS リライト用の static コマンドの使用

DNS リライトの設定

3 つの NAT ゾーンを持つ DNS リライト

3 つの NAT ゾーンを持つ DNS リライトの設定

DNS 検査の設定

DNS 検査の確認と監視

FTP 検査の管理

FTP 検査の概要

FTP 検査の設定

FTP 検査の確認と監視

GTP 検査の管理

GTP 検査の概要

GTP 検査のイネーブル化と設定

GSN プーリングのイネーブル化と設定

GTP 検査の確認と監視

H.323 検査の管理

H.323 検査の概要

H.323 の動作

制限事項

H.323 検査のイネーブル化と設定

H.225 タイムアウト値の設定

H.323 検査の確認と監視

H.225 セッションの監視

H.245 セッションの監視

H.323 RAS セッションの監視

HTTP 検査の管理

HTTP 検査の概要

高度な HTTP 検査のイネーブル化と設定

MGCP 検査の管理

MGCP 検査の概要

MGCP コール エージェントとゲートウェイの設定

MGCP 検査の設定とイネーブル化

MGCP タイムアウト値の設定

MGCP 検査の確認と監視

RTSP 検査の管理

RTSP 検査の概要

RealPlayer の使用

制限事項

RTSP 検査のイネーブル化と設定

SIP 検査の管理

SIP 検査の概要

SIP インスタント メッセージ

SIP 検査のイネーブル化と設定

SIP タイムアウト値の設定

SIP 検査の確認と監視

Skinny(SCCP)検査の管理

SCCP 検査の概要

Cisco IP Phone のサポート

制限事項

SCCP 検査の確認と監視

SMTP および拡張 SMTP 検査の管理

SMTP および拡張 SMTP 検査の概要

SMTP および拡張 SMTP アプリケーション検査のイネーブル化と設定

SNMP 検査の管理

SNMP 検査の概要

SNMP アプリケーション検査のイネーブル化と設定

Sun RPC 検査の管理

Sun RPC 検査の概要

Sun RPC 検査のイネーブル化と設定

Sun RPC サービスの管理

Sun RPC 検査の確認と監視

アプリケーション検査エンジン

この項では、アプリケーション検査エンジンの動作について説明します。ここでは、次の項目について説明します。

「概要」

「検査エンジンの動作」

「サポートされているプロトコル」

概要

アプリケーションおよびサービスの安全な使用は、セキュリティ アプライアンスがステートフル アプリケーション検査用に使用するアダプティブ セキュリティ アルゴリズムによって保証されます。一部のアプリケーションはセキュリティ アプライアンスによる特別な処理を必要とし、この目的で特定のアプリケーション検査エンジンが用意されています。このようなアプリケーションには、ユーザ データ パケット内に IP アドレッシング情報を埋め込んでいるものや、ダイナミックに割り当てられるポート上で二次チャネルを開くものなどがあります。

アプリケーション検査エンジンは、埋め込みアドレッシング情報の位置を特定するために、NAT と連携して動作します。この連携により、NAT ではデータ パケット内に埋め込まれたアドレスを変換すること、またチェックサムや変換から影響を受ける別のフィールドを更新することが可能になります。

アプリケーション検査エンジンはまた、セッションを監視し、二次チャネル用のポート番号を決定します。多くのプロトコルは、パフォーマンスを向上させるために、二次 TCP ポートまたは UDP ポートを開きます。予約済みポート上の初期セッションは、ダイナミックに割り当てられたポート番号をネゴシエートするために使用されます。アプリケーション検査エンジンは、この初期セッションを監視し、ダイナミックに割り当てられたポートを特定し、所定のセッションの間、それらのポート上でのデータ交換を許可します。

検査エンジンの動作

セキュリティ アプライアンスは基本動作において、次の 3 つのデータベースを使用します(図21-1 を参照)。

アクセスリスト:特定のネットワーク、ホスト、およびサービス(TCP/UDP ポート番号)に基づく接続の認証および認可に使用されます。

検査:定義済みで固定のアプリケーション検査機能がセットで格納されています。

接続(XLATE テーブルと CONN テーブル):確立された各接続について、状態などの情報が保持されています。この情報は、確立されたセッション内におけるトラフィック転送を効率的に行うために、アダプティブ セキュリティ アルゴリズムとカットスルー プロキシによって使用されます。

図21-1 アダプティブ セキュリティ アルゴリズムの基本的なオペレーション

 

図21-1 の実行順の番号に従って説明します。

1. TCP SYN パケットが、新しい接続を確立するためにセキュリティ アプライアンスに到着します。

2. セキュリティ アプライアンスはアクセスリスト データベースを調べて、接続が許可されるかどうかを判定します。

3. セキュリティ アプライアンスは、接続データベース(XLATE テーブルと CONN テーブル)内に新しいエントリを作成します。

4. セキュリティ アプライアンスは、検査データベースをチェックして、接続に対してアプリケーション レベルの検査が必要かどうかを判別します。

5. パケットに対してアプリケーション検査エンジンの処理が完了したら、セキュリティ アプライアンスは宛先システムにパケットを転送します。

6. 宛先システムは、初期要求に応答します。

7. セキュリティ アプライアンスは、応答パケットを受信し、接続データベースで接続をルックアップした後、確立されたセッションに属しているパケットを転送します。

セキュリティ アプライアンスのデフォルトのコンフィギュレーションには、アプリケーション検査エントリのセットが含まれています。このエントリは、サポートされているプロトコルを特定の TCP ポート番号または UDP ポート番号に関連付け、特殊な処理が必要な場合はそれを指定します。一部のアプリケーションでは、アプリケーションによって制限されるため、検査エンジンが NAT または PAT をサポートしないことがあります。アプリケーションによってはポート割り当てを変更できますが、ポートが固定されて変更できないアプリケーションもあります。セキュリティ アプライアンスで提供されるアプリケーション検査エンジンについて、この情報を 表21-1 にまとめます。

サポートされているプロトコル

表21-1 に、セキュリティ アプライアンスがサポートするプロトコルごとに提供されるアプリケーション検査の種類をまとめます。この章では、次の検査エンジンについて説明します。

CTIQBE:「CTIQBE 検査の管理」を参照してください。

DNS: 「DNS 検査の管理」 を参照してください。

FTP: 「FTP 検査の管理」 を参照してください。

GTP: 「GTP 検査の管理」 を参照してください。

H.323: 「H.323 検査の管理」 を参照してください。

HTTP: 「HTTP 検査の管理」 を参照してください。

MGCP: 「MGCP 検査の管理」 を参照してください。

RTSP: 「RTSP 検査の管理」 を参照してください。

SIP: 「SIP 検査の管理」 を参照してください。

Skinny: 「Skinny(SCCP)検査の管理」 を参照してください。

SMTP/ESMTP: 「SMTP および拡張 SMTP 検査の管理」 を参照してください。

SNMP: 「SNMP 検査の管理」 を参照してください。

Sun RPC: 「Sun RPC 検査の管理」 を参照してください。

この章で取り上げない検査エンジンの詳細については、『 Cisco Security Appliance Command Reference 』の inspect コマンドの適切なページを参照してください。

 

表21-1 アプリケーション検査エンジン

アプリケーション
PAT の有無
NAT(1 対 1)の有無
ポートの
設定の有無
デフォルト ポート
標準
コメント

CTIQBE

あり

あり

あり

TCP/2748

--

--

DNS1

あり

あり

なし

UDP/53

RFC 1123

NAT のみ転送。PTR レコードの変更なし。

FTP

あり

あり

あり

TCP/21

RFC 959

--

GTP

あり

あり

あり

UDP/3386
UDP/2123

--

特別なライセンスが必要。

H.323

あり

あり

あり

TCP/1720 UDP/1718
UDP(RAS)1718 ~ 1719

ITU-T H.323、H.245、H225.0、Q.931、Q.932

HTTP

あり

あり

あり

TCP/80

RFC 2616

ActiveX と Java を除去する際の MTU 制限に注意。2

ICMP

あり

あり

なし

--

--

--

ICMP ERROR

あり

あり

なし

--

--

--

ILS(LDAP)

あり

あり

あり

--

--

--

MGCP

あり

あり

あり

2427, 2727

RFC2705bis-05

--

NBDS / UDP

あり

あり

なし

UDP/138

--

--

NBNS / UDP

なし

なし

なし

UDP/137

--

WINS はサポートしない。

NetBIOS over IP3

なし

なし

なし

--

--

--

PPTP

あり

あり

あり

1723

RFC2637

--

RSH

あり

あり

あり

TCP/514

Berkeley UNIX

--

RTSP

なし

なし

あり

TCP/554

RFC 2326, RFC 2327, RFC 1889

HTTP クローキングは処理しない。

SIP

あり

あり

あり

TCP/5060
UDP/5060

RFC 2543

--

SKINNY(SCCP)

あり

あり

あり

TCP/2000

--

一定の条件下で、Cisco IP Phone 設定をアップロード済みの TFTP は処理しない。

SMTP/ESMTP

あり

あり

あり

TCP/25

RFC 821, 1123

--

SQL*Net

あり

あり

あり

TCP/1521 (v.1)

--

V.1 および v.2.

Sun RPC

なし

あり

なし

UDP/111 TCP/111

--

ペイロードは NAT 処理しない。

XDCMP

なし

なし

なし

UDP/177

--

--

1.NAT サポートは、WINS 経由の名前解決では使用できません。

2.MTU が小さすぎて Java タグまたは ActiveX タグを 1 つのパケットに納められない場合は、除去の処理は行われません。

3.NetBIOS は、NBNS UDP ポート 137 および NBDS UDP ポート 138 に対してパケットの NAT 処理を実行することでサポートされます。

選択したトラフィックへのアプリケーション検査の適用

この項では、検査エンジンを適用するトラフィックを識別する方法、検査エンジンを特定のセキュリティ ポリシーと関連付ける方法、およびポリシーをセキュリティ アプライアンスの 1 つ以上のインターフェイスに適用する方法について説明します。ここでは、次の項目について説明します。

「概要」

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

「アプリケーション検査マップの使用」

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

「インターフェイスへのセキュリティ ポリシーの適用」

概要

アプリケーション検査は、デフォルトでは多くのプロトコルでイネーブルになっていますが、一部のプロトコルではディセーブルになっています。ほとんどの場合、アプリケーション検査がトラフィックをリスンするポートは変更できます。アプリケーション検査エンジンのアプリケーション検査のデフォルト コンフィギュレーションを変更するには、モジュラ ポリシー フレームワーク CLI を使用します。

モジュラ ポリシー フレームワークは、Cisco IOS ソフトウェアの Modular Quality of Server(QoS)CLI と同様の方法でセキュリティ アプライアンスの機能を設定できるように、一貫性と柔軟性のある手段を提供します。

モジュラ ポリシー フレームワークを使用してアプリケーション検査をイネーブルにするには、次の手順を実行します。


ステップ 1 (オプション) class-map コマンドを入力して、トラフィック クラスを定義します。

トラフィック クラスは、パケットの内容で識別可能なトラフィックのセットです。このステップを実行する必要があるのは、アプリケーション検査のデフォルトのポート割り当てを変更する場合、または IP アドレスなど別の基準でアプリケーション検査の対象にするトラフィックを特定する場合だけです。アプリケーション検査で使用するデフォルトのポート割り当てのリストについては、 表21-1 を参照してください。

ステップ 2 policy-map コマンドを入力してトラフィック クラスと 1 つ以上のアクションを関連付けることによって、ポリシーマップを作成します。

アクションは、アプリケーション検査など、1 つ以上の保護されたネットワークインターフェイスで情報またはリソースを保護するセキュリティ機能です。特定のプロトコルのアプリケーション検査は、モジュラ ポリシー フレームワークを使用して適用できるアクションの一種です。

ステップ 3 (オプション)アプリケーション検査マップを使用して、特定のアプリケーション検査エンジンに使用するパラメータを変更します。

アプリケーション検査マップ コマンドによって、特定のアプリケーション検査エンジンのコンフィギュレーション モードがイネーブルになり、コンフィギュレーションの変更に必要なコマンドを入力できるようになります。サポートされるアプリケーション検査マップ コマンドには、次のものがあります。

ftp-map「FTP 検査の管理」を参照してください。

gtp-map「GTP 検査の管理」を参照してください。

http-map「HTTP 検査の管理」を参照してください。

mgcp-map「MGCP 検査の管理」を参照してください。

snmp-map「SNMP 検査の管理」を参照してください。

これらの各コマンドのシンタックスの詳細については、『 Cisco Security Appliance Command Reference 』を参照してください。

ステップ 4 service-policy コマンドを入力してポリシーマップと 1 つ以上のインターフェイスを関連付けることによって、セキュリティ ポリシーを作成します。

セキュリティ ポリシーは、以前に定義したトラフィック クラスをセキュリティ関連のアクションに関連付け、特定のインターフェイスに適用します。


 

複数のトラフィック クラスを 1 つのアクションに関連付けたり、複数のアクションを 1 つのトラフィック クラスに関連付けることができます。 global オプションを入力して、すべてのインターフェイスとトラフィック クラスを関連付けることができます。また、 service-policy コマンドを個別のインターフェイスで入力して、複数のインターフェイスを関連付けることができます。

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

トラフィック クラスマップには、名前と 1 つの match コマンドが含まれます。match コマンドは、トラフィック クラスに含まれるトラフィックを特定します。名前は、任意の英数字文字列です。

match コマンドは、クラスマップに含まれるトラフィックを定義するためのさまざまな基準を保持しています。たとえば、1 つ以上のアクセスリストを使用して、トラフィックの種類を特定できます。アクセス コントロール エントリの permit コマンドによってトラフィックがトラフィック クラスマップに含まれ、 deny コマンドによって除外されます。アクセスリストの設定の詳細については、『 Cisco Security Appliance Command Line Configuration Guide 』の第 9 章「Identifying Traffic with Access Control Lists」を参照してください。

トラフィック クラスをインターフェイスに適用すると、そのインターフェイス上で受信したパケットは、クラスマップの match コマンドで定義した基準と比較されます。

指定した基準にパケットが一致すると、パケットはトラフィック クラスに包含され、そのトラフィック クラスに関連付けられているアクション(アプリケーション検査など)の対象になります。どのトラフィック クラスのどの基準にも一致しないパケットは、デフォルトのトラフィック クラスに割り当てられます。

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


ステップ 1 アクセスリストを使用してトラフィック クラスを定義するには、次の例で示すように、グローバル コンフィギュレーション モードでアクセスリストを定義します。

hostname(config)# access-list http_acl permit tcp any any eq 80
 
The http_acl access list in this example includes traffic on port 80. To enable traffic on more than one non-contiguous port, enter the access-list command to create an access control entry for each port.
For the complete syntax of the access-list command see the access-list command page in the Cisco Security Appliance Command Reference.
 

ステップ 2 グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map http_port
 

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

ステップ 3 クラスマップ コンフィギュレーション モードで、次のコマンドを入力し、クラスに含めるトラフィックを定義します。

hostname(config-cmap)# match any | access-list acl_ID | {port tcp | udp {eq port_num | range port_num port_num}}
 
Use the any option to include all traffic in the traffic class. Use the access-list option to match the criteria defined in a specific access list. Use the port option to identify a specific port number or a range of port numbers.
 

) 連続した範囲にない複数のポートを使用するアプリケーションの場合は、access-list オプションを入力し、各ポートと一致するアクセス コントロール エントリを定義します。


次の例は、 port オプションを使用して、デフォルト ポートを現在のトラフィック クラスに割り当てます。

hostname(config-cmap)# match port tcp eq 80
 

次の例は、 access-list オプションを使用して、http_acl アクセスリストのアクセス コントロール エントリで特定されるトラフィックを割り当てます。

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

match コマンドを入力して、IP 優先値、DSCP(QoS)値、RTP ポート、またはトンネルグループに基づいてトラフィックを特定することもできます。 match コマンドのシンタックスについては、『 Cisco Security Appliance Command Reference 』を参照してください。

ステップ 4 各アプリケーションおよびプロトコルのデフォルト ポート割り当てにアプリケーション検査を適用するには、次のコマンドを入力します。

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

このコマンドは、別の match コマンドの入力によって作成された他のすべてのポート割り当てを無効にします。ただし、宛先または送信元 IP アドレスなど、他の基準を指定する別の match コマンドとともに使用することはできます。 表21-2 に、さまざまなプロトコルのデフォルト ポート割り当てを示します。

 

表21-2 デフォルト ポート割り当て

プロトコル名
プロトコル
ポート

ctiqbe

tcp

2748

dns

udp

53

ftp

tcp

21

gtp

udp

2123,3386

h323 h225

tcp

1720

h323 ras

udp

1718-1719

http

tcp

80

icmp

icmp

該当なし

ils

tcp

389

mgcp

udp

2427,2727

netbios

udp

該当なし

sunrpc

udp

111

rsh

tcp

514

rtsp

tcp

554

sip

tcp、udp

5060

skinny

tcp

2000

smtp

tcp

25

sqlnet

tcp

1521

tftp

udp

69

xdmcp

udp

177

ステップ 5 グローバル コンフィギュレーション モードに戻るには、次のコマンドを入力します。

hostname(config-cmap)# exit
hostname(config)#
 


 

アプリケーション検査マップの使用

アプリケーション検査エンジンには、アプリケーション検査を制御するために使用する設定可能なパラメータがあります。これらのパラメータのデフォルト値は、変更しなくても機能しますが、アプリケーション検査エンジンの制御を微調整する必要がある場合は、アプリケーション検査マップを使用します。次の手順で、アプリケーション検査マップを作成するために必要な一般的な手順を示します。

アプリケーション検査マップを使用するには、次の手順を実行します。


ステップ 1 次のコマンドを入力して、アプリケーション検査マップを作成します。

hostname(config)# application-map application_map_name
 

application には、アプリケーション検査の種類を指定します。 application_map_name には、次の例で示すように、アプリケーション検査マップの名前を指定します。

hostname(config)# http-map inbound_http
 

この例の場合、システムは HTTP マップ コンフィギュレーション モードに移行し、CLI プロンプトが次のように変化します。

hostname(config-http-map)#
 

ステップ 2 サポートされる任意のコマンドを入力して、アプリケーション検査マップのコンフィギュレーションを定義します。サポートされるコマンドのリストを表示するには、アプリケーションから疑問符(?)を入力します。

hostname(config-http-map)# ?
Http-map configuration commands:
content-length Content length range inspection
content-type-verification Content type inspection
max-header-length Maximum header size inspection
max-uri-length Maximum URI size inspection
no Negate a command or set its defaults
port-misuse Application inspection
request-method Request method inspection
strict-http Strict HTTP inspection
transfer-encoding Transfer encoding inspection
 
hostname(config-http-map)# strict-http
hostname(config-http-map)#
 

ステップ 3 グローバル コンフィギュレーション モードに戻ります。

hostname(config-http-map)# exit
hostname(config)#
 


 

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

ポリシーマップを使用して、トラフィック クラスマップを特定のアクション(特定のプロトコルのアプリケーション検査など)に関連付けます。ポリシーマップを定義するには、 policy-map コマンドで名前をポリシーに割り当て、そのトラフィック クラスに属するパケットで実行する 1 つ以上のアクションをリストします。


) パケットは、ポリシーマップで最初に一致したトラフィック クラスに割り当てられます。


アクションをトラフィック クラスに関連付けてポリシーマップを作成するには、次の手順を実行します。


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

hostname(config)# policy-map policy_map_name
 

たとえば、次のコマンドは、sample_policy ポリシーマップを作成または変更します。

(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 2 次の例で示すように、トラフィック ポリシーに含める 1 つ以上のトラフィック クラスを指定します。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、http_port ポリシーマップを作成します。

hostname(config-pmap)# class http_port
 

CLI はクラスマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 3 次のコマンドを入力して、アプリケーション検査をイネーブルにします。

hostname(config-pmap-c)# inspect protocol application_inspection_map
 

アプリケーション マップを使用して設定可能なパラメータを設定するプロトコルをイネーブルにする場合は、 application_inspection_map を使用します。たとえば、次のコマンドは、アプリケーション検査マップを使用して定義されたパラメータを使用する HTTP アプリケーション検査をイネーブルにします。

hostname(config-pmap-c)# inspect http http_traffic
 

ステップ 4 ポリシーマップ コンフィギュレーション モードに戻るには、次のコマンドを入力します。

hostname(config-pmap-c)# exit
hostname(config-pmap)#

ステップ 5 グローバル コンフィギュレーション モードに戻るには、次のコマンドを入力します。

hostname(config-pmap-c)# exit
 


 

インターフェイスへのセキュリティ ポリシーの適用

ポリシーマップを定義した後、グローバル コンフィギュレーション モードで service-policy コマンドを入力して、セキュリティ アプライアンスの 1 つ以上のインターフェイスにポリシーマップを適用します。 service-policy コマンドを入力して、ポリシーマップをすべてのセキュリティ アプライアンス インターフェイスでグローバルにアクティブにするか、指定したインターフェイスでアクティブにすることができます。

たとえば、次のコマンドは、sample_policy サービス ポリシーを外部インターフェイスでイネーブルにします。

hostname(config)# service-policy sample_policy interface outside
 

sample_policy サービス ポリシーをすべてのセキュリティ アプライアンス インターフェイスでイネーブルにするには、次のコマンドを入力します。

hostname(config)# service-policy sample_policy global
 

CTIQBE 検査の管理

この項では、CTIQBE アプリケーション検査をイネーブルにする方法と、デフォルト ポート コンフィギュレーションを変更する方法について説明します。ここでは、次の項目について説明します。

「CTIQBE 検査の概要」

「制限事項」

「CTIQBE 検査のイネーブル化と設定」

「CTIQBE 検査の確認と監視」

CTIQBE 検査の概要

inspect ctiqbe 2748 コマンドは、NAT、PAT、および双方向 NAT をサポートする CTIQBE プロトコル検査をイネーブルにします。これによって、Cisco IP SoftPhone と他の Cisco TAPI/JTAPI アプリケーションが、 セキュリティ アプライアンス を越えてコール セットアップを行うために、Cisco CallManager と問題なく連携動作するようになります。

TAPI と JTAPI は、多くの Cisco VoIP アプリケーションで使用されます。CTIQBE は、Cisco TSP が Cisco CallManager と通信するために使用されます。

制限事項

CTIQBE アプリケーション検査の使用時に適用される制限を次にまとめます。

CTIQBE アプリケーション検査は、alias コマンドを使用するコンフィギュレーションをサポートしません。

CTIQBE コールのステートフル フェールオーバーはサポートされていません。

debug ctiqbe コマンドを入力すると、メッセージの伝送が遅れる場合があり、リアルタイム環境のパフォーマンスに影響することがあります。このデバッグまたはログをイネーブルにし、セキュリティ アプライアンスを介して Cisco IP SoftPhone でコール セットアップを完了できない場合は、Cisco IP SoftPhone の動作するシステムで Cisco TSP 設定のタイムアウト値を増やしてください。

次に、CTIQBE アプリケーション検査を特定の事例で使用する際に、特別に注意が必要な事項をまとめます。

2 つの Cisco IP SoftPhone が異なる Cisco CallManager に登録されていて、各 CallManager がセキュリティ アプライアンスの異なるインターフェイスに接続されている場合、これら 2 つの電話間のコールは失敗します。

Cisco IP SoftPhone と比較して Cisco CallManager の方がセキュリティの高いインターフェイス上に配置されている状態で、NAT または外部 NAT が Cisco CallManager IP アドレスに必要な場合、マッピングはスタティックである必要があります。Cisco IP SoftPhone では Cisco CallManager IP アドレスを PC 上の Cisco TSP コンフィギュレーションで明示的に指定することが必要なためです。

PAT または外部 PAT を使用しているときに Cisco CallManager IP アドレスを変換する場合、TCP ポート 2748 を PAT(インターフェイス)アドレスの同一ポートに対してスタティックにマッピングする必要があります。これは Cisco IP SoftPhone の登録を成功させるためです。CTIQBE 受信ポート(TCP 2748)は固定されていて、Cisco CallManager、Cisco IP SoftPhone、Cisco TSP のいずれにおいてもユーザによる設定はできません。

CTIQBE 検査のイネーブル化と設定

CTIQBE 検査をイネーブルにするには、または CTIQBE トラフィックの受信に使用するデフォルト ポートを変更するには、次の手順を実行します。


ステップ 1 グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map ctiqbe_port
 

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

ステップ 2 クラスマップ コンフィギュレーション モードで、次の例で示すように、 match コマンドを定義します。

hostname(config-cmap)# match port tcp eq 2748
hostname(config-cmap)# exit
hostname(config)#
 

連続したポート範囲を割り当てるには、次の例で示すように、 range キーワードを入力します。

hostname(config-cmap)# match port tcp range 2748-2750
 

連続しない複数のポートを CTIQBE 検査に割り当てるには、 access-list コマンドを入力して、各ポートに一致するアクセス コントロール エントリを定義します。次に、 match コマンドを入力して、アクセスリストを CTIQBE トラフィック クラスに関連付けます。

ステップ 3 次のコマンドを入力して、ポリシーマップの名前を指定します。

hostname(config)# policy-map policy_map_name
 

policy_map_name には、次の例で示すように、ポリシーマップの名前を指定します。

hostname(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 4 次のコマンドを入力して、 ステップ 1 で定義したトラフィック クラスを指定し、ポリシーマップに含めます。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、ctiqbe_port トラフィック クラスを現在のポリシーマップに割り当てます。

hostname(config-pmap)# class ctiqbe_port
 

CLI はポリシーマップ クラス コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 5 CTIQBE アプリケーション検査をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect ctiqbe
 

ステップ 6 次のコマンドを入力して、ポリシーマップ コンフィギュレーション モードに戻ります。

hostname(config-pmap-c)# exit
hostname(config-pmap)#
 

ステップ 7 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-pmap)# exit
hostname(config)#
 

ステップ 8 次のコマンドを入力して、ポリシーマップをグローバルに適用するか、特定のインターフェイスに適用します。

hostname(config)# service-policy policy_map_name [global | interface interface_ID
 

policy_map_name には、 ステップ 3 で設定したポリシーマップを指定します。すべてのインターフェイスに適用するには global オプションを使用し、特定のインターフェイスに適用するには nameif コマンドで割り当てた名前を使用します。

たとえば、次のコマンドは、sample_policy を外部インターフェイスに適用します。

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは、sample_policy をすべてのセキュリティ アプライアンス インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 


 

例21-1 CTIQBE 検査のイネーブル化と設定

次の例で示すように、CTIQBE 検査エンジンをイネーブルにして、デフォルト ポート(2748)で CTIQBE トラフィックと一致するクラスマップを作成します。このサービス ポリシーが、外部インターフェイスに適用されます。

hostname(config)# class-map ctiqbe_port
hostname(config-cmap)# match port tcp eq 2748
hostname(config-cmap)# exit
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class ctiqbe_port
hostname(config-pmap-c)# inspect ctiqbe
hostname(config-pmap-c)# exit
hostname(config)# service-policy sample_policy interface outside
 

すべてのインターフェイスで CTIQBE 検査をイネーブルにするには、 interface outside の代わりに global パラメータを入力します。

CTIQBE 検査の確認と監視

show ctiqbe コマンドは、セキュリティ アプライアンスを越えて確立されている CTIQBE セッションに関する情報を表示します。CTIQBE 検査エンジンで割り当てられたメディア接続に関する情報が表示されます。

次の条件における show ctiqbe コマンドの出力例を示します。セキュリティ アプライアンスを越えてセットアップされているアクティブ CTIQBE セッションは 1 つだけです。そのセッションは、ローカル アドレス 10.0.0.99 の内部 CTI デバイス(たとえば、Cisco IP SoftPhone)と 172.29.1.77 の外部 Cisco CallManager の間で確立されています。ここで、TCP ポート 2748 は、Cisco CallManager です。このセッションのハートビート間隔は 120 秒です。

hostname# # show ctiqbe
 
Total: 1
LOCAL FOREIGN STATE HEARTBEAT
---------------------------------------------------------------
1 10.0.0.99/1117 172.29.1.77/2748 1 120
----------------------------------------------
RTP/RTCP: PAT xlates: mapped to 172.29.1.99(1028 - 1029)
----------------------------------------------
MEDIA: Device ID 27 Call ID 0
Foreign 172.29.1.99 (1028 - 1029)
Local 172.29.1.88 (26822 - 26823)
----------------------------------------------
 

CTI デバイスは、すでに CallManager に登録されています。デバイスの内部アドレスおよび RTP 受信ポートは 172.29.1.99 の UDP ポート 1028 に PAT 変換されています。RTCP 受信ポートは UDP 1029 に PAT 変換されています。

RTP/RTCP : PAT xlates: で始まる行は、内部 CTI デバイスが外部 CallManager に登録され、CTI デバイスのアドレスとポートは、その外部インターフェイスに PAT 変換されている場合に限り表示されます。この行は、CallManager が内部インターフェイス上に位置する場合、または内部 CTI デバイスのアドレスとポートが、CallManager が使用しているのと同じ外部インターフェイスに NAT 変換されている場合は、表示されません。

この出力は、コールがこの CTI デバイスと 172.29.1.88 にある別の電話機の間に確立されていることを示します。他の電話機の RTP および RTCP 受信ポートは、UDP 26822 および 26823 です。セキュリティ アプライアンスは 2 番目の電話機と CallManager に関連する CTIQBE セッション レコードを維持できないので、他の電話機は、CallManager と同じインターフェイス上にあります。CTI デバイス側のアクティブ コール レッグは、Device ID 27 および Call ID 0 で確認できます。

これらの CTIBQE 接続の show xlate debug コマンドの出力例を示します。

hostname# show xlate debug
3 in use, 3 most used
Flags: D - DNS, d - dump, I - identity, i - inside, n - no random,
r - portmap, s - static
TCP PAT from inside:10.0.0.99/1117 to outside:172.29.1.99/1025 flags ri idle 0:00:22 timeout 0:00:30
UDP PAT from inside:10.0.0.99/16908 to outside:172.29.1.99/1028 flags ri idle 0:00:00 timeout 0:04:10
UDP PAT from inside:10.0.0.99/16909 to outside:172.29.1.99/1029 flags ri idle 0:00:23 timeout 0:04:10
 

show conn state ctiqbe コマンドは、CTIQBE 接続のステータスを表示します。出力には、CTIQBE 検査エンジンによって割り当てられたメディア接続が「C」フラグで示されます。次に、 show conn state ctiqbe コマンドの出力例を示します。

hostname# show conn state ctiqbe
1 in use, 10 most used
hostname# show conn state ctiqbe detail
1 in use, 10 most used
Flags: A - awaiting inside ACK to SYN, a - awaiting outside ACK to SYN,
B - initial SYN from outside, C - CTIQBE media, D - DNS, d - dump,
E - outside back connection, F - outside FIN, f - inside FIN,
G - group, g - MGCP, H - H.323, h - H.225.0, I - inbound data,
i - incomplete, J - GTP, j - GTP data, k - Skinny media,
M - SMTP data, m - SIP media, O - outbound data, P - inside back connection,
q - SQL*Net data, R - outside acknowledged FIN,
R - UDP RPC, r - inside acknowledged FIN, S - awaiting inside SYN,
s - awaiting outside SYN, T - SIP, t - SIP transient, U - up
 

DNS 検査の管理

この項では、DNS アプリケーション検査を管理する方法について説明します。ここでは、次の項目について説明します。

「DNS アプリケーション検査の動作」

「DNS リライトの動作」

「DNS リライトの設定」

「DNS 検査の設定」

「DNS 検査の確認と監視」

DNS アプリケーション検査の動作

DNS 保護は、DNS 応答がセキュリティ アプライアンスに転送されるとすぐに、DNS クエリーと関連付けられた DNS セッションを切断します。また、DNS 保護はメッセージ交換を監視し、DNS 応答の ID が、DNS クエリーの ID と一致することを確認します。

DNS 検査をイネーブルにすると(デフォルト)、セキュリティ アプライアンスは次の追加のタスクを実行します。

alias static 、および nat コマンドを使用して作成されたコンフィギュレーションに基づいて、DNS レコードを変換します(DNS リライト)。変換は、DNS 応答の A レコードにのみ適用されます。そのため、PTR レコードを必要とする逆ルックアップは、DNS リライトの影響を受けません。


) 1 つの A レコードに複数の PAT 規則が適用可能で、使用する PAT 規則があいまいなため、DNS リライトは PAT には適用できません。


最大 DNS メッセージ長を指定します(デフォルトは 512 バイト、最大長は 65535 バイト)。必要に応じてリアセンブリが実行され、設定された最大長よりもパケット長が短いことが確認されます。最大長を超えるパケットはドロップされます。


maximum-length オプションを指定せずに inspect dns コマンドを入力した場合、DNS パケット サイズはチェックされません。


ドメイン名の長さを 255 バイトに制限し、ラベルの長さを 63 バイトに制限します。

DNS メッセージに圧縮ポインタが出現した場合、ポインタが参照するドメイン名の整合性を確認します。

圧縮ポインタのループが終了するかどうかを確認します。

複数の DNS セッションが同じ 2 つのホスト間で発生し、それらのセッションの 5 つのタプル(送信元/宛先 IP アドレス、送信元/宛先ポート、およびプロトコル)が同じものである場合、それらのセッションに対しては接続が 1 つのみ作成されます。DNS ID は app_id で追跡され、各 app_id のアイドル タイマーは独立して実行されます。

app_id の有効期限はそれぞれ独立して満了するため、正当な DNS 応答がセキュリティ アプライアンスを通過できるのは、限られた期間内のみであり、リソースの継続使用はできません。ただし、 show conn コマンドを入力した場合、新しい DNS セッションによってリセットされている DNS 接続のアイドル タイマーが表示されます。これは共有 DNS 接続の性質によるものであり、仕様です。

DNS ポート リダイレクションは、次の例で示すように、 static コマンドでイネーブルにできます。

static (inside,outside) udp x.x.x.x 53 10.1.1.1 8053
 

この例では、DNS サーバはポート 8053 でリスンし、セキュリティ アプライアンスはポート 53 の DNS クエリーをポート 8053 にリダイレクトします。この例で DNS 検査を機能させるには、ポート 8053 で DNS 検査をイネーブルにする必要があります。コンフィギュレーションの方法については、「DNS 検査の設定」を参照してください。

DNS リライトの動作

DNS 検査がイネーブルであるとき、DNS リライトは、任意のインターフェイスから送信された DNS メッセージの NAT を完全にサポートします。

内部のネットワーク上のクライアントが、外部インターフェイス上の DNS サーバから送信される内部アドレスの DNS 解決を要求した場合、DNS A レコードは正しく変換されます。DNS 検査エンジンがディセーブルである場合、A レコードは変換されません。

DNS 検査がイネーブルのままである間、 alias 、static、または nat コマンドを使用して DNS リライトを設定できます。必要なコンフィギュレーションの詳細については、「DNS リライトの設定」を参照してください。

DNS リライトは、2 つの機能を実行します。

DNS クライアントがプライベート インターフェイスにある場合、 DNS 応答 のパブリック アドレス(ルーティング可能な、または「マッピング」アドレス)をプライベート アドレス(「実際の」アドレス)に変換します。

DNS クライアントがパブリック インターフェイスにある場合、プライベート アドレスをパブリック アドレスに変換します。

図21-2 では、DNS サーバは外部(ISP)ネットワークにあります。サーバの実アドレス(192.168.100.1)は、 static コマンドで ISP 割り当てアドレス(209.165.200.5)にマッピングされています。任意のインターフェイスのクライアントが、サーバに HTTP 要求を発行できます。この事例の設定手順については、「DNS リライトの設定」を参照してください。

図21-2 DNS 応答のアドレスの変換(DNS リライト)

 

任意のインターフェイスのクライアントが「server.example.com」を使用して DNS 要求を発行できます。DNS 要求が外部の DNS サーバに送信されると、セキュリティ アプライアンスは IP ヘッダーにあるルーティングできない送信元アドレスを変換し、外部インターフェイスの ISP ネットワークに要求を転送します。DNS 応答が返されると、セキュリティ アプライアンスはアドレス変換を宛先アドレスだけではなく、DNS 応答の A レコードに含まれる、埋め込まれた Web サーバの IP アドレスにも適用します。結果として、内部ネットワーク上の Web クライアントは、内部ネットワーク上の Web サーバとの接続に使用する正しいアドレスを取得します。

DNS リライトは、DNS 要求を作成するクライアントが DMZ ネットワークにあり、DNS サーバが内部インターフェイスにある場合にも機能します。この事例の詳細と設定手順については、「3 つの NAT ゾーンを持つ DNS リライト」を参照してください。

DNS リライトの設定

DNS リライトは、 alias 、static、または nat コマンドを使用して設定します。 alias コマンドと static コマンドは、入れ替えが可能です。ただし、新しく構成するときには、より正確であいまいさがない static コマンドを使用することを推奨します。また、 static コマンドを使用する場合、DNS リライトは省略可能です。

この項では、 alias および static コマンドを使用して DNS リライトを設定する方法について説明します。単純な事例と、より複雑な事例で、 static コマンドを使用するための設定手順を示します。 nat コマンドの使用は、 static コマンドの使用に似ていますが、DNS の書き換えはスタティック マッピングではなくダイナミック変換に基づきます。

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

「DNS リライト用の alias コマンドの使用」

「DNS リライト用の static コマンドの使用」

「DNS リライトの設定」

「3 つの NAT ゾーンを持つ DNS リライト」

「3 つの NAT ゾーンを持つ DNS リライトの設定」

alias nat 、および static コマンドの詳細なシンタックスおよびその他の機能については、『 Cisco Security Appliance Command Reference 』の対応するコマンドのページを参照してください。

DNS リライト用の alias コマンドの使用

alias コマンドを使用すると、 任意の インターフェイスにある IP ネットワークのアドレスが、異なるインターフェイスを通じて接続されている別の IP ネットワークのアドレスに変換されます。このコマンドのシンタックスは次のとおりです。

hostname(config)# alias (inside) mapped-address real-address
 

次に例を示します。

hostname(config)# alias (inside) 209.165.200.5 192.168.100.10
 

このコマンドによって、内部インターフェイス以外の任意のインターフェイスの実アドレス(192.168.100.10)が、内部インターフェイスのマッピング アドレス( 209.165.200.5 )に変換されます。192.168.100.10 の場所が正確に定義されていないことに注意してください。


alias コマンドを使用して DNS リライトを設定する場合、マッピング アドレスに対してプロキシ ARP が実行されます。これを防ぐには、alias コマンドを入力した後、sysopt noproxyarp internal_interface コマンドを入力して、プロキシ ARP をディセーブルにします。


DNS リライト用の static コマンドの使用

static コマンドを使用すると、 特定の インターフェイスにある IP ネットワークのアドレスが、異なるインターフェイスの別の IP ネットワークのアドレスに変換されます。このコマンドのシンタックスは次のとおりです。

hostname(config)# static (inside,outside) mapped-address real-address dns
 

次に例を示します。

hostname(config)# static (inside,outside) 209.165.200.5 192.168.100.10 dns
 

このコマンドは、内部インターフェイスのアドレス 192.168.100.10 を外部インターフェイスの 209.165.200.5 に変換するように指定しています。


nat コマンドの使用は、static コマンドの使用に似ていますが、DNS の書き換えはスタティック マッピングではなくダイナミック変換に基づきます。


DNS リライトの設定

図21-2 で示す DNS リライトの事例を実装するには、次の手順を実行します。


ステップ 1 次の例で示すように、Web サーバのスタティック変換を作成します。

hostname(config)# static (inside,outside) 209.165.200.5 192.168.100.1 netmask 255.255.255.255 dns
 

このコマンドは、Web サーバの実アドレス 192.168.100.1 とグローバル IP アドレス 209.165.200.5 の間のスタティック変換を作成します。

ステップ 2 ポート 80 での Web サーバへのアクセスをインターネットのすべてのユーザに対して許可するには、次のコマンドを入力します。

hostname(config)# access-list 101 permit tcp any host 209.165.200.5 eq www
hostname(config)# access-group 101 in interface outside
 

これらのコマンドによって、すべての外部ユーザは、ポート 80 で Web サーバにアクセスできるようになります。

ステップ 3 以前にディセーブルにした場合、または最大 DNS パケット長を変更する場合は、DNS 検査を設定します。

デフォルトで、DNS アプリケーション検査は、最大 DNS パケット長を 512 バイトとしてイネーブルになっています。設定手順については、「制限事項」を参照してください。

ステップ 4 たとえば、パブリック DNS サーバで、A レコードを example.com zone に追加します。

server.example.com. IN A 209.165.200.5
 

この DNS A レコードは、名前 server.example.com を IP アドレス 209.165.200.5 にバインドします。


 

3 つの NAT ゾーンを持つ DNS リライト

図21-3 では、DNS 検査によってどのようにして NAT が最小コンフィギュレーションの DNS サーバと透過的に連携動作するかを示す、より複雑な事例を示します。この事例の設定手順については、「3 つの NAT ゾーンを持つ DNS リライトの設定」を参照してください。

図21-3 3 つの NAT ゾーンを持つ DNS リライトの設定

 

図21-3 で、Web サーバ server.example.com の実アドレスは、セキュリティ アプライアンスの dmz インターフェイスの 192.168.100.10 です。IP アドレス 10.10.10.25 の Web クライアントが内部インターフェイスにあり、パブリック DNS サーバが外部インターフェイスにあります。サイト NAT ポリシーは次のとおりです。

外部 DNS サーバは server.example.com の信頼できるアドレス レコードを保持しています。

外部ネットワークのホストは、ドメイン名が server.example.com の Web サーバに、外部 DNS サーバまたは IP アドレス 209.165.200.5 を使用して接続できます。

内部ネットワークのクライアントは、ドメイン名が server.example.com の Web サーバに、外部 DNS サーバまたは IP アドレス 192.168.100.10 を使用してアクセスできます。

いずれかのインターフェイスのホストまたはクライアントは、DMZ Web サーバにアクセスするときに、パブリック DNS サーバに対して server.example.com の A レコードを問い合せます。DNS サーバは、server.example.com がアドレス 209.165.200.5 にバインドされていることを示す A レコードを返します。

外部ネットワークから要求が来たときのイベント シーケンスは次のとおりです。

1. 外部ホストは、IP アドレス 209.165.200.5 を使用して DNS サーバにアクセスします。

2. 外部ホストからのパケットは、宛先の 209.165.200.5 にアクセスするセキュリティ アプライアンスの外部インターフェイスに到達します。

3. スタティック規則によってアドレス 209.165.200.5 は 192.168.100.10 に変換され、パケットは DMZ の Web サーバに向けられます。

内部ネットワークから要求が来たときのイベント シーケンスは次のとおりです。

1. DNS 応答がセキュリティ アプライアンスに到達し、DNS アプリケーション検査エンジンに向けられます。

2. DNS アプリケーション検査エンジンは、次の処理を行います。

a. 埋め込まれた A レコード アドレス「[outside]:209.165.200.5」の変換を元に戻す NAT 規則を検索します。この例では、次のスタティック コンフィギュレーションが検索されます。

static (dmz,outside) 209.165.200.5 192.168.100.10 dns
 

b. dns オプションが含まれているため、次のように A レコードをリライトするスタティック規則が使用されます。

[outside]:209.165.200.5 --> [dmz]:192.168.100.10
 

static コマンドに dns オプションが含まれていない場合、DNS リライトは実行されず、他のパケット処理が継続されます。

c. 内部 Web クライアントと通信するときに、Web サーバ アドレス [dmz]:192.168.100.10 を変換する NAT が検索されます。

適用可能な NAT 規則がない場合、アプリケーション検査は終了します。

NAT 規則(nat または static)が適用可能な場合は、 dns オプションも指定されている必要があります。 dns オプションが指定されていなかった場合、ステップ(b)の A レコード リライトは取り消され、他のパケット処理が継続されます。

3 つの NAT ゾーンを持つ DNS リライトの設定

図21-3 の事例の NAT ポリシーをイネーブルにするには、次の手順を実行します。


ステップ 1 DMZ サーバの NAT 規則と、DMZ サーバ アドレスの DNS リライトの設定

hostname(config)# static (dmz,outside) 209.165.200.5 192.168.100.10 dns
 

このコンフィギュレーションでは、外部ネットワークのホストが、アドレス 209.165.200.5 を使用して Web サーバ dmz:192.168.100.10 にアクセスできることが示されています。さらに、 dns オプションがあるため、DNS アプリケーション検査でスタティック規則を使用し、DNS A レコードをリライトできます。

ステップ 2 以前にディセーブルにした場合、または最大 DNS パケット長を変更する場合は、DNS 検査を設定します。

デフォルトで、DNS アプリケーション検査は、最大 DNS パケット長を 512 バイトとしてイネーブルになっています。設定手順については、「制限事項」を参照してください。

ステップ 3 ポート 80 での Web サーバへのアクセスをインターネットのすべてのユーザに対して許可するには、次のコマンドを入力します。

hostname(config)# access-list 101 permit tcp any host 209.165.200.5 eq www
hostname(config)# access-group 101 in interface outside
 

これらのコマンドによって、すべての外部ユーザは、ポート 80 で Web サーバにアクセスできるようになります。

ステップ 4 たとえば、パブリック DNS サーバで、A レコードを example.com zone に追加します。

server.example.com. IN A 209.165.200.5
 

この DNS A レコードは、名前 server.example.com を IP アドレス 209.165.200.5 にバインドします。


 

DNS 検査の設定

DNS 検査をイネーブルにする(以前にディセーブルにしていた場合)、または DNS トラフィックの受信に使用するデフォルト ポートを変更するには、次の手順を実行します。


ステップ 1 グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map dns_port
 

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

ステップ 2 クラスマップ コンフィギュレーション モードで、次の例で示すように、 match コマンドを定義します。

hostname(config-cmap)# match port udp eq 8053
hostname(config-cmap)# exit
hostname(config)#
 

ステップ 3 次のコマンドを入力して、ポリシーマップの名前を指定します。

hostname(config)# policy-map policy_map_name
 

policy_map_name には、次の例で示すように、ポリシーマップの名前を指定します。

hostname(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 4 次のコマンドを入力して、ステップ 1 で定義したトラフィック クラスを指定し、ポリシーマップに含めます。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、dns_port トラフィック クラスを現在のポリシーマップに割り当てます。

hostname(config-pmap)# class dns_port
 

CLI はポリシーマップ クラス コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 5 DNS アプリケーション検査をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect dns maximum-length [max-pkt-length]
 

最大 DNS パケット長をデフォルト(512)から変更するには、 max-pkt-length に数値を指定します。これよりも長いパケットはドロップされます。DNS パケット長のチェックをディセーブルにするには、 maximum-length オプションを指定せずに、 inspect dns コマンドを入力します。

ステップ 6 次のコマンドを入力して、ポリシーマップ コンフィギュレーション モードに戻ります。

hostname(config-pmap-c)# exit
hostname(config-pmap)#
 

ステップ 7 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-pmap)# exit
hostname(config)#
 

ステップ 8 次のコマンドを入力して、ポリシーマップをグローバルに適用するか、特定のインターフェイスに適用します。

hostname(config)# service-policy policy_map_name [global | interface interface_ID
 

policy_map_name には、ステップ 3 で設定したポリシーマップを指定します。すべてのインターフェイスに適用するには global オプションを使用し、特定のインターフェイスに適用するには nameif コマンドで割り当てた名前を使用します。

たとえば、次のコマンドは、sample_policy を外部インターフェイスに適用します。

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは、sample_policy をすべてのセキュリティ アプライアンス インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 


 

例21-2 DNS 検査のイネーブル化と設定

次の例で示すように、DNS 検査エンジンをイネーブルにして、ポート 8053 の DNS トラフィックと一致するクラスマップを作成します。サービス ポリシーが外部インターフェイスに適用されます。

hostname(config)# class-map dns_port
hostname(config-cmap)# match port udp eq 8053
hostname(config-cmap)# exit
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class dns_port
hostname(config-pmap-c)# inspect dns maximum-length 1500
hostname(config-pmap-c)# exit
hostname(config)# service-policy sample_policy interface outside
 

すべてのインターフェイスに対して DNS 検査を設定するには、 interface outside の代わりに global パラメータを入力します。

DNS 検査の確認と監視

現在の DNS 接続に関する情報を表示するには、次のコマンドを入力します。

hostname# show conn
 

DNS サーバを使用する接続の場合、show conn コマンド出力で、接続の送信元ポートが DNS サーバの IP アドレスに置き換えられることがあります。

複数の DNS セッションが同じ 2 つのホスト間で発生し、それらのセッションの 5 つのタプル(送信元/宛先 IP アドレス、送信元/宛先ポート、およびプロトコル)が同じものである場合、それらのセッションに対しては接続が 1 つのみ作成されます。DNS ID は app_id で追跡され、各 app_id のアイドル タイマーは独立して実行されます。

app_id の有効期限はそれぞれ独立して満了するため、正当な DNS 応答がセキュリティ アプライアンスを通過できるのは、限られた期間内のみであり、リソースの継続使用はできません。ただし、 show conn コマンドを入力した場合、新しい DNS セッションによってリセットされている DNS 接続のアイドル タイマーが表示されます。これは共有 DNS 接続の性質によるものであり、仕様です。

DNS アプリケーション検査の統計情報を表示するには、 show service-policy コマンドを入力します。次に、 show service-policy コマンドの出力例を示します。

hostname# show service-policy
Interface outside:
Service-policy: sample_policy
Class-map: dns_port
Inspect: dns maximum-length 1500, packet 0, drop 0, reset-drop 0
 

FTP 検査の管理

この項では、FTP 検査エンジンの動作と、コンフィギュレーションの変更方法について説明します。ここでは、次の項目について説明します。

「FTP 検査の概要」

「strict オプションの使用」

「FTP 検査の設定」

「FTP 検査の確認と監視」

FTP 検査の概要

FTP アプリケーション検査機能は、FTP セッションを検査し、次の 4 つのタスクを実行します。

ダイナミックな二次的データ接続の準備

ftp コマンド応答シーケンスの追跡

監査証跡の生成

埋め込み IP アドレスの NAT 処理

FTP アプリケーション検査によって、FTP データ転送用に二次チャネルが用意されます。二次チャネルは、ファイル アップロード、ファイル ダウンロード、またはディレクトリ リスティング イベントへの応答で割り当てられ、事前にネゴシエートしておく必要があります。ポートは、PORT コマンドまたは PASV コマンドを使用してネゴシエートされます。


no inspect ftp コマンドを使用して、FTP 検査エンジンをディセーブルにすると、発信ユーザはパッシブ モードだけで接続を開始でき、着信 FTP はすべてディセーブルになります。


strict オプションの使用

strict オプションは、Web ブラウザが FTP 要求内の埋め込みコマンドを送信できないようにすることで、保護されたネットワークのセキュリティを向上させます。


) セキュリティ アプライアンスの通過を禁止する FTP コマンドを指定するには、FTP マップを作成し、FTP マップ コンフィギュレーション モードで request-command deny コマンドを入力します。


インターフェイスで strict オプションをイネーブルにした後、新しいコマンドを許可する前に、 ftp コマンドの確認応答を行う必要があります。埋め込みコマンドを送信する接続は、ドロップされます。strict オプションは、FTP サーバが 227 コマンドを生成することだけを許可し、FTP クライアントが PORT コマンドを生成することだけを許可します。227 コマンドと PORT コマンドは、エラー文字列に表示されないようにチェックされます。


注意 strict オプションを入力すると、RFC 基準に厳密に準拠していない FTP クライアントとの接続が切断される場合があります。

strict オプションがイネーブルになっている場合、各 ftp および応答シーケンスが追跡され、次の異常なアクティビティがチェックされます。

切り捨てされたコマンド:PORT コマンドおよび PASV 応答コマンドのカンマの数が 5 であるかどうかが確認されます。カンマの数が 5 でない場合は、PORT コマンドが切り捨てられていると見なされ、TCP 接続は閉じられます。

不正なコマンド:RFC の要求通りに、<CR><LF> 文字で終了しているかを調べるため、 ftp コマンドが確認されます。終了していない場合は、接続が閉じられます。

RETR コマンドと STOR コマンドのサイズ:これらが、固定の定数と比較チェックされます。サイズが定数より大きい場合は、エラー メッセージがロギングされ、接続が閉じられます。

コマンド スプーフィング:PORT コマンドは、常にクライアントから送信されます。PORT コマンドがサーバから送信される場合、TCP 接続は拒否されます。

応答スプーフィング:PASV 応答コマンド(227)は、常にサーバから送信されます。PASV 応答コマンドがクライアントから送信される場合、TCP 接続は拒否されます。これにより、ユーザが「227 xxxxx a1, a2, a3, a4, p1, p2.」を実行する場合のセキュリティ ホールが予防できます。

TCP ストリーム編集。

無効ポート ネゴシエーション:ネゴシエートされたダイナミック ポート値が、1024 未満であるかどうかが調べられます。1 ~ 1024 の範囲のポート番号は、予約済み接続用に指定されているため、ネゴシエートされたポートがこの範囲内であった場合、TCP 接続は解放されます。

コマンド パイプライン:PORT コマンドと PASV 応答コマンド内のポート番号の後に続く文字数が、定数の 8 と比べられます。8 より大きい場合は、TCP 接続が閉じられます。

FTP クライアントがサーバのシステム タイプを取得できないように、セキュリティ アプライアンスは、SYST コマンドに対する FTP サーバ応答を X の連続に置き換えます。このデフォルトの動作を無効にするには、FTP マップ コンフィギュレーション モードで、 no mask-syst-reply コマンドを使用します。

FTP 検査の設定

FTP アプリケーション検査は、デフォルトでイネーブルになっています。そのため、次のようにデフォルトの FTP コンフィギュレーションを変更する場合に限り、この項の手順を実行する必要があります。

strict オプションをイネーブルにする。

セキュリティ アプライアンスの通過を禁止する FTP コマンドを指定する。

デフォルト ポート番号を変更する。

FTP 検査のデフォルト コンフィギュレーションを変更するには、次の手順を実行します。


ステップ 1 グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map ftp_port
 

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

ステップ 2 クラスマップ コンフィギュレーション モードで、次の例で示すように、 match コマンドを定義します。

hostname(config-cmap)# match port tcp eq 23
hostname(config-cmap)# exit
hostname(config)#
 

連続したポート範囲を割り当てるには、次の例で示すように、 range キーワードを入力します。

hostname(config-cmap)# match port tcp range 1023-1025
 

連続しない複数のポートを FTP 検査に割り当てるには、 access-list コマンドを入力して、各ポートに一致するアクセス コントロール エントリを定義します。次に、 match コマンドを入力して、アクセスリストを FTP トラフィック クラスに関連付けます。

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

hostname(config)# ftp-map ftp_map_name
 

ftp_map_name には、次の例で示すように、FTP マップの名前を指定します。

hostname(config)# ftp-map inbound_ftp
 

システムが FTP マップ コンフィギュレーション モードに移行し、CLI プロンプトが次の例で示すように変化します。

hostname(config-ftp-map)#
 

ステップ 4 次のコマンドを入力して、FTP マップのコンフィギュレーションを定義します。

hostname(config-ftp-map)# request-command deny ftp_command
hostname(config-ftp-map)# exit
hostname(config)#
 

ftp_command には、制限する 1 つ以上の FTP コマンドを指定します。制限できる FTP コマンドのリストについては、 表21-3 を参照してください。たとえば、次のコマンドは、ファイルの保存または追加を禁止します。

hostname(config-inbound_ftp)# request-command deny put stou appe
 

) FTP 検査をイネーブルにすると、セキュリティ アプライアンスは、SYST コマンドに対する FTP サーバ応答を X の連続に置き換えます。これによって、FTP クライアントがサーバのシステム タイプを取得できないようにします。このデフォルトの動作を変更するには、FTP マップ コンフィギュレーション モードで、no mask-syst-reply コマンドを使用します。


ステップ 5 次のコマンドを入力して、ポリシーマップの名前を指定します。

hostname(config)# policy-map policy_map_name
 

policy_map_name には、次の例で示すように、ポリシーマップの名前を指定します。

hostname(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 6 次のコマンドを入力して、 ステップ 1 で定義したトラフィック クラスを指定し、ポリシーマップに含めます。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、ftp_port トラフィック クラスを現在のポリシーマップに割り当てます。

hostname(config-pmap)# class ftp_port
 

CLI はポリシーマップ クラス コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 7 トラフィック クラスで定義された基準と一致するトラフィックに厳密な検査を適用するには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect strict ftp ftp_map_name
 

ftp_map_name には、使用する FTP マップを指定します。たとえば、次のコマンドは、前の手順で作成した FTP マップをセキュリティ アプライアンスが使用するようにします。

hostname(config-pmap-c)# inspect ftp strict inbound_ftp
 

ステップ 8 次のコマンドを入力して、ポリシーマップ コンフィギュレーション モードに戻ります。

hostname(config-pmap-c)# exit
hostname(config-pmap)#
 

ステップ 9 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-pmap)# exit
hostname(config)#
 

ステップ 10 次のコマンドを入力して、ポリシーマップをグローバルに適用するか、特定のインターフェイスに適用します。

hostname(config)# service-policy policy_map_name [global | interface interface_ID
 

policy_map_name には、 ステップ 5 で設定したポリシーマップを指定します。すべてのインターフェイスに適用するには global オプションを使用し、特定のインターフェイスに適用するには nameif コマンドで割り当てた名前を使用します。

たとえば、次のコマンドは、sample_policy を外部インターフェイスに適用します。

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは、sample_policy をすべてのセキュリティ アプライアンス インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 


 

.

表21-3 FTP マップの request-command deny オプション

request-command deny
オプション
目的

appe

ファイルへの追加を行うコマンドを拒否します。

cdup

現在の作業ディレクトリの親ディレクトリに移動するコマンドを拒否します。

dele

サーバのファイルを削除するコマンドを拒否します。

get

サーバからファイルを取得するクライアント コマンドを拒否します。

help

ヘルプ情報を提供するコマンドを拒否します。

mkd

サーバ上にディレクトリを作成するコマンドを拒否します。

put

サーバにファイルを送信するクライアント コマンドを拒否します。

rmd

サーバ上のディレクトリを削除するコマンドを拒否します。

rnfr

変更元ファイル名を指定するコマンドを拒否します。

rnto

変更先ファイル名を指定するコマンドを拒否します。

site

サーバ システム固有のコマンドを拒否します。通常、リモート管理に使用します。

stou

一意のファイル名を使用してファイルを保存するコマンドを拒否します。

次の例は、FTP トラフィックを識別し、FTP マップを定義し、ポリシーを定義して、そのポリシーを外部インターフェイスに適用する方法を示しています。

例21-3 厳密な FTP 検査のイネーブル化と設定

hostname(config)# class-map ftp_port
hostname(config-cmap)# match port tcp eq 21
hostname(config-cmap)# exit
hostname(config)# ftp-map inbound_ftp
hostname(config-ftp-map)# request-command deny put stou appe
hostname(config-ftp-map)# exit
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class ftp_port
hostname(config-pmap-c)# inspect ftp strict inbound_ftp
hostname(config-pmap-c)# exit
hostname(config-pmap)# exit
hostname(config)# service-policy sample_policy interface outside
 

すべてのインターフェイスで FTP 検査をイネーブルにするには、 interface outside の代わりに global パラメータを入力します。

FTP 検査の確認と監視

FTP アプリケーション検査では、次のログ メッセージが生成されます。

An Audit record 302002 is generated for each file that is retrieved or uploaded.

The ftp command is checked to see if it is RETR or STOR and the retrieve and store commands are logged.

The username is obtained by looking up a table providing the IP address.

The username, source IP address, destination IP address, NAT address, and the file operation are logged.

Audit record 201005 is generated if the secondary dynamic channel preparation failed due to memory shortage.

NAT と連携することにより、FTP アプリケーション検査では、アプリケーション ペイロード内の IP アドレスが変換されます。これは、RFC 959 に詳細に記述されています。

GTP 検査の管理

この項では、GTP 検査エンジンの動作と、コンフィギュレーションの変更方法について説明します。ここでは、次の項目について説明します。

「GTP 検査の概要」

「GTP 検査のイネーブル化と設定」

「GSN プーリングのイネーブル化と設定」

「GTP 検査の確認と監視」


) GTP 検査には、特別なライセンスが必要です。必要なライセンスがないときに、セキュリティ アプライアンスで GTP 関連のコマンドを入力した場合、セキュリティ アプライアンスはエラー メッセージを表示します。


GTP 検査の概要

GPRS は、モバイル ユーザに対して、GSM ネットワークと企業ネットワークまたはインターネットとの間で中断しない接続を提供します。GGSN は、GPRS 無線データ ネットワークと他のネットワークとの間のインターフェイスです。SGSN は、モビリティ、データ セッション管理、およびデータ圧縮を実行します(図21-4 を参照)。

図21-4 GPRS トンネリング プロトコル

 

UMTS は、固定回線テレフォニー、モバイル、インターネット、コンピュータ テクノロジーの商用コンバージェンスです。UTRAN は、このシステムで無線ネットワークを実装するためのネットワーキング プロトコルです。GTP を使用すると、GGSN、SGSN、および UTRAN 間の UMTS/GPRS バックボーンで、マルチプロトコル パケットをトンネリングできます。

GTP には固有のセキュリティやユーザ データの暗号化は含まれていませんが、セキュリティ アプライアンスで GTP を使用することによって、これらの危険性からネットワークを保護できます。

SGSN は、GTP を使用する GGSN に論理的に接続されます。GTP を使用すると、GSN 間の GPRS バックボーンで、マルチプロトコル パケットをトンネリングできます。GTP は、トンネル制御および管理プロトコルを提供します。このプロトコルによって、SGSN は、トンネルの作成、変更、および削除を行い、モバイル ステーションに GPRS ネットワーク アクセスを提供できます。GTP は、トンネリング メカニズムを使用して、ユーザ データ パケットを伝送するためのサービスを提供します。


) GTP をフェールオーバーと同時に使用しているとき、GTP 接続が確立され、データがトンネルを超えて伝送される前にアクティブ装置に障害が発生した場合、GTP データ接続(「j」フラグが設定されています)は、スタンバイ装置に複製されません。これは、アクティブ装置が初期接続をスタンバイ装置に複製しないためです。


GTP 検査のイネーブル化と設定

GTP アプリケーション検査は、デフォルトではディセーブルです。GTP 検査をイネーブルにするには、ここで説明する手順を実行する必要があります。


) GTP 検査には、特別なライセンスが必要です。必要なライセンスがないときに、セキュリティ アプライアンスで GTP 関連のコマンドを入力した場合、セキュリティ アプライアンスはエラー メッセージを表示します。


GTP コンフィギュレーションをイネーブルにし設定するには、次の手順を実行します。


ステップ 1 GTP トラフィックの受信に必要な 2 つのポートを特定するアクセス コントロール リストを定義します。たとえば、次のコマンドは、GTP 検査のデフォルト ポートを特定します。

hostname(config)# access-list gtp_acl permit udp any any eq 3386
hostname(config)# access-list gtp_acl permit udp any any eq 2123
 

ステップ 2 グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map gtp_port
 

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

ステップ 3 クラスマップ コンフィギュレーション モードで、次の例で示すように、 match コマンドを定義します。

hostname(config-cmap)# match access-list gtp_acl
hostname(config-cmap)# exit
hostname(config)#
 

ステップ 4 (オプション)次のコマンドを入力して、GTP マップを作成します。

hostname(config)# gtp-map gtp_map_name
 

gtp_map_name には、次の例で示すように、GTP マップの名前を指定します。

hostname(config)# gtp-map inbound_gtp
 

このマップは、GTP マップを指定せずに GTP をイネーブルにした場合に、自動的にイネーブルになります。

システムが GTP マップ コンフィギュレーション モードに移行し、CLI プロンプトが次の例で示すように変化します。

hostname(config-gtp)# gtp-map inbound_gtp
hostname(config-gtp-map)#
 

ステップ 5 (オプション)必要に応じて、サポートされる GTP マップ コンフィギュレーション コマンドを入力して、デフォルト コンフィギュレーションを変更します( 表21-3 を参照)。

GTP マップを指定せずに GTP をイネーブルにすると、デフォルトの GTP マップが使用されます。デフォルトの GTP マップは、次のデフォルト値で事前設定済みです。

timeout tunnel 0:01:00

request-queue 200

timeout gsn 0:30:00

timeout pdp-context 0:30:00

timeout request 0:01:00

timeout signaling 0:30:00

tunnel-limit 500

ステップ 6 次のコマンドを入力して、ポリシーマップの名前を指定します。

hostname(config-gtp-map)# exit
hostname(config)# policy-map policy_map_name
 

policy_map_name には、次の例で示すように、ポリシーマップの名前を指定します。

hostname(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 7 次のコマンドを入力して、 ステップ 2 で定義したトラフィック クラスを指定し、ポリシーマップに含めます。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、gtp_port トラフィック クラスを現在のポリシーマップに割り当てます。

hostname(config-pmap)# class gtp_port
 

CLI はポリシーマップ クラス コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 8 GTP マップを使用する GTP アプリケーション検査をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect gtp [gtp_map_name]
 

GTP マップを指定せずに GTP をイネーブルにすると、デフォルトの GTP マップが使用されます。別の GTP マップを使用するには、 gtp_map_name に、使用する GTP マップを指定します。たとえば、次のコマンドは、前の手順で作成した GTP マップをセキュリティ アプライアンスが使用するようにします。

hostname(config-pmap-c)# inspect gtp inbound_gtp
 

ステップ 9 次のコマンドを入力して、ポリシーマップ コンフィギュレーション モードに戻ります。

hostname(config-pmap-c)# exit
hostname(config-pmap)#
 

ステップ 10 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-pmap)# exit
hostname(config)#
 

ステップ 11 次のコマンドを入力して、ポリシーマップをグローバルに適用するか、特定のインターフェイスに適用します。

hostname(config)# service-policy policy_map_name [global | interface interface_ID
 

policy_map_name には、 ステップ 6 で設定したポリシーマップを指定します。すべてのインターフェイスに適用するには global オプションを使用し、特定のインターフェイスに適用するには nameif コマンドで割り当てた名前を使用します。

たとえば、次のコマンドは、sample_policy を外部インターフェイスに適用します。

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは、sample_policy をすべてのセキュリティ アプライアンス インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 


 

次の例は、アクセスリストを使用して GTP トラフィックを識別し、GTP マップを定義し、ポリシーを定義して、そのポリシーを外部インターフェイスに適用する方法を示しています。

例21-4 GTP 検査のイネーブル化と設定

hostname(config)# access-list gtp_acl permit udp any any eq 3386
hostname(config)# access-list gtp_acl permit udp any any eq 2123
hostname(config)# class-map gtp-traffic
hostname(config-cmap)# match access-list gtp_acl
hostname(config-cmap)# exit
hostname(config)# gtp-map gtp-policy
hostname(config-gtp-map)# request-queue 300
hostname(config-gtp-map)# mcc 111 mnc 222
hostname(config-gtp-map)# message-length min 20 max 300
hostname(config-gtp-map)# drop message 20
hostname(config-gtp-map)# tunnel-limit 10000
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class gtp-traffic
hostname(config-pmap-c)# inspect gtp inbound_gtp
hostname(config)# service-policy sample_policy outside
 

表21-4 に、GTP マップ コンフィギュレーション モードで使用できるコンフィギュレーション コマンドをまとめます。各コマンドの詳細なシンタックスについては、『 Cisco Security Appliance Command Reference 』のコマンドのページを参照してください。

 

表21-4 GTP マップ コンフィギュレーション コマンド

コマンド
説明

description

GTP コンフィギュレーション マップの説明を指定します。

drop

ドロップする ID、APN、または GTP バージョンを指定します。

help

GTP マップ コンフィギュレーション コマンドのヘルプを表示します。

mcc

3 桁のモバイル国コード(000 ~ 999)と、2 桁または 3 桁のモバイル ネットワーク コードを指定します。1 桁または 2 桁のエントリの場合は、前に 0 を付けます。

message-length

メッセージ長の最小値と最大値を指定します。

permit errors

エラーが発生したパケット、または異なる GTP バージョンのパケットを許可します。

permit response

GSN ロードバランシングを許可します。詳細については、「GSN プーリングのイネーブル化と設定」を参照してください。

request-queue

キューに入れることができる最大要求数を指定します。

timeout

GSN、PDP コンテキスト、要求、シグナリング接続、およびトンネルのアイドル タイムアウトを指定します。

tunnel-limit

許可されるトンネルの最大数を指定します。


) 基準を満たさないメッセージに対して指定できるアクションは、allowresetdrop などのさまざまなコンフィギュレーション コマンドを使用して設定します。これらのアクションに加えて、イベントをログに記録するかどうかも指定できます。


GSN プーリングのイネーブル化と設定

セキュリティ アプライアンスが GTP 検査を実行する場合、デフォルトでセキュリティ アプライアンスは、GTP 要求で指定されていない GSN からの GTP 応答をドロップします。これは、GSN のプール間でロードバランシングを使用して、GPRS の効率とスケーラビリティを高めているときに発生します。

GSN プーリングのサポートをイネーブルにするには、 permit response コマンドを使用します。このコマンドは、GTP 要求がどの GSN に送信されたかにかかわらず、指定された GSN のセットの中のいずれかからの応答を許可するようにセキュリティ アプライアンスを設定します。ロードバランシング GSN のプールは、ネットワーク オブジェクトとして指定します。同様に、SGSN もネットワーク オブジェクトとして指定します。応答している GSN が GTP 要求の送信先の GSN と同じオブジェクト グループに属している場合、および応答している GSN による GTP 応答の送信が許可されている先のオブジェクト グループに SGSN がある場合、セキュリティ アプライアンスはその応答を許可します。 permit response コマンドを GTP マップ コンフィギュレーションに追加し、次に、このコンフィギュレーションを inspect gtp コマンドで指定します。

次の手順で、既存の GTP 検査コンフィギュレーションに GSN プーリングのサポートを追加する手順を示します。GTP 検査の設定の詳細については、「GTP 検査のイネーブル化と設定」を参照してください。

既存の GTP 検査コンフィギュレーションの GSN プーリングをイネーブルにするには、次の手順を実行します。


ステップ 1 ロードバランシング GSN のプールを表すオブジェクトを作成します。これを行うには、次の手順を実行します。

a. object-group コマンドを使用して、ロードバランシング GSN のプールを表す新しいネットワーク オブジェクト グループを定義します。

hostname(config)# object-group network GSN-pool-name
hostname(config-network)#
 

たとえば、次のコマンドは、gsnpool32 というオブジェクト グループを作成します。

hostname(config)# object-group network gsnpool32
hostname(config-network)#
 

b. network-object コマンドを使用して、ロードバランシング GSN を指定します。 host キーワードを使用して、GSN ごとに 1 つの network-object コマンドを使用します。 network-object コマンドを使用して、ロードバランシングを実行する GSN を含むネットワーク全体を指定することもできます。

hostname(config-network)# network-object host IP-address
 

たとえば、次のコマンドは、個別のホストを表す 3 つのネットワーク オブジェクトを作成します。

hostname(config-network)# network-object host 192.168.100.1
hostname(config-network)# network-object host 192.168.100.2
hostname(config-network)# network-object host 192.168.100.3
hostname(config-network)#
 

c. ネットワーク コンフィギュレーション モードを終了します。

hostname(config-network)# exit
hostname(config)#
 

ステップ 2 ロードバランシング GSN による応答が許可される SGSN を表すオブジェクトを作成します。これを行うには、次の手順を実行します。

a. object-group コマンドを使用して、GTP 要求を GSN プールに送信する SGSN を表す新しいネットワーク オブジェクト グループを定義します。

hostname(config)# object-group network SGSN-name
hostname(config-network)#
 

たとえば、次のコマンドは、sgsn32 というオブジェクト グループを作成します。

hostname(config)# object-group network sgsn32
hostname(config-network)#
 

b. network-object コマンドと host キーワードを使用して、SGSN を指定します。

hostname(config-network)# network-object host IP-address
 

たとえば、次のコマンドは、SGSN を表すネットワーク オブジェクトを作成します。

hostname(config-network)# network-object host 192.168.50.100
hostname(config-network)#
 

c. ネットワーク コンフィギュレーション モードを終了します。

hostname(config-network)# exit
hostname(config)#
 

ステップ 3 GSN プーリングのサポートを追加する GTP マップの GTP マップ コンフィギュレーション モードに入ります。

hostname(config)# gtp-map GTP-map-name
hostname(config-gtp-map)#
 

たとえば、次のコマンドは、gtp-policy という GTP マップの GTP マップ コンフィギュレーション モードに入ります。

hostname(config)# gtp-map gtp-policy
 

ステップ 4 permit response コマンドを使用して、ステップ 1 で定義した GSN プールを表すネットワーク オブジェクトの任意の GSN から、ステップ 2 で定義した SGSN を表すネットワーク オブジェクトへの GTP 応答を許可します。

hostname(config-gtp-map)# permit response to-object-group SGSN-name from-object-group GSN-pool-name
 

たとえば、次のコマンドは、オブジェクト グループ gsnpool32 からオブジェクト グループ sgsn32 への GTP 応答を許可します。

hostname(config-gtp-map)# permit response to-object-group sgsn32 from-object-group gsnpool32
 


 

例21-5 で、GSN プールと SGSN のネットワーク オブジェクトを定義して GSN プーリングをサポートする方法を示します。クラス C ネットワーク全体が GSN プールとして定義されていますが、ネットワーク全体を指定する代わりに、複数の個別の IP アドレスを network-object コマンドで 1 つずつ指定できます。この例では、次に、GSN プールから SGSN への応答を許可するように、GTP マップを変更します。

例21-5 GSN プーリングのイネーブル化

hostname(config)# object-group network gsnpool32
hostname(config-network)# network-object 192.168.100.0 255.255.255.0
hostname(config)# object-group network sgsn32
hostname(config-network)# network-object host 192.168.50.100
hostname(config-network)# exit
hostname(config)# gtp-map gtp-policy
hostname(config-gtp-map)# permit response to-object-group sgsn32 from-object-group gsnpool32
 

GTP 検査の確認と監視

GTP コンフィギュレーションを表示するには、特権 EXEC モードで show service-policy inspect gtp コマンドを入力します。このコマンドの詳細なシンタックスについては、『 Cisco Security Appliance Command Reference 』のコマンドのページを参照してください。

show service-policy inspect gtp statistics コマンドを使用して、GTP 検査の統計情報を表示します。次に、 show service-policy inspect gtp statistics コマンドの出力例を示します。

hostname# show service-policy inspect gtp statistics
GPRS GTP Statistics:
version_not_support 0 msg_too_short 0
unknown_msg 0 unexpected_sig_msg 0
unexpected_data_msg 0 ie_duplicated 0
mandatory_ie_missing 0 mandatory_ie_incorrect 0
optional_ie_incorrect 0 ie_unknown 0
ie_out_of_order 0 ie_unexpected 0
total_forwarded 0 total_dropped 0
signalling_msg_dropped 0 data_msg_dropped 0
signalling_msg_forwarded 0 data_msg_forwarded 0
total created_pdp 0 total deleted_pdp 0
total created_pdpmcb 0 total deleted_pdpmcb 0
pdp_non_existent 0
 

垂直バー(|)を使用して、表示をフィルタリングできます。 ?| と入力すると、表示フィルタリング オプションが表示されます。

show service-policy inspect gtp pdp-context コマンドを使用して、PDP コンテキストに関する情報を表示します。次に、 show service-policy inspect gtp pdp-context コマンドの出力例を示します。

hostname# show service-policy inspect gtp pdp-context detail
1 in use, 1 most used, timeout 0:00:00
 
Version TID MS Addr SGSN Addr Idle APN
v1 1234567890123425 10.0.1.1 10.0.0.2 0:00:13 gprs.cisco.com
 
user_name (IMSI): 214365870921435 MS address: 1.1.1.1
primary pdp: Y nsapi: 2
sgsn_addr_signal: 10.0.0.2 sgsn_addr_data: 10.0.0.2
ggsn_addr_signal: 10.1.1.1 ggsn_addr_data: 10.1.1.1
sgsn control teid: 0x000001d1 sgsn data teid: 0x000001d3
ggsn control teid: 0x6306ffa0 ggsn data teid: 0x6305f9fc
seq_tpdu_up: 0 seq_tpdu_down: 0
signal_sequence: 0
upstream_signal_flow: 0 upstream_data_flow: 0
downstream_signal_flow: 0 downstream_data_flow: 0
RAupdate_flow: 0
 

PDP コンテキストは、IMSI と NSAPI の値の組み合せであるトンネル ID によって識別されます。GTP トンネルは、それぞれ別個の GSN ノードにある、2 つの関連する PDP コンテキストによって定義され、トンネル ID によって識別されます。GTP トンネルは、パケットを外部パケット データ ネットワークと MS ユーザの間で転送するために必要なものです。

次の例で示すように、垂直バー(|)を使用して、表示をフィルタリングできます。

hostname# show service-policy gtp statistics | grep gsn
 

H.323 検査の管理

この項では、H.323 アプリケーション検査をイネーブルにする方法と、デフォルト ポート コンフィギュレーションを変更する方法について説明します。ここでは、次の項目について説明します。

「H.323 検査の概要」

「H.323 の動作」

「制限事項」

「H.323 検査のイネーブル化と設定」

「H.225 タイムアウト値の設定」

「H.323 検査の確認と監視」

H.323 検査の概要

inspect h323 コマンドは、Cisco CallManager および VocalTec Gatekeeper などの H.323 に準拠したアプリケーションをサポートしています。H.323 は、International Telecommunication Union(ITU; 国際電気通信連合)によって定義されている、LAN を介したマルチメディア会議用のプロトコル群です。セキュリティ アプライアンスは、H.323 v3 機能の同一コール シグナリング チャネルでの複数コールを含めて、H.323 を Version 4 までサポートします。

H.323 検査をイネーブルにした場合、セキュリティ アプライアンスは、H.323 Version 3 で導入された機能である同一コール シグナリング チャネルでの複数コールをサポートします。この機能によってセットアップ時間が短縮され、セキュリティ アプライアンスでのポート使用が減少します。

H.323 検査の 2 つの主要機能は次のとおりです。

H.225 と H.245 の両メッセージ内に埋め込まれている必要な IPv4 アドレスを NAT 処理します。H.323 メッセージは PER 符号化形式で符号化されているため、セキュリティ アプライアンスでは ASN.1 デコーダを使用して H.323 メッセージを復号化します。

ネゴシエートされた H.245 と RTP/RTCP 接続をダイナミックに割り当てます。

H.323 の動作

H.323 のプロトコルのコレクションは、合計で最大 2 つの TCP 接続と 4 ~ 6 つの UDP 接続を使用できます。FastConnect は 1 つの TCP 接続だけを使用し、RAS は登録、アドミッション、およびステータス用に 1 つの UDP 接続を使用します。

H.323 クライアントは、最初に TCP ポート 1720 を使用して、H.323 サーバへの TCP 接続を確立し、Q.931 コール セットアップを要求します。H.323 端末は、コール セットアップ プロセスの一部として、H.245 TCP 接続に使用するため、クライアントに 1 つのポート番号を供給します。H.323 ゲートキーパが使用されている環境では、初期パケットは UDP を使用して送信されます。

H.323 検査は、Q.931 TCP 接続を監視して、H.245 ポート番号を決定します。H.323 端末が、FastConnect を使用していない場合は、セキュリティ アプライアンスが H.225 メッセージの検査に基づいて、H.245 接続をダイナミックに割り当てます。

各 H.245 メッセージ内で、H.323 エンドポイントが、後続の UDP データ ストリームに使用するポート番号を交換します。H.323 検査は、H.245 メッセージを調査して、ポート番号を識別し、メディア交換用の接続をダイナミックに作成します。RTP はネゴシエートされたポート番号を使用し、RTCP はその次に高いポート番号を使用します。

H.323 制御チャネルは、H.225、H.245、および H.323 RAS を処理します。H.323 検査では、次のポートが使用されます。

1718 :ゲートキーパ検出 UDP ポート

1719:RAS UDP ポート

1720:TCP 制御ポート

H.225 コール シグナリング用に、既知の H.323 ポートである 1720 のアクセスリストを開く必要があります。ただし、H.245 シグナリング ポートは、H.225 シグナリングのエンドポイント間でネゴシエートされます。H.323 ゲートキーパの使用時には、セキュリティ アプライアンスは、ACF メッセージの検査に基づいて、H.225 接続を開きます。

セキュリティ アプライアンスは、H.225 メッセージの検査後、H.245 チャネルをダイナミックに割り当て、H.245 チャネルも接続してフィックスアップします。これは、埋め込み IP アドレスを NAT 処理し、ネゴシエートされたメディア チャネルを開くことによって、セキュリティ アプライアンスを通過する H.245 メッセージはすべて、H.245 アプリケーション検査も通過することを意味します。

H.323 ITU 規準では、メッセージ長を定義する TPKT ヘッダーが最初に送信されてから、H.225 と H.245 が信頼できる接続上を送信されることが要求されています。TPKT ヘッダーは、必ずしも H.225/H.245 メッセージと同一の TCP パケット内で送信される必要はないため、セキュリティ アプライアンスでは、メッセージを正しく処理または復号化するために TPKT 長を記憶しておく必要があります。セキュリティ アプライアンスは、各接続に対して、1 つのデータ構造体を維持します。そのデータ構造体には、次に期待されるメッセージに対する TPKT 長が含まれています。

セキュリティ アプライアンスで IP アドレスを NAT 処理する必要がある場合、チェックサム、UUIE 長、および TPKT(H.225 メッセージを含む TCP パケットに含まれている場合)が変化します。TPKT が別の TCP パケットで送信されている場合は、セキュリティ アプライアンスが TPKT に対する ACK の代理処理を行い、新しい TPKT が新しい長さで H.245 メッセージに追加されます。


) セキュリティ アプライアンスは、TPKT に対する ACK の代理処理では TCP オプションをサポートしていません。


H.323 検査を通過するパケットが通る各 UDP 接続は、H.323 接続としてマークされ、 timeout コマンドで設定された H.323 タイムアウト値でタイムアウトします。

制限事項

H.323 アプリケーション検査の使用に関して、次の既知の問題および制限があります。

スタティック PAT は、H.323 メッセージのオプション フィールドに埋め込まれた IP アドレスを正しく変換できないことがあります。この問題が発生した場合は、H.323 でスタティック PAT を使用しないでください。

NetMeeting クライアントが H.323 ゲートキーパーに登録されているときに、同じく H.323 ゲートキーパーに登録されている H.323 ゲートウェイを呼び出そうとすると、接続は確立されますが、どちらの方向でも音声が聞こえません。この問題は、セキュリティ アプライアンスの問題ではありません。

ネットワーク スタティック アドレスを設定した場合、このネットワーク スタティック アドレスが第三者のネットマスクおよびアドレスと同じであると、すべての発信 H.323 接続が失敗します。

H.323 検査のイネーブル化と設定

H.323 検査をイネーブルにするには、または H.323 トラフィックの受信に使用するデフォルト ポートを変更するには、次の手順を実行します。


ステップ 1 H.323 トラフィックの受信に必要な 2 つのポートを特定するアクセス コントロール リストを定義します。たとえば、次のコマンドは、H.323 検査のデフォルト ポートを特定します。

hostname(config)# access-list h323_acl permit udp any any eq 1720
hostname(config)# access-list h323_acl permit udp any any eq 1721
 

ステップ 2 グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map h323_port
 

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

クラスマップ コンフィギュレーション モードで、次の例で示すように、 match コマンドを定義します。

hostname(config-cmap)# match access-list h323_acl
hostname(config-cmap)# exit
hostname(config)#
 

連続したポート範囲を割り当てるには、次の例で示すように、 range キーワードを入力します。

hostname(config-cmap)# match port tcp range 1718-1720
 

連続しない複数のポートを H.323 検査に割り当てるには、 access-list コマンドを入力して、各ポートに一致するアクセス コントロール エントリを定義します。次に、 match コマンドを入力して、アクセスリストを H.323 トラフィック クラスに関連付けます。

ステップ 3 次のコマンドを入力して、ポリシーマップの名前を指定します。

hostname(config)# policy-map policy_map_name
 

policy_map_name には、次の例で示すように、ポリシーマップの名前を指定します。

hostname(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 4 次のコマンドを入力して、 ステップ 2 で定義したトラフィック クラスを指定し、ポリシーマップに含めます。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、h323_port トラフィック クラスを現在のポリシーマップに割り当てます。

hostname(config-pmap)# class h323_port
 

CLI はポリシーマップ クラス コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 5 H.323 トラフィック検査をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect h323 ras
hostname(config-pmap-c)# inspect h323 h225
 

次のコマンドを入力して、ポリシーマップ コンフィギュレーション モードに戻ります。

hostname(config-pmap-c)# exit
hostname(config-pmap)#
 

ステップ 6 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-pmap)# exit
hostname(config)#
 

ステップ 7 次のコマンドを入力して、ポリシーマップをグローバルに適用するか、特定のインターフェイスに適用します。

hostname(config)# service-policy policy_map_name [global | interface interface_ID
 

policy_map_name には、 ステップ 3 で設定したポリシーマップを指定します。すべてのインターフェイスに適用するには global オプションを使用し、特定のインターフェイスに適用するには nameif コマンドで割り当てた名前を使用します。

たとえば、次のコマンドは、sample_policy を外部インターフェイスに適用します。

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは、sample_policy をすべてのセキュリティ アプライアンス インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 


 

例21-6 H.323 検査のイネーブル化と設定

次の例で示すように、H.323 検査エンジンをイネーブルにして、デフォルト ポート(1720)で H.323 トラフィックと一致するクラスマップを作成します。このサービス ポリシーが、外部インターフェイスに適用されます。

hostname(config)# access-list h323_acl permit udp any any eq 1720
hostname(config)# access-list h323_acl permit udp any any eq 1721
hostname(config)# class-map h323-traffic
hostname(config-cmap)# match access-list h323_acl
hostname(config-cmap)# exit
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class h323_port
hostname(config-pmap-c)# inspect h323 ras
hostname(config-pmap-c)# inspect h323 h225
hostname(config-pmap-c)# exit
hostname(config)# service-policy sample_policy interface outside
 

すべてのインターフェイスで H.323 検査をイネーブルにするには、 interface outside の代わりに global パラメータを入力します。

H.225 タイムアウト値の設定

H.225 シグナリング接続を閉じるまでのアイドル時間を設定するには、次のコマンドを入力します。

hostname(config)# timeout h225
 

デフォルトは 1:00:00 です。

H.323 制御接続を閉じるまでのアイドル時間を設定するには、次のコマンドを入力します。

hostname(config)# timeout h323
 

デフォルトは 00:05:00 です。

H.323 検査の確認と監視

ここでは、H.323 セッションに関する情報を表示する方法について説明します。ここでは、次の項目について説明します。

「H.225 セッションの監視」

「H.245 セッションの監視」

「H.323 RAS セッションの監視」

H.225 セッションの監視

show h225 コマンドは、セキュリティ アプライアンスを越えて確立されている H.225 セッションの情報を表示します。 debug h323 h225 event debug h323 h245 event 、および show local-host コマンドとともに、このコマンドは、H.323 検査エンジンの問題のトラブルシューティングに使用されます。

show h225 show h245 、または show h323-ras コマンドを入力する前に、 pager コマンドを設定することを推奨します。多くのセッション レコードが存在し、 pager コマンドが設定されていない場合、 show コマンドの出力が最後まで到達するには、しばらく時間がかかることがあります。異常なほど多くの接続が存在する場合は、デフォルトのタイムアウト値または設定した値に基づいてセッションがタイムアウトしているかどうか確認します。タイムアウトしていなければ問題があるので、調査が必要です。

次に、 show h225 コマンドの出力例を示します。

hostname# show h225
Total H.323 Calls: 1
1 Concurrent Call(s) for
Local: 10.130.56.3/1040 Foreign: 172.30.254.203/1720
1. CRV 9861
Local: 10.130.56.3/1040 Foreign: 172.30.254.203/1720
0 Concurrent Call(s) for
Local: 10.130.56.4/1050 Foreign: 172.30.254.205/1720
 

この出力は、現在セキュリティ アプライアンスを通過しているアクティブ H.323 コールが 1 つ、ローカル エンドポイント 10.130.56.3 と外部のホスト 172.30.254.203 の間にあることを示しています。また、これらの特定のエンドポイントの間に、同時コールが 1 つあり、そのコールの CRV が 9861 であることを示しています。

ローカル エンドポイント 10.130.56.4 と外部ホスト 172.30.254.205 に対して、同時コールは 0 です。つまり H.225 セッションがまだ存在しているものの、このエンドポイント間にはアクティブ コールがないことを意味します。この状況は、 show h225 コマンドを実行したときに、コールはすでに終了しているが、H.225 セッションがまだ削除されていない場合に発生する可能性があります。または、2 つのエンドポイントが、「maintainConnection」を TRUE に設定しているため、TCP 接続をまだ開いたままにしていることを意味する可能性もあります。したがって、「maintainConnection」を再度 FALSE に設定するまで、またはコンフィギュレーション内の H.225 タイムアウト値に基づくセッションのタイムアウトが起こるまで、セッションは開いたままになります。

H.245 セッションの監視

show h245 コマンドは、スロースタートを使用しているエンドポイントがセキュリティ アプライアンスを越えて確立した H.245 セッションの情報を表示します。スロースタートは、コールの 2 つのエンドポイントが H.245 用の別の TCP コントロール チャネルを開いた場合です。ファースト スタートは、H.245 メッセージが H.225 コントロール チャネル上の H.225 メッセージの一部として交換された場合です。 debug h323 h245 event debug h323 h225 event 、および show local-host コマンドとともに、このコマンドは、H.323 検査エンジンの問題のトラブルシューティングに使用されます。

次に、 show h245 コマンドの出力例を示します。

hostname# show h245
Total: 1
LOCAL TPKT FOREIGN TPKT
1 10.130.56.3/1041 0 172.30.254.203/1245 0
MEDIA: LCN 258 Foreign 172.30.254.203 RTP 49608 RTCP 49609
Local 10.130.56.3 RTP 49608 RTCP 49609
MEDIA: LCN 259 Foreign 172.30.254.203 RTP 49606 RTCP 49607
Local 10.130.56.3 RTP 49606 RTCP 49607

セキュリティ アプライアンスを越えているアクティブな H.245 コントロール セッションが、現在 1 つあります。ローカル エンドポイントは、10.130.56.3 であり、TPKT 値が 0 であることから、このエンドポイントからの次のパケットには TPKT ヘッダーがあると予測します。TKTP ヘッダーは、各 H.225/H.245 メッセージの前に送られる 4 バイトのヘッダーです。このヘッダーで、この 4 バイトのヘッダーを含むメッセージの長さが分かります。外部のホストのエンドポイントは、172.30.254.203 であり、TPKT 値が 0 であることから、このエンドポイントからの次のパケットには TPKT ヘッダーがあると予測します。

これらのエンドポイント間でネゴシエートされたメディアには、258 という LCN があり、外部に 172.30.254.203/49608 という RTP IP アドレス/ポート ペアと 172.30.254.203/49609 という RTCP IP アドレス/ポート ペアを持ち、ローカルに 10.130.56.3/49608 という RTP IP アドレス/ポート ペアと 49609 という RTCP ポートを持っています。

259 という 2 番目の LCN には、外部に 172.30.254.203/49606 という RTP IP アドレス/ポート ペアと 172.30.254.203/49607 という RTCP IP アドレス/ポート ペアがあり、ローカルに 10.130.56.3/49606 という RTP IP アドレス/ポート ペアと 49607 という RTCP ポートを持っています。

H.323 RAS セッションの監視

show h323-ras コマンドは、セキュリティ アプライアンスを越えてゲートキーパーとその H.323 エンドポイントの間に確立されている H.323 RAS セッションの情報を表示します。 debug h323 ras event および show local-host コマンドとともに、このコマンドは、H.323 RAS 検査エンジンの問題のトラブルシューティングに使用されます。

show h323-ras コマンドは、H.323 検査エンジンの問題のトラブルシューティングに使用される接続情報を表示します。次に、 show h323-ras コマンドの出力例を示します。

hostname# show h323-ras
Total: 1
GK Caller
172.30.254.214 10.130.56.14
 

この出力は、ゲートキーパー 172.30.254.214 とそのクライアント 10.130.56.14 の間にアクティブな登録が 1 つあることを示しています。

HTTP 検査の管理

この項では、HTTP 検査エンジンの動作と、コンフィギュレーションの変更方法について説明します。ここでは、次の項目について説明します。

「HTTP 検査の概要」

「高度な HTTP 検査のイネーブル化と設定」

HTTP 検査の概要

inspect http コマンドを使用して、特定の攻撃、および HTTP トラフィックに関係する可能性があるその他の脅威から保護します。HTTP 検査は、次のようないくつかの機能を実行します。

拡張 HTTP 検査

N2H2 または Websense を使用する URL のスクリーニング

Java と ActiveX のフィルタリング

後の 2 つの機能は、 filter コマンドとともに設定します。 第17章「フィルタリング サービスの適用」 を参照してください。


no fixup protocol http コマンドは、filter url コマンドもディセーブルにします。


拡張 HTTP 検査機能はアプリケーション ファイアウォールともよばれ、HTTP メッセージが RFC 2616 に準拠し、RFC で定義された方式を使用し、その他の各種基準に準拠していることを確認します。これによって、攻撃者がネットワーク セキュリティ ポリシーに従わない HTTP メッセージを使用できないようにします。多くの場合、これらの基準、およびこれらの基準を満たさない場合のシステムの応答方法を設定できます。基準を満たさないメッセージに対して指定できるアクションは、 allow reset drop などのさまざまなコンフィギュレーション コマンドを使用して設定します。これらのアクションに加えて、イベントをログに記録するかどうかも指定できます。

HTTP メッセージに適用できる基準には、次のものがあります。

リスト(設定可能)に挙げられているメソッドを含んでいない。

特定の転送符号化方式またはアプリケーション タイプである。

HTTP トランザクションが RFC 仕様に準拠している。

メッセージ本文のサイズが、制限値(設定可能)以下である。

要求と応答のメッセージ ヘッダーのサイズが、制限値(設定可能)以下である。

URI の長さが制限値(設定可能)以下である。

メッセージ本文の content-type が、ヘッダーと一致している。

応答メッセージの content-type が、要求メッセージの accept-type フィールドと一致している。

MIME タイプが事前定義済みのリストに含まれている。

指定されたキーワードがメッセージの指定された位置にある、またはない。

拡張 HTTP 検査をイネーブルにするには、 inspect http http-map コマンドを入力します。検査を HTTP トラフィックに適用する規則は、特定の HTTP マップで定義します。HTTP マップは、 http-map コマンドと HTTP マップ コンフィギュレーション モード コマンドを入力して設定します。


) HTTP マップを使用して HTTP 検査をイネーブルにすると、デフォルトでは、アクション reset および log を使用した厳密な HTTP 検査がイネーブルになります。検査に合格しない場合に実行されるアクションは変更できますが、HTTP マップがイネーブルのままである限り、厳密な検査をディセーブルにすることはできません。


高度な HTTP 検査のイネーブル化と設定

この項の手順を使用して、次のように、デフォルトの HTTP コンフィギュレーションを変更します。

拡張 HTTP 検査(アプリケーション ファイアウォール)をイネーブルにする。

拡張 HTTP 検査のデフォルト コンフィギュレーションを変更する。

デフォルト ポート番号を変更する。

拡張 HTTP 検査をイネーブルにし設定するには、次の手順を実行します。


ステップ 1 グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map http_port
 

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

ステップ 2 クラスマップ コンフィギュレーション モードで、次の例で示すように、 match コマンドを定義します。

hostname(config-cmap)# match port tcp eq 80
hostname(config-cmap)# exit
hostname(config)#
 

連続したポート範囲を割り当てるには、次の例で示すように、 range キーワードを入力します。

hostname(config-cmap)# match port tcp range 1080-1090
 

連続しない複数のポートを HTTP 検査に割り当てるには、 access-list コマンドを入力して、各ポートに一致するアクセス コントロール エントリを定義します。次に、 match コマンドを入力して、アクセスリストを HTTP トラフィック クラスに関連付けます。

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

hostname(config)# http-map http_map_name
 

http_map_name には、次の例で示すように、HTTP マップの名前を指定します。

hostname(config)# http-map inbound_http
 

システムが HTTP マップ コンフィギュレーション モードに移行し、CLI プロンプトが次の例で示すように変化します。

hostname(config-http-map)#
 

ステップ 4 必要に応じて、サポートされる HTTP マップ コンフィギュレーション コマンドを入力して、デフォルト コンフィギュレーションを変更します( 表21-5 を参照)。

ステップ 5 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-http-map)# exit
hostname(config)#
 

ステップ 6 次のコマンドを入力して、ポリシーマップの名前を指定します。

hostname(config)# policy-map policy_map_name
 

policy_map_name には、次の例で示すように、ポリシーマップの名前を指定します。

hostname(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 7 次のコマンドを入力して、 ステップ 1 で定義したトラフィック クラスを指定し、ポリシーマップに含めます。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、http_port トラフィック クラスを現在のポリシーマップに割り当てます。

hostname(config-pmap)# class http_port
 

CLI はポリシーマップ クラス コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 8 トラフィック クラスで定義された基準と一致するトラフィックに厳密な検査を適用するには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect http inbound_http
 

ステップ 9 次のコマンドを入力して、ポリシーマップ コンフィギュレーション モードに戻ります。

hostname(config-pmap-c)# exit
hostname(config-pmap)#
 

ステップ 10 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-pmap)# exit
hostname(config)#
 

ステップ 11 次のコマンドを入力して、ポリシーマップをグローバルに適用するか、特定のインターフェイスに適用します。

hostname(config)# service-policy policy_map_name [global | interface interface_ID
 

policy_map_name には、 ステップ 6 で設定したポリシーマップを指定します。すべてのインターフェイスに適用するには global オプションを使用し、特定のインターフェイスに適用するには nameif コマンドで割り当てた名前を使用します。

たとえば、次のコマンドは、sample_policy を外部インターフェイスに適用します。

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは、sample_policy をすべてのセキュリティ アプライアンス インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 


 

例21-7 拡張 HTTP 検査のイネーブル化と設定

次の例は、アクセスリストを使用して HTTP トラフィックを識別し、HTTP マップを定義し、ポリシーを定義して、そのポリシーを外部インターフェイスに適用する方法を示しています。

hostname(config)# class-map http_port
hostname(config-cmap)# match port tcp eq 80
hostname(config-cmap)# exit
hostname(config)# http-map inbound_http
hostname(config-http-map)# content-length min 100 max 2000 action reset log
hostname(config-http-map)# content-type-verification match-req-rsp reset log
hostname(config-http-map)# max-header-length request bytes 100 action log reset
hostname(config-http-map)# max-uri-length 100 action reset log
hostname(config-http-map)# exit
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class http_port
hostname(config-pmap-c)# inspect http inbound_http
hostname(config-pmap-c)# exit
hostname(config-pmap)# exit
hostname(config)# service-policy sample_policy interface outside
 

表21-5 に、HTTP マップ コンフィギュレーション モードで使用できるコンフィギュレーション コマンドをまとめます。各コマンドの詳細なシンタックスについては、『 Cisco Security Appliance Command Reference 』のコマンドのページを参照してください。

 

表21-5 HTTP マップ コンフィギュレーション コマンド

コマンド
説明

content-length

HTTP コンテンツの長さに基づく検査をイネーブルにします。

content-type-verification

HTTP コンテンツのタイプに基づく検査をイネーブルにします。

max-header-length

HTTP ヘッダーの長さに基づく検査をイネーブルにします。

max-uri-length

URL の長さに基づく検査をイネーブルにします。

no

コマンドを無効にするか、パラメータをデフォルト値に設定します。

port-misuse

アプリケーション ファイアウォール検査をイネーブルにします。

request-method

HTTP 要求方式に基づく検査をイネーブルにします。

strict-http

厳密な HTTP 検査をイネーブルにします。

transfer-encoding

転送符号化タイプに基づく検査をイネーブルにします。


) 基準を満たさないメッセージに対して指定できるアクションは、allowresetdrop などのさまざまなコンフィギュレーション コマンドを使用して設定します。これらのアクションに加えて、イベントをログに記録するかどうかも指定できます。


MGCP 検査の管理

この項では、MGCP アプリケーション検査をイネーブルにし設定する方法と、デフォルト ポート コンフィギュレーションを変更する方法について説明します。ここでは、次の項目について説明します。

「MGCP 検査の概要」

「MGCP コール エージェントとゲートウェイの設定」

「MGCP 検査の設定とイネーブル化」

「MGCP タイムアウト値の設定」

「MGCP 検査の確認と監視」

MGCP 検査の概要

MGCP は、メディア ゲートウェイ コントローラまたはコール エージェントと呼ばれる外部のコール制御要素からメディア ゲートウェイを制御するために使用するマスター/スレーブ プロトコルです。メディア ゲートウェイは一般に、電話回線を通じた音声信号と、インターネットまたは他のパケット ネットワークを通じたデータ パケットとの間の変換を行うネットワーク要素です。NAT および PAT を MGCP とともに使用すると、限られた外部(グローバル)アドレスのセットで、内部ネットワークの多数のデバイスをサポートできます。メディア ゲートウェイの例は次のとおりです。

トランキング ゲートウェイ。電話ネットワークと Voice over IP ネットワークとの間のインターフェイスです。このようなゲートウェイは通常、大量のデジタル回線を管理します。

住宅用ゲートウェイ。従来のアナログ(RJ11)インターフェイスを Voice over IP ネットワークに提供します。住宅用ゲートウェイの例としては、ケーブル モデムやケーブル セットトップ ボックス、xDSL 装置、ブロードバンド ワイヤレス装置などがあります。

ビジネス ゲートウェイ。従来のデジタル PBX(構内交換機)インターフェイスまたは統合 soft PBX インターフェイスを Voice over IP ネットワークに提供します。

MGCP メッセージは UDP を介して送信されます。応答はコマンドの送信元アドレス(IP アドレスと UDP ポート番号)に返送されますが、コマンド送信先と同じアドレスからの応答は到達しない場合があります。これは、複数のコール エージェントがフェールオーバー コンフィギュレーションで使用されているときに、コマンドを受信したコール エージェントが制御をバックアップ コール エージェントに引き渡し、バックアップ コール エージェントから応答を送信する場合に起こる可能性があります。図21-5 で、NAT と MGCP を同時に使用する方法を示します。

図21-5 NAT と MGCP の使用

 

MGCP エンドポイントは、物理または仮想のデータ送信元および宛先です。メディア ゲートウェイには、他のマルチメディア エンドポイントとのメディア セッションを確立して制御するために、コール エージェントが接続を作成、変更、および削除できるエンドポイントが含まれています。また、コール エージェントは、特定のイベントを検出してシグナルを生成するようにエンドポイントに指示できます。エンドポイントは、サービス状態の変化を自動的にコール エージェントに伝達します。

MGCP トランザクションは、コマンドと必須応答で構成されます。次の 8 種類のコマンドがあります。

CreateConnection

ModifyConnection

DeleteConnection

NotificationRequest

Notify

AuditEndpoint

AuditConnection

RestartInProgress

最初の 4 つのコマンドは、コール エージェントからゲートウェイに送信されます。Notify コマンドは、ゲートウェイからコール エージェントに送信されます。ゲートウェイは、DeleteConnection を送信することもあります。MGCP ゲートウェイをコール エージェントに登録するには、RestartInProgress コマンドを使用します。AuditEndpoint コマンドおよび AuditConnection コマンドは、コール エージェントからゲートウェイに送信されます。

すべてのコマンドは、コマンドヘッダーと、その後ろに続くオプションのセッション記述で構成されます。すべての応答は、応答ヘッダーと、その後ろに続くオプションのセッション記述で構成されます。

MGCP を使用するには、通常、少なくとも 2 つの inspect コマンドを設定する必要があります。1 つはゲートウェイがコマンドを受信するポート用で、もう 1 つはコール エージェントがコマンドを受信するポート用です。通常、コール エージェントは、ゲートウェイのデフォルトの MGCP ポート(2427)にコマンドを送信し、ゲートウェイは、コール エージェントのデフォルトの MGCP ポート(2727)にコマンドを送信します。

MGCP コール エージェントとゲートウェイの設定

1 つ以上のゲートウェイを管理できるコール エージェントのグループを指定するには、 call-agent コマンドを使用します。コール エージェントのグループ情報は、どのコール エージェントも応答を送信できるように、グループ内の(ゲートウェイがコマンドを送信する先以外の)コール エージェントに接続を開くために使用されます。同じ group_id のコール エージェントは、同じグループに属します。1 つのコール エージェントは複数のグループに所属できます。 group_id オプションは、0 ~ 4294967295 の数字です。 ip_address オプションは、コール エージェントの IP アドレスを指定します。

コール エージェントのグループを指定するには、 mgcp-map コマンドを入力するとアクセスできる MGCP マップ コンフィギュレーション モードで call-agent コマンドを入力します。このコンフィギュレーションを削除するには、コマンドの no 形式を入力します。

特定のゲートウェイを管理しているコール エージェントのグループを指定するには、 gateway コマンドを使用します。 ip_address オプションを使用して、ゲートウェイの IP アドレスを指定します。 group_id オプションは 0 ~ 4294967295 の数字です。この数字は、ゲートウェイを管理しているコール エージェントの group_id に対応している必要があります。1 つのゲートウェイは 1 つのグループだけに所属できます。


) MGCP コール エージェントは、AUEP メッセージを送信して、MGCP エンドポイントが存在するかどうかを判定します。これによって、セキュリティ アプライアンスを通過するフローが確立され、MGCP エンドポイントをコール エージェントに登録できます。


MGCP 検査の設定とイネーブル化

mgcp-map コマンドを使用して、MGCP 検査のパラメータを定義するために特定のマップを指定します。このコマンドを入力すると、システムがコンフィギュレーション モードに入って、個々のマップを定義するためのさまざまなコマンドを入力できるようになります。MGCP マップを定義した後、inspect mgcp コマンドを入力して、マップをイネーブルにします。モジュラ ポリシー フレームワークを使用して、定義したトラフィックのクラスに inspect コマンドを適用し、特定のインターフェイスにポリシーを適用します。

MGCP アプリケーション検査をイネーブルにし設定するには、次の手順を実行します。


ステップ 1 MGCP トラフィックの受信に必要な 2 つのポートを特定するアクセス コントロール リストを定義します。たとえば、次のコマンドは、MGCP 検査のデフォルト ポートを特定します。

hostname(config)# access-list mgcp_acl permit udp any any eq 2427
hostname(config)# access-list mgcp_acl permit udp any any eq 2727
hostname(config)# class-map mgcp-traffic
hostname(config-cmap)# match access-list mgcp_acl
 

グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map mgcp_port
 

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

ステップ 2 クラスマップ コンフィギュレーション モードで、次の例で示すように、 match コマンドを定義します。

hostname(config-cmap)# match port udp eq 2427
hostname(config-cmap)# exit
hostname(config)#
 

ステップ 3 (オプション)次のコマンドを入力して、MGCP マップを作成します。

hostname(config)# mgcp-map policy_map_name
 

) MGCP マップは、ファイアウォールがピンホールを開ける必要があるコール エージェントとゲートウェイがネットワークに複数ある場合にのみ必要です。


mgcp_map_name には、次の例で示すように、MGCP マップの名前を指定します。

hostname(config)# mgcp-map inbound_mgcp
 

システムが MGCP マップ コンフィギュレーション モードに移行し、CLI プロンプトが次の例で示すように変化します。

hostname(config-mgcp-map)#
 

ステップ 4 次の例で示すように、コール エージェントを設定します。

hostname(config-mgcp-map)# call-agent 10.10.11.5 101
hostname(config-mgcp-map)# call-agent 10.10.11.6 101
hostname(config-mgcp-map)# call-agent 10.10.11.7 102
hostname(config-mgcp-map)# call-agent 10.10.11.8 102
 

ステップ 5 次の例で示すように、ゲートウェイを設定します。

hostname(config-mgcp-map)# gateway 10.10.10.115 101
hostname(config-mgcp-map)# gateway 10.10.10.116 102
hostname(config-mgcp-map)# gateway 10.10.10.117 102
 

ステップ 6 (オプション)MGCP コマンド キューに入れることができるコマンドの最大数を変更するには、次のコマンドを入力します。

hostname(config-mgcp-map)# command-queue command_limit
hostname(config-mgcp-map)# exit
hostname(config)#
 

ステップ 7 次のコマンドを入力して、ポリシーマップの名前を指定します。

hostname(config)# policy-map policy_map_name
 

policy_map_name には、次の例で示すように、ポリシーマップの名前を指定します。

hostname(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 8 次のコマンドを入力して、 ステップ 1 で定義したトラフィック クラスを指定し、ポリシーマップに含めます。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、mgcp_port トラフィック クラスを現在のポリシーマップに割り当てます。

hostname(config-pmap)# class mgcp_port
 

CLI はポリシーマップ クラス コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 9 (オプション)セキュリティ アプライアンスが MGCP トラフィックの受信に使用するデフォルト ポートを変更するには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect mgcp inbound_mgcp
 

MGCP マップを使用しない場合は、次のコマンドを入力します。

hostname(config-pmap-c)# inspect mgcp
 

ステップ 10 次のコマンドを入力して、ポリシーマップ コンフィギュレーション モードに戻ります。

hostname(config-pmap-c)# exit
hostname(config-pmap)#
 

ステップ 11 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-pmap)# exit
hostname(config)#

ステップ 12 次のコマンドを入力して、ポリシーマップをグローバルに適用するか、特定のインターフェイスに適用します。

hostname(config)# service-policy policy_map_name [global | interface interface_ID
 

policy_map_name には、 ステップ 7 で設定したポリシーマップを指定します。すべてのインターフェイスに適用するには global オプションを使用し、特定のインターフェイスに適用するには nameif コマンドで割り当てた名前を使用します。

たとえば、次のコマンドは、sample_policy を外部インターフェイスに適用します。

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは、sample_policy をすべてのセキュリティ アプライアンス インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 


 

例21-8は、MGCP トラフィックを識別し、MGCP マップを定義し、ポリシーを定義して、そのポリシーを外部インターフェイスに適用する方法を示しています。これによって、デフォルト ポート(2427 および 2727)の MGCP トラフィックと一致するクラスマップが作成されます。このサービス ポリシーが、外部インターフェイスに適用されます。

例21-8 MGCP 検査のイネーブル化と設定

hostname(config)# access-list mgcp_acl permit udp any any eq 2427
hostname(config)# access-list mgcp_acl permit udp any any eq 2727
hostname(config)# class-map mgcp-traffic
hostname(config-cmap)# match access-list mgcp_acl
hostname(config-cmap)# exit
hostname(config)# mgcp-map inbound_mgcp
hostname(config-mgcp-map)# call-agent 10.10.11.5 101
hostname(config-mgcp-map)# call-agent 10.10.11.6 101
hostname(config-mgcp-map)# call-agent 10.10.11.7 102
hostname(config-mgcp-map)# call-agent 10.10.11.8 102
hostname(config-mgcp-map)# gateway 10.10.10.115 101
hostname(config-mgcp-map)# gateway 10.10.10.116 102
hostname(config-mgcp-map)# gateway 10.10.10.117 102
hostname(config-mgcp-map)# command-queue 150
hostname(config-mgcp-map)# exit
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class mgcp_port
hostname(config-pmap-c)# inspect mgcp inbound_mgcp
hostname(config-pmap-c)# exit
hostname(config)# service-policy sample_policy interface outside
 

このコンフィギュレーションによって、コール エージェント 10.10.11.5 と 10.10.11.6 がゲートウェイ 10.10.10.115 を制御でき、コール エージェント 10.10.11.7 と 10.10.11.8 がゲートウェイ 10.10.10.116 と 10.10.10.117 の両方を制御できるようになります。キューに入れることができる MGCP コマンドの最大数は、150 です。

すべてのインターフェイスで MGCP 検査をイネーブルにするには、 interface outside の代わりに global パラメータを入力します。

MGCP タイムアウト値の設定

timeout mgcp コマンドを使用して、MGCP メディア接続を閉じるまでの非アクティビティ間隔を設定できます。デフォルトは 5 分です。

timeout mgcp-pat コマンドを使用して、PAT xlate のタイムアウトを設定できます。MGCP にはキープアライブ メカニズムがないため、Cisco 以外の MGCP ゲートウェイ(コール エージェント)を使用すると、デフォルトのタイムアウト間隔(30 秒)の後で PAT xlate は切断されます。

MGCP 検査の確認と監視

show mgcp commands コマンドは、コマンド キュー内の MGCP コマンド数を表示します。 show mgcp sessions コマンドは、既存の MGCP セッション数を表示します。 detail オプションは、各コマンド(またはセッション)に関する追加情報を出力に含めます。次に、 show mgcp commands コマンドの出力例を示します。

hostname# show mgcp commands
1 in use, 1 most used, 200 maximum allowed
CRCX, gateway IP: host-pc-2, transaction ID: 2052, idle: 0:00:07
 

次に、 show mgcp detail コマンドの出力例を示します。

hostname# show mgcp commands detail
1 in use, 1 most used, 200 maximum allowed
CRCX, idle: 0:00:10
Gateway IP host-pc-2
Transaction ID 2052
Endpoint name aaln/1
Call ID 9876543210abcdef
Connection ID
Media IP 192.168.5.7
Media port 6058
 

次に、 show mgcp sessions コマンドの出力例を示します。

hostname# show mgcp sessions
1 in use, 1 most used
Gateway IP host-pc-2, connection ID 6789af54c9, active 0:00:11
 

次に、 show mgcp sessions detail コマンドの出力例を示します。

hostname# show mgcp sessions detail
1 in use, 1 most used
Session active 0:00:14
Gateway IP host-pc-2
Call ID 9876543210abcdef
Connection ID 6789af54c9
Endpoint name aaln/1
Media lcl port 6166
Media rmt IP 192.168.5.7
Media rmt port 6058
 

RTSP 検査の管理

この項では、RTSP アプリケーション検査をイネーブルにする方法と、デフォルト ポート コンフィギュレーションを変更する方法について説明します。ここでは、次の項目について説明します。

「RTSP 検査の概要」

「RealPlayer の使用」

「制限事項」

「RTSP 検査のイネーブル化と設定」

RTSP 検査の概要

RTSP アプリケーション検査をイネーブルにするには、またはセキュリティ アプライアンスがリスンするポートを変更するには、ポリシーマップ クラス コンフィギュレーション モードで inspect rtsp コマンドを入力します。ポリシーマップ クラス コンフィギュレーション モードにアクセスするには、ポリシーマップ コンフィギュレーション モードで class コマンドを入力します。このコンフィギュレーションを削除するには、コマンドの no 形式を入力します。このコマンドは、デフォルトではディセーブルになっています。

inspect rtsp コマンドによって、セキュリティ アプライアンスが RTSP パケットを通過させることができるようになります。RTSP は、RealAudio、RealNetworks、Apple QuickTime 4、RealPlayer、および Cisco IP/TV 接続によって使用されます。


) Cisco IP/TV では、RTSP TCP ポート 554 と TCP 8554 を使用します。


RTSP アプリケーションは、制御チャネルとしての TCP(例外的に UDP)とともに予約済みポート 554 を使用します。セキュリティ アプライアンスは、RFC 2326 に準拠して、TCP だけをサポートします。この TCP 制御チャネルは、クライアント上で設定されているトランスポート モードに応じて、音声/ビデオ トラフィックの送信に使用されるデータ チャネルのネゴシエーションに使用されます。

サポートされている RDT トランスポートは、rtp/avp、rtp/avp/udp、x-real-rdt、x-real-rdt/udp、x-pn-tng/udp です。

セキュリティ アプライアンスは、ステータス コード 200 の SETUP 応答メッセージを解析します。SETUP 応答メッセージが、着信方向に移動している場合は、サーバはセキュリティ アプライアンスとの相対位置関係で外部に存在することになるため、サーバから着信する接続に対してダイナミック チャネルを開くことが必要になります。この応答メッセージが発信方向である場合、セキュリティ アプライアンスは、ダイナミック チャネルを開く必要はありません。

RFC 2326 では、クライアント ポートとサーバ ポートが、SETUP 応答メッセージ内に含まれていることは必要でないため、セキュリティ アプライアンスでは、状態を維持し、SETUP メッセージ内のクライアント ポートを記憶します。QuickTime が、SETUP メッセージ内にクライアント ポートを設定すると、サーバは、サーバ ポートだけで応答します。

RTSP 検査は、PAT またはデュアル NAT をサポートしていません。また、セキュリティ アプライアンスは、RTSP メッセージが HTTP メッセージ内に隠される HTTP クローキングを認識できません。

RealPlayer の使用

RealPlayer を使用するときは、転送モードを正しく設定することが重要です。セキュリティ アプライアンスでは、サーバからクライアントに、またはその逆に access-list コマンドを追加します。RealPlayer では、 Options > Preferences > Transport > RTSP Settings をクリックすることで、転送モードを変更します。

RealPlayer で TCP モードを使用する場合は、 Use TCP to Connect to Server チェックボックスおよび Attempt to use TCP for all content チェックボックスをオンにします。セキュリティ アプライアンスで、検査エンジンを設定する必要はありません。

RealPlayer 上で UDP モードを使用している場合、 Use TCP to Connect to Server チェックボックスと Attempt to use UDP for all content チェックボックスをオンにします。 Multicast 経由で入手できないライブ コンテンツに対しても同様です。 セキュリティ アプライアンスで、 inspect rtsp port コマンドを追加します。

制限事項

inspect rtsp コマンドには、次の制約事項が適用されます。セキュリティ アプライアンスは、マルチキャスト RTSP または UDP による RTSP メッセージをサポートしません。

inspect rtsp コマンドは、PAT をサポートしていません。

セキュリティ アプライアンスには、RTSP メッセージが HTTP メッセージ内に隠されている HTTP クローキングを認識する機能はありません。

埋め込み IP アドレスが HTTP メッセージまたは RTSP メッセージの一部として SDP ファイル内に含まれているため、セキュリティ アプライアンスは、RTSP メッセージに NAT を実行できません。パケットはフラグメント化する可能性があり、セキュリティ アプライアンスはフラグメント化されたパケットに対して NAT を実行できません。

Cisco IP/TV では、メッセージの SDP 部分についてセキュリティ アプライアンスが実行する NAT の数は、Content Manager にあるプログラム リストの数に比例します(各プログラム リストには、少なくとも 6 個の埋め込み IP アドレスを含めることができます)。

Apple QuickTime 4 または RealPlayer 用の NAT を設定できます。Cisco IP/TV は、ビューアと Content Manager が外部ネットワークにあり、サーバが内部ネットワークにあるときにだけ NAT を使用できます。

RTSP 検査のイネーブル化と設定

RTSP アプリケーション検査をイネーブルにし設定するには、次の手順を実行します。


ステップ 1 RTSP トラフィックの受信に必要な 2 つのポートを特定するアクセス コントロール リストを定義します。たとえば、次のコマンドは、RTSP 検査のデフォルト ポートを特定します。

hostname(config)# access-list rtsp_acl permit tcp any any eq 554
hostname(config)# access-list rtsp_acl permit tcp any any eq 8554
 

ステップ 2 グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map rtsp_port

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

ステップ 3 クラスマップ コンフィギュレーション モードで、次の例で示すように、 match コマンドを定義します。

hostname(config-cmap)# match access-list rtsp_acl
hostname(config-cmap)# exit
hostname(config)#
 

ステップ 4 次のコマンドを入力して、ポリシーマップの名前を指定します。

hostname(config)# policy-map policy_map_name
 

policy_map_name には、次の例で示すように、ポリシーマップの名前を指定します。

hostname(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 5 次のコマンドを入力して、 ステップ 2 で定義したトラフィック クラスを指定し、ポリシーマップに含めます。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、rtsp_port トラフィック クラスを現在のポリシーマップに割り当てます。

hostname(config-pmap)# class rtsp_port
 

CLI はポリシーマップ クラス コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 6 (オプション)セキュリティ アプライアンスが RTSP トラフィックの受信に使用するデフォルト ポートを変更するには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect rtsp
 

ステップ 7 次のコマンドを入力して、ポリシーマップ コンフィギュレーション モードに戻ります。

hostname(config-pmap-c)# exit
hostname(config-pmap)#
 

ステップ 8 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-pmap)# exit
hostname(config)#
 

ステップ 9 次のコマンドを入力して、ポリシーマップをグローバルに適用するか、特定のインターフェイスに適用します。

hostname(config)# service-policy policy_map_name [global | interface interface_ID
 

policy_map_name には、 ステップ 4 で設定したポリシーマップを指定します。すべてのインターフェイスに適用するには global オプションを使用し、特定のインターフェイスに適用するには nameif コマンドで割り当てた名前を使用します。

たとえば、次のコマンドは、sample_policy を外部インターフェイスに適用します。

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは、sample_policy をすべてのセキュリティ アプライアンス インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 


 

例21-9 RTSP 検査のイネーブル化と設定

次の例で示すように、RTSP 検査エンジンをイネーブルにして、デフォルト ポート(554 および 8554)で RTSP トラフィックと一致するクラスマップを作成します。このサービス ポリシーが、外部インターフェイスに適用されます。

hostname(config)# access-list rtsp_acl permit tcp any any eq 554
hostname(config)# access-list rtsp_acl permit tcp any any eq 8554
hostname(config)# class-map rtsp-traffic
hostname(config-cmap)# match access-list rtsp_acl
hostname(config-cmap)# exit
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class rtsp_port
hostname(config-pmap-c)# inspect rtsp 554
hostname(config-pmap-c)# inspect rtsp 8554
hostname(config-pmap-c)# exit
hostname(config)# service-policy sample_policy interface outside
 

すべてのインターフェイスで RTSP 検査をイネーブルにするには、 interface outside の代わりに global パラメータを入力します。

SIP 検査の管理

この項では、SIP アプリケーション検査をイネーブルにする方法と、デフォルト ポート コンフィギュレーションを変更する方法について説明します。ここでは、次の項目について説明します。

「SIP 検査の概要」

「SIP インスタント メッセージ」

「SIP 検査のイネーブル化と設定」

「SIP タイムアウト値の設定」

「SIP 検査の確認と監視」

SIP 検査の概要

IETF で定義されている SIP により、特に 2 者間の音声会議などのコール処理セッションまたは「コール」が使用可能になります。SIP は、コール シグナリング用の SDP で動作します。SDP は、メディア ストリーム用のポートを指定します。SIP を使用して、セキュリティ アプライアンスは任意の SIP VoIP ゲートウェイおよび VoIP プロキシ サーバをサポートできます。SIP と SDP の定義は、次の RFC に記載されています。

SIP:Session Initiation Protocol、RFC 2543

SDP:Session Description Protocol、RFC 2327

セキュリティ アプライアンス経由の SIP コールをサポートする場合は、シグナリング メッセージは予約済みの宛先ポート(UDP/TCP 5060)経由で送信され、メディア ストリームはダイナミックに割り当てられるため、メディア接続アドレスのシグナリング メッセージ、メディア ポート、およびメディアの初期接続を検査する必要があります。また、SIP は、IP パケットのユーザデータ部分に IP アドレスを埋め込みます。SIP 検査は、それらの埋め込まれた IP アドレスに NAT を適用します。

PAT を SIP で使用する場合、次の制限事項が適用されます。

セキュリティ アプライアンスで保護されているネットワークの SIP プロキシにリモート エンドポイントを登録しようとすると、一定の条件下で登録が失敗します。この条件とは、PAT がリモート エンドポイント用に設定され、SIP レジストラ サーバが外部ネットワークにある場合、およびエンドポイントからプロキシ サーバに送信された REGISTER メッセージの接続先フィールドにポートが設定されていない場合です。

PAT を使用しているときに、SDP 部分の所有者/作成者(o=)フィールドの IP アドレスが接続フィールド(c=)の IP アドレスと異なるパケットを SIP デバイスが送信すると、o= フィールドの IP アドレスが正しく変換されない場合があります。これは、o= フィールドでポート値を提供しない SIP プロトコルの制限によるものです。

SIP インスタント メッセージ

インスタント メッセージとは、ほぼリアルタイムにユーザ間でメッセージを転送することです。SIP は、Windows Messenger RTC Client バージョン 4.7.0105 を使用する Windows XP のチャット機能のみをサポートします。次の RFC で定義されているように、MESSAGE/INFO 方式および 202 Accept 応答を使用して IM をサポートします。

Session Initiation Protocol(SIP)-Specific Event Notification、RFC 3265

Session Initiation Protocol(SIP)Extension for Instant Messaging、RFC 3428

MESSAGE/INFO 要求は、登録または加入の後、任意の時点で着信する可能性があります。たとえば、2 人のユーザはいつでもオンラインになる可能性がありますが、何時間もチャットをすることはありません。そのため、SIP 検査エンジンは、設定されている SIP タイムアウト値に従ってタイムアウトするピンホールを開きます。この値は、登録継続時間よりも 5 分以上長く設定する必要があります。登録継続時間は Contact Expires 値で定義し、通常 30 分です。

MESSAGE/INFO 要求は、通常、ポート 5060 以外の動的に割り当てられたポートを使用して送信されるため、SIP 検査エンジンを通過する必要があります。


) 現在は、チャット機能のみがサポートされています。ホワイトボード、ファイル転送、アプリケーション共有はサポートされていません。RTC Client 5.0 はサポートされていません。


SIP 検査は、テキストベースの SIP メッセージを NAT 処理し、メッセージの SDP 部分の内容長を再計算した後、パケット長とチェックサムを再計算します。また、エンドポイントが受信すべきアドレスまたはポートとして、SIP メッセージの SDP 部分に指定されたポートに対するメディア接続をダイナミックに開きます。

SIP 検査には、送信元および宛先と同様に、通話を SIP ペイロードから識別するインデックス CALL_ID/FROM/TO を持つデータベースがあります。このデータベースには、SDP メディア情報フィールドとメディア タイプに含まれていたメディア アドレスとメディア ポートが格納されます。1 つのセッションに対して、複数のメディア アドレスとポートが存在することが可能です。RTP/RTCP 接続は、これらのメディア アドレス/ポートを使用して、2 つのエンドポイント間に開かれます。

初期コール セットアップ(INVITE)メッセージでは、予約済みポート 5060 を使用する必要があります。ただし、後続のメッセージにはこのポート番号がない場合もあります。SIP 検査エンジンはシグナリング接続のピンホールを開き、それらの接続を SIP 接続としてマークします。これは、SIP アプリケーションに到達し、NAT 処理すべきメッセージに対して行われます。

コールのセットアップ時に、SIP セッションは、着呼エンドポイントが受信する RTP ポートを示す応答メッセージにおいて、メディア アドレスとメディア ポートが受信されるまで「一時的な」状態にあるものと見なされます。1 分以内に、応答メッセージの受信に障害があった場合は、シグナリング接続は切断されます。

最終的なハンドシェイクが行われると、コール状態はアクティブに移行し、シグナリング接続は、BYE メッセージの受信まで継続されます。

内部エンドポイントが、外部エンドポイントに発呼した場合、メディア ホールが、外部インターフェイスに対して開き、内部エンドポイントから送信された INVITE メッセージで指定された内部エンドポイントのメディア アドレスとメディア ポートに、RTP/RTCP UDP パケットが流れることが許可されます。内部インターフェイスに対する要求外の RTP/RTCP UDP パケットは、セキュリティ アプライアンスのコンフィギュレーションにより特別に許可されない限り、セキュリティ アプライアンスを通過できません。

SIP 検査のイネーブル化と設定

SIP 検査をイネーブルにするには、または SIP トラフィックの受信に使用するデフォルト ポートを変更するには、次の手順を実行します。


ステップ 1 グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map sip_port
 

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

ステップ 2 クラスマップ コンフィギュレーション モードで、次の例で示すように、 match コマンドを定義します。

hostname(config-cmap)# match port tcp eq 5060
hostname(config-cmap)# exit
hostname(config)#
 

連続したポート範囲を割り当てるには、次の例で示すように、 range キーワードを入力します。

hostname(config-cmap)# match port tcp range 5060-5070
 

連続しない複数のポートを SIP 検査に割り当てるには、 access-list コマンドを入力して、各ポートに一致するアクセス コントロール エントリを定義します。次に、 match コマンドを入力して、アクセスリストを SIP トラフィック クラスに関連付けます。

ステップ 3 次のコマンドを入力して、ポリシーマップの名前を指定します。

hostname(config)# policy-map policy_map_name
 

policy_map_name には、次の例で示すように、ポリシーマップの名前を指定します。

hostname(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 4 次のコマンドを入力して、 ステップ 1 で定義したトラフィック クラスを指定し、ポリシーマップに含めます。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、sip_port トラフィック クラスを現在のポリシーマップに割り当てます。

hostname(config-pmap)# class sip_port
 

CLI はポリシーマップ クラス コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 5 (オプション)セキュリティ アプライアンスが SIP トラフィックの受信に使用するデフォルト ポートを変更するには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect sip
 

ステップ 6 次のコマンドを入力して、ポリシーマップ コンフィギュレーション モードに戻ります。

hostname(config-pmap-c)# exit
hostname(config-pmap)#
 

ステップ 7 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-pmap)# exit
hostname(config)#
 

ステップ 8 次のコマンドを入力して、ポリシーマップをグローバルに適用するか、特定のインターフェイスに適用します。

hostname(config)# service-policy policy_map_name [global | interface interface_ID
 

policy_map_name には、 ステップ 3 で設定したポリシーマップを指定します。すべてのインターフェイスに適用するには global オプションを使用し、特定のインターフェイスに適用するには nameif コマンドで割り当てた名前を使用します。

たとえば、次のコマンドは、sample_policy を外部インターフェイスに適用します。

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは、sample_policy をすべてのセキュリティ アプライアンス インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 


 

例21-10で示すように、SIP 検査エンジンをイネーブルにして、デフォルト ポート(5060)で SIP トラフィックと一致するクラスマップを作成します。このサービス ポリシーが、外部インターフェイスに適用されます。

例21-10 SIP アプリケーション検査のイネーブル化

hostname(config)# class-map sip_port
hostname(config-cmap)# match port tcp eq 5060
hostname(config-cmap)# exit
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class sip_port
hostname(config-pmap-c)# inspect sip 5060
hostname(config-pmap-c)# exit
hostname(config)# service-policy sample_policy interface outside
 

すべてのインターフェイスで SIP 検査をイネーブルにするには、 interface outside の代わりに global パラメータを入力します。

SIP タイムアウト値の設定

メディア接続は、接続がアイドル状態になってから 2 分以内に切断されます。ただし、これは設定可能なタイムアウトであり、時間間隔は変更することが可能です。SIP 制御接続のタイムアウトを設定するには、次のコマンドを入力します。

timeout sip
 

このコマンドは、SIP 制御接続を閉じるまでのアイドル タイムアウトを設定します。

SIP メディア接続のタイムアウトを設定するには、次のコマンドを入力します。

timeout sip_media
 

このコマンドは、SIP メディア接続を閉じるまでのアイドル タイムアウトを設定します。

SIP 検査の確認と監視

show sip コマンドは、SIP 検査エンジンの問題のトラブルシューティングに役立ちます。説明は、 inspect protocol sip udp 5060 コマンドと一緒にします。 show timeout sip コマンドは、指示されているプロトコルのタイムアウト値を表示します。

show sip コマンドは、セキュリティ アプライアンスを超えて確立されている SIP セッションの情報を表示します。 debug sip show local-host コマンドとともに、このコマンドは、SIP 検査エンジンの問題のトラブルシューティングに使用されます。


show sip コマンドを入力する前に pager コマンドを設定することを推奨します。多くの SIP セッション レコードが存在し、pager コマンドが設定されていない場合、show sip コマンドの出力が最後まで到達するには、しばらく時間がかかることがあります。


次に、 show sip コマンドの出力例を示します。

hostname# show sip
Total: 2
call-id c3943000-960ca-2e43-228f@10.130.56.44
state Call init, idle 0:00:01
call-id c3943000-860ca-7e1f-11f7@10.130.56.45
state Active, idle 0:00:06
 

この例は、セキュリティ アプライアンス上の 2 つのアクティブな SIP セッションを示しています(Total フィールドで示されているように)。各 call-id は、コールを表しています。

最初のセッションは、call-id c3943000-960ca-2e43-228f@10.130.56.44 で、Call Init 状態にあります。これは、このセッションはまだコール セットアップ中であることを示しています。コール セットアップは、コールへの最後の応答が受信されるまでは完了しません。たとえば、発信者はすでに INVITE を送信して、100 Response を受信した可能性がありますが、200 OK はまだ受信していません。したがって、コール セットアップはまだ完了していません。1xx で始まっていない応答メッセージは最後の応答と考えられます。このセッションは、1 秒間アイドル状態でした。

2 番目のセッションは、Active 状態です。ここでは、コール セットアップは完了して、エンドポイントはメディアを交換しています。このセッションは、6 秒間アイドル状態でした。

Skinny(SCCP)検査の管理

この項では、SCCP アプリケーション検査をイネーブルにする方法と、デフォルト ポート コンフィギュレーションを変更する方法について説明します。ここでは、次の項目について説明します。

「SCCP 検査の概要」

「Cisco IP Phone のサポート」

「制限事項」

「SCCP 検査の確認と監視」

SCCP 検査の概要

Skinny(SCCP)は、VoIP ネットワークで使用される単純化されたプロトコルです。SCCP を使用する Cisco IP Phone は、H.323 環境でも使用できます。Cisco CallManager と併用すると、SCCP クライアントは、H.323 準拠端末と同時使用できます。セキュリティ アプライアンスにおけるアプリケーション層機能では、SCCP Version 3.3 が認識されます。アプリケーション層ソフトウェアの機能により、SCCP シグナリング パケットの NAT が提供されるため、SCCP シグナリング パケットとメディア パケットのすべてが、セキュリティ アプライアンスを通過することが保証されます。

SCCP プロトコルのバージョンには 2.4、3.0.4、3.1.1、3.2、および 3.3.2 の 5 つがあります。セキュリティ アプライアンスは、Version 3.3.2 までのすべてのバージョンをサポートします。セキュリティ アプライアンスは、SCCP の PAT サポートと NAT サポートの両方を提供します。PAT は、IP Phone で使用するグローバル IP アドレスの数が限られている場合に必要です。

Cisco CallManager と Cisco IP Phone 間の通常のトラフィックでは SCCP が使用され、特別な設定がなくても SCCP 検査によるトラフィック処理が行われます。セキュリティ アプライアンスは、DHCP オプション 150 および 66 もサポートします。これによって、セキュリティ アプライアンスは、TFTP サーバの位置を Cisco IP Phone などの DHCP クライアントに送信できます。Cisco IP Phone では、デフォルト ルートを設定する DHCP オプション 3 を要求に含めることもできます。詳細については、 第8章「IP ルーティングと DHCP サービスの設定」 「DHCP サーバを利用する Cisco IP Phone の使用方法」を参照してください。

Cisco IP Phone のサポート

Cisco IP Phone と比較して Cisco CallManager の方がセキュリティの高いインターフェイスに配置されているトポロジにおいて、NAT が Cisco CallManager IP アドレスに必要な場合、マッピングはスタティックである必要があります。これは、Cisco IP Phone では Cisco CallManager IP アドレスをコンフィギュレーションで明示的に指定する必要があるためです。識別スタティック エントリを使用して、より高いセキュリティ インターフェイスの Cisco CallManager が Cisco IP Phone からの登録を受け付けるようにできます。

Cisco IP Phone では、TFTP サーバにアクセスして、Cisco CallManager サーバに接続するために必要な設定情報をダウンロードする必要があります。

TFTP サーバと比較して Cisco IP Phone の方がセキュリティの低いインターフェイス上にある場合は、アクセスリストを使用して UDP ポート 69 の保護された TFTP サーバに接続する必要があります。TFTP サーバに対してはスタティック エントリが必要ですが、識別スタティック エントリにする必要はありません。NAT を使用する場合、識別スタティック エントリは同じ IP アドレスにマッピングされます。PAT を使用する場合は、同じ IP アドレスとポートにマッピングされます。

TFTP サーバおよび Cisco CallManager と比較して Cisco IP Phone の方がセキュリティの高いインターフェイスにあるときは、Cisco IP Phone で接続を開始するためにアクセスリストもスタティック エントリも必要ありません。

制限事項

SCCP に対する現在のバージョンの PAT および NAT サポートに適用される制限は、次のとおりです。

PAT は alias コマンドを含むコンフィギュレーションでは動作しません。

外部 NAT も PAT もサポートされません。


) SCCP コールのステートフル フェールオーバーは、コール セットアップ中のコールを除き、サポートされるようになりました。


内部の Cisco CallManager のアドレスが NAT または PAT 用に別の IP アドレスかポートを設定している場合、セキュリティ アプライアンスは現在のところ TFTP を経由して転送するファイルの内容に対して NAT または PAT をサポートしていないため、外部の Cisco IP Phone 用の登録は失敗します。セキュリティ アプライアンスは TFTP メッセージの NAT をサポートし、TFTP ファイル用にピンホールを開いてセキュリティ アプライアンスを通過できるようにしますが、電話の登録中に TFTP を使用して転送された Cisco IP Phone のコンフィギュレーション ファイルに埋め込まれた Cisco CallManager の IP アドレスおよびポートを変換することはできません。

SCCP 検査をイネーブルにするには、または SCCP トラフィックの受信に使用するデフォルト ポートを変更するには、次の手順を実行します。


ステップ 1 グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map sccp_port
 

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

ステップ 2 クラスマップ コンフィギュレーション モードで、次の例で示すように、 match コマンドを定義します。

hostname(config-cmap)# match port tcp eq 2000
hostname(config-cmap)# exit
hostname(config)#
 

連続したポート範囲を割り当てるには、次の例で示すように、 range キーワードを入力します。

hostname(config-cmap)# match port tcp range 2000-2010
 

連続しない複数のポートを SCCP 検査に割り当てるには、 access-list コマンドを入力して、各ポートに一致するアクセス コントロール エントリを定義します。次に、 match コマンドを入力して、アクセスリストを SCCP トラフィック クラスに関連付けます。

ステップ 3 次のコマンドを入力して、ポリシーマップの名前を指定します。

hostname(config)# policy-map policy_map_name
 

policy_map_name には、次の例で示すように、ポリシーマップの名前を指定します。

hostname(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 4 次のコマンドを入力して、 ステップ 1 で定義したトラフィック クラスを指定し、ポリシーマップに含めます。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、sccp_port トラフィック クラスを現在のポリシーマップに割り当てます。

hostname(config-pmap)# class sccp_port
 

CLI はポリシーマップ クラス コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 5 (オプション)セキュリティ アプライアンスが SCCP トラフィックの受信に使用するデフォルト ポートを変更するには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect skinny
 

ステップ 6 次のコマンドを入力して、ポリシーマップ コンフィギュレーション モードに戻ります。

hostname(config-pmap-c)# exit
hostname(config-pmap)#
 

ステップ 7 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-pmap)# exit
hostname(config)#
 

ステップ 8 次のコマンドを入力して、ポリシーマップをグローバルに適用するか、特定のインターフェイスに適用します。

hostname(config)# service-policy policy_map_name [global | interface interface_ID
 

policy_map_name には、 ステップ 3 で設定したポリシーマップを指定します。すべてのインターフェイスに適用するには global オプションを使用し、特定のインターフェイスに適用するには nameif コマンドで割り当てた名前を使用します。

たとえば、次のコマンドは、sample_policy を外部インターフェイスに適用します。

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは、sample_policy をすべてのセキュリティ アプライアンス インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 


 

例21-11で示すように、SCCP 検査エンジンをイネーブルにして、デフォルト ポート(2000)で SCCP トラフィックと一致するクラスマップを作成します。このサービス ポリシーが、外部インターフェイスに適用されます。

例21-11 SCCP アプリケーション検査のイネーブル化

hostname(config)# class-map sccp_port
hostname(config-cmap)# match port tcp eq 2000
hostname(config-cmap)# exit
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class sccp_port
hostname(config-pmap-c)# inspect skinny
hostname(config-pmap-c)# exit
hostname(config)# service-policy sample_policy interface outside
 

SCCP 検査の確認と監視

show skinny コマンドは、SCCP(Skinny)検査エンジンの問題のトラブルシューティングに役立ちます。次の条件での show skinny コマンドの出力例を示します。セキュリティ アプライアンスを越えて 2 つのアクティブな Skinny セッションがセットアップされています。最初の Skinny セッションは、ローカル アドレス 10.0.0.11 にある内部 Cisco IP Phone と 172.18.1.33 にある外部 Cisco CallManager の間に確立されています。TCP ポート 2000 は、CallManager です。2 番目の Skinny セッションは、ローカル アドレス 10.0.0.22 にある別の内部 Cisco IP Phone と同じ Cisco CallManager の間に確立されています。

hostname# show skinny
LOCAL FOREIGN STATE
---------------------------------------------------------------
1 10.0.0.11/52238 172.18.1.33/2000 1
MEDIA 10.0.0.11/22948 172.18.1.22/20798
2 10.0.0.22/52232 172.18.1.33/2000 1
MEDIA 10.0.0.22/20798 172.18.1.11/22948
 

この出力は、2 つの内部 Cisco IP Phone 間でコールが確立されていることを示します。最初と 2 番目の電話機の RTP リスン ポートは、それぞれ UDP 22948 と 20798 です。

これらの Skinny 接続の show xlate debug コマンドの出力例を示します。

hostname# show xlate debug
2 in use, 2 most used
Flags: D - DNS, d - dump, I - identity, i - inside, n - no random,
r - portmap, s - static
NAT from inside:10.0.0.11 to outside:172.18.1.11 flags si idle 0:00:16 timeout 0:05:00
NAT from inside:10.0.0.22 to outside:172.18.1.22 flags si idle 0:00:14 timeout 0:05:00
 

SMTP および拡張 SMTP 検査の管理

この項では、SMTP および ESMTP アプリケーション検査をイネーブルにする方法と、デフォルト ポート コンフィギュレーションを変更する方法について説明します。ここでは、次の項目について説明します。

「SMTP および拡張 SMTP 検査の概要」

「SMTP および拡張 SMTP アプリケーション検査のイネーブル化と設定」

SMTP および拡張 SMTP 検査の概要

ESMTP アプリケーション検査を使用すると、セキュリティ アプライアンスを通過できる SMTP コマンドの種類を制限し、監視機能を追加することによって、SMTP ベースの攻撃からより強固に保護できます。

ESMTP は SMTP プロトコルの拡張で、ほとんどの観点で SMTP に似ています。便宜上、このマニュアルでは、SMTP という用語を SMTP と ESMTP の両方に使用します。拡張 SMTP に対するアプリケーション検査処理は、SMTP アプリケーション検査に似ており、SMTP セッションのサポートが含まれています。拡張 SMTP セッションで使用するほとんどのコマンドは、SMTP セッションで使用するコマンドと同じですが、ESMTP セッションの方が大幅に高速で、配信ステータス通知など信頼性およびセキュリティに関するオプションが増えています。

inspect esmtp コマンドには、 inspect smtp コマンドで提供されていた機能が含まれており、いくつかの拡張 SMTP コマンドのサポートが追加されています。拡張 SMTP アプリケーション検査では、AUTH、EHLO、ETRN、HELP、SAML、SEND、SOML、および VRFY の 8 つの拡張 SMTP コマンドのサポートが追加されます。 セキュリティ アプライアンスは、7 つの RFC 821 コマンド(DATA、HELO、MAIL、NOOP、QUIT、RCPT、RSET)をサポートするとともに、合計 15 の SMTP コマンドをサポートします。

その他の拡張 SMTP コマンド(ATRN、STARTLS、ONEX、VERB、CHUNKING など)、およびプライベート拡張はサポートされません。サポートされないコマンドは、内部サーバにより拒否される X に変換されます。この結果は、「500 Command unknown: 'XXX'」のようなメッセージで表示されます。不完全なコマンドは、廃棄されます。

inspect smtp コマンドを入力すると、セキュリティ アプライアンスは自動的にコマンドを inspect esmtp コマンド に変換します。これは、 show running-config コマンドを入力すると表示されるコンフィギュレーションです。

inspect esmtp コマンドは、文字「2」、「0」、「0」を除き、サーバ SMTP バナーの文字をアスタリスクに変更します。復帰(CR)、および改行(LF)は無視されます。

SMTP 検査をイネーブルにする場合、次の規則に従わないと、対話型の SMTP に使用する Telnet セッションが停止することがあります。SMTP コマンドの長さは 4 文字以上にする必要があります。復帰と改行で終了する必要があります。次の応答を発行する前に現在の応答を待機する必要があります。

SMTP サーバは、数値応答コード、およびオプションの可読文字列でクライアント要求に応答します。SMTP アプリケーション検査は、ユーザが使用できるコマンドとサーバが返送するメッセージを制御し、その数を減らします。SMTP 検査は、次の 3 つの主要なタスクを実行します。

SMTP 要求を 7 つの基本 SMTP コマンドと 8 つの拡張コマンドに制限します。

SMTP コマンド応答シーケンスを監視します。

監査証跡の生成:メール アドレス内に埋め込まれている無効な文字が交換されたときに、監査レコード 108002 が生成されます。詳細については、RFC 821 を参照してください。

SMTP 検査では、次の異常なシグニチャをチェックするため、コマンド応答シーケンスが監視されます。

切り捨てられたコマンド

不正なコマンド終端(<CR><LR> で終了していない)

MAIL コマンドと RCPT コマンドでは、メールの送信者と受信者が指定されます。異常な文字がないか、メール アドレスがスキャンされます。パイプ(|)が削除(空白スペースに変更)され、「<」および「>」については、メール アドレスの定義に使用される場合だけ許可されます(「<」の後には、必ず「>」が使用されている必要があります)。

SMTP サーバによる不意の移行

未知のコマンドに対しては、セキュリティ アプライアンスはパケット内のすべての文字を X に変更します。この場合、サーバがクライアントに対してエラー コードを生成します。パケット内が変更されているため、TCP チェックサムは、再計算または調節する必要があります。

TCP ストリーム編集

コマンド パイプライン

SMTP および拡張 SMTP アプリケーション検査のイネーブル化と設定

SMTP および拡張 SMTP 検査をイネーブルにするには、または SMTP トラフィックの受信に使用するデフォルト ポートを変更するには、次の手順を実行します。


ステップ 1 グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map smtp_port
 

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

ステップ 2 クラスマップ コンフィギュレーション モードで、次の例で示すように、 match コマンドを定義します。

hostname(config-cmap)# match port tcp eq 25
hostname(config-cmap)# exit
hostname(config)#
 

連続したポート範囲を割り当てるには、次の例で示すように、 range キーワードを入力します。

hostname(config-cmap)# match port tcp range 2025-2030
 

連続しない複数のポートを SMTP 検査に割り当てるには、 access-list コマンドを入力して、各ポートに一致するアクセス コントロール エントリを定義します。次に、 match コマンドを入力して、アクセスリストを SMTP トラフィック クラスに関連付けます。

ステップ 3 次のコマンドを入力して、ポリシーマップの名前を指定します。

hostname(config)# policy-map policy_map_name
 

policy_map_name には、次の例で示すように、ポリシーマップの名前を指定します。

hostname(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 4 次のコマンドを入力して、 ステップ 1 で定義したトラフィック クラスを指定し、ポリシーマップに含めます。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、smtp_port トラフィック クラスを現在のポリシーマップに割り当てます。

hostname(config-pmap)# class smtp_port
 

CLI はポリシーマップ クラス コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 5 (オプション)セキュリティ アプライアンスが SMTP トラフィックの受信に使用するデフォルト ポートを変更するには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect esmtp
 

ステップ 6 次のコマンドを入力して、ポリシーマップ コンフィギュレーション モードに戻ります。

hostname(config-pmap-c)# exit
hostname(config-pmap)#
 

ステップ 7 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-pmap)# exit
hostname(config)#
 

ステップ 8 次のコマンドを入力して、ポリシーマップをグローバルに適用するか、特定のインターフェイスに適用します。

hostname(config)# service-policy policy_map_name [global | interface interface_ID
 

policy_map_name には、 ステップ 3 で設定したポリシーマップを指定します。すべてのセキュリティ アプライアンス インターフェイスに適用するには global オプションを使用し、特定のインターフェイスに適用するには nameif コマンドで割り当てた名前を使用します。

たとえば、次のコマンドは、sample_policy ポリシーマップを外部インターフェイスに適用します。

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは、sample_policy ポリシーマップをすべてのセキュリティ アプライアンス インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 

例21-12で示すように、SMTP 検査エンジンをイネーブルにして、デフォルト ポート(25)の SMTP トラフィックをイネーブルにします。このサービス ポリシーが、外部インターフェイスに適用されます。


 

例21-12 SMTP および ESMTP 検査のイネーブル化と設定

hostname(config)# class-map smtp_port
hostname(config-cmap)# match port tcp eq 25
hostname(config-cmap)# exit
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class smtp_port
hostname(config-pmap-c)# inspect esmtp 25
hostname(config-pmap-c)# exit
hostname(config)# service-policy sample_policy interface outside
 

すべてのインターフェイスで SMTP 検査をイネーブルにするには、 interface outside の代わりに global パラメータを入力します。

SNMP 検査の管理

この項では、SNMP アプリケーション検査をイネーブルにする方法と、デフォルト ポート コンフィギュレーションを変更する方法について説明します。ここでは、次の項目について説明します。

「SNMP 検査の概要」

「SNMP アプリケーション検査のイネーブル化と設定」

SNMP 検査の概要

SNMP マップで構成した設定を使用して、 inspect snmp コマンドを使用し、SNMP 検査をイネーブルにします。SNMP マップは snmp-map コマンドを入力して作成します。SNMP マップ コンフィギュレーション モードで deny version コマンドを入力して、SNMP トラフィックを特定バージョンの SNMP に制限します。

SNMP の以前のバージョンは、安全性が低いため、セキュリティ ポリシーによっては SNMP Version 1 のトラフィックを拒否する必要があります。特定バージョンの SNMP を拒否するには、SNMP マップで deny version コマンドを入力します。SNMP マップは snmp-map コマンドを入力して作成します。SNMP マップを設定した後、 inspect snmp コマンドを入力してマップをイネーブルにし、 service-policy コマンドを入力して 1 つ以上のインターフェイスに適用します。

SNMP アプリケーション検査のイネーブル化と設定

SNMP 検査のデフォルト コンフィギュレーションを変更するには、次の手順を実行します。


ステップ 1 SNMP トラフィックの受信に必要な 2 つのポートを特定するアクセス コントロール リストを定義します。たとえば、次のコマンドは、SNMP 検査のデフォルト ポートを特定します。

hostname(config)# access-list snmp_acl permit tcp any any eq 161
hostname(config)# access-list snmp_acl permit tcp any any eq 162
 

ステップ 2 グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map snmp_port
 

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

ステップ 3 クラスマップ コンフィギュレーション モードで、次の例で示すように、 match コマンドを定義します。

hostname(config-cmap)# match access-list snmp_acl
hostname(config-cmap)# exit
hostname(config)#
 

連続したポート範囲を割り当てるには、次の例で示すように、 range キーワードを入力することもできます。

hostname(config-cmap)# match port tcp range 161-162
 

この場合は、SNMP アプリケーション検査をイネーブルにするポートを定義するためにアクセスリストを作成する必要はありません。

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

hostname(config)# snmp-map policy_map_name
 

snmp_map_name には、次の例で示すように、SNMP マップの名前を指定します。

hostname(config)# snmp-map sample_policy
 

システムが SNMP マップ コンフィギュレーション モードに移行し、CLI プロンプトが次の例で示すように変化します。

hostname(config-snmp-map)#
 

ステップ 5 次のコマンドを入力して、SNMP マップのコンフィギュレーションを定義します。

hostname(config-snmp-map)# deny version version
 

version には、次の例で示すように、制限する 1 つ以上の SNMP バージョンを指定します。

hostname(config-inbound_ftp)# deny version 1
 

ステップ 6 次のコマンドを入力して、ポリシーマップの名前を指定します。

hostname(config)# policy-map policy_map_name
 

policy_map_name には、次の例で示すように、ポリシーマップの名前を指定します。

hostname(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 7 次のコマンドを入力して、 ステップ 1 で定義したトラフィック クラスを指定し、ポリシーマップに含めます。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、snmp_port トラフィック クラスを現在のポリシーマップに割り当てます。

hostname(config-pmap)# class snmp_port
 

CLI はポリシーマップ クラス コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 8 トラフィック クラスで定義された基準と一致するトラフィックに厳密な検査を適用するには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect snmp snmp_map_name
 

snmp_map_name には、使用する SNMP マップを指定します。たとえば、次のコマンドは、前の手順で作成した SNMP マップをセキュリティ アプライアンスが使用するようにします。

次に例を示します。

hostname(config-pmap-c)# inspect snmp sample_policy
 

ステップ 9 次のコマンドを入力して、ポリシーマップ コンフィギュレーション モードに戻ります。

hostname(config-pmap-c)# exit
hostname(config-pmap)#
 

ステップ 10 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-pmap)# exit
hostname(config)#
 

ステップ 11 次のコマンドを入力して、ポリシーマップをグローバルに適用するか、特定のインターフェイスに適用します。

hostname(config)# service-policy policy_map_name [global | interface interface_ID
 

policy_map_name には、 ステップ 6 で設定したポリシーマップを指定します。すべてのインターフェイスに適用するには global オプションを使用し、特定のインターフェイスに適用するには nameif コマンドで割り当てた名前を使用します。

たとえば、次のコマンドは、sample_policy を外部インターフェイスに適用します。

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは、sample_policy をすべてのセキュリティ アプライアンス インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 


 

次の例は、SNMP トラフィックを特定し、SNMP マップを定義し、ポリシーを定義し、SNMP 検査をイネーブルにし、ポリシーを外部インターフェイスに適用します。

例21-13 SNMP アプリケーション検査の設定

hostname(config)# access-list snmp_acl permit tcp any any eq 161
hostname(config)# access-list snmp_acl permit tcp any any eq 162
hostname(config)# class-map snmp_port
hostname(config-cmap)# match access-list snmp_acl
hostname(config-cmap)# exit
hostname(config)# snmp-map sample_policy
hostname(config-snmp-map)# deny version 1
hostname(config-snmp-map)# exit
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class snmp_port
hostname(config-pmap-c)# inspect snmp sample_policy
hostname(config-pmap-c)# exit
 

すべてのインターフェイスで厳密な SNMP アプリケーション検査をイネーブルにするには、 interface outside の代わりに global パラメータを入力します。

Sun RPC 検査の管理

この項では、Sun RPC アプリケーション検査をイネーブルにする方法、デフォルト ポート コンフィギュレーションを変更する方法、および Sun RPC サービス テーブルを管理する方法について説明します。ここでは、次の項目について説明します。

「Sun RPC 検査の概要」

「Sun RPC 検査のイネーブル化と設定」

「Sun RPC サービスの管理」

「Sun RPC 検査の確認と監視」

Sun RPC 検査の概要

Sun RPC アプリケーション検査をイネーブルにするには、またはセキュリティ アプライアンスがリスンするポートを変更するには、ポリシーマップ クラス コンフィギュレーション モードで inspect sunrpc コマンドを入力します。ポリシーマップ クラス コンフィギュレーション モードにアクセスするには、ポリシーマップ コンフィギュレーション モードで class コマンドを入力します。このコンフィギュレーションを削除するには、このコマンドの no 形式を使用します。

inspect sunrpc コマンドは、Sun RPC プロトコルのアプリケーション検査をイネーブルまたはディセーブルにします。Sun RPC は、NFS および NIS で使用されます。Sun RPC サービスは、システムの任意のポート上で実行できます。サーバ上の Sun RPC サービスにアクセスしようとするクライアントは、そのサービスが実行されているポートを検出する必要があります。これは、予約済みポート 111 上で、ポートマッパ プロセスを照会して実行されます。

クライアントは、サービスの Sun RPC プログラム番号を送信し、ポート番号を取得します。この時点から、クライアント プログラムは、取得した新しいポートに対してその Sun RPC クエリーを送信します。サーバが応答を送信すると、セキュリティ アプライアンスはこのパケットを代行受信し、そのポートで初期 TCP および UDP 接続の両方を開きます。


Sun RPC ペイロード情報の NAT または PAT はサポートされていません。


Sun RPC 検査のイネーブル化と設定


) UDP による Sun RPC 検査をイネーブルにしたり設定したりするために、別のトラフィック クラスまたは新しいポリシーマップを定義する必要はありません。単純に、デフォルト トラフィック クラスでトラフィック クラスが定義されているポリシーマップに inspect sunrpc コマンドを追加します。このコンフィギュレーションの例を P.21-85 の例21-15 に示します。


Sun RPC 検査をイネーブルにするには、または TCP を使用する Sun RPC トラフィックの受信に使用するデフォルト ポートを変更するには、次の手順を実行します。


ステップ 1 グローバル コンフィギュレーション モードで次のコマンドを入力し、トラフィック クラスの名前を指定します。

hostname(config)# class-map class_map_name
 

class_map_name には、次の例で示すように、トラフィック クラスの名前を指定します。

hostname(config)# class-map sunrpc_port
 

class-map コマンドを入力すると、CLI はクラスマップ コンフィギュレーション モードに移行し、次の例のようにプロンプトが変化します。

hostname(config-cmap)#
 

ステップ 2 クラスマップ コンフィギュレーション モードで、次の例で示すように、 match コマンドを定義します。

hostname(config-cmap)# match port tcp eq 111
hostname(config-cmap)# exit
hostname(config)#
 

連続したポート範囲を割り当てるには、次の例で示すように、 range キーワードを入力します。

hostname(config-cmap)# match port tcp range 111-112
 

連続しない複数のポートを Sun RPC 検査に割り当てるには、 access-list コマンドを入力して、各ポートに一致するアクセス コントロール エントリを定義します。次に、 match コマンドを入力して、アクセスリストを Sun RPC トラフィック クラスに関連付けます。

ステップ 3 次のコマンドを入力して、ポリシーマップの名前を指定します。

hostname(config)# policy-map policy_map_name
 

policy_map_name には、次の例で示すように、ポリシーマップの名前を指定します。

hostname(config)# policy-map sample_policy
 

CLI はポリシーマップ コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap)#
 

ステップ 4 次のコマンドを入力して、ステップ 1 で定義したトラフィック クラスを指定し、ポリシーマップに含めます。

hostname(config-pmap)# class class_map_name
 

たとえば、次のコマンドは、sunrpc_port トラフィック クラスを現在のポリシーマップに割り当てます。

hostname(config-pmap)# class sunrpc_port
 

CLI はポリシーマップ クラス コンフィギュレーション モードに移行し、次のようにプロンプトが変化します。

hostname(config-pmap-c)#
 

ステップ 5 Sun RPC アプリケーション検査をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect sunrpc
 

ステップ 6 次のコマンドを入力して、ポリシーマップ コンフィギュレーション モードに戻ります。

hostname(config-pmap-c)# exit
hostname(config-pmap)#
 

ステップ 7 次のコマンドを入力して、グローバル コンフィギュレーション モードに戻ります。

hostname(config-pmap)# exit
hostname(config)#
 

ステップ 8 次のコマンドを入力して、ポリシーマップをグローバルに適用するか、特定のインターフェイスに適用します。

hostname(config)# service-policy policy_map_name [global | interface interface_ID
 

policy_map_name には、 ステップ 3 で設定したポリシーマップを指定します。すべてのインターフェイスに適用するには global オプションを使用し、特定のインターフェイスに適用するには nameif コマンドで割り当てた名前を使用します。

たとえば、次のコマンドは、sample_policy を外部インターフェイスに適用します。

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは、sample_policy をすべてのセキュリティ アプライアンス インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 


 

例21-14 Sun RPC 検査のイネーブル化と設定(TCP)

次の例で示すように、Sun RPC 検査エンジンをイネーブルにして、TCP ポート 111 の Sun RPC トラフィックと一致するクラスマップを作成します。サービス ポリシーが外部インターフェイスに適用されます。

hostname(config)# class-map sunrpc_port
hostname(config-cmap)# match port tcp eq 111
hostname(config-cmap)# exit
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class sunrpc_port
hostname(config-pmap-c)# inspect sunrpc
hostname(config-pmap-c)# exit
hostname(config)# service-policy sample_policy interface outside
 

すべてのインターフェイスで Sun RPC 検査をイネーブルにするには、 interface outside の代わりに global パラメータを使用します。

例21-15 Sun RPC 検査のイネーブル化と設定(TCP)

UDP による Sun RPC をイネーブルにするには、次の例で示すように、トラフィック クラスがデフォルト トラフィック クラスで定義されているポリシーマップに inspect sunrpc コマンドを単純に追加します。

hostname(config)# policy-map asa_global_fw_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect sunrpc
 

Sun RPC サービスの管理

Sun RPC サービス テーブルを使用して、確立された Sun RPC セッションに基づいてセキュリティ アプライアンスを経由する Sun RPC トラフィックを制御します。Sun RPC サービス テーブルのエントリを作成するには、グローバル コンフィギュレーション モードで sunrpc-server コマンドを使用します。Sun RPC サービス テーブル エントリをコンフィギュレーションから削除するには、このコマンドの no 形式を使用します。

このコマンドを使用して、Sun RPC アプリケーション検査で開いたピンホールを閉じるまでのタイムアウトを指定できます。たとえば、IP アドレスが 192.168.100.2 の Sun RPC サーバに対して 30 分のタイムアウトを作成するには、次のコマンドを入力します。

hostname(config)# sunrpc-server inside 192.168.100.2 255.255.255.255 service 100003 protocol tcp 111 timeout 00:30:00
 

このコマンドは、Sun RPC アプリケーション検査で開いたピンホールが 30 分後に閉じるように指定します。この例では、Sun RPC サーバは TCP ポート 111 を使用する内部インターフェイスにあります。UDP、別のポート番号、ポート範囲を指定することもできます。ポート範囲を指定するには、範囲の開始ポート番号と終了ポート番号をハイフンで区切ります(111-113 など)。

サービス タイプは、特定のサービス タイプとそのサービスに使用するポート番号の間のマッピングを特定します。サービス タイプ(この例では 100003)を判定するには、Sun RPC サーバ マシンの UNIX または Linux コマンドラインで、 sunrpcinfo コマンドを使用します。

Sun RPC コンフィギュレーションを消去するには、次のコマンドを入力します。

hostname(config)# clear configure sunrpc-server
 

これによって、 sunrpc-server コマンドを使用して実行されるコンフィギュレーションが削除されます。 sunrpc-server コマンドを使用して、指定したタイムアウト値を持つピンホールを作成できます。

アクティブな Sun RPC サービスを消去するには、次のコマンドを入力します。

hostname(config)# clear sunrpc-server active
 

これによって、そのサービス(NFS、NIS など)で Sun RPC アプリケーション検査が開いたピンホールが消去されます。

Sun RPC 検査の確認と監視

この項の出力例では、Sun RPC サーバの IP アドレスは 192.168.100.2 で内部インターフェイスにあり、Sun RPC クライアントの IP アドレスは 209.168.200.5 で外部インターフェイスにあるものとします。

現在の Sun RPC 接続に関する情報を表示するには、 show conn コマンドを入力します。次に、 show conn コマンドの出力例を示します。

hostname# show conn
15 in use, 21 most used
UDP out 209.165.200.5:800 in 192.168.100.2:2049 idle 0:00:04 flags -
UDP out 209.165.200.5:714 in 192.168.100.2:111 idle 0:00:04 flags -
UDP out 209.165.200.5:712 in 192.168.100.2:647 idle 0:00:05 flags -
UDP out 192.168.100.2:0 in 209.165.200.5:714 idle 0:00:05 flags i
hostname(config)#
 

Sun RPC サービス テーブル コンフィギュレーションに関する情報を表示するには、 show running-config sunrpc-server コマンドを入力します。次に、 show running-config sunrpc-server コマンドの出力例を示します。

hostname(config)# show running-config sunrpc-server
sunrpc-server inside 192.168.100.2 255.255.255.255 service 100003 protocol UDP port 111 timeout 0:30:00
sunrpc-server inside 192.168.100.2 255.255.255.255 service 100005 protocol UDP port 111 timeout 0:30:00
 

この出力では、IP アドレスが 192.168.100.2 で内部インターフェイスにある Sun RPC サーバの UDP ポート 111 で、タイムアウト間隔が 30 分に設定されていることが示されています。

Sun RPC サービスで開かれているピンホールを表示するには、 show sunrpc-server active コマンドを入力します。次に、 show sunrpc-server active コマンドの出力例を示します。

hostname# show sunrpc-server active
LOCAL FOREIGN SERVICE TIMEOUT
-----------------------------------------------
1 209.165.200.5/0 192.168.100.2/2049 100003 0:30:00
2 209.165.200.5/0 192.168.100.2/2049 100003 0:30:00
3 209.165.200.5/0 192.168.100.2/647 100005 0:30:00
4 209.165.200.5/0 192.168.100.2/650 100005 0:30:00
 

LOCAL カラムのエントリは、内部インターフェイスのクライアントまたはサーバの IP アドレスを示します。FOREIGN カラムの値は、外部インターフェイスのクライアントまたはサーバの IP アドレスを示します。

Sun RPC サーバで実行されている Sun RPC サービスに関する情報を表示するには、Linux または UNIX サーバのコマンドラインから rpcinfo -p コマンドを入力します。次に、 rpcinfo -p コマンドの出力例を示します。

sunrpcserver:~ # rpcinfo -p
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 632 status
100024 1 tcp 635 status
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100021 1 udp 32771 nlockmgr
100021 3 udp 32771 nlockmgr
100021 4 udp 32771 nlockmgr
100021 1 tcp 32852 nlockmgr
100021 3 tcp 32852 nlockmgr
100021 4 tcp 32852 nlockmgr
100005 1 udp 647 mountd
100005 1 tcp 650 mountd
100005 2 udp 647 mountd
100005 2 tcp 650 mountd
100005 3 udp 647 mountd
100005 3 tcp 650 mountd
 

この出力では、ポート 647 が UDP 上で実行されている mountd デーモンに対応しています。mountd プロセスは、通常、ポート 32780 を使用します。この例では、TCP 上で実行されている mountd プロセスがポート 650 を使用しています。