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

目次

アプリケーション レイヤ プロトコル検査の設定

検査エンジンの概要

アプリケーション プロトコル検査を使用するタイミング

検査に関する制限事項

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

アプリケーション

CTIQBE 検査

CTIQBE 検査の概要

制限事項

CTIQBE 検査の確認と監視

DCERPC 検査

DCERPC の概要

検査制御を追加するための DCERPC 検査ポリシーマップの設定

DNS 検査

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

DNS リライトの動作

DNS リライトの設定

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

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

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

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

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

DNS 検査の確認と監視

検査制御を追加するための DNS 検査ポリシーマップの設定

ESMTP 検査

検査制御を追加するための ESMTP 検査ポリシーマップの設定

FTP 検査

FTP 検査の概要

検査制御を追加するための FTP 検査ポリシーマップの設定

FTP 検査の確認と監視

GTP 検査

GTP 検査の概要

検査制御を追加するための GTP 検査ポリシーマップの設定

GTP 検査の確認と監視

H.323 検査

H.323 検査の概要

H.323 の動作

制限事項

検査制御を追加するための H.323 検査ポリシーマップの設定

H.323 および H.225 のタイムアウト値の設定

H.323 検査の確認と監視

H.225 セッションの監視

H.245 セッションの監視

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

HTTP 検査

HTTP 検査の概要

検査制御を追加するための HTTP ポリシーマップの設定

インスタント メッセージ検査

IM 検査の概要

検査制御を追加するためのインスタント メッセージ検査ポリシーマップの設定

ICMP 検査

ICMP エラー検査

ILS 検査

MGCP 検査

MGCP 検査の概要

検査制御を追加するための MGCP 検査ポリシーマップの設定

MGCP タイムアウト値の設定

MGCP 検査の確認と監視

NetBIOS 検査

検査制御を追加するための NetBIOS 検査ポリシーマップの設定

PPTP 検査

RADIUS アカウンティング検査

検査制御を追加するための RADIUS 検査ポリシーマップの設定

RSH 検査

RTSP 検査

RTSP 検査の概要

RealPlayer の使用

制限事項

検査制御を追加するための RTSP 検査ポリシーマップの設定

SIP 検査

SIP 検査の概要

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

検査制御を追加するための SIP 検査ポリシーマップの設定

SIP タイムアウト値の設定

SIP 検査の確認と監視

Skinny(SCCP)検査

SCCP 検査の概要

Cisco IP Phone のサポート

制限事項

SCCP 検査の確認と監視

検査制御を追加するための Skinny(SCCP)検査ポリシーマップの設定

SMTP および拡張 SMTP 検査

SNMP 検査

SQL*Net 検査

Sun RPC 検査

Sun RPC 検査の概要

Sun RPC サービスの管理

Sun RPC 検査の確認と監視

TFTP 検査

暗号化された音声検査のための TLS プロキシ

概要

最大 TLS プロキシ セッション数

TLS プロキシの設定

TLS プロキシのデバッグ

CTL クライアント

XDMCP 検査

アプリケーション レイヤ プロトコル検査の設定

この章では、アプリケーション レイヤ プロトコル検査の設定方法について説明します。検査エンジンは、ユーザのデータ パケット内に IP アドレッシング情報を埋め込むサービスや、ダイナミックに割り当てられるポート上でセカンダリ チャネルを開くサービスに必要です。アプリケーション レイヤ プロトコルでは、高速パスでパケットを渡すのではなく、adaptive security applianceが詳細なパケット検査を行う必要があります(高速パスの詳細については、「ステートフル インスペクションの概要」を参照してください)。そのため、検査エンジンはスループット全体に影響することがあります。

いくつかの一般的な検査エンジンはadaptive security appliance上でデフォルトでイネーブルになっていますが、ネットワークによっては、その他の検査エンジンをイネーブルにしなければならない場合があります。この章は、次の項で構成されています。

「検査エンジンの概要」

「アプリケーション プロトコル検査を使用するタイミング」

「検査に関する制限事項」

「デフォルトの検査ポリシー」

「アプリケーション検査の設定」

「CTIQBE 検査」

「DCERPC 検査」

「DNS 検査」

「ESMTP 検査」

「FTP 検査」

「GTP 検査」

「H.323 検査」

「HTTP 検査」

「インスタント メッセージ検査」

「ICMP 検査」

「ICMP エラー検査」

「ILS 検査」

「MGCP 検査」

「NetBIOS 検査」

「PPTP 検査」

「RADIUS アカウンティング検査」

「RSH 検査」

「RTSP 検査」

「SIP 検査」

「Skinny(SCCP)検査」

「SMTP および拡張 SMTP 検査」

「SNMP 検査」

「SQL*Net 検査」

「Sun RPC 検査」

「TFTP 検査」

「暗号化された音声検査のための TLS プロキシ」

「XDMCP 検査」

検査エンジンの概要

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

「アプリケーション プロトコル検査を使用するタイミング」

「検査に関する制限事項」

「デフォルトの検査ポリシー」

アプリケーション プロトコル検査を使用するタイミング

ユーザが接続を確立すると、adaptive security applianceはアクセスリストと照合してパケットをチェックし、アドレス変換を作成します。次に、高速パスでのセッション用にエントリを作成し、後続のパケットが時間のかかるチェックをバイパスできるようにします。ただし、高速パスは、予測可能なポート番号に基づいており、パケット内部のアドレス変換を実行しません。

多くのプロトコルは、セカンダリの TCP ポートまたは UDP ポートを開きます。予約済みポート上の初期セッションは、ダイナミックに割り当てられたポート番号をネゴシエートするために使用されます。

また、送信元アドレスと一致する必要のある IP アドレスをパケットに埋め込むアプリケーションもあります。送信元アドレスは、通常、adaptive security applianceを通過するときに変換されます。

これらのアプリケーションを使用する場合は、アプリケーション検査をイネーブルにする必要があります。

IP アドレスを埋め込むサービスに対してアプリケーション検査をイネーブルにすると、adaptive security applianceは、埋め込まれたアドレスを変換し、チェックサムや変換の影響を受けたその他のフィールドを更新します。

ダイナミックに割り当てられたポートを使用するサービスに対してアプリケーション検査をイネーブルにすると、adaptive security applianceは、セッションを監視して、ダイナミックに割り当てられたポートを特定し、所定のセッションの間、それらのポートでのデータ交換を許可します。

検査に関する制限事項

アプリケーション プロトコル検査では、次の制限事項があります。

検査が必要なマルチメディア セッションのステート情報は、ステートフル フェールオーバーのステート リンクで渡されません。ただし、GTP は例外です。ステート リンクで情報が複製されます。

一部の検査エンジンは、PAT、NAT、外部 NAT、または同一セキュリティ インターフェイス間の NAT をサポートしません。NATのサポートの詳細については、「デフォルトの検査ポリシー」を参照してください。

すべてのアプリケーション検査について、適応型セキュリティ アプライアンスはアクティブな同時データ接続数を 200 に制限します。たとえば、FTP クライアントで複数のセカンダリ接続を開く場合、FTP 検査エンジンでは 200 だけのアクティブ接続が許可され、201 番目の接続はドロップされ、適応型セキュリティ アプライアンスはシステム エラー メッセージを生成します。

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

デフォルトでは、すべてのデフォルト アプリケーション検査トラフィックに一致するポリシーがコンフィギュレーションに含まれ、検査がすべてのインターフェイスのトラフィックに適用されます(グローバル ポリシー)。デフォルト アプリケーション検査トラフィックには、各プロトコルのデフォルト ポートへのトラフィックが含まれます。適用できるグローバル ポリシーは 1 つだけなので、グローバル ポリシーを変更する場合(たとえば、標準以外のポートに検査を適用する場合や、デフォルトでイネーブルになっていない検査を追加する場合)は、デフォルトのポリシーを編集するか、デフォルトのポリシーをディセーブルにして新しいポリシーを適用します。

表 23-1 に、サポートされているすべての検査、デフォルトのクラスマップで使用されるデフォルト ポート、およびデフォルトでオンになっている検査エンジン(太字表記)を示します。NAT に関する制限事項についてもこの表に示します。

 

表 23-1 サポートされているアプリケーション検査エンジン

アプリケーション1
デフォルト ポート
NAT に関する制限事項
標準2
コメント

CTIQBE

TCP/2748

--

--

--

DNS over UDP

UDP/53

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

RFC 1123

PTR レコードは変更されません。

FTP

TCP/21

--

RFC 959

--

GTP

UDP/3386UDP/2123

--

--

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

H.323 H.225 および RAS

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

同一セキュリティ インターフェイス上の NAT はサポートされません。

スタティック PAT はサポートされません。

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

--

HTTP

TCP/80

--

RFC 2616

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

ICMP

--

--

--

すべての ICMP トラフィックは、デフォルトのクラスマップで照合されます。

ICMP ERROR

--

--

--

すべての ICMP トラフィックは、デフォルトのクラスマップで照合されます。

ILS(LDAP)

TCP/389

PAT はサポートされません。

--

--

MGCP

UDP/2427、2727

--

RFC 2705bis-05

--

NetBIOS Name Server over IP

UDP/137、138(送信元ポート)

--

--

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

PPTP

TCP/1723

--

RFC 2637

--

RADIUS Accounting

1646

--

RFC 2865

--

RSH

TCP/514

PAT はサポートされません。

Berkeley UNIX

--

RTSP

TCP/554

PAT はサポートされません。

外部 NAT はサポートされません。

RFC 2326、2327、1889

HTTP クローキングは処理しません。

SIP

TCP/5060
UDP/5060

外部 NAT はサポートされません。

同一セキュリティ インターフェイス上の NAT はサポートされません。

RFC 3261

--

SKINNY(SCCP)

TCP/2000

外部 NAT はサポートされません。

同一セキュリティ インターフェイス上の NAT はサポートされません。

--

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

SMTP および ESMTP

TCP/25

--

RFC 821、1123

--

SNMP

UDP/161、162

NAT および PAT はサポートされません。

RFC 1155、1157、1212、1213、1215

v.2 RFC 1902-1908、v.3 RFC 2570-2580

SQL*Net

TCP/1521

--

--

v.1 および v.2.

Sun RPC over UDP /TCP

UDP/111

NAT および PAT はサポートされません。

--

デフォルトのクラスマップには、UDP ポート 111 が含まれています。TCP ポート 111 の Sun RPC 検査をイネーブルにする場合は、TCP ポート 111 と照合する新しいクラスマップを作成し、クラスをポリシーに追加後、 inspect sunrpc コマンドをそのクラスに適用する必要があります。

TFTP

UDP/69

--

RFC 1350

ペイロード IP アドレスは変換されません。

XDCMP

UDP/177

NAT および PAT はサポートされません。

--

--

1.デフォルト ポートに対してデフォルトでイネーブルになっている検査エンジンについては、太字で表記しています。

2.adaptive security applianceは、これらの標準に準拠していますが、検査対象のパケットには準拠を強制しません。たとえば、FTP コマンドは特定の順序になっている必要がありますが、adaptive security applianceは、その順序を強制しません。

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

class-map inspection_default
match default-inspection-traffic
policy-map type inspect dns preset_dns_map
parameters
message-length maximum 512
policy-map global_policy
class inspection_default
inspect dns preset_dns_map
inspect ftp
inspect h323 h225
inspect h323 ras
inspect rsh
inspect rtsp
inspect esmtp
inspect sqlnet
inspect skinny
inspect sunrpc
inspect xdmcp
inspect sip
inspect netbios
inspect tftp
service-policy global_policy global
 

アプリケーション 検査の設定

この機能はモジュラ ポリシー フレームワークを使用するため、アプリケーション検査の実装の際には、トラフィックの特定、トラフィックへの検査の適用、およびインターフェイスでの検査のアクティブ化を行います。アプリケーションによっては、検査をイネーブルにするときに特別なアクションを実行できるものがあります。詳細は 第 15 章「モジュラ ポリシー フレームワークの使用」 を参照してください。

一部のアプリケーションでは、検査がデフォルトでイネーブルになっています。詳細については、「デフォルトの検査ポリシー」の項を参照してください。検査ポリシーを修正する方法が示されています。

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


ステップ 1 検査するトラフィックを指定するには、通過トラフィックまたは管理トラフィック用のレイヤ 3/4 クラスマップを追加します。詳細については、「トラフィックを介するレイヤ 3/4 クラスマップの作成」および「管理トラフィックのレイヤ 3/4 クラスマップの作成」を参照してください。管理レイヤ 3/4 クラスマップは、RADIUS アカウンティングの検査だけで使用できます。

通過トラフィックのデフォルトのレイヤ 3/4 クラスマップの名前は「inspection_default」です。このクラスマップは、特殊な match コマンド( match default-inspection-traffic )を使用して、各アプリケーション プロトコルのデフォルト ポートを照合します。

match access-list コマンドを match default-inspection-traffic コマンドとともに指定すると、照合するトラフィックを特定の IP アドレスに絞り込むことができます。 match default-inspection-traffic コマンドによって照合するポートが指定されるため、アクセスリストのポートはすべて無視されます。

標準以外のポートを照合する場合は、専用の新しいクラスマップを作成してください。各検査エンジンの標準ポートについては、「デフォルトの検査ポリシー」を参照してください。必要に応じて複数のクラスマップを同じポリシー内で組み合せることができ、これによって、照合するトラフィックに応じたクラスマップを作成できます。ただし、トラフィックが検査コマンドを含むクラスマップと照合して、次に同様に検査コマンドを含む別のクラスマップと照合する場合、最初の照合が使用されます。たとえば、SNMP では inspection_default クラスを照合します。SNMP の検査をイネーブルにするには、ステップ 5 に従って、デフォルト クラスの SNMP 検査をイネーブルにします。SNMP と照合する他のクラスを追加しないでください。

たとえば、デフォルトのクラスマップを使用して、検査を 10.1.1.0 から 192.168.1.0 へのトラフィックに限定するには、次のコマンドを入力します。

hostname(config)# access-list inspect extended permit ip 10.1.1.0 255.255.255.0 192.168.1.0 255.255.255.0
hostname(config)# class-map inspection_default
hostname(config-cmap)# match access-list inspect
 

次のコマンドを使用して、クラスマップ全体を表示します。

hostname(config-cmap)# show running-config class-map inspection_default
!
class-map inspection_default
match default-inspection-traffic
match access-list inspect
!
 

ポート 21 とポート 1056(標準以外のポート)の FTP トラフィックを検査するには、それらのポートを指定するアクセスリストを作成し、新しいクラスマップに割り当てます。

hostname(config)# access-list ftp_inspect extended permit tcp any any eq 21
hostname(config)# access-list ftp_inspect extended permit tcp any any eq 1056
hostname(config)# class-map new_inspection
hostname(config-cmap)# match access-list ftp_inspect
 

ステップ 2 (オプション)一部の検査エンジンでは、トラフィックに検査を適用するときに、追加のパラメータを制御できます。各アプリケーションの検査ポリシーマップを設定する方法については、次の項を参照してください。

DCERPC:「検査制御を追加するための DCERPC 検査ポリシーマップの設定」を参照してください。

DNS:「検査制御を追加するための DNS 検査ポリシーマップの設定」を参照してください。

ESMTP:「検査制御を追加するための ESMTP 検査ポリシーマップの設定」を参照してください。

FTP:「検査制御を追加するための FTP 検査ポリシーマップの設定」を参照してください。

GTP:「検査制御を追加するための GTP 検査ポリシーマップの設定」を参照してください。

H323:「検査制御を追加するための H.323 検査ポリシーマップの設定」を参照してください。

HTTP:「検査制御を追加するための HTTP ポリシーマップの設定」を参照してください。

インスタント メッセージ:「検査制御を追加するためのインスタント メッセージ検査ポリシーマップの設定」を参照してください。

MGCP:「検査制御を追加するための MGCP 検査ポリシーマップの設定」を参照してください。

NetBIOS:「検査制御を追加するための NetBIOS 検査ポリシーマップの設定」を参照してください。

RADIUS Accounting:「検査制御を追加するための RADIUS 検査ポリシーマップの設定」を参照してください。

RTSP:「検査制御を追加するための RTSP 検査ポリシーマップの設定」を参照してください。

SIP:「検査制御を追加するための SIP 検査ポリシーマップの設定」を参照してください。

Skinny:「検査制御を追加するための Skinny(SCCP)検査ポリシーマップの設定」を参照してください。

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

ステップ 3 クラスマップのトラフィックで実行するアクションを設定するレイヤ 3/4 ポリシーマップを追加または編集するには、次のコマンドを入力します。

hostname(config)# policy-map name
hostname(config-pmap)#
 

デフォルトのポリシーマップの名前は「global_policy」です。このポリシーマップには、「デフォルトの検査ポリシー」で示されているデフォルトの検査が含まれています。デフォルトのポリシーを変更する場合(検査を追加または削除する場合や、追加のクラスマップを特定してアクションを割り当てる場合など)は、 global_policy を名前として入力します。

ステップ 4 ステップ 1 で追加したクラスマップからアクションの割り当て先を特定するには、次のコマンドを入力します。

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

デフォルトのポリシーマップには、inspection_default クラスマップが含まれています。このクラスのアクションを編集する場合は、 inspection_default を名前として入力します。このポリシーマップに別のクラスマップを追加する場合は、異なる名前を指定してください。必要に応じて複数のクラスマップを同じポリシー内で組み合せることができ、これによって、照合するトラフィックに応じたクラスマップを作成できます。ただし、トラフィックが検査コマンドを含むクラスマップと照合して、次に同様に検査コマンドを含む別のクラスマップと照合する場合、最初の照合が使用されます。たとえば、SNMP では inspection_default クラスマップを照合します。SNMP の検査をイネーブルにするには、ステップ 5 に従って、デフォルトクラスの SNMP 検査をイネーブルにします。SNMP と照合する他のクラスを追加しないでください。

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

hostname(config-pmap-c)# inspect protocol
 

protocol には、次の値のいずれかを指定します。

 

表 23-2 protocol のキーワード

キーワード
注意

ctiqbe

--

dcerpc [ map_name ]

「検査制御を追加するための DCERPC 検査ポリシーマップの設定」に従って DCERPC 検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

dns [ map_name ]

「検査制御を追加するための DNS 検査ポリシーマップの設定」に従って DNS 検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。DNS 検査のデフォルトのポリシーマップの名前は「preset_dns_map」です。このポリシーマップでは、DNS パケットの最大長が 512 バイトに設定されています。

esmtp [ map_name ]

「検査制御を追加するための ESMTP 検査ポリシーマップの設定」に従って ESMTP 検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

ftp [ strict [ map_name ]]

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

「検査制御を追加するための FTP 検査ポリシーマップの設定」に従って FTP 検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

gtp [ map_name ]

「検査制御を追加するための GTP 検査ポリシーマップの設定」に従って GTP 検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

h323 h225 [ map_name ]

「検査制御を追加するための H.323 検査ポリシーマップの設定」に従って H323 検査ポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

h323 ras [ map_name ]

「検査制御を追加するための H.323 検査ポリシーマップの設定」に従って H323 検査ポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

http [ map_name ]

「検査制御を追加するための HTTP ポリシーマップの設定」に従って HTTP 検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

icmp

--

icmp error

--

ils

--

im [ map_name ]

「検査制御を追加するためのインスタント メッセージ検査ポリシーマップの設定」に従ってインスタント メッセージ検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

mgcp [ map_name ]

「検査制御を追加するための MGCP 検査ポリシーマップの設定」に従って MGCP 検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

netbios [ map_name ]

「検査制御を追加するための NetBIOS 検査ポリシーマップの設定」に従って NetBIOS 検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

pptp

--

radius-accounting [ map_name ]

radius-accounting キーワードは、管理クラスマップだけで使用できます。管理クラスマップの作成については、「管理トラフィックのレイヤ 3/4 クラスマップの作成」を参照してください。

「検査制御を追加するための RADIUS 検査ポリシーマップの設定」に従って RADIUS アカウンティング検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

rsh

--

rtsp [ map_name ]

「検査制御を追加するための RTSP 検査ポリシーマップの設定」に従って NetBIOS 検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

sip [ map_name ]

「検査制御を追加するための SIP 検査ポリシーマップの設定」に従って SIP 検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

skinny [ map_name ]

「検査制御を追加するための Skinny(SCCP)検査ポリシーマップの設定」に従って Skinny 検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

snmp [ map_name ]

「SNMP 検査」に従って SNMP 検査のポリシーマップを追加した場合は、このコマンドでマップ名を指定します。

sqlnet

--

sunrpc

デフォルトのクラスマップには、UDP ポート 111 が含まれています。TCP ポート 111 の Sun RPC 検査をイネーブルにする場合は、TCP ポート 111 と照合する新しいクラスマップを作成し、クラスをポリシーに追加後、 inspect sunrpc コマンドをそのクラスに適用する必要があります。

tftp

--

xdmcp

--

ステップ 6 1 つ以上のインターフェイスでポリシーマップをアクティブにするには、次のコマンドを入力します。

hostname(config)# service-policy policymap_name {global | interface interface_name}
 

ここで、 global はポリシーマップをすべてのインターフェイスに適用し、 interface は 1 つのインターフェイスに適用します。デフォルトでは、デフォルトのポリシーマップ「global_policy」がグローバルに適用されます。グローバル ポリシーは 1 つしか適用できません。インターフェイスのグローバル ポリシーは、そのインターフェイスにサービス ポリシーを適用することで上書きできます。各インターフェイスには、ポリシーマップを 1 つだけ適用できます。


 

CTIQBE 検査

この項では、CTIQBE アプリケーション検査について説明します。この項は、次の内容で構成されています。

「CTIQBE 検査の概要」

「制限事項」

「CTIQBE 検査の確認と監視」

CTIQBE 検査の概要

CTIQBE プロトコル検査では、NAT、PAT、および双方向 NAT がサポートされます。これによって、Cisco IP SoftPhone と他の Cisco TAPI/JTAPI アプリケーションが、 adaptive security applianceを越えてコール セットアップを行うために、Cisco CallManager と問題なく連携動作するようになります。

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

制限事項

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

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

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

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

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

2 つの Cisco IP SoftPhone が異なる Cisco CallManager に登録されていて、各 CallManager がadaptive security applianceの異なるインターフェイスに接続されている場合、これら 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 検査の確認と監視

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

次の条件における show ctiqbe コマンドの出力例を示します。adaptive security applianceを越えてセットアップされているアクティブ 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 が使用しているのと同じ外部インターフェイスに変換されている場合は、表示されません。

この出力は、コールがこの CTI デバイスと 172.29.1.88 にある別の電話機の間に確立されていることを示します。他の電話機の RTP および RTCP 受信ポートは、UDP 26822 および 26823 です。adaptive security applianceは 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
 

DCERPC 検査

この項では、DCERPC 検査エンジンについて説明します。この項は、次の内容で構成されています。

「DCERPC の概要」

「検査制御を追加するための DCERPC 検査ポリシーマップの設定」

DCERPC の概要

DCERPC は、Microsoft のクライアント/サーバ アプリケーションで広く使われているプロトコルです。このプロトコルによって、ソフトウェア クライアントがサーバにあるプログラムをリモートで実行できるようになります。

DCERPC 検査マップは、TCP の予約済みポート 135 を経由した、EPM とクライアント間のネイティブ TCP の通信を検査します。クライアント用に EPM のマッピングとルックアップがサポートされています。クライアントとサーバは、どのセキュリティ ゾーンにあってもかまいません。サーバの埋め込まれた IP アドレスとポート番号は、EPM からの応答メッセージで受け取ります。クライアントが EPM から返されたサーバのポート番号で複数の接続を確立する可能性があるので、ピンホールを複数作成できます。ユーザが設定できるタイムアウトは複数のピンホールで使用できます。


) DCERPC 検査では、adaptive security applianceからピンホールを開くための EPM サーバとクライアントの間の通信だけをサポートします。EPM サーバを使用しない RPC 通信を使用するクライアントは、DCERPC 検査ではサポートされません。


通常、ソフトウェア クライアントは次の方法で EPM サーバ上のプログラムをリモートで実行します。


ステップ 1 クライアントは EPM サーバに、必要な DCERPC サービスについてのダイナミックに割り当てられるポート番号を問い合わせます。EPM サーバは TCP の予約済みポート 135 でリスンします。

ステップ 2 クライアントと EPM サーバの間に位置するadaptive security applianceは、通信を検査します。

ステップ 3 EPM サーバは DCERPC サービスを利用できるポート番号を示します。

ステップ 4 adaptive security applianceは DCERPC サービス用のピンホールを開きます。


) ピンホールには送信元ポートの値がないため、送信元ポート値は 0 に設定されます。ユーザ名、発信元 IP アドレス、宛先 IP アドレス、NAT アドレス、およびファイルの処理が示されます。


ステップ 5 クライアントはピンホールを使用して、指定されたポートで DCERPC サービスに接続しようとします。

ステップ 6 adaptive security applianceは接続が許可されたことを検出し、DCERPC サービスを提供しているサービス インスタンスへのセカンダリ接続を作成します。セカンダリ接続を作成する場合、adaptive security applianceは必要に応じて NAT を適用します。


) ピンホールのタイムアウトに達すると、adaptive security applianceはピンホールを破棄し、クライアントから EPM サーバへの新しい接続を許可します。ただし、既存の接続は独立しているため、そのまま残ります。



 

検査制御を追加するための DCERPC 検査ポリシーマップの設定

DCERPC 検査の追加のパラメータを指定するには、まず DCERPC 検査のポリシーマップを作成します。次に、「アプリケーション検査の設定」に従って DCERPC 検査をイネーブルにするときに、そのポリシーマップを適用します。

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


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

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

policy_map_name には、ポリシーマップの名前を指定します。CLI はポリシーマップ コンフィギュレーション モードに移行します。

ステップ 2 (オプション)このポリシーマップに説明を追加するには、次のコマンドを使用します。

hostname(config-pmap)# description string
 

ステップ 3 検査エンジンに影響のあるパラメータを設定するには、次の手順を実行します。

a. パラメータ コンフィギュレーション モードに入るには、次のコマンドを入力します。

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

b. DCERPC のピンホールのタイムアウトを設定し、グローバルなシステム ピンホールのタイムアウト(2 分)を上書きするには、次のコマンドを入力します。

hostname(config-pmap-p)# timeout pinhole hh:mm:ss
 

hh:mm:ss 引数で、ピンホール接続のタイムアウトを指定します。指定できる値は、0:0:1 ~ 1193:0:0 です。

c. エンドポイント マッパーのトラフィックのオプションを設定するには、次のコマンドを入力します。

hostname(config-pmap-p)# endpoint-mapper [epm-service-only] [lookup-operation [timeout hh:mm:ss]]
 

hh:mm:ss 引数で、ルックアップで生成されたピンホールのタイムアウトを指定します。このタイムアウトを指定しないと、timeout pinhole コマンドで指定した値かデフォルトの値が使用されます。 epm-service-only キーワードは、エンドポイント マッパー サービスを強制的にバインドし、このサービスのトラフィックだけが処理されるようにします。 lookup-operation キーワードは、エンドポイント マッパー サービスのルックアップをイネーブルにします。


 

次の例は、DCERPC 検査のポリシーマップを定義し、DCERPC のピンホールのタイムアウトを設定する方法を示しています。

hostname(config)# policy-map type inspect dcerpc dcerpc_map
hostname(config-pmap)# timeout pinhole 0:10:00
 
hostname(config)# class-map dcerpc
hostname(config-cmap)# match port tcp eq 135
 
hostname(config)# policy-map global-policy
hostname(config-pmap)# class dcerpc
hostname(config-pmap-c)# inspect dcerpc dcerpc-map
 
hostname(config)# service-policy global-policy global
 

DNS 検査

この項では、DNS アプリケーション検査について説明します。この項は、次の内容で構成されています。

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

「DNS リライトの動作」

「DNS リライトの設定」

「DNS 検査の確認と監視」

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

adaptive security applianceはadaptive security applianceによって転送された DNS 応答を転送するとすぐに、DNS クエリーと関連付けられた DNS セッションを切断します。また、adaptive security applianceはメッセージ交換を監視し、DNS 応答の ID が、DNS クエリーの ID と一致することを確認します。

DNS 検査をイネーブルにすると(デフォルト)、adaptive security applianceは次の追加のタスクを実行します。

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


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


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


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


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

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

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

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

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

DNS リライトの動作

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

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

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

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

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

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

図 23-1 では、DNS サーバは外部(ISP)ネットワークにあります。サーバの実アドレス(192.168.100.1)は、 static コマンドで ISP 割り当てアドレス(209.165.200.5)にマッピングされています。内部インターフェイスの Web クライアントが http://server.example.com という URL を持つ Web サーバにアクセスを試行する場合、Web クライアントは、Web サーバの IP アドレスの解決を求める DNS 要求を DNS サーバに送信します。adaptive security applianceは、IP ヘッダーにあるルーティングできない送信元アドレスを変換し、外部インターフェイスの ISP ネットワークに要求を転送します。DNS 応答が返されると、adaptive security applianceはアドレス変換を宛先アドレスだけではなく、DNS 応答の A レコードに含まれる、埋め込まれた Web サーバの IP アドレスにも適用します。結果として、内部ネットワーク上の Web クライアントは、内部ネットワーク上の Web サーバとの接続に使用する正しいアドレスを取得します。このような事例の設定手順については、「2 つの NAT ゾーンを持つ DNS リライトの設定」を参照してください。

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

 

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 リライト用の static コマンドの使用」

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

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

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

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

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

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

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

hostname(config)# static (real_ifc,mapped_ifc) mapped-address real-address dns
 

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

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

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


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

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

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

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

hostname(config)# alias (inside) 209.165.200.225 192.168.100.10
 

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


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

図 23-1 で示す DNS リライトと類似の事例を実装するには、次の手順を実行します。


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

hostname(config)# static (real_ifc,mapped_ifc) mapped-address real-address netmask 255.255.255.255 dns
 

引数は次のとおりです。

real_ifc :実際のアドレスに接続されているインターフェイスの名前。

mapped_ifc :アドレスのマッピング先とするインターフェイスの名前。

mapped-address :Web サーバの変換後の IP アドレス。

real-address :Web サーバの実際の IP アドレス。

ステップ 2 Web サーバが HTTP 要求を受信するポートへのトラフィックを許可するアクセスリストを作成します。

hostname(config)# access-list acl-name extended permit tcp any host mapped-address eq port
 

引数は次のとおりです。

acl-name :アクセスリストに付けた名前。

mapped-address :Web サーバの変換後の IP アドレス。

port :Web サーバが HTTP 要求を受信する TCP ポート。

ステップ 3 ステップ 2 で作成したアクセスリストをマッピング インターフェイスに適用します。これを行うには、 access-group コマンドを次のように使用します。

hostname(config)# access-group acl-name in interface mapped_ifc
 

ステップ 4 DNS 検査がディセーブルの場合、または最大 DNS パケット長を変更する場合は、DNS 検査を設定します。デフォルトで、DNS アプリケーション検査は、最大 DNS パケット長を 512 バイトとしてイネーブルになっています。設定手順については、「アプリケーション検査の設定」を参照してください。

ステップ 5 パブリック DNS サーバで、次のように Web サーバの A レコードを追加します。

domain-qualified-hostname. IN A mapped-address
 

domain-qualified-hostname には、ホスト名をドメイン サフィックスとともに指定します(例、server.example.com)。ホスト名の後ろのピリオドは重要です。 mapped-address には、Web サーバの変換後の IP アドレスを指定します。


 

次の例では、adaptive security appliance に従って図 23-1を設定しています。DNS 検査はすでにイネーブルになっていることが前提です。

hostname(config)# static (inside,outside) 209.165.200.225 192.168.100.1 netmask 255.255.255.255 dns
hostname(config)# access-list 101 permit tcp any host 209.165.200.225 eq www
hostname(config)# access-group 101 in interface outside
 

このコンフィギュレーションには、DNS サーバの次の A レコードが必要です。

server.example.com. IN A 209.165.200.225
 

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

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

図 23-2 3 つの NAT ゾーンを持つ DNS リライト

 

図 23-2 で、Web サーバ server.example.com の実アドレスは、adaptive security applianceの 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 レコードを返します。

外部 ネットワークの Web クライアントが http://server.example.com にアクセスを試みたときのイベント シーケンスは次のとおりです。

1. Web クライアントを実行しているホストが DNS サーバに、server.example.com の IP アドレスを求める要求を送信します。

2. DNS サーバが応答で IP アドレス 209.165.200.225 を示します。

3. Web クライアントが HTTP 要求を 209.165.200.225 に送信します。

4. 外部ホストからのパケットがadaptive security applianceの外部インターフェイスに到達します。

5. スタティック規則によってアドレス 209.165.200.225 が 192.168.100.10 に変換され、adaptive security applianceがパケットを DMZ の Web サーバに誘導します。

内部 ネットワークの Web クライアントが http://server.example.com にアクセスを試みたときのイベント シーケンスは次のとおりです。

1. Web クライアントを実行しているホストが DNS サーバに、server.example.com の IP アドレスを求める要求を送信します。

2. DNS サーバが応答で IP アドレス 209.165.200.225 を示します。

3. adaptive security applianceが DNS 応答を受信し、その応答を DNS アプリケーション検査エンジンに送信します。

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

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

static (dmz,outside) 209.165.200.225 192.168.100.10 dns
 

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

[outside]:209.165.200.225 --> [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 レコード リライトは取り消され、他のパケット処理が継続されます。

5. adaptive security applianceが DMZ インターフェイスの server.example.com に HTTP 要求を送信します。

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

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


ステップ 1 DMZ ネットワークの Web サーバのスタティック変換を次のように作成します。

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

引数は次のとおりです。

dmz :adaptive security applianceの DMZ インターフェイスの名前。

outside :adaptive security applianceの外部インターフェイスの名前。

mapped-address :Web サーバの変換後の IP アドレス。

real-address :Web サーバの実際の IP アドレス。

ステップ 2 Web サーバが HTTP 要求を受信するポートへのトラフィックを許可するアクセスリストを作成します。

hostname(config)# access-list acl-name extended permit tcp any host mapped-address eq port
 

引数は次のとおりです。

acl-name :アクセスリストに付けた名前。

mapped-address :Web サーバの変換後の IP アドレス。

port :Web サーバが HTTP 要求を受信する TCP ポート。

ステップ 3 ステップ 2 で作成したアクセスリストを外部インターフェイスに適用します。これを行うには、 access-group コマンドを次のように使用します。

hostname(config)# access-group acl-name in interface outside
 

ステップ 4 DNS 検査がディセーブルの場合、または最大 DNS パケット長を変更する場合は、DNS 検査を設定します。デフォルトで、DNS アプリケーション検査は、最大 DNS パケット長を 512 バイトとしてイネーブルになっています。設定手順については、「アプリケーション検査の設定」を参照してください。

ステップ 5 パブリック DNS サーバで、次のように Web サーバの A レコードを追加します。

domain-qualified-hostname. IN A mapped-address
 

domain-qualified-hostname には、ホスト名をドメイン サフィックスとともに指定します(例、server.example.com)。ホスト名の後ろのピリオドは重要です。 mapped-address には、Web サーバの変換後の IP アドレスを指定します。


 

次の例では、adaptive security appliance に従って図 23-2を設定しています。DNS 検査はすでにイネーブルになっていることが前提です。

hostname(config)# static (dmz,outside) 209.165.200.225 192.168.100.10 dns
hostname(config)# access-list 101 permit tcp any host 209.165.200.225 eq www
hostname(config)# access-group 101 in interface outside
 

このコンフィギュレーションには、DNS サーバの次の A レコードが必要です。

server.example.com. IN A 209.165.200.225
 

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
 

検査制御を追加するための DNS 検査ポリシーマップの設定

DNS アプリケーション検査は、DNS スプーフィングとキャッシュ ポイズニングを防ぐための DNS メッセージの管理機能をサポートしています。ユーザは、DNS のヘッダー、ドメイン名、リソース レコードのタイプおよびクラスに基づいてフィルタリングする規則を設定できます。たとえば、ゾーン転送をこの機能のあるサーバ間だけに制限します。

公開サーバが特定の内部ゾーンだけをサポートしている場合に、DNS パケットのヘッダーにある Recursion Desired フラグと Recursion Available フラグをマスクして、サーバを攻撃から守ることができます。また、DNS のランダム化をイネーブルにすると、ランダム化をサポートしていないサーバや強度の低い擬似乱数ジェネレータを使用するサーバのスプーフィングやキャッシュ ポイズニングを回避できます。照会できるドメイン名を制限することにより、公開サーバの保護がさらに確実になります。

DNS の不一致の応答数が増える(キャッシュ ポイズニング攻撃をしめす可能性があります)と、DNS の不一致のアラートを設定して通知されるようします。さらに、DNS のすべてのメッセージに Transaction Signature(TSIG; トランザクション シグニチャ)を付け、メッセージをチェックする設定も行えます。

メッセージがパラメータに違反したときの処理を指定するには、まず DNS 検査のポリシーマップを作成します。その後、「アプリケーション検査の設定」に従って DNS 検査をイネーブルにするときに、その検査のポリシーマップを適用できます。

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


ステップ 1 (オプション)「正規表現の作成」に従い、1 つ以上の正規表現をトラフィック照合コマンドに追加します。ステップ 3に記載されている match コマンドで照合できるテキストのタイプを参照してください。

ステップ 2 (オプション)「クラスマップ内の正規表現の作成」に従い、1 つ以上の正規表現のクラスマップを作成して正規表現をグループ化します。

ステップ 3 (オプション)次の手順に従って、DNS 検査のクラスマップを作成します。

クラスマップは複数のトラフィックとの照合をグループ化します。トラフィックは、 すべての match コマンドと照合してクラスマップと照合する必要があります。または、 match コマンドを直接ポリシーマップに指定してもかまいません。クラスマップを作成することと検査ポリシーマップでトラフィックとの照合を直接定義することの違いは、クラスマップでは複雑な一致基準を作成でき、クラスマップを再利用できるということです。

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

クラスマップで指定するトラフィックに対して、ドロップ、接続のドロップ、リセット、マスク、レート制限の設定、検査ポリシーマップでの接続のログの記録などの(すべてまたはいずれかの)アクションを指定できます。

match コマンドで異なるアクションを実行する場合、ポリシーマップで直接トラフィックを指定する必要があります。

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

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

class_map_name は、クラスマップの名前を指定します。 match-all キーワードはデフォルトで、トラフィックはクラスマップと照合するすべての基準と一致しなければならないことを指定します。 match-any キーワードは、トラフィックが基準の少なくとも 1 つの表現と照合する場合、トラフィックはクラスマップと照合することを指定します。CLI はクラスマップ コンフィギュレーション モードに移行し、1 つ以上の match コマンドを入力できます。

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

hostname(config-cmap)# description string
 

c. (オプション)DNS のヘッダーに設定されている特定のフラグを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] header-flag [eq] {f_well_known | f_value}
 

f_well_known 引数は、DNS のフラグのビットです。 f_value 引数は、16 進数で表した 16 ビットの値です。eq キーワードは、完全に一致しなければならないことを示します。

d. (オプション)DNS のタイプ(クエリーやリソース レコードも含む)を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] dns-type {eq t_well_known | t_val} {range t_val1 t_val2}
 

t_well_known 引数は、DNS のフラグのビットです。t_val 引数は、DNS タイプ フィールドの任意の値(0 ~ 65535)です。range キーワードは、範囲を指定し、eq キーワードは完全一致を指定します。

e. (オプション)DNS のクラスを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] dns-class {eq c_well_known | c_val} {range c_val1 c_val2}
 

c_well_known 引数は、DNS のクラスです。c_val 引数は、DNS クラス フィールドの任意の値です。range キーワードは、範囲を指定し、eq キーワードは完全一致を指定します。

f. (オプション)DNS の問い合せまたはリソース レコードを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match {question | {resource-record answer | authority | any}}
 

question キーワードは、DNS のメッセージの問い合せの部分を照合することを示します。resource-record キーワードは、DNS メッセージのリソース レコードの部分を照合することを示します。 answer キーワードは、Answer セクションのリソース レコードを照合することを示します。authority キーワードは、Authority セクションのリソース レコードを照合することを示します。 additional キーワードは、追加セクションのリソース レコードを照合することを示します。

g. (オプション)DNS のメッセージのドメイン名リストを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] domain-name {regex regex_id | regex class class_id]
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

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

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

policy_map_name には、ポリシーマップの名前を指定します。CLI はポリシーマップ コンフィギュレーション モードに移行します。

ステップ 5 (オプション)このポリシーマップに説明を追加するには、次のコマンドを使用します。

hostname(config-pmap)# description string
 

ステップ 6 トラフィックとの照合にアクションを適用するには、次の手順を実行します。

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

ステップ 3 で作成した DNS のクラスマップを指定するには、次のコマンドを入力します。

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

ステップ 3で説明されている match コマンドのいずれかを使用して、ポリシーマップで直接トラフィックを指定します。 match not コマンドを使用すると、 match not コマンドの基準と一致しないすべてのトラフィックにアクションが適用されます。

b. 次のコマンドを入力して、トラフィックとの照合時に実行するアクションを指定します。

hostname(config-pmap-c)# {[drop [send-protocol-error] | drop-connection [send-protocol-error]| mask | reset] [log] | rate-limit message_rate}
 

match または class コマンドですべてのオプションを使用できるわけではありません。使用できる正確なオプションについては、CLI ヘルプまたは『 Cisco ASA 5580 Adaptive Security Appliance Command Reference 』を参照してください。

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

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

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

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

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

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

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

複数の class コマンドまたは match コマンドをポリシーマップで指定できます。 class コマンドおよび match コマンドについては、「検査ポリシーマップ内のアクションの定義」を参照してください。

ステップ 7 検査エンジンに影響のあるパラメータを設定するには、次の手順を実行します。

a. パラメータ コンフィギュレーション モードに入るには、次のコマンドを入力します。

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

b. DNS のクエリーの DNS 識別子をランダム化するには、次のコマンドを入力します。

hostname(config-pmap-p)# id-randomization
 

c. DNS の ID が一致しなかったことをロギングするには、次のコマンドを入力します。

hostname(config-pmap-p)# id-mismatch [count number duration seconds] action log
 

count string 引数は、システム メッセージが送信される前の不一致のインスタンスの最大数を指定します。 duration seconds は、監視する期間を秒単位で指定します。

d. TSIG リソース レコードが存在しなければならないようにするには、次のコマンドを入力します。

hostname(config-pmap-p)# tsig enforced action {drop [log] | [log}
 

count string 引数は、システム メッセージが送信される前の不一致のインスタンスの最大数を指定します。 duration seconds は、監視する期間を秒単位で指定します。


 

次の例は、DNS 検査のポリシーマップを定義する方法を示しています。

hostname(config)# regex domain_example “example\.com”
hostname(config)# regex domain_foo “foo\.com”
 
hostname(config)# ! define the domain names that the server serves
hostname(config)# class-map type inspect regex match-any my_domains
hostname(config-cmap)# match regex domain_example
hostname(config-cmap)# match regex domain_foo
 
hostname(config)# ! Define a DNS map for query only
hostname(config)# class-map type inspect dns match-all pub_server_map
hostname(config-cmap)# match not header-flag QR
hostname(config-cmap)# match question
hostname(config-cmap)# match not domain-name regex class my_domains
 
hostname(config)# policy-map type inspect dns serv_prot
hostname(config-pmap)# class pub_server_map
hostname(config-pmap-c)# drop log
hostname(config-pmap-c)# match header-flag RD
hostname(config-pmap-c)# mask log
 
hostname(config)# class-map dns_serv_map
hostname(config-cmap)# match default-inspection-traffic
 
hostname(config)# policy-map pub_policy
hostname(config-pmap)# class dns_serv_map
hostname(config-pmap-c)# inspect dns serv_prot
 
hostname(config)# service-policy pub_policy interface dmz
 

ESMTP 検査

ESMTP 検査は、スパム、フィッシング、不正な形式のメッセージ、バッファ オーバーフロー/アンダーフローなどの攻撃を検出します。また、正常な ESMTP メッセージだけを通すためのアプリケーション セキュリティとプロトコルをサポートし、送受信者およびメール リレーのブロックも行います。

検査制御を追加するための ESMTP 検査ポリシーマップの設定

メッセージがパラメータに違反したときの処理を指定するには、まず ESMTP 検査のポリシーマップを作成します。次に、「アプリケーション検査の設定」に従って ESMTP 検査をイネーブルにするときに、そのポリシーマップを適用します。

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


ステップ 1 (オプション)「正規表現の作成」に従い、1 つ以上の正規表現をトラフィック照合コマンドに追加します。ステップ 3に記載されている match コマンドで照合できるテキストのタイプを参照してください。

ステップ 2 (オプション)「クラスマップ内の正規表現の作成」に従い、1 つ以上の正規表現のクラスマップを作成して正規表現をグループ化します。

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

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

policy_map_name には、ポリシーマップの名前を指定します。CLI はポリシーマップ コンフィギュレーション モードに移行します。

ステップ 4 (オプション)このポリシーマップに説明を追加するには、次のコマンドを使用します。

hostname(config-pmap)# description string
 

ステップ 5 トラフィックとの照合にアクションを適用するには、次の手順を実行します。

a. ステップ 3で説明されている match コマンドのいずれかを使用して、ポリシーマップで直接トラフィックを指定します。 match not コマンドを使用すると、 match not コマンドの基準と一致しないすべてのトラフィックにアクションが適用されます。

b. 次のコマンドを入力して、トラフィックとの照合時に実行するアクションを指定します。

hostname(config-pmap-c)# {[drop [send-protocol-error] | drop-connection [send-protocol-error]| mask | reset] [log] | rate-limit message_rate}
 

match または class コマンドですべてのオプションを使用できるわけではありません。使用できる正確なオプションについては、CLI ヘルプまたは『 Cisco ASA 5580 Adaptive Security Appliance Command Reference 』を参照してください。

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

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

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

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

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

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

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

複数の class コマンドまたは match コマンドをポリシーマップで指定できます。 class コマンドおよび match コマンドについては、「検査ポリシーマップ内のアクションの定義」を参照してください。

ステップ 6 検査エンジンに影響のあるパラメータを設定するには、次の手順を実行します。

a. パラメータ コンフィギュレーション モードに入るには、次のコマンドを入力します。

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

b. ローカル ドメインの名前を設定するには、次のコマンドを入力します。

hostname(config-pmap-p)# mail-relay domain-name action [drop-connection | log]]
 

drop-connection アクションは接続を閉じます。 log アクションは、このポリシーマップがトラフィックと照合するときにシステム ログ メッセージを送信します。

c. バナーを難読化するには、次のコマンドを入力します。

hostname(config-pmap-p)# mask-banner
 

d. (オプション)送信者または受信者の電子メール アドレス内の特殊文字を検出するには、次のコマンドを入力します。

hostname(config-pmap-p)# special-character action [drop-connection | log]]
 

このコマンドを使用して、パイプ文字(|)、逆引用符(`)、およびヌル文字を検出します。

e. (オプション)本文の長さまたは本文の行の長さを照合するには、次のコマンドを入力します。

hostname(config-pmap-p)# match body [line] length gt length
 

length はメッセージの本文の長さまたはメッセージ本文の行の長さです。

f. (オプション)ESMTP コマンド バーブを照合するには、次のコマンドを入力します。

hostname(config-pmap-p)# match cmd verb verb
 

verb は次のいずれかの ESMTP コマンドです。

AUTH|DATA|EHLO|ETRN||HELO|HELP|MAIL|NOOP|QUIT|RCPT|RSET|SAML|SOML|VRFY
 

g. (オプション)受信者のアドレスの数を照合するには、次のコマンドを入力します。

hostname(config-pmap-p)# match cmd RCPT count gt count
 

count は受信者のアドレスの数です。

h. (オプション)コマンドの行の長さを照合するには、次のコマンドを入力します。

hostname(config-pmap-p)# match cmd line length gt length
 

length はコマンドの行の長さです。

i. (オプション)ehlo-reply-parameters を照合するには、次のコマンドを入力します。

hostname(config-pmap-p)# match ehlo-reply-parameter extensions
 

extensions はクライアントからの EHLO メッセージに応答してサーバによって送信された ESMTP サービスの拡張子です。これらの拡張子は新しいコマンドまたは既存のコマンドへのパラメータとして実装されます。extensions は次のいずれかです。

8bitmime|binarymime|checkpoint|dsn|ecode|etrn|others|pipelining|size|vrfy
 

j. (オプション)ヘッダーの長さまたはヘッダーの行の長さを照合するには、次のコマンドを入力します。

hostname(config-pmap-p)# match header [line] length gt length
 

length は、ヘッダーまたは行の文字数です。

k. (オプション)ヘッダーの to-field の数を照合するには、次のコマンドを入力します。

hostname(config-pmap-p)# match header to-fields count gt count
 

count は、ヘッダーの to-field の受信者数です。

l. (オプション)無効な受信者の数を照合するには、次のコマンドを入力します。

hostname(config-pmap-p)# match invalid-recipients count gt count
 

count は無効な受信者の数です。

m. (オプション)使用される MIME 符合化方式のタイプを照合するには、次のコマンドを入力します。

hostname(config-pmap-p)# match mime encoding [7bit|8bit|base64|binary|others| quoted-printable]
 

n. (オプション)MIME ファイル名の長さを照合するには、次のコマンドを入力します。

hostname(config-pmap-p)# match mime filename length gt length
 

length は 1 ~ 1000 の範囲内の filename の長さです。

o. (オプション)MIME ファイルのタイプを照合するには、次のコマンドを入力します。

hostname(config-pmap-p)# match mime filetype regex [name | class name]
 

name または class name はファイル タイプまたはクラス マップを照合する正規表現です。クラス マップを照合するために使用される正規表現では、複数のファイル タイプを選択できます。

p. (オプション)送信者のアドレスを照合するには、次のコマンドを入力します。

hostname(config-pmap-p)# match sender-address regex [name | class name]
 

name または class name は送信者のアドレスまたはクラス マップを照合する正規表現です。クラス マップを照合するために使用される正規表現では、複数の送信者のアドレスを選択できます。

q. (オプション)送信者のアドレスの長さを照合するには、次のコマンドを入力します。

hostname(config-pmap-p)# match sender-address length gt length
 

length は、送信者のアドレスの文字数です。


 

次の例は、ESMTP 検査のポリシーマップを定義する方法を示しています。

hostname(config)# regex user1 “user1@cisco.com”
hostname(config)# regex user2 “user2@cisco.com”
hostname(config)# regex user3 “user3@cisco.com”
hostname(config)# class-map type regex senders_black_list
hostname(config-cmap)# description “Regular expressions to filter out undesired senders”
hostname(config-cmap)# match regex user1
hostname(config-cmap)# match regex user2
hostname(config-cmap)# match regex user3
 
hostname(config)# policy-map type inspect esmtp advanced_esmtp_map
hostname(config-pmap)# match sender-address regex class senders_black_list
hostname(config-pmap-c)# drop-connection log
 
hostname(config)# policy-map outside_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect esmtp advanced_esmtp_map
 
hostname(config)# service-policy outside_policy interface outside
 

FTP 検査

この項では、FTP 検査エンジンについて説明します。この項は、次の内容で構成されています。

「FTP 検査の概要」

「strict オプションの使用」

「検査制御を追加するための FTP 検査ポリシーマップの設定」

「FTP 検査の確認と監視」

FTP 検査の概要

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

ダイナミックなセカンダリ データ接続の準備

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

監査証跡の生成

埋め込み IP アドレスの変換

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


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


strict オプションの使用

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


) adaptive security applianceの通過が許可されない FTP コマンドを指定するには、「検査制御を追加するための FTP 検査ポリシーマップの設定」を参照して FTP マップを作成します。


インターフェイスで strict オプションをイネーブルにすると、FTP 検査によって次の動作が強制的に適用されます。

FTP コマンドが確認応答されてからでないと、adaptive security applianceは新しいコマンドを許可しません。

adaptive security applianceは、埋め込みコマンドを送信する接続をドロップします。

227 コマンドと PORT コマンドは、エラー文字列に表示されないようにチェックされます。


注意 strict オプションを使用すると、FTP 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 ストリーム編集:adaptive security applianceは、TCP ストリーム編集を検出した場合に接続を閉じます。

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

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

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

検査制御を追加するための FTP 検査ポリシーマップの設定

厳密な FTP 検査には、セキュリティと制御を向上させるためのコマンド フィルタリングとセキュリティ チェック機能が用意されています。プロトコルとの適合性の検査には、パケットの長さのチェック、デリミタとパケットの形式のチェック、コマンドのターミネータのチェック、およびコマンドの検証が含まれます。

また、ユーザの値に基づいて FTP 接続をブロックできるので、FTP サイトにダウンロード用のファイルを置き、アクセスを特定のユーザだけに制限できます。ファイル名、サーバ名、および他のアトリビュートに基づいて、FTP 接続をブロックできます。検査時に FTP 接続が拒否されると、システム メッセージのログが作成されます。

FTP クライアントがサーバのシステム タイプを取得することを FTP 検査で許可する場合、および許可する FTP コマンドを制限する場合は、FTP マップを作成し、設定する必要があります。次に、「アプリケーション検査の設定」に従って FTP 検査をイネーブルにするときに、その FTP マップを適用します。

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


ステップ 1 (オプション)「正規表現の作成」に従い、1 つ以上の正規表現をトラフィック照合コマンドに追加します。ステップ 3に記載されている match コマンドで照合できるテキストのタイプを参照してください。

ステップ 2 (オプション)「クラスマップ内の正規表現の作成」に従い、1 つ以上の正規表現のクラスマップを作成して正規表現をグループ化します。

ステップ 3 (オプション)FTP 検査のクラスマップを作成するには、次の手順を実行します。

クラスマップは複数のトラフィックとの照合をグループ化します。トラフィックは、 すべての match コマンドと照合してクラスマップと照合する必要があります。または、 match コマンドを直接ポリシーマップに指定してもかまいません。クラスマップを作成することと検査ポリシーマップでトラフィックとの照合を直接定義することの違いは、クラスマップでは複雑な一致基準を作成でき、クラスマップを再利用できるということです。

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

クラスマップで指定するトラフィックに対して、ドロップ、接続のドロップ、リセット、マスク、レート制限の設定、検査ポリシーマップでの接続のログの記録などの(すべてまたはいずれかの)アクションを指定できます。

match コマンドで異なるアクションを実行する場合、ポリシーマップで直接トラフィックを指定する必要があります。

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

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

class_map_name は、クラスマップの名前を指定します。 match-all キーワードはデフォルトで、トラフィックはクラスマップと照合するすべての基準と一致しなければならないことを指定します。 match-any キーワードは、トラフィックが基準の少なくとも 1 つの表現と照合する場合、トラフィックはクラスマップと照合することを指定します。CLI はクラスマップ コンフィギュレーション モードに移行し、1 つ以上の match コマンドを入力できます。

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

hostname(config-cmap)# description string
 

c. (オプション)FTP で転送するファイル名を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] filename regex [regex_name | class regex_class_name]
 

regex_nameステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

d. (オプション)FTP で転送するファイルのタイプを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] filetype regex [regex_name | class regex_class_name]
 

regex_nameステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

e. (オプション)特定の FTP コマンドを拒否するには、次のコマンドを使用します。

hostname(config-cmap)# match [not] request-command ftp_command [ftp_command...]
 

ftp_command には、制限する 1 つ以上の FTP コマンドを指定します。制限できる FTP コマンドのリストについては、 表 23-3 を参照してください。

 

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

request-command deny オプション
目的

appe

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

cdup

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

dele

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

get

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

help

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

mkd

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

put

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

rmd

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

rnfr

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

rnto

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

site

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

stou

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

f. (オプション)FTP サーバを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] server regex [regex_name | class regex_class_name]
 

regex_nameステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

g. (オプション)FTP のユーザ名を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] username regex [regex_name | class regex_class_name]
 

regex_nameステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

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

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

policy_map_name には、ポリシーマップの名前を指定します。CLI はポリシーマップ コンフィギュレーション モードに移行します。

ステップ 5 (オプション)このポリシーマップに説明を追加するには、次のコマンドを使用します。

hostname(config-pmap)# description string
 

ステップ 6 トラフィックとの照合にアクションを適用するには、次の手順を実行します。

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

ステップ 3 で作成した FTP のクラスマップを指定するには、次のコマンドを入力します。

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

ステップ 3で説明されている match コマンドのいずれかを使用して、ポリシーマップで直接トラフィックを指定します。 match not コマンドを使用すると、 match not コマンドの基準と一致しないすべてのトラフィックにアクションが適用されます。

b. 次のコマンドを入力して、トラフィックとの照合時に実行するアクションを指定します。

hostname(config-pmap-c)# {[drop [send-protocol-error] | drop-connection [send-protocol-error]| mask | reset] [log] | rate-limit message_rate}
 

match または class コマンドですべてのオプションを使用できるわけではありません。使用できる正確なオプションについては、CLI ヘルプまたは『 Cisco ASA 5580 Adaptive Security Appliance Command Reference 』を参照してください。

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

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

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

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

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

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

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

複数の class コマンドまたは match コマンドをポリシーマップで指定できます。 class コマンドおよび match コマンドについては、「検査ポリシーマップ内のアクションの定義」を参照してください。

ステップ 7 検査エンジンに影響のあるパラメータを設定するには、次の手順を実行します。

a. パラメータ コンフィギュレーション モードに入るには、次のコマンドを入力します。

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

b. FTP サーバとの接続時に表示されるバナーをマスクするには、次のコマンドを入力します。

hostname(config-pmap-p)# mask-banner
 

c. syst コマンドへの応答をマスクするには、次のコマンドを入力します。

hostname(config-pmap-p)# mask-syst-reply
 


 

ユーザが FTP サーバに接続すると、ユーザ名とパスワードを入力する前にバナーが表示されます。デフォルトでは、このバナーには、ハッカーが悪用する可能性のある情報が含まれています。次の例では、このバナーをマスクする方法を示しています。

 
hostname(config)# policy-map type inspect ftp mymap
hostname(config-pmap)# parameters
hostname(config-pmap-p)# mask-banner
 
hostname(config)# class-map match-all ftp-traffic
hostname(config-cmap)# match port tcp eq ftp
 
hostname(config)# policy-map ftp-policy
hostname(config-pmap)# class ftp-traffic
hostname(config-pmap-c)# inspect ftp strict mymap
 
hostname(config)# service-policy ftp-policy interface inside
 

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 検査ポリシーマップの設定」

「GTP 検査の確認と監視」


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


GTP 検査の概要

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

図 23-3 GPRS トンネリング プロトコル

 

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

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

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


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


検査制御を追加するための GTP 検査ポリシーマップの設定

GTP トラフィックに対して追加のパラメータを実行する場合は、GTP マップを作成し、設定します。 inspect gtp コマンドでマップを指定しないと、adaptive security applianceはデフォルトの GTP マップを使用します。デフォルトの GTP マップは次のデフォルト値で事前に設定されています。

request-queue 200

timeout gsn 0:30:00

timeout pdp-context 0:30:00

timeout request 0:01:00

timeout signaling 0:30:00

timeout tunnel 0:01:00

tunnel-limit 500

GTP マップを作成し、設定するには、次の手順を実行します。次に、「アプリケーション検査の設定」に従って GTP 検査をイネーブルにするときに、その GTP マップを適用します。


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

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

policy_map_name には、ポリシーマップの名前を指定します。CLI はポリシーマップ コンフィギュレーション モードに移行します。

ステップ 2 (オプション)このポリシーマップに説明を追加するには、次のコマンドを使用します。

hostname(config-pmap)# description string
 

ステップ 3 アクセス ポイント名を照合するには、次のコマンドを入力します。

hostname(config-pmap)# match [not] apn regex [regex_name | class regex_class_name]
 

regex_nameステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

ステップ 4 メッセージ ID を照合するには、次のコマンドを入力します。

hostname(config-pmap)# match [not] message id [message_id | range lower_range upper_range]
 

message_id は 1 ~ 255 文字の英数字の識別子です。lower_range は、メッセージ ID の下限です。upper_range は、メッセージ ID の上限です。

ステップ 5 メッセージの長さを照合するには、次のコマンドを入力します。

hostname(config-pmap)# match [not] message length min min_length max max_length
 

min_length と max_length には、どちらも 1 ~ 65536 の値を指定します。この長さは、GTP のヘッダーとメッセージの残りの部分(UDP パケットのペイロード)の合計です。

ステップ 6 バージョンを照合するには、次のコマンドを入力します。

hostname(config-pmap)# match [not] version [version_id | range lower_range upper_range]
 

ここで、 version_id は 0 ~ 255 になります。lower_range は、バージョンの範囲の下限です。upper_range は、バージョンの範囲の上限です。

ステップ 7 検査エンジンに影響のあるパラメータを設定するには、次の手順を実行します。

a. パラメータ コンフィギュレーション モードに入るには、次のコマンドを入力します。

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

mnc network_code 引数には、ネットワーク コードを表す 2 桁または 3 桁の値を指定します。

デフォルトでは、セキュリティ アプライアンスは、MCC と MNC の有効な組み合せがあるかをチェックしません。このコマンドは、IMSI プレフィックス フィルタリングに使用されます。受信パケットの IMSI の MCC と MNC は、このコマンドに設定されている MCC と MNC と比較され、一致しない場合はドロップされます。

このコマンドは、IMSI プレフィックス フィルタリングをイネーブルにするために使用する必要があります。複数の検査を設定して、許可する MCC と MNC の組み合せを指定できます。デフォルトでは、MNC と MCC の組み合せが有効であるかはadaptive security applianceによってチェックされないため、設定した組み合せが有効であるかどうかを確認する必要があります。MCC と MNC の詳細については、ITU E.212 勧告『 Identification Plan for Land Mobile Stations 』を参照してください。

b. 無効な GTP パケット、または、そのままでは解析で失敗するパケットやドロップされるパケットを許可するには、次のコマンドを入力します。

hostname(config-pmap-p)# permit errors
 

デフォルトでは、無効なパケットまたは解析中に失敗したパケットはドロップされます。

c. GSN プーリングのサポートをイネーブルにするには、 permit response コマンドを使用します。

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

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

d. ロードバランシング GSN のプールを表すオブジェクトを作成するには、次の手順を実行します。

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

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

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

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

e. 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)#
 

f. ロードバランシング 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)#
 

g. 上記の手順 c. d で定義した GSN プールを表すネットワーク オブジェクトの任意の GSN から、手順 c.f. で定義した SGSN を表すネットワーク オブジェクトへの GTP 応答を許可するには、次のコマンドを入力します。

hostname(config)# gtp-map map_name
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
 

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

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)# gtp-map gtp-policy
hostname(config-gtp-map)# permit response to-object-group sgsn32 from-object-group gsnpool32
 

h. 応答を待機するキューに入れることのできる GTP 要求の最大数を指定するには、次のコマンドを入力します。

hostname(config-gtp-map)# request-queue max_requests
 

max_requests 引数には、応答を待機するキューに入れることのできる GTP 要求の最大数を 1 ~ 4294967295 で指定します。デフォルトは 200 です。

この制限値に達した後に新しい要求が到着すると、最も長時間キューに入っていた要求が削除されます。「Version Not Supported」および「SGSN Context Acknowledge」というエラー メッセージは、要求と見なされないため、応答を待機する要求のキューに入れられません。

i. GTP セッションの非アクティビティ タイマーを変更するには、次のコマンドを入力します。

hostname(config-gtp-map)# timeout {gsn | pdp-context | request | signaling | tunnel} hh:mm:ss
 

このコマンドを、タイムアウトごとに別々に入力します。

gsn キーワードは、GSN が削除されるまでの非アクティブ期間を指定します。

pdp-context キーワードは、PDP コンテキストの受信を開始するまでの最大許容期間を指定します。

request キーワードは、GTP メッセージの受信を開始するまでの最大許容期間を指定します。

signaling キーワードは、GTP シグナリングが削除されるまでの非アクティブ期間を指定します。

tunnel キーワードは、GTP トンネルが切断されるまでの非アクティブ期間を指定します。

hh : mm : ss 引数では、タイムアウトを指定します。 hh には時間を、 mm には分を、 ss には秒を指定します。値 0 は、切断しないことを意味します。

j. adaptive security appliance上でアクティブであることが許容される GTP トンネルの最大数を指定するには、次のコマンドを入力します。

hostname(config-gtp-map)# tunnel-limit max_tunnels

 

max_tunnels 引数には、許容する最大トンネル数を 1 ~ 4294967295 で指定します。デフォルトは 500 です。

このコマンドで指定したトンネル数に達すると、新しい要求はドロップされます。


 

次の例は、ネットワークのトンネルの数を制限する方法を示しています。

hostname(config)# policy-map type inspect gtp gmap
hostname(config-pmap)# parameters
hostname(config-pmap-p)# tunnel-limit 3000
 
hostname(config)# policy-map global_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect gtp gmap
 
hostname(config)# service-policy global_policy global
 

GTP 検査の確認と監視

GTP コンフィギュレーションを表示するには、特権 EXEC モードで show service-policy inspect gtp コマンドを入力します。このコマンドの詳細なシンタックスについては、『 Cisco ASA 5580 Adaptive 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 statistics gsn コマンドの GSN 出力例を示します。

hostname# show service-policy inspect gtp statistics gsn 9.9.9.9
1 in use, 1 most used, timeout 0:00:00
 
GTP GSN Statistics for 9.9.9.9, Idle 0:00:00, restart counter 0
Tunnels Active 0 Tunnels Created 0
Tunnels Destroyed 0
Total Messages Received 2
Signaling Messages Data Messages
total received 2 0
dropped 0 0
forwarded 2 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 検査の概要

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

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

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

H.225 と H.245 の両メッセージ内に埋め込まれている必要な IPv4 アドレスを NAT 処理します。H.323 メッセージは PER 符号化形式で符号化されているため、adaptive security applianceでは 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 を使用していない場合は、adaptive security applianceが 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 ゲートキーパの使用時には、adaptive security applianceは、ACF メッセージの検査に基づいて、H.225 接続を開きます。

H.225 メッセージを検査した後、adaptive security applianceは H.245 チャネルを開き、H.245 チャネルで送信されるトラフィックを検査します。adaptive security applianceを通過するすべての H.245 メッセージは、H.245 アプリケーション検査を受けます。それによって、埋め込み IP アドレスが変換され、H.245 メッセージでネゴシエートされたメディア チャネルが開かれます。

H.323 ITU 規準では、メッセージ長を定義する TPKT ヘッダーが最初に送信されてから、H.225 と H.245 が信頼できる接続上を送信されることが要求されています。TPKT ヘッダーは、必ずしも H.225 メッセージおよび H.245 メッセージと同一の TCP パケット内で送信される必要はないため、adaptive security applianceでは、メッセージを正しく処理して復号化するために TPKT 長を記憶しておく必要があります。adaptive security applianceは、次に届くメッセージに備えて、TPKT 長が格納されたレコードを接続ごとに保持します。

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


) adaptive security applianceは、TPKT に対する ACK の代理処理では TCP オプションをサポートしていません。


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

制限事項

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

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

H.323 アプリケーション検査は、同一セキュリティ レベルのインターフェイス間の NAT ではサポートされていません。

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

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

検査制御を追加するための H.323 検査ポリシーマップの設定

メッセージがパラメータに違反したときの処理を指定するには、まず H.323 検査のポリシーマップを作成します。次に、「アプリケーション検査の設定」に従って H.323 検査をイネーブルにするときに、そのポリシーマップを適用します。

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


ステップ 1 (オプション)「正規表現の作成」に従い、1 つ以上の正規表現をトラフィック照合コマンドに追加します。ステップ 3に記載されている match コマンドで照合できるテキストのタイプを参照してください。

ステップ 2 (オプション)「クラスマップ内の正規表現の作成」に従い、1 つ以上の正規表現のクラスマップを作成して正規表現をグループ化します。

ステップ 3 (オプション)次の手順に従って、H.323 検査のクラスマップを作成します。

クラスマップは複数のトラフィックとの照合をグループ化します。トラフィックは、 すべての match コマンドと照合してクラスマップと照合する必要があります。または、 match コマンドを直接ポリシーマップに指定してもかまいません。クラスマップを作成することと検査ポリシーマップでトラフィックとの照合を直接定義することの違いは、クラスマップでは複雑な一致基準を作成でき、クラスマップを再利用できるということです。

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

クラスマップで指定するトラフィックに対して、接続のドロップ、リセット、検査ポリシーマップでの接続のログの記録などの(すべてまたはいずれかの)アクションを指定できます。

match コマンドで異なるアクションを実行する場合、ポリシーマップで直接トラフィックを指定する必要があります。

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

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

class_map_name は、クラスマップの名前を指定します。 match-all キーワードはデフォルトで、トラフィックはクラスマップと照合するすべての基準と一致しなければならないことを指定します。 match-any キーワードは、トラフィックが基準の少なくとも 1 つの表現と照合する場合、トラフィックはクラスマップと照合することを指定します。CLI はクラスマップ コンフィギュレーション モードに移行し、1 つ以上の match コマンドを入力できます。

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

hostname(config-cmap)# description string
 

string はクラスマップの説明です(200 文字以内)。

c. (オプション)受信側を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] called-party regex {class class_name | regex_name}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

d. (オプション)メディアのタイプを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] media-type {audio | data | video}
 

ステップ 4 次のコマンドを入力して、H.323 検査のポリシーマップを作成します。

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

policy_map_name には、ポリシーマップの名前を指定します。CLI はポリシーマップ コンフィギュレーション モードに移行します。

ステップ 5 (オプション)このポリシーマップに説明を追加するには、次のコマンドを使用します。

hostname(config-pmap)# description string
 

ステップ 6 トラフィックとの照合にアクションを適用するには、次の手順を実行します。

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

ステップ 3 で作成した H.323 のクラスマップを指定するには、次のコマンドを入力します。

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

ステップ 3で説明されている match コマンドのいずれかを使用して、ポリシーマップで直接トラフィックを指定します。 match not コマンドを使用すると、 match not コマンドの基準と一致しないすべてのトラフィックにアクションが適用されます。

b. 次のコマンドを入力して、トラフィックとの照合時に実行するアクションを指定します。

hostname(config-pmap-c)# {[drop [send-protocol-error] | drop-connection [send-protocol-error]| mask | reset] [log] | rate-limit message_rate}
 

match または class コマンドですべてのオプションを使用できるわけではありません。使用できる正確なオプションについては、CLI ヘルプまたは『 Cisco ASA 5580 Adaptive Security Appliance Command Reference 』を参照してください。

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

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

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

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

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

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

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

複数の class コマンドまたは match コマンドをポリシーマップで指定できます。 class コマンドおよび match コマンドについては、「検査ポリシーマップ内のアクションの定義」を参照してください。

ステップ 7 検査エンジンに影響のあるパラメータを設定するには、次の手順を実行します。

a. パラメータ コンフィギュレーション モードに入るには、次のコマンドを入力します。

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

b. H.323 通話の制限時間を指定するには、次のコマンドを入力します。

hostname(config-pmap-p)# call-duration-limit time
 

time は、秒単位で示した制限時間です。0:0:0 ~ 1163:0:0 の値を指定できます。0 は、タイムアウトしないことを意味します。

c. 初期コール セットアップで発信側の番号を使用しなければならないようにするには、次のコマンドを入力します。

hostname(config-pmap-p)# call-party-number
 

d. H.245 トンネルをブロックするには、次のコマンドを入力します。

hostname(config-pmap-p)# h245-tunnel-block action {drop-connection | log}
 

e. HSI グループを定義、および HSI グループ コンフィギュレーション モードに入るには、次のコマンドを入力します。

hostname(config-pmap-p)# hsi-group id
 

id は、HSI グループの ID です。0 ~ 2147483647 の値を指定できます。

HSI グループに HSI を追加するには、HSI グループ コンフィギュレーション モードで次のコマンドを入力します。

hostname(config-h225-map-hsi-grp)# hsi ip_address
 

ip_address は、追加するホストです。1 つの HSI グループに、ホストを 5 個まで入れられます。

HSI グループにエンドポイントを追加するには、HSI グループ コンフィギュレーション モードで次のコマンドを入力します。

hostname(config-h225-map-hsi-grp)# endpoint ip_address if_name
 

ip_address は、追加するエンドポイント、if_name は、エンドポイントからセキュリティ アプライアンスに接続するときに経由するインターフェイスです。1 つの HSI グループに、エンドポイントを 10 個まで入れられます。

f. プロトコルに準拠するために、ピンホールに流れる RTP パケットをチェックするには、次のコマンドを入力します。

hostname(config-pmap-p)# rtp-conformance [enforce-payloadtype]
 

enforce-payloadtype キーワードはシグナリング交換に基づいた音声またはビデオ用のペイロード タイプを使用します。

g. 状態確認の検査をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-p)# state-checking {h225 | ras}
 


 

次の例は、電話番号のフィルタリングを設定する方法を示しています。

hostname(config)# regex caller 1 “5551234567”
hostname(config)# regex caller 2 “5552345678”
hostname(config)# regex caller 3 “5553456789”
 
hostname(config)# class-map type inspect h323 match-all h323_traffic
hostname(config-pmap-c)# match called-party regex caller1
hostname(config-pmap-c)# match calling-party regex caller2
 
hostname(config)# policy-map type inspect h323 h323_map
hostname(config-pmap)# parameters
hostname(config-pmap-p)# class h323_traffic
hostname(config-pmap-c)# drop
 

H.323 および H.225 のタイムアウト値の設定

H.225 シグナリング接続を閉じるまでのアイドル時間を設定するには、 timeout h225 コマンドを使用します。H.225 タイムアウトのデフォルトは、1 時間です。

H.323 制御接続を閉じるまでのアイドル時間を設定するには、 timeout h323 コマンドを使用します。デフォルトは 5 分です。

H.323 検査の確認と監視

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

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

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

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

H.225 セッションの監視

show h225 コマンドは、adaptive security applianceを越えて確立されている 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
 

この出力は、現在adaptive security applianceを通過しているアクティブ 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 コマンドは、スロースタートを使用しているエンドポイントがadaptive security applianceを越えて確立した 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
 

adaptive security applianceを越えているアクティブな 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 コマンドは、adaptive security applianceを越えてゲートキーパーとその 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 検査の概要

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

拡張 HTTP 検査

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

Java と ActiveX のフィルタリング

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

拡張 HTTP 検査機能(アプリケーション ファイアウォールとも呼ばれ、HTTP マップ設定時に使用可能。「検査制御を追加するための HTTP ポリシーマップの設定」を参照)を使用すると、攻撃者が HTTP メッセージを使用してネットワーク セキュリティ ポリシーを回避することを阻止できます。この機能により、すべての HTTP メッセージについて次のことが確認されます。

RFC 2616 への準拠

RFC で定義された方式だけ使用

追加の基準への準拠

検査制御を追加するための HTTP ポリシーマップの設定

メッセージがパラメータに違反したときの処理を指定するには、まず HTTP 検査のポリシーマップを作成します。次に、「アプリケーション検査の設定」に従って HTTP 検査をイネーブルにするときに、その検査ポリシーマップを適用します。


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


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


ステップ 1 (オプション)「正規表現の作成」に従い、1 つ以上の正規表現をトラフィック照合コマンドに追加します。ステップ 3に記載されている match コマンドで照合できるテキストのタイプを参照してください。

ステップ 2 (オプション)「クラスマップ内の正規表現の作成」に従い、1 つ以上の正規表現のクラスマップを作成して正規表現をグループ化します。

ステップ 3 (オプション)HTTP 検査のクラスマップを作成するには、次の手順を実行します。

クラスマップは複数のトラフィックとの照合をグループ化します。トラフィックは、 すべての match コマンドと照合してクラスマップと照合する必要があります。または、 match コマンドを直接ポリシーマップに指定してもかまいません。クラスマップを作成することと検査ポリシーマップでトラフィックとの照合を直接定義することの違いは、クラスマップでは複雑な一致基準を作成でき、クラスマップを再利用できるということです。

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

クラスマップで指定するトラフィックに対して、ドロップ、接続のドロップ、リセット、マスク、レート制限の設定、検査ポリシーマップでの接続のログの記録などの(すべてまたはいずれかの)アクションを指定できます。

match コマンドで異なるアクションを実行する場合、ポリシーマップで直接トラフィックを指定する必要があります。

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

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

class_map_name は、クラスマップの名前を指定します。 match-all キーワードはデフォルトで、トラフィックはクラスマップと照合するすべての基準と一致しなければならないことを指定します。 match-any キーワードは、トラフィックが基準の少なくとも 1 つの表現と照合する場合、トラフィックはクラスマップと照合することを指定します。CLI はクラスマップ コンフィギュレーション モードに移行し、1 つ以上の match コマンドを入力できます。

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

hostname(config-cmap)# description string
 

c. (オプション)HTTP 応答メッセージの content-type フィールドが、対応する HTTP 要求メッセージの accept フィールドと一致しないトラフィックを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] req-resp content-type mismatch
 

d. (オプション)HTTP 要求メッセージにあるテキストを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] request args regex [regex_name | class regex_class_name]
 

regex_nameステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

e. (オプション)HTTP 要求メッセージの本文、または本文の最大長を超えているトラフィックを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] request body {regex [regex_name | class regex_class_name] | length gt max_bytes}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。 length gt max_bytes はメッセージ本文の最大長(バイト)です。

f. (オプション)HTTP 要求メッセージのヘッダーにあるテキストを照合するか、ヘッダーの数または長さを制限するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] request header {[field] [regex [regex_name | class regex_class_name]] | [length gt max_length_bytes | count gt max_count_bytes]}
 

field は事前定義済みのメッセージ ヘッダーのキーワードです。 regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。 length gt max_bytes はメッセージ本文の最大長(バイト)です。 count gt max_count はヘッダー フィールドの最大数です。

g. (オプション)HTTP 要求メッセージのメソッドのテキストを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] request method {[method] | [regex [regex_name | class regex_class_name]]
 

method は、メッセージのメソッドの事前定義済みキーワードです。 regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

h. (オプション)HTTP 要求メッセージの URI のテキストを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] request uri {regex [regex_name | class regex_class_name] | length gt max_bytes}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。 length gt max_bytes はメッセージ本文の最大長(バイト)です。

i. (オプション)HTTP 応答メッセージの本文を照合するか、Java アプレットと Active X オブジェクトのタグをコメントアウトするには、次のコマンドを入力します。

hostname(config-cmap)# match [not] response body {[active-x] | [java-applet] | [regex [regex_name | class regex_class_name]] | length gt max_bytes}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。 length gt max_bytes はメッセージ本文の最大長(バイト)です。

j. (オプション)HTTP 応答メッセージのヘッダーにあるテキストを照合するか、ヘッダーの数または長さを制限するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] response header {[field] [regex [regex_name | class regex_class_name]] | [length gt max_length_bytes | count gt max_count]}
 

field は事前定義済みのメッセージ ヘッダーのキーワードです。 regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。 length gt max_bytes はメッセージ本文の最大長(バイト)です。 count gt max_count はヘッダー フィールドの最大数です。

k. (オプション)HTTP 応答メッセージのステータス行にあるテキストを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] response status-line {regex [regex_name | class regex_class_name]}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

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

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

policy_map_name には、ポリシーマップの名前を指定します。CLI はポリシーマップ コンフィギュレーション モードに移行します。

ステップ 5 (オプション)このポリシーマップに説明を追加するには、次のコマンドを使用します。

hostname(config-pmap)# description string
 

ステップ 6 トラフィックとの照合にアクションを適用するには、次の手順を実行します。

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

ステップ 3 で作成した HTTP のクラスマップを指定するには、次のコマンドを入力します。

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

ステップ 3で説明されている match コマンドのいずれかを使用して、ポリシーマップで直接トラフィックを指定します。 match not コマンドを使用すると、 match not コマンドの基準と一致しないすべてのトラフィックにアクションが適用されます。

b. 次のコマンドを入力して、トラフィックとの照合時に実行するアクションを指定します。

hostname(config-pmap-c)# {[drop [send-protocol-error] | drop-connection [send-protocol-error]| mask | reset] [log] | rate-limit message_rate}
 

match または class コマンドですべてのオプションを使用できるわけではありません。使用できる正確なオプションについては、CLI ヘルプまたは『 Cisco ASA 5580 Adaptive Security Appliance Command Reference 』を参照してください。

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

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

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

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

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

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

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

複数の class コマンドまたは match コマンドをポリシーマップで指定できます。 class コマンドおよび match コマンドについては、「検査ポリシーマップ内のアクションの定義」を参照してください。

ステップ 7 検査エンジンに影響のあるパラメータを設定するには、次の手順を実行します。

a. パラメータ コンフィギュレーション モードに入るには、次のコマンドを入力します。

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

b. HTTP のプロトコル違反をチェックするには、次のコマンドを入力します。

hostname(config-pmap-p)# protocol-violation [action [drop-connection | reset | log]]
 

drop-connection アクションは接続を閉じます。 reset アクションは接続を閉じ、TCP リセットをクライアントに送信します。 log アクションは、このポリシーマップがトラフィックと照合するときにシステム ログ メッセージを送信します。

c. ヘッダーの server フィールドの文字列を置き換えるには、次のコマンドを入力します。

hostname(config-pmap-p)# spoof-server string
 

string 引数は、server フィールドを置き換える文字列を示します。注意:WebVPN のストリームは spoof-server コマンドの対象外です。


 

次の例に、HTTP 検査のポリシーマップを定義する方法を示します。この例では、「GET」または「PUT」メソッドで「www\.xyz.com/.*\.asp」または「www\.xyz[0-9][0-9]\.com」にアクセスする HTTP 接続を許可し、ログに記録しています。URL とメソッドの他の組み合せはすべて許可され、ログに記録されません。

hostname(config)# regex url1 “www\.xyz.com/.*\.asp”
hostname(config)# regex url2 “www\.xyz[0-9][0-9]\.com”
hostname(config)# regex get “GET”
hostname(config)# regex put “PUT”
 
hostname(config)# class-map type regex match-any url_to_log
hostname(config-cmap)# match regex url1
hostname(config-cmap)# match regex url2
hostname(config-cmap)# exit
 
hostname(config)# class-map type regex match-any methods_to_log
hostname(config-cmap)# match regex get
hostname(config-cmap)# match regex put
hostname(config-cmap)# exit
 
hostname(config)# class-map type inspect http http_url_policy
hostname(config-cmap)# match request uri regex class url_to_log
hostname(config-cmap)# match request method regex class methods_to_log
hostname(config-cmap)# exit
 
hostname(config)# policy-map type inspect http http_policy
hostname(config-pmap)# class http_url_policy
hostname(config-pmap-c)# log
 

インスタント メッセージ検査

この項では、Instant Messaging(IM; インスタント メッセージ)検査エンジンについて説明します。この項は、次の内容で構成されています。

「IM 検査の概要」

「検査制御を追加するためのインスタント メッセージ検査ポリシーマップの設定」

IM 検査の概要

IM 検査エンジンを使用して、IM アプリケーションの制御方法を細かく調整できます。これにより、ネットワークの使用量を調節し、機密情報の漏洩やワームの繁殖、他の攻撃から企業のネットワークを守ります。

検査制御を追加するためのインスタント メッセージ検査ポリシーマップの設定

メッセージがパラメータに違反したときの処理を指定するには、まず IM 検査のポリシーマップを作成します。次に、「アプリケーション検査の設定」に従って IM 検査をイネーブルにするときに、そのポリシーマップを適用します。

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


ステップ 1 (オプション)「正規表現の作成」に従い、1 つ以上の正規表現をトラフィック照合コマンドに追加します。ステップ 3に記載されている match コマンドで照合できるテキストのタイプを参照してください。

ステップ 2 (オプション)「クラスマップ内の正規表現の作成」に従い、1 つ以上の正規表現のクラスマップを作成して正規表現をグループ化します。

ステップ 3 (オプション)IM 検査のクラスマップを作成するには、次の手順を実行します。

クラスマップは複数のトラフィックとの照合をグループ化します。トラフィックは、 すべての match コマンドと照合してクラスマップと照合する必要があります。または、 match コマンドを直接ポリシーマップに指定してもかまいません。クラスマップを作成することと検査ポリシーマップでトラフィックとの照合を直接定義することの違いは、クラスマップでは複雑な一致基準を作成でき、クラスマップを再利用できるということです。

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

クラスマップで指定するトラフィックに対して、接続のドロップ、リセット、検査ポリシーマップでの接続のログの記録などの(すべてまたはいずれかの)アクションを指定できます。

match コマンドで異なるアクションを実行する場合、ポリシーマップで直接トラフィックを指定する必要があります。

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

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

class_map_name は、クラスマップの名前を指定します。 match-all キーワードはデフォルトで、トラフィックはクラスマップと照合するすべての基準と一致しなければならないことを指定します。 match-any キーワードは、トラフィックが基準の少なくとも 1 つの表現と照合する場合、トラフィックはクラスマップと照合することを指定します。CLI はクラスマップ コンフィギュレーション モードに移行し、1 つ以上の match コマンドを入力できます。

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

hostname(config-cmap)# description string
 

string は、クラスマップの説明です(200 文字以内)。

c. (オプション)特定の IM プロトコル(Yahoo や MSN など)のトラフィックを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] protocol {im-yahoo | im-msn}
 

d. (オプション)特定の IM サービス(チャット、ファイルの転送、Web カメラ、音声チャット、会議、ゲームなど)を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] service {chat | file-transfer | webcam | voice-chat | conference | games}
 

e. (オプション)IM メッセージの送信元のログイン名を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] login-name regex {class class_name | regex_name}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

f. (オプション)IM メッセージの宛先のログイン名を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] peer-login-name regex {class class_name | regex_name}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

g. (オプション)IM メッセージの送信元の IP アドレスを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] ip-address ip_address ip_address_mask
 

ip_address と ip_address_mask は、メッセージの送信元の IP アドレスとネットマスクです。

h. (オプション)IM メッセージの宛先の IP アドレスを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] peer-ip-address ip_address ip_address_mask
 

ip_address と ip_address_mask は、メッセージの宛先の IP アドレスとネットマスクです。

i. (オプション)IM メッセージのバージョンを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] version regex {class class_name | regex_name}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

j. (オプション)IM メッセージのファイル名を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] filename regex {class class_name | regex_name}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。


) MSN IM プロトコルではサポートされていません。


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

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

policy_map_name には、ポリシーマップの名前を指定します。CLI はポリシーマップ コンフィギュレーション モードに移行します。

ステップ 5 (オプション)このポリシーマップに説明を追加するには、次のコマンドを使用します。

hostname(config-pmap)# description string
 

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

ステップ 3 で作成した IM のクラスマップを指定するには、次のコマンドを入力します。

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

ステップ 3で説明されている match コマンドのいずれかを使用して、ポリシーマップで直接トラフィックを指定します。 match not コマンドを使用すると、 match not コマンドの基準と一致しないすべてのトラフィックにアクションが適用されます。

複数の class コマンドまたは match コマンドをポリシーマップで指定できます。 class コマンドおよび match コマンドについては、「検査ポリシーマップ内のアクションの定義」を参照してください。

ステップ 7 次のコマンドを入力して、トラフィックとの照合時に実行するアクションを指定します。

hostname(config-pmap-c)# {drop-connection | reset | log}
 

drop-connection アクションは接続を閉じます。 reset アクションは接続を閉じ、TCP リセットをクライアントに送信します。 log アクションは、このポリシーマップがトラフィックと照合するときにシステム ログ メッセージを送信します。


 

次の例は、IM 検査のポリシーマップを定義する方法を示しています。

hostname(config)# regex loginname1 “ying\@yahoo.com”
hostname(config)# regex loginname2 “Kevin\@yahoo.com”
hostname(config)# regex loginname3 “rahul\@yahoo.com”
hostname(config)# regex loginname4 “darshant\@yahoo.com”
hostname(config)# regex yahoo_version_regex “1\.0”
hostname(config)# regex gif_files “.*\.gif”
hostname(config)# regex exe_files “.*\.exe”
 
hostname(config)# class-map type regex match-any yahoo_src_login_name_regex
hostname(config-cmap)# match regex loginname1
hostname(config-cmap)# match regex loginname2
 
hostname(config)# class-map type regex match-any yahoo_dst_login_name_regex
hostname(config-cmap)# match regex loginname3
hostname(config-cmap)# match regex loginname4
 
hostname(config)# class-map type inspect im match-any yahoo_file_block_list
hostname(config-cmap)# match filename regex gif_files
hostname(config-cmap)# match filename regex exe_files
 
hostname(config)# class-map type inspect im match-all yahoo_im_policy
hostname(config-cmap)# match login-name regex class yahoo_src_login_name_regex
hostname(config-cmap)# match peer-login-name regex class yahoo_dst_login_name_regex
 
hostname(config)# class-map type inspect im match-all yahoo_im_policy2
hostname(config-cmap)# match version regex yahoo_version_regex
 
hostname(config)# class-map im_inspect_class_map
hostname(config-cmap)# match default-inspection-traffic
 
hostname(config)# policy-map type inspect im im_policy_all
hostname(config-pmap)# class yahoo_file_block_list
hostname(config-pmap-c)# match service file-transfer
hostname(config-pmap)# class yahoo_im_policy
hostname(config-pmap-c)# drop-connection
hostname(config-pmap)# class yahoo_im_policy2
hostname(config-pmap-c)# reset
hostname(config)# policy-map global_policy_name
hostname(config-pmap)# class im_inspect_class_map
hostname(config-pmap-c)# inspect im im_policy_all
 

ICMP 検査

ICMP 検査エンジンを使用すると、ICMP トラフィックが「セッション」を持つようになるため、TCP トラフィックや UDP トラフィックのように検査することが可能になります。ICMP 検査エンジンを使用しない場合は、アクセスリストで、adaptive security applianceの通過を ICMP に許可しないことをお勧めします。ステートフル インスペクションを実行しない場合、ICMP がネットワーク攻撃に利用される可能性があります。ICMP 検査エンジンは、1 つの要求への応答が 1 つだけであること、シーケンス番号が正しいことを確認します。

ICMP エラー検査

この機能がイネーブルの場合、adaptive security applianceは、NAT コンフィギュレーションに基づいて ICMP エラー メッセージを送信する中間ホップの変換セッションを作成します。adaptive security applianceは、変換した IP アドレスでパケットを上書きします。

ディセーブルの場合、adaptive security applianceは、ICMP エラー メッセージを生成する中間ノードの変換セッションを作成しません。内部ホストとadaptive security applianceの間にある中間ノードによって作成された ICMP エラー メッセージは、NAT リソースをそれ以上消費することなく、外部ホストに到達します。外部ホストが traceroute コマンドを使用して、adaptive security applianceの内部にある宛先までのホップをトレースしている場合、これは望ましくありません。adaptive security applianceが中間ホップを変換しない場合、すべての中間ホップは、マッピングされた宛先 IP アドレスとともに表示されます。

ICMP ペイロードをスキャンすることにより、元のパケットから 5 つのタプルが取得されます。クライアントの元のアドレスを確認するには、取得した 5 つのタプルを使用してルックアップを実行します。ICMP エラー検査エンジンは、ICMP パケットに対して次の変更を加えます。

IP ヘッダー内のマッピング IP を実際の IP(宛先アドレス)に変更し、IP チェックサムを修正する。

ICMP パケットに変更を加えたため、ICMP ヘッダー内の ICMP チェックサムを修正する。

ペイロードに次の変更を加える。

元のパケットのマッピング IP を実際の IP に変更する。

元のパケットのマッピング ポートを実際のポートに変更する。

元のパケットの IP チェックサムを再計算する。

ILS 検査

ILS 検査エンジンは、LDAP を使用してディレクトリ情報を ILS サーバと交換する Microsoft NetMeeting、SiteServer、および Active Directory 製品に対して NAT をサポートします。

adaptive security applianceは ILS に対して NAT をサポートします。ILS は、ILS または SiteServer Directory のエンドポイントの登録および検索に使用されます。LDAP データベースには IP アドレスしか格納されないため、PAT はサポートされません。

LDAP サーバが外部にある場合は、内部ピアが外部 LDAP サーバに登録された状態でローカルで通信できるように、検索応答に対して NAT を適用することをお勧めします。このような検索応答の場合、最初に xlate が検索され、次に DNAT エントリが検索されて正しいアドレスが取得されます。これらの検索がどちらも失敗した場合、アドレスは変更されません。NAT 0(NAT なし)を使用していて、DNAT の相互作用を予期していないサイトの場合は、検査エンジンをオフにしてパフォーマンスを向上することをお勧めします。

ILS サーバがadaptive security appliance境界の内部にある場合は、さらに設定が必要なことがあります。この場合、外部クライアントが所定のポート(通常は TCP 389)で LDAP サーバにアクセスするためのホールが必要となります。

ILS トラフィックはセカンダリ UDP チャネルだけで発生するため、TCP 接続は非アクティビティ間隔の後に切断されます。デフォルトでは、この間隔は 60 分です。この値は、 timeout コマンドを使用して調整できます。

ILS/LDAP はクライアント/サーバ モデルに従っており、セッションは 1 つの TCP 接続で処理されます。このようなセッションのいくつかが、クライアントのアクションに応じて作成されます。

接続ネゴシエーション中、クライアントからサーバに BIND PDU が送信されます。サーバから成功を示す BIND RESPONSE を受信すると、その他の操作メッセージ(ADD、DEL、SEARCH、MODIFY など)を交換できるようになり、ILS Directory に対する操作が実行されます。ADD REQUEST PDU および SEARCH RESPONSE PDU には、NetMeeting セッションを確立するために H.323(SETUP および CONNECT メッセージ)によって使用される NetMeeting ピアの IP アドレスが含まれている場合があります。Microsoft NetMeeting v2.X および v3.X は、ILS をサポートしています。

ILS 検査では、次の操作が実行されます。

BER 復号化機能による LDAP REQUEST/RESPONSE PDU の復号化

LDAP パケットの解析

IP アドレスの抽出

必要に応じた IP アドレスの変換

BER 符号化機能による、変換されたアドレスが含まれる PDU の符号化

元の TCP パケットへの、新しく符号化された PDU のコピー

差分 TCP チェックサムとシーケンス番号を増分的に調整

ILS 検査では、次の制限事項があります。

Referral 要求および応答はサポートされません。

複数のディレクトリ内のユーザは統合されません。

1 人のユーザが複数のディレクトリで複数のアイデンティティを持つ場合、そのユーザは NAT によって認識されません。


) H225 コール シグナリング トラフィックはセカンダリ UDP チャネルだけで発生するため、TCP 接続は、TCP timeout コマンドで指定した間隔の後に切断されます。デフォルトでは、この間隔は 60 分です。


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 ネットワークに提供します。


) ASA バージョン 7.1 からのアップグレードの場合にポリシーの障害を回避するには、レイヤ 7 およびレイヤ 3 のすべてのポリシーにそれぞれ異なる名前を付ける必要があります。たとえば、以前に設定した MGCP マップと同じ名前の以前に設定したポリシー マップは、アップグレード前に変更する必要があります。


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

図 23-4 NAT と MGCP の使用

 

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

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

CreateConnection

ModifyConnection

DeleteConnection

NotificationRequest

Notify

AuditEndpoint

AuditConnection

RestartInProgress

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

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

ゲートウェイがコール エージェントからのコマンドを受信するポート。通常、ゲートウェイは UDP ポート 2427 をリスンします。

コール エージェントがゲートウェイからのコマンドを受信するポート。通常、コール エージェントは UDP ポート 2727 をリスンします。


) MGCP 検査では、MGCP シグナリングと RTP データで異なる IP アドレスを使用することはサポートされていません。一般的かつ推奨される方法は、ループバック IP アドレスや仮想 IP アドレスなどの回復力のある IP アドレスから RTP データを送信することです。ただし、adaptive security applianceは、MGCP シグナリングと同じアドレスから RTP データを受信する必要があります。


検査制御を追加するための MGCP 検査ポリシーマップの設定

adaptive security applianceがピンホールを開ける必要のあるコール エージェントとゲートウェイがネットワークに複数ある場合は、まず MGCP マップを作成します。次に、「アプリケーション検査の設定」に従って MGCP 検査をイネーブルにするときに、その MGCP マップを適用します。

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


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

hostname(config)# policy-map type inspect mgcp map_name
hostname(config-pmap)#
 

policy_map_name には、ポリシーマップの名前を指定します。CLI はポリシーマップ コンフィギュレーション モードに移行します。

ステップ 2 (オプション)このポリシーマップに説明を追加するには、次のコマンドを使用します。

hostname(config-pmap)# description string
 

ステップ 3 検査エンジンに影響のあるパラメータを設定するには、次の手順を実行します。

a. パラメータ コンフィギュレーション モードに入るには、次のコマンドを入力します。

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

b. コール エージェントを設定するには、コール エージェントごとに次のコマンドを入力します。

hostname(config-pmap-p)# call-agent ip_address group_id
 

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


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


c. ゲートウェイを設定するには、ゲートウェイごとに次のコマンドを入力します。

hostname(config-pmap-p)# gateway ip_address group_id
 

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

d. MGCP コマンド キューに入れることができるコマンドの最大数を変更するには、次のコマンドを入力します。

hostname(config-pmap-p)# command-queue command_limit
 


 

次の例は、MGCP マップの定義方法を示しています。

hostname(config)# policy-map type inspect mgcp sample_map
hostname(config-pmap)# parameters
hostname(config-pmap-p)# call-agent 10.10.11.5 101
hostname(config-pmap-p)# call-agent 10.10.11.6 101
hostname(config-pmap-p)# call-agent 10.10.11.7 102
hostname(config-pmap-p)# call-agent 10.10.11.8 102
hostname(config-pmap-p)# gateway 10.10.10.115 101
hostname(config-pmap-p)# gateway 10.10.10.116 102
hostname(config-pmap-p)# gateway 10.10.10.117 102
hostname(config-pmap-p)# command-queue 150
 

MGCP タイムアウト値の設定

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

timeout mgcp-pat コマンドを使用して、PAT xlate のタイムアウトを設定できます。MGCP にはキープアライブ メカニズムがないため、シスコ以外の 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
 

NetBIOS 検査

NetBIOS 検査は、デフォルトでイネーブルになっています。NetBios 検査エンジンは、adaptive security appliance NAT コンフィギュレーションに基づいて、NetBios Name Service(NBNS; NetBios ネーム サービス)パケット内の IP アドレスを変換します。

検査制御を追加するための NetBIOS 検査ポリシーマップの設定

メッセージがパラメータに違反したときの処理を指定するには、まず NetBIOS 検査のポリシーマップを作成します。次に、「アプリケーション検査の設定」に従って NetBIOS 検査をイネーブルにするときに、そのポリシーマップを適用します。

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


ステップ 1 (オプション)「正規表現の作成」に従い、1 つ以上の正規表現をトラフィック照合コマンドに追加します。ステップ 3に記載されている match コマンドで照合できるテキストのタイプを参照してください。

ステップ 2 (オプション)「クラスマップ内の正規表現の作成」に従い、1 つ以上の正規表現のクラスマップを作成して正規表現をグループ化します。

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

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

policy_map_name には、ポリシーマップの名前を指定します。CLI はポリシーマップ コンフィギュレーション モードに移行します。

ステップ 4 (オプション)このポリシーマップに説明を追加するには、次のコマンドを使用します。

hostname(config-pmap)# description string
 

ステップ 5 トラフィックとの照合にアクションを適用するには、次の手順を実行します。

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

ステップ 3 で作成した NetBIOS のクラスマップを指定するには、次のコマンドを入力します。

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

ステップ 3で説明されている match コマンドのいずれかを使用して、ポリシーマップで直接トラフィックを指定します。 match not コマンドを使用すると、 match not コマンドの基準と一致しないすべてのトラフィックにアクションが適用されます。

b. 次のコマンドを入力して、トラフィックとの照合時に実行するアクションを指定します。

hostname(config-pmap-c)# {[drop [send-protocol-error] | drop-connection [send-protocol-error]| mask | reset] [log] | rate-limit message_rate}
 

match または class コマンドですべてのオプションを使用できるわけではありません。使用できる正確なオプションについては、CLI ヘルプまたは『 Cisco ASA 5580 Adaptive Security Appliance Command Reference 』を参照してください。

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

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

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

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

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

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

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

複数の class コマンドまたは match コマンドをポリシーマップで指定できます。 class コマンドおよび match コマンドについては、「検査ポリシーマップ内のアクションの定義」を参照してください。

ステップ 6 検査エンジンに影響のあるパラメータを設定するには、次の手順を実行します。

a. パラメータ コンフィギュレーション モードに入るには、次のコマンドを入力します。

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

b. NetBIOS プロトコル違反をチェックするには、次のコマンドを入力します。

hostname(config-pmap-p)# protocol-violation [action [drop-connection | reset | log]]
 

drop-connection アクションは接続を閉じます。 reset アクションは接続を閉じ、TCP リセットをクライアントに送信します。 log アクションは、このポリシーマップがトラフィックと照合するときにシステム ログ メッセージを送信します。


 

次の例は、NetBIOS 検査のポリシーマップを定義する方法を示しています。

hostname(config)# policy-map type inspect netbios netbios_map
hostname(config-pmap)# protocol-violation drop log
 
hostname(config)# policy-map netbios_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect netbios netbios_map
 

PPTP 検査

PPTP は、PPP トラフィックのトンネリングに使用されるプロトコルです。PPTP セッションは、1 つの TCP チャネルと通常 2 つの PPTP GRE トンネルで構成されます。TCP チャネルは、PPTP GRE トンネルのネゴシエートと管理に使用される制御チャネルです。GRE トンネルは、2 つのホスト間の PPP セッションを伝送します。

イネーブルの場合、PPTP アプリケーション検査では、PPTP プロトコル パケットが検査され、PPTP トラフィックを許可するために必要な GRE 接続と xlate がダイナミックに作成されます。RFC 2637 で定義されているバージョン 1 だけがサポートされます。

PAT は、PPTP TCP 制御チャネルで修正バージョンの GRE [RFC 2637] がネゴシエートされたときに、その GRE に対してだけ実行されます。PAT は、未修正バージョンの GRE [RFC 1701、RFC 1702] では実行されません。

具体的には、 adaptive security appliance は、PPTP のバージョン情報と発信コールの要求/応答シーケンスを検査します。RFC 2637 で定義されている PPTP バージョン 1 だけが検査されます。いずれか一方が示すバージョンがバージョン 1 でない場合、TCP 制御チャネルでのその後の検査はディセーブルになります。また、発信コールの要求と応答のシーケンスは追跡されます。接続と xlate は、後続のセカンダリ GRE データ トラフィックを許可するために、必要に応じてダイナミックに割り当てられます。

PPTP 検査エンジンは、PPTP トラフィックが PAT で変換されるように、イネーブルにする必要があります。また、PAT は、PPTP TCP 制御チャネルで修正バージョンの GRE(RFC 2637)がネゴシエートされた場合に限り、その GRE に対してだけ実行されます。PAT は、未修正バージョンの GRE(RFC 1701 および RFC 1702)に対しては実行されません。

RFC 2637 で定義されているように、PPTP プロトコルは、主に、モデム バンク PPTP Access Concentrator(PAC; PPTP アクセス コンセントレータ)から開始されたヘッドエンド PPTP Network Server(PNS; PPTP ネットワーク サーバ)への PPP セッションのトンネリングに使用されます。このように使用された場合、PAC がリモート クライアントで PNS がサーバです。

ただし、Windows の VPN で使用された場合、この関係は逆になります。PNS が、中央のネットワークにアクセスするためにヘッドエンド PAC への接続を開始するリモートの単一ユーザ PC です。

RADIUS アカウンティング検査

よく知られている問題の 1 つに GPRS ネットワークでの過剰請求攻撃があります。これは、サービスを利用していないユーザに課金する攻撃です。攻撃者は、サーバとの接続をセットアップし、SGSN から IP アドレスを取得します。攻撃者がコールを終了しても、攻撃者のサーバはパケットの送信を続けます。このパケットは GGSN によってドロップされますが、サーバからの接続はアクティブなままです。攻撃者に割り当てられていた IP アドレスが解放され、正規ユーザに再割り当てされるので、正規ユーザは、攻撃者が利用するサービスの分まで通話料を請求されることになります。

RADIUS アカウンティング検査は、GGSN へのトラフィックが正規のものかどうかを確認することにより、このような攻撃を防ぎます。RADIUS アカウンティングの機能を正しく設定しておくと、セキュリティ アプライアンスは、Radius アカウンティング要求の開始メッセージと終了メッセージのフレーム化された IP アトリビュートとの照合結果に基づいて接続を切断します。終了メッセージのフレーム化された IP アトリビュートの IP アドレスが一致している場合は、セキュリティ アプライアンスは、同じ IP アドレスを持つ送信元との接続を検索します。

RADIUS サーバと事前共有秘密キーを設定するオプションがあるので、セキュリティ アプライアンスでメッセージを検証できるようになります。事前共有秘密キーを設定していないと、セキュリティ アプライアンスは、メッセージの送信元を検証せず、その IP アドレスが、RADIUS メッセージの送信が許可されているアドレスの 1 つかどうかだけをチェックします。


) GPRS をイネーブルにして RADIUS アカウンティング検査を使用する場合、adaptive security applianceはアカウンティング要求の終了メッセージの 3GPP-Session-Stop-Indicator をチェックして、セカンダリ PDP コンテキストを正しく処理します。具体的には、adaptive security applianceは、ユーザ セッションおよび関連付けられたすべての接続を終了する前に、3GPP-SGSN-Address アトリビュートが含まれるアカウンティング要求の終了メッセージを要求します。一部のサードパーティ製 GGSN では、デフォルトではこのアトリビュートを送信しない場合があります。


検査制御を追加するための RADIUS 検査ポリシーマップの設定

この機能を使用するには、まず policy-map type management コマンドで radius-accounting-map を指定します。次に、新しい control-plane キーワードを使用してサービス ポリシーに適用し、このトラフィックが to-the-box 検査用であることを指定します。

次の例では、この機能を設定するのに必要なコマンドをすべて使用しています。


ステップ 1 クラスマップとポートを設定します。

class-map type management c1
match port udp eq 1888

ステップ 2 ポリシーマップを作成し、アトリビュート、ホスト、およびキーの設定用のモードにアクセスするための parameters コマンドを使用して、RADIUS アカウンティング検査のパラメータを設定します。

policy-map type inspect radius-accounting radius_accounting_map
parameters
host 10.1.1.1 inside key 123456789
send response
enable gprs
validate-attribute 22

ステップ 3 service-policy キーワードと control-plane キーワードを設定します。

policy-map type management global_policy
class c1
inspect radius-accounting radius_accounting_map
 
service-policy global_policy control-plane abc global

RSH 検査

RSH 検査はデフォルトでイネーブルになっています。RSH プロトコルは、RSH クライアントから RSH サーバへの TCP ポート 514 での TCP 接続を使用します。クライアントとサーバは、クライアントが STDERR 出力ストリームを受信する TCP ポート番号をネゴシエートします。RSH 検査では、ネゴシエートされるポート番号の NAT がサポートされます。

RTSP 検査

この項では、RTSP アプリケーション検査について説明します。この項は、次の内容で構成されています。

「RTSP 検査の概要」

「RealPlayer の使用」

「制限事項」

RTSP 検査の概要

RTSP 検査エンジンを使用すると、adaptive security applianceは RTSP パケットを通過させることができるようになります。RTSP は、RealAudio、RealNetworks、Apple QuickTime 4、RealPlayer、および Cisco IP/TV 接続によって使用されます。


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


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

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

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

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

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

RealPlayer の使用

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

RealPlayer で TCP モードを使用する場合は、 Use TCP to Connect to Server チェックボックスと Attempt to use TCP for all content チェックボックスをオンにします。adaptive security applianceで、検査エンジンを設定する必要はありません。

RealPlayer で UDP モードを使用する場合は、 Use TCP to Connect to Server チェックボックスと Attempt to use UDP for all content チェックボックスをオンにします。 Multicast 経由で入手できないライブ コンテンツでも同様に設定します。 adaptive security applianceで、 inspect rtsp port コマンドを追加します。

制限事項

inspect rtsp コマンドには、次の制約事項が適用されます。

adaptive security applianceは、マルチキャスト RTSP または UDP による RTSP メッセージをサポートしません。

adaptive security applianceには、RTSP メッセージが HTTP メッセージ内に隠されている HTTP クローキングを認識する機能はありません。

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

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

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

検査制御を追加するための RTSP 検査ポリシーマップの設定

メッセージがパラメータに違反したときの処理を指定するには、まず RTSP 検査のポリシーマップを作成します。次に、「アプリケーション検査の設定」に従って RTSP 検査をイネーブルにするときに、そのポリシーマップを適用します。

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


ステップ 1 (オプション)「正規表現の作成」に従い、1 つ以上の正規表現をトラフィック照合コマンドに追加します。ステップ 3に記載されている match コマンドで照合できるテキストのタイプを参照してください。

ステップ 2 (オプション)「クラスマップ内の正規表現の作成」に従い、1 つ以上の正規表現のクラスマップを作成して正規表現をグループ化します。

ステップ 3 (オプション)RTSP 検査のクラスマップを作成するには、次の手順を実行します。

クラスマップは複数のトラフィックとの照合をグループ化します。トラフィックは、 すべての match コマンドと照合してクラスマップと照合する必要があります。または、 match コマンドを直接ポリシーマップに指定してもかまいません。クラスマップを作成することと検査ポリシーマップでトラフィックとの照合を直接定義することの違いは、クラスマップでは複雑な一致基準を作成でき、クラスマップを再利用できるということです。

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

クラスマップで指定するトラフィックに対して、接続のドロップ、検査ポリシーマップでの接続のログの記録などの(すべてまたはいずれかの)アクションを指定できます。

match コマンドで異なるアクションを実行する場合、ポリシーマップで直接トラフィックを指定する必要があります。

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

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

class_map_name は、クラスマップの名前を指定します。 match-all キーワードはデフォルトで、トラフィックはクラスマップと照合するすべての基準と一致しなければならないことを指定します。 match-any キーワードは、トラフィックが基準の少なくとも 1 つの表現と照合する場合、トラフィックはクラスマップと照合することを指定します。CLI はクラスマップ コンフィギュレーション モードに移行し、1 つ以上の match コマンドを入力できます。

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

hostname(config-cmap)# description string
 

c. (オプション)RTSP の要求方式を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] request-method method
 

method は照合する要求のタイプ(announce、describe、get_parameter、options、pause、play、record、redirect、setup、set_parameter、teardown)です。

d. (オプション)URL フィルタリングを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] url-filter regex {class class_name | regex_name}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

ステップ 4 次のコマンドを入力して、RTSP 検査のポリシーマップを作成します。

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

policy_map_name には、ポリシーマップの名前を指定します。CLI はポリシーマップ コンフィギュレーション モードに移行します。

ステップ 5 (オプション)このポリシーマップに説明を追加するには、次のコマンドを使用します。

hostname(config-pmap)# description string
 

ステップ 6 トラフィックとの照合にアクションを適用するには、次の手順を実行します。

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

ステップ 3 で作成した RTSP のクラスマップを指定するには、次のコマンドを入力します。

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

ステップ 3で説明されている match コマンドのいずれかを使用して、ポリシーマップで直接トラフィックを指定します。 match not コマンドを使用すると、 match not コマンドの基準と一致しないすべてのトラフィックにアクションが適用されます。

b. 次のコマンドを入力して、トラフィックとの照合時に実行するアクションを指定します。

hostname(config-pmap-c)# {[drop [send-protocol-error] | drop-connection [send-protocol-error]| mask | reset] [log] | rate-limit message_rate}
 

match または class コマンドですべてのオプションを使用できるわけではありません。使用できる正確なオプションについては、CLI ヘルプまたは『 Cisco ASA 5580 Adaptive Security Appliance Command Reference 』を参照してください。

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

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

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

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

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

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

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

複数の class コマンドまたは match コマンドをポリシーマップで指定できます。 class コマンドおよび match コマンドについては、「検査ポリシーマップ内のアクションの定義」を参照してください。

ステップ 7 検査エンジンに影響のあるパラメータを設定するには、次の手順を実行します。

a. パラメータ コンフィギュレーション モードに入るには、次のコマンドを入力します。

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

b. メディア ネゴシエーションのための予約ポートの使用を制限するには、次のコマンドを入力します。

hostname(config-pmap-p)# reserve-port-protect
 

c. メッセージに入力できる URL の長さの制限を設定するには、次のコマンドを入力します。

hostname(config-pmap-p)# url-length-limit length
 

length 引数は URL の長さをバイト単位で指定します(0~6000)。


 

次の例は、RTSP 検査のポリシーマップを定義する方法を示しています。

hostname(config)# regex badurl1 www.url1.com/rtsp.avi
hostname(config)# regex badurl2 www.url2.com/rtsp.rm
hostname(config)# regex badurl3 www.url3.com/rtsp.asp
 
hostname(config)# class-map type regex match-any badurl-list
hostname(config-cmap)# match regex badurl1
hostname(config-cmap)# match regex badurl2
hostname(config-cmap)# match regex badurl3
 
hostname(config)# policy-map type inspect rtsp rtsp-filter-map
hostname(config-pmap)# match url-filter regex class badurl-list
hostname(config-pmap-p)# drop-connection
 
hostname(config)# class-map rtsp-traffic-class
hostname(config-cmap)# match default-inspection-traffic
 
hostname(config)# policy-map rtsp-traffic-policy
hostname(config-pmap)# class rtsp-traffic-class
hostname(config-pmap-c)# inspect rtsp rtsp-filter-map
 
hostname(config)# service-policy rtsp-traffic-policy global

SIP 検査

この項では、SIP アプリケーション検査について説明します。この項は、次の内容で構成されています。

「SIP 検査の概要」

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

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

「SIP 検査の確認と監視」

SIP 検査の概要

IETF で定義されている SIP により、特に 2 者間の音声会議などのコール処理セッションまたは「コール」が使用可能になります。SIP は、コール シグナリング用の SDP で動作します。SDP は、メディア ストリーム用のポートを指定します。SIP を使用して、adaptive security applianceは任意の SIP VoIP ゲートウェイおよび VoIP プロキシ サーバをサポートできます。SIP と SDP の定義は、次の RFC に記載されています。

SIP:Session Initiation Protocol、RFC 3261

SDP:Session Description Protocol、RFC 2327

adaptive security appliance経由の SIP コールをサポートする場合は、シグナリング メッセージは予約済みの宛先ポート(UDP/TCP 5060)経由で送信され、メディア ストリームはダイナミックに割り当てられるため、メディア接続アドレスのシグナリング メッセージ、メディア ポート、およびメディアの初期接続を検査する必要があります。また、SIP は、IP パケットのユーザデータ部分に IP アドレスを埋め込みます。SIP 検査は、それらの埋め込まれた IP アドレスに NAT を適用します。

PAT を SIP で使用する場合、次の制限事項が適用されます。

adaptive security applianceで保護されているネットワークの SIP プロキシにリモート エンドポイントを登録しようとすると、次のような特定の条件のもとで登録が失敗します。

PAT がリモート エンドポイント用に設定されている。

SIP レジストラ サーバが外部ネットワークにある。

エンドポイントからプロキシ サーバに送信された REGISTER メッセージの接続先フィールドにポートが設定されていない。

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 メッセージを変換し、メッセージの SDP 部分の内容長を再計算した後、パケット長とチェックサムを再計算します。また、エンドポイントが受信すべきアドレスまたはポートとして、SIP メッセージの SDP 部分に指定されたポートに対するメディア接続をダイナミックに開きます。

SIP 検査では、SIP ペイロードから取得したインデックス CALL_ID/FROM/TO が格納されたデータベースが使用されます。これらのインデックスにより、コール、送信元、宛先が識別されます。このデータベースには、SDP メディア情報フィールドで見つかったメディア アドレスとメディア ポート、およびメディア タイプが格納されています。1 つのセッションに対して、複数のメディア アドレスとポートが存在することが可能です。adaptive security applianceは、これらのメディア アドレス/ポートを使用して、2 つのエンドポイント間に RTP/RTCP 接続を開きます。

初期コール セットアップ(INVITE)メッセージでは、予約済みポート 5060 を使用する必要があります。ただし、後続のメッセージにはこのポート番号がない場合もあります。SIP 検査エンジンはシグナリング接続のピンホールを開き、それらの接続を SIP 接続としてマークします。これは、SIP アプリケーションに到達し、変換すべきメッセージに対して行われます。

コールのセットアップ時に、SIP セッションは、着呼エンドポイントが受信する RTP ポートを示す応答メッセージにおいて、メディア アドレスとメディア ポートが受信されるまで「一時的な」状態にあります。1 分以内に、応答メッセージの受信に障害があった場合は、シグナリング接続は切断されます。

最終的なハンドシェイクが行われると、コール状態はアクティブに移行し、シグナリング接続は、BYE メッセージの受信まで継続されます。

内部エンドポイントが、外部エンドポイントに発呼した場合、メディア ホールが、外部インターフェイスに対して開き、内部エンドポイントから送信された INVITE メッセージで指定された内部エンドポイントのメディア アドレスとメディア ポートに、RTP/RTCP UDP パケットが流れることが許可されます。内部インターフェイスに無差別に送りつけられる RTP/RTCP UDP パケットは、adaptive security applianceのコンフィギュレーションで特別に許可されていない限り、adaptive security applianceを通過できません。

検査制御を追加するための SIP 検査ポリシーマップの設定

メッセージがパラメータに違反したときの処理を指定するには、まず SIP 検査のポリシーマップを作成します。次に、「アプリケーション検査の設定」に従って SIP 検査をイネーブルにするときに、そのポリシーマップを適用します。

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


ステップ 1 (オプション)「正規表現の作成」に従い、1 つ以上の正規表現をトラフィック照合コマンドに追加します。ステップ 3に記載されている match コマンドで照合できるテキストのタイプを参照してください。

ステップ 2 (オプション)「クラスマップ内の正規表現の作成」に従い、1 つ以上の正規表現のクラスマップを作成して正規表現をグループ化します。

ステップ 3 (オプション)SIP 検査のクラスマップを作成するには、次の手順を実行します。

クラスマップは複数のトラフィックとの照合をグループ化します。トラフィックは、 すべての match コマンドと照合してクラスマップと照合する必要があります。または、 match コマンドを直接ポリシーマップに指定してもかまいません。クラスマップを作成することと検査ポリシーマップでトラフィックとの照合を直接定義することの違いは、クラスマップでは複雑な一致基準を作成でき、クラスマップを再利用できるということです。

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

クラスマップで指定するトラフィックに対して、接続のドロップ、リセット、検査ポリシーマップでの接続のログの記録などの(すべてまたはいずれかの)アクションを指定できます。

match コマンドで異なるアクションを実行する場合、ポリシーマップで直接トラフィックを指定する必要があります。

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

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

class_map_name は、クラスマップの名前を指定します。match-all キーワードはデフォルトで、トラフィックはクラスマップと照合するすべての基準と一致しなければならないことを指定します。match-any キーワードは、トラフィックが基準の少なくとも 1 つの表現と照合する場合、トラフィックはクラスマップと照合することを指定します。CLI はクラスマップ コンフィギュレーション モードに移行し、1 つ以上の match コマンドを入力できます。

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

hostname(config-cmap)# description string
 

string はクラスマップの説明です(200 文字以内)。

c. (オプション)To ヘッダーで指定されている宛先を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] called-party regex {class class_name | regex_name}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

d. (オプション)From ヘッダーで指定されている発信元を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] calling-party regex {class class_name | regex_name}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

e. (オプション)SIP ヘッダーのコンテンツの長さを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] content length gt length
 

length は、コンテンツの最小のバイト数です。0 ~ 65536 に指定できます。

f. (オプション)SDP のコンテンツ タイプまたは正規表現を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] content type {sdp | regex {class class_name | regex_name}}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

g. (オプション)SIP IM の加入者を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] im-subscriber regex {class class_name | regex_name}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

h. (オプション)SIP の via ヘッダーを照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] message-path regex {class class_name | regex_name}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

i. (オプション)SIP の要求方式を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] request-method method
 

method は、照合する要求のタイプ(ack、bye、cancel、info、invite、message、notify、options、prack、refer、register、subscribe、unknown、update)です。

j. (オプション)第三者の登録の要求者を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] third-party-registration regex {class class_name | regex_name}
 

regex regex_name 引数はステップ 1で作成した正規表現です。 class regex_class_name ステップ 2で作成した正規表現のクラスマップです。

k. (オプション)SIP のヘッダーにある URI を照合するには、次のコマンドを入力します。

hostname(config-cmap)# match [not] uri {sip | tel} length gt length
 
Where length is the number of bytes the URI is greater than. 0 to 65536.

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

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

policy_map_name には、ポリシーマップの名前を指定します。CLI はポリシーマップ コンフィギュレーション モードに移行します。

ステップ 5 (オプション)このポリシーマップに説明を追加するには、次のコマンドを使用します。

hostname(config-pmap)# description string
 

ステップ 6 トラフィックとの照合にアクションを適用するには、次の手順を実行します。

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

ステップ 3 で作成した SIP のクラスマップを指定するには、次のコマンドを入力します。

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

ステップ 3で説明されている match コマンドのいずれかを使用して、ポリシーマップで直接トラフィックを指定します。 match not コマンドを使用すると、 match not コマンドの基準と一致しないすべてのトラフィックにアクションが適用されます。

b. 次のコマンドを入力して、トラフィックとの照合時に実行するアクションを指定します。

hostname(config-pmap-c)# {[drop [send-protocol-error] | drop-connection [send-protocol-error]| mask | reset] [log] | rate-limit message_rate}
 

match または class コマンドですべてのオプションを使用できるわけではありません。使用できる正確なオプションについては、CLI ヘルプまたは『 Cisco ASA 5580 Adaptive Security Appliance Command Reference 』を参照してください。

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

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

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

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

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

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

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

複数の class コマンドまたは match コマンドをポリシーマップで指定できます。 class コマンドおよび match コマンドについては、「検査ポリシーマップ内のアクションの定義」を参照してください。

ステップ 7 検査エンジンに影響のあるパラメータを設定するには、次の手順を実行します。

a. パラメータ コンフィギュレーション モードに入るには、次のコマンドを入力します。

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

b. インスタント メッセージをイネーブルまたはディセーブルにするには、次のコマンドを入力します。

hostname(config-pmap-p)# im
 

c. IP アドレスのプライバシーをイネーブルまたはディセーブルにするには、次のコマンドを入力します。

hostname(config-pmap-p)# ip-address-privacy
 

d. ヘッダーの Max-forwards フィールドが 0 かどうか(宛先に届くまで 0 になることはありません)をチェックする機能をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-p)# max-forwards-validation action {drop | drop-connection | reset | log} [log]
 

e. プロトコルに準拠するために、ピンホールに流れる RTP パケットをチェックする機能をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-p)# rtp-conformance [enforce-payloadtype]
 

enforce-payloadtype キーワードはシグナリング交換に基づいた音声またはビデオ用のペイロード タイプを使用します。

f. ヘッダーの Server フィールドと User-Agent フィールド(それぞれサーバとエンドポイントのソフトウェアのバージョンを示します)を確認するには、次のコマンドを入力します。

hostname(config-pmap-p)# software-version action {mask | log} [log]
 

mask キーワードは、SIP メッセージにあるソフトウェアのバージョンをマスクします。

g. 状態確認の検査をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-p)# state-checking action {drop | drop-connection | reset | log} [log]
 

h. SIP メッセージのヘッダー フィールドの、RFC 3261 に準拠した厳密な検証をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-p)# strict-header-validation action {drop | drop-connection | reset | log} [log]
 

i. SIP のシグナリングに予約済みのポートを使用した、SIP 以外のトラフィックを許可するには、次のコマンドを入力します。

hostname(config-pmap-p)# traffic-non-sip
 

j. ヘッダーの Alert-Info フィールドと Call-Info フィールドにある SIP 以外の URI を確認するには、次のコマンドを入力します。

hostname(config-pmap-p)# uri-non-sip action {mask | log} [log]
 


 

次の例は、SIP 接続のインスタント メッセージをディセーブルにする方法を示しています。

hostname(config)# policy-map type inspect sip mymap
hostname(config-pmap)# parameters
hostname(config-pmap-p)# no im
 
hostname(config)# policy-map global_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect sip mymap
 
hostname(config)# service-policy global_policy global
 

SIP タイムアウト値の設定

メディア接続は、接続がアイドル状態になってから 2 分以内に切断されます。ただし、これは設定可能なタイムアウトであり、時間間隔は変更することが可能です。SIP 制御接続のタイムアウトを設定するには、次のコマンドを入力します。

hostname(config)# timeout sip hh:mm:ss
 

このコマンドは、SIP 制御接続を閉じるまでのアイドル タイムアウトを設定します。

SIP メディア接続のタイムアウトを設定するには、次のコマンドを入力します。

hostname(config)# timeout sip_media hh:mm:ss
 

このコマンドは、SIP メディア接続を閉じるまでのアイドル タイムアウトを設定します。

SIP 検査の確認と監視

show sip コマンドは、SIP 検査エンジンのトラブルシューティングに役立ち、 inspect protocol sip udp 5060 コマンドと一緒に説明されています。 show timeout sip コマンドは、指定されたプロトコルのタイムアウト値を表示します。

show sip コマンドは、adaptive security applianceを超えて確立されている 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
 

この例は、adaptive security appliance上の 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 準拠端末と同時使用できます。adaptive security applianceにおけるアプリケーション レイヤ機能では、SCCP Version 3.3 が認識されます。SCCP プロトコルのバージョンには 2.4、3.0.4、3.1.1、3.2、および 3.3.2 の 5 つがあります。adaptive security applianceは、Version 3.3.2 までのすべてのバージョンをサポートします。

adaptive security applianceは、SCCP に対して PAT と NAT をサポートします。IP 電話用のグローバル IP アドレスより多くの IP 電話を使用する場合は、PAT が必要です。Skinny アプリケーション検査は、SCCP シグナリング パケットの NAT と PAT をサポートすることにより、すべての SCCP シグナリングとメディア パケットが確実にadaptive security applianceを通過できるようにします。

Cisco CallManager と Cisco IP Phones の間の通常のトラフィックは SCCP を使用しており、特別な設定なしで SCCP 検査によって処理されます。adaptive security applianceは、DHCP オプション 150 および 66 もサポートします。これは、TFTP サーバの場所を Cisco IP Phones とその他の DHCP クライアントに送信することで達成されます。Cisco IP Phone では、デフォルト ルートを設定する DHCP オプション 3 を要求に含めることもできます。詳細については、「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 もサポート されません

内部の Cisco CallManager のアドレスが NAT または PAT 用に別の IP アドレスかポートを設定している場合、adaptive security applianceは現在のところ TFTP を経由して転送するファイルの内容に対して NAT または PAT をサポートしていないため、外部の Cisco IP Phone 用の登録は失敗します。adaptive security applianceは TFTP メッセージの NAT をサポートし、TFTP ファイル用にピンホールを開きますが、adaptive security applianceは電話の登録中に TFTP を使用して転送された Cisco IP Phone のコンフィギュレーション ファイルに埋め込まれた Cisco CallManager の IP アドレスおよびポートを変換できません。


) adaptive security applianceは、コール セットアップ中のコールを除き、SCCP コールのステートフル フェールオーバーをサポートします。


SCCP 検査の確認と監視

show skinny コマンドは、SCCP(Skinny)検査エンジンのトラブルシューティングに役立ちます。次の条件での show skinny コマンドの出力例を示します。adaptive security applianceを越えて 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
 

検査制御を追加するための Skinny(SCCP)検査ポリシーマップの設定

メッセージがパラメータに違反したときの処理を指定するには、まず SCCP 検査のポリシーマップを作成します。次に、「アプリケーション検査の設定」に従って SCCP 検査をイネーブルにするときに、そのポリシーマップを適用します。

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


ステップ 1 (オプション)「正規表現の作成」に従い、1 つ以上の正規表現をトラフィック照合コマンドに追加します。ステップ 3に記載されている match コマンドで照合できるテキストのタイプを参照してください。

ステップ 2 (オプション)「クラスマップ内の正規表現の作成」に従い、1 つ以上の正規表現のクラスマップを作成して正規表現をグループ化します。

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

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

policy_map_name には、ポリシーマップの名前を指定します。CLI はポリシーマップ コンフィギュレーション モードに移行します。

ステップ 4 (オプション)このポリシーマップに説明を追加するには、次のコマンドを使用します。

hostname(config-pmap)# description string
 

ステップ 5 トラフィックとの照合にアクションを適用するには、次の手順を実行します。

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

ステップ 3 で作成した SCCP のクラスマップを指定するには、次のコマンドを入力します。

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

ステップ 3で説明されている match コマンドのいずれかを使用して、ポリシーマップで直接トラフィックを指定します。 match not コマンドを使用すると、 match not コマンドの基準と一致しないすべてのトラフィックにアクションが適用されます。

b. 次のコマンドを入力して、トラフィックとの照合時に実行するアクションを指定します。

hostname(config-pmap-c)# {[drop [send-protocol-error] | drop-connection [send-protocol-error]| mask | reset] [log] | rate-limit message_rate}
 

match または class コマンドですべてのオプションを使用できるわけではありません。使用できる正確なオプションについては、CLI ヘルプまたは『 Cisco ASA 5580 Adaptive Security Appliance Command Reference 』を参照してください。

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

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

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

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

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

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

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

ステップ 6 複数の class コマンドまたは match コマンドをポリシーマップで指定できます。 class コマンドと match コマンドの順序の詳細については、「検査ポリシーマップ内のアクションの定義」を参照してください。検査エンジンに影響のあるパラメータを設定するには、次の手順を実行します。

a. パラメータ コンフィギュレーション モードに入るには、次のコマンドを入力します。

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

b. コールを開始する前に登録が必要になるようにするには、次のコマンドを入力します。

hostname(config-pmap-p)# enforce-registration
 

c. SCCP のステーション メッセージ ID の許容最大値を設定するには、次のコマンドを入力します。

hostname(config-pmap-p)# message-ID max hex_value
 

hex_value 引数は、16 進数のステーション メッセージ ID です。

d. プロトコルに準拠するために、ピンホールに流れる RTP パケットをチェックするには、次のコマンドを入力します。

hostname(config-pmap-p)# rtp-conformance [enforce-payloadtype]
 

enforce-payloadtype キーワードはシグナリング交換に基づいた音声またはビデオ用のペイロード タイプを使用します。

e. SCCP のプレフィックスの許容最小長と最大長を設定するには、次のコマンドを入力します。

hostname(config-pmap-p)# sccp-prefix-len {max | min} value_length
 

value_length 引数は、最大値または最小値です。

f. シグナリングおよびメディア接続のタイムアウトを設定するには、次のコマンドを入力します。

hostname(config-pmap-p)# timeout
 


 

次の例では、SCCP 検査のポリシーマップを定義する方法を示しています。

hostname(config)# policy-map type inspect skinny skinny-map
hostname(config-pmap)# parameters
hostname(config-pmap-p)# enforce-registration
hostname(config-pmap-p)# match message-id range 200 300
hostname(config-pmap-p)# drop log
hostname(config)# class-map inspection_default
hostname(config-cmap)# match default-inspection-traffic
hostname(config)# policy-map global_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect skinny skinny-map
hostname(config)# service-policy global_policy global
 

SMTP および拡張 SMTP 検査

ESMTP アプリケーション検査を使用すると、adaptive security applianceを通過できる SMTP コマンドの種類を制限し、監視機能を追加することによって、SMTP ベースの攻撃からより強固に保護できます。

ESMTP は SMTP プロトコルの拡張で、ほとんどの観点で SMTP に似ています。便宜上、このマニュアルでは、SMTP という用語を SMTP と ESMTP の両方に使用します。拡張 SMTP に対するアプリケーション検査処理は、SMTP アプリケーション検査に似ており、SMTP セッションのサポートが含まれています。拡張 SMTP セッションで使用するほとんどのコマンドは、SMTP セッションで使用するコマンドと同じですが、ESMTP セッションの方が大幅に高速で、配信ステータス通知など信頼性およびセキュリティに関するオプションが増えています。

拡張 SMTP アプリケーション検査では、AUTH、EHLO、ETRN、HELP、SAML、SEND、SOML、および VRFY の 8 つの拡張 SMTP コマンドのサポートが追加されます。adaptive security applianceは、7 つの RFC 821 コマンド(DATA、HELO、MAIL、NOOP、QUIT、RCPT、RSET)をサポートするとともに、合計 15 の SMTP コマンドをサポートします。

その他の拡張 SMTP コマンド(ATRN、STARTLS、ONEX、VERB、CHUNKING など)、およびプライベート拡張はサポートされません。サポートされないコマンドは、内部サーバにより拒否される X に変換されます。この結果は、「500 Command unknown: 'XXX'」のようなメッセージで表示されます。不完全なコマンドは、廃棄されます。

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 サーバによる不意の移行

未知のコマンドに対しては、adaptive security applianceはパケット内のすべての文字を X に変更します。この場合、サーバがクライアントに対してエラー コードを生成します。パケット内が変更されているため、TCP チェックサムは、再計算または調節する必要があります。

TCP ストリーム編集

コマンド パイプライン

SNMP 検査

SNMP アプリケーション検査では、SNMP トラフィックを特定のバージョンの SNMP に制限できます。SNMP の以前のバージョンは安全性が低いため、セキュリティ ポリシーによっては、特定の SNMP バージョンを拒否する必要があります。adaptive security applianceは、SNMP バージョン 1、2、2c、または 3 を拒否できます。許可するバージョンは、SNMP マップを作成することで制御できます。その後、「アプリケーション検査の設定」を参照して、SNMP 検査をイネーブルにする際に SNMP マップを適用できます。

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


ステップ 1 SNMP マップを作成するには、次のコマンドを入力します。

hostname(config)# snmp-map map_name
hostname(config-snmp-map)#
 

map_name には、SNMP マップの名前を指定します。CLI は SNMP マップ コンフィギュレーション モードに移行します。

ステップ 2 拒否する SNMP のバージョンを指定するには、バージョンごとに次のコマンドを入力します。

hostname(config-snmp-map)# deny version version
hostname(config-snmp-map)#
 

version には、1、2、2c、または 3 を指定します。


 

次の例では、SNMP バージョン 1 および 2 を拒否しています。

hostname(config)# snmp-map sample_map
hostname(config-snmp-map)# deny version 1
hostname(config-snmp-map)# deny version 2
 

SQL*Net 検査

SQL*Net 検査は、デフォルトでイネーブルになっています。

SQL*Net プロトコルは、さまざまなパケット タイプで構成されています。adaptive security applianceはそれらを処理し、adaptive security applianceのどちらの側の Oracle アプリケーションにも一貫性のあるデータ ストリームが表示されるようにします。

SQL*Net のデフォルトのポート割り当ては 1521 です。これは、Oracle が SQL*Net 用に使用している値ですが、Structured Query Language(SQL; 構造化照会言語)の IANA ポート割り当てとは一致しません。 class-map コマンドを使用すると、SQL*Net 検査を一連のポート番号に適用できます。


) SQL 制御 TCP ポート 1521 と同じポートで SQL データ転送が発生する場合、SQL*Net 検査をディセーブルにします。SQL*Net 検査がイネーブルになっていて、クライアントのウィンドウ サイズを 65000 ~約 16000 に縮小すると、データ転送の問題が発生する場合、セキュリティ アプライアンスはプロキシとして動作します。


adaptive security applianceは、すべてのアドレスを変換し、パケットを調べて、SQL*Net バージョン 1 用に開くすべての埋め込みポートを見つけます。

SQL*Net バージョン 2 の場合、データ長ゼロの REDIRECT パケットの直後に続くすべての DATA パケットまたは REDIRECT パケットは、フィックスアップされます。

フィックスアップが必要なパケットには、埋め込まれたホスト アドレスおよびポート アドレスが次の形式で含まれています。

(ADDRESS=(PROTOCOL=tcp)(DEV=6)(HOST=a.b.c.d)(PORT=a))
 

SQL*Net バージョン 2 TNSFrame タイプ(Connect、Accept、Refuse、Resend、および Marker)は、NAT 処理するアドレスがあるかどうかがスキャンされず、パケット内の埋め込みポートのダイナミック接続も開かれません。

SQL*Net バージョン 2 TNSFrame、Redirect パケット、および Data パケットは、ペイロードのデータ長がゼロの REDIRECT TNSFrame タイプの後に続く場合、開くポートおよび NAT 処理するアドレスがあるかどうかがスキャンされます。データ長ゼロの Redirect メッセージがadaptive security applianceを通過すると、接続データ構造にフラグが設定され、後に続く Data メッセージまたは Redirect メッセージを変換するため、およびポートをダイナミックに開くために備えられます。先行するパラグラフの TNS フレームのいずれかが Redirect メッセージの後に到着した場合、フラグはリセットされます。

SQL*Net 検査エンジンは、チェックサムを再計算し、IP および TCP の長さを変更し、新旧のメッセージの長さの差を使用してシーケンス番号と確認応答番号を再調整します。

SQL*Net バージョン 1 では、その他のすべての場合を想定しています。TNSFrame タイプ(Connect、Accept、Refuse、Resend、Marker、Redirect、および Data)とすべてのパケットは、ポートおよびアドレスを見つけるためにスキャンされます。アドレスが変換され、ポート接続が開かれます。

Sun RPC 検査

この項では、Sun RPC アプリケーション検査について説明します。この項は、次の内容で構成されています。

「Sun RPC 検査の概要」

「Sun RPC サービスの管理」

「Sun RPC 検査の確認と監視」

Sun RPC 検査の概要

Sun RPC 検査エンジンは、Sun RPC プロトコルのアプリケーション検査をイネーブルまたはディセーブルにします。Sun RPC は、NFS および で使用されます。Sun RPC サービスは、任意のポート上で実行できます。サーバ上の Sun RPC サービスにアクセスしようとするクライアントは、そのサービスが実行されているポートを知る必要があります。そのためには、予約済みポート 111 でポート マッパー プロセス(通常、rpcbind)にクエリーを送信します。

クライアントがサービスの Sun RPC プログラム番号を送信すると、ポート マッパー プロセスは応答でサービスのポート番号を示します。クライアントは、ポート マッパー プロセスによって特定されたポートを指定して、Sun RPC クエリーをサーバに送信します。サーバが応答すると、adaptive security applianceはこのパケットを代行受信し、そのポートで初期 TCP および UDP 接続の両方を開きます。


Sun RPC ペイロード情報の NAT または PAT はサポートされていません。


Sun RPC サービスの管理

Sun RPC サービス テーブルを使用して、確立された Sun RPC セッションに基づいてadaptive security applianceを経由する Sun RPC トラフィックを制御します。Sun RPC サービス テーブルのエントリを作成するには、グローバル コンフィギュレーション モードで sunrpc-server コマンドを次のように使用します。

hostname(config)# sunrpc-server interface_name ip_address mask service service_type protocol {tcp | udp} port[-port] timeout hh:mm:ss
 

このコマンドを使用して、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 を使用しています。

TFTP 検査

TFTP 検査は、デフォルトでイネーブルになっています。

RFC 1350 で定義されているように、TFTP は TFTP サーバとクライアントの間のファイルの読み書きに使用される簡易プロトコルです。

adaptive security applianceは、TFTP トラフィックを検査し、ダイナミックに接続と変換(必要な場合)を作成し、TFTP クライアントとサーバの間のファイル転送を許可します。具体的には、検査エンジンは TFTP 読み取り要求(RRQ)、書き込み要求(WRQ)、およびエラー通知(ERROR)を検査します。

必要に応じて、ダイナミックなセカンダリ チャネルと PAT 変換が、有効な RRQ または WRQ の受信に割り当てられます。次に、このセカンダリ チャネルが、ファイル転送またはエラー通知用に TFTP によって使用されます。

TFTP サーバだけがセカンダリ チャネルのトラフィックを開始できます。また、TFTP クライアントとサーバの間に存在できる不完全なセカンダリ チャネルは 1 つまでです。サーバからのエラー通知があると、セカンダリ チャネルは閉じます。

TFTP トラフィックのリダイレクトにスタティック PAT が使用されている場合は、TFTP 検査をイネーブルにする必要があります。

暗号化された音声検査のための TLS プロキシ

この項では、暗号化された音声検査のための TLS プロキシについて説明します。この項は、次の内容で構成されています。

「概要」

「最大 TLS プロキシ セッション数」

「TLS プロキシの設定」

「TLS プロキシのデバッグ」

「CTL クライアント」

概要

暗号化された音声検査を使用すると、セキュリティ アプライアンスは音声シグナリング トラフィックの復号化、検査、変更、および再暗号化を行います(必要に応じて、たとえば、NAT フィックスアップの実行)。Skinny プロトコルおよび SIP プロトコルの既存のすべての VoIP 検査機能が維持されます。音声シグナリングが復号化されると、プレーンテキストのシグナリング メッセージが既存の検査エンジンに渡されます。

セキュリティ アプライアンスは、Cisco IP Phone と Cisco Unified CallManager の間の TLS プロキシとして動作します。プロキシは電話と Cisco Unified CallManager の間の音声コールに対して透過的です。Cisco IP Phone は TFTP サーバや Cisco Unified CallManager サーバなどの電話機が信頼すべきデバイスの ID(証明書)を含む登録の前に、Cisco Unified CallManager から証明書信頼リストをダウンロードします。サーバ プロキシをサポートするために、CTL ファイルにはセキュリティ アプライアンスが Cisco Unified CallManager のために作成する証明書が含まれている必要があります。Cisco IP Phone に代わってコールをプロキシするために、セキュリティ アプライアンスはセキュリティ アプライアンスの認証局によって発行された、電話機のローカル ダイナミック認証である Cisco Unified CallManager が確認できる証明書を提示します。

TLS プロキシは Cisco Unified CallManager リリース 5.1 以降でサポートされます。Cisco Unified CallManager のセキュリティ機能についての知識が必要です。Cisco Unified CallManager セキュリティの背景や詳細な説明については、Cisco Unified CallManager のマニュアルを参照してください。

http://www.cisco.com/en/US/products/sw/voicesw/ps556/tsd_products_support_series_home.html

TLS プロキシは暗号化レイヤに適用され、アプリケーション レイヤ プロトコル検査で設定する必要があります。ASA セキュリティ アプライアンス、特に Skinny および SIP 検査における検査機能についての知識が必要です。構成トポロジおよび設定の詳細については、『Cisco Security Appliance Command Line Configuration Guide』を参照してください。

http://www.cisco.com/en/US/products/ps6120/products_installation_and_configuration_guides_list.html

最大 TLS プロキシ セッション数

各 TLS プロキシ セッションは、相互認証による 2 つの SSL 接続で構成されます。デフォルトでは、セキュリティ アプライアンスは、あらかじめ設定された数の TLS プロキシ セッションをサポートします。デフォルトの制限値はプラットフォームごとに異なります。tls-proxy maximum-sessions グローバル コンフィギュレーション コマンドを使用して、この制限値を増減できます。

表 23-4 に、セキュリティ アプライアンス プラットフォームのデフォルトのセッション数と設定可能な最大数を示します。

 

表 23-4 最大セッション数

プラットフォーム
デフォルトのセッション数
設定可能な最大セッション数

ASA 5505

10

80

ASA 5510

100

200

ASA 5520

300

1200

ASA 5540

1000

4500

ASA 5550

2000

4500

SSL VPN、IPSec VPN、および TLS プロキシなどのすべての暗号化アプリケーションが、セキュリティ アプライアンスで同じ暗号化メモリ プールを共有します。2.5 SSL VPN 接続で使用されるメモリは 1 つの TLS プロキシ セッションと同じです。アクティブな SSL VPN および TLS プロキシ セッションが同時に存在する場合、設定可能な TLS プロキシ セッションの数が生成されます。たとえば、セキュリティ アプライアンスが最大 100 TLS プロキシ セッションをサポートするように設定されていて、25 のアクティブな SSL VPN 接続が存在する場合、TLS プロキシ セッションの最大値は 90 になります。


) SSL VPN または IPSec VPN をサポートするためにはライセンスが必要ですが、TLS プロキシを使用するためには SSL VPN または IPSec VPN ライセンスは必要ありません。


TLS プロキシの設定

図 23-5のセキュリティ アプライアンスは、Cisco IP Phone と Cisco Unified CallManager でクライアントとサーバの両方のプロキシとして動作します。

図 23-5 TLS プロキシのフロー

TLS プロキシを設定する前に、次の前提条件が必要です。

TLS プロキシを設定する前に、セキュリティ アプライアンスでクロックを設定する必要があります。手動でクロックを設定してクロックを表示するには、clock set コマンドと show clock コマンドを使用します。セキュリティ アプライアンスで Cisco Unified CallManager クラスタと同じ NTP サーバを使用することをお勧めします。セキュリティ アプライアンスと Cisco Unified CallManager サーバの間でクロックが非同期になった場合、証明書検証の失敗のために TLS ハンドシェイクに失敗する可能性があります。

Cisco Unified CallManager との相互運用には 3DES-AES ライセンスが必要です。AES は Cisco Unified CallManager および Cisco IP Phone で使用されるデフォルトの暗号です。

セキュリティ アプライアンスで TLS プロキシを設定するには、次の手順を実行します。


ステップ 1 (オプション)たとえば、次のコマンドを使用して、セキュリティ アプライアンスでサポートされる TLS プロキシ セッションの最大数を設定します。

hostname(config)# tls-proxy maximum-sessions 1200
 

) tls-proxy maximum-sessions コマンドは TLS プロキシなどの暗号化アプリケーションのために予約されるメモリ サイズを制御します。暗号化メモリはシステムの起動時に予約されます。設定された最大セッション数が現在の予約数よりも大きい場合、設定を反映するにはセキュリティ アプライアンスを再起動する必要がある場合があります。


ステップ 2 たとえば、次のコマンドを使用して、必要な RSA キー ペアを作成します。

hostname(config)# crypto key generate rsa label ccm_proxy_key modulus 1024
hostname(config)# crypto key generate rsa label ldc_signer_key modulus 1024
hostname(config)# crypto key generate rsa label phone_common modulus 1024
 

役割ごとに異なるキー ペアを使用することをお薦めします。

ステップ 3 たとえば、次のコマンドを使用して、Cisco Unified CallManager クラスタのプロキシ証明書を作成します。

hostname(config)# ! for self-signed CCM proxy certificate
hostname(config)# crypto ca trustpoint ccm_proxy
hostname(config-ca-trustpoint)# enrollment self
hostname(config-ca-trustpoint)# fqdn none
hostname(config-ca-trustpoint)# subject-name cn=EJW-SV-1-Proxy
hostname(config-ca-trustpoint)# keypair ccm_proxy_key
hostname(config)# crypto ca enroll ccm_proxy
 

Cisco Unified CallManager プロキシ証明書は、自己署名される場合も、サードパーティ製 CA によって発行される場合もあります。証明書は CTL クライアントにエクスポートされます。


) Cisco IP Phones では、CTL ファイルを参照することによって証明書を検証するために、X.509v3 証明書の特定のフィールドを表示する必要があります。したがって、プロキシの証明書のトラストポイントのために subject-name エントリを設定する必要があります。サブジェクト名は CN、OU、および O の各フィールドの順で連続して構成する必要があります。CN フィールドは必須で、その他のフィールドはオプションです。

連続する各フィールド(存在する場合)はセミコロンで区切られ、次のいずれかの形式になります。

CN=xxx;OU=yyy;O=zzz
CN=xxx;OU=yyy
CN=xxx;O=zzz
CN=xxx


ステップ 4 たとえば、次のコマンドを使用して、内部ローカル CA を作成し、Cisco IP Phone の LDC に署名します。

hostname(config)# ! for the internal local LDC issuer
hostname(config)# crypto ca trustpoint ldc_server
hostname(config-ca-trustpoint)# enrollment self
hostname(config-ca-trustpoint)# proxy-ldc-issuer
hostname(config-ca-trustpoint)# fqdn my_ldc_ca.exmaple.com
hostname(config-ca-trustpoint)# subject-name cn=FW_LDC_SIGNER_172_23_45_200
hostname(config-ca-trustpoint)# keypair ldc_signer_key
hostname(config)# crypto ca enroll ldc_server
 

このローカル CA は、proxy-ldc-issuer をイネーブルにして、通常の自己署名トラストポイントとして作成されます。セキュリティ アプライアンスで埋め込みローカル CA LOCAL-CA-SERVER を使用して、LDC を発行します。

ステップ 5 たとえば、次のコマンドを使用して、CTL クライアントからの接続を準備するために CTL プロバイダー インスタンスを作成します。

hostname(config)# ctl-provider my_ctl
hostname(config-ctl-provider)# client interface inside address 172.23.45.1
hostname(config-ctl-provider)# client username CCMAdministrator password XXXXXX encrypted
hostname(config-ctl-provider)# export certificate ccm_proxy
hostname(config-ctl-provider)# ctl install
 

ユーザ名とパスワードは、Cisco Unified CallManager 管理者のユーザ名とパスワードと一致している必要があります。export コマンドのトラストポイント名は Cisco Unified CallManager サーバのプロキシ証明書です。

CTL プロバイダーによってリスンされるデフォルトのポート番号は TCP 2444 で、Cisco Unified CallManager のデフォルトの CTL ポートです。別のポートが Cisco Unified CallManager クラスタによって使用される場合、service port コマンドを使用して、ポート番号を変更します。

ステップ 6 たとえば、次のコマンドを使用して、TLS プロキシ インスタンスを作成します。

hostname(config)# tls-proxy my_proxy
hostname(config-tlsp)# server trust-point ccm_proxy
hostname(config-tlsp)# client ldc issuer ldc_server
hostname(config-tlsp)# client ldc keypair phone_common
hostname(config-tlsp)# client cipher-suite aes128-sha1 aes256-sha1
 

server コマンドは元の TLS サーバのプロキシ パラメータを設定します。言い換えると、TLS ハンドシェイク中にサーバとして動作するセキュリティ アプライアンスのパラメータであるか、または元の TLS クライアントと対話します。client コマンドは元の TLS クライアントのプロキシ パラメータを設定します。言い換えると、TLS ハンドシェイク中にクライアントとして動作するセキュリティ アプライアンスのパラメータであるか、または元の TLS サーバと対話します。

ステップ 7 たとえば、次のコマンドを使用して、Skinny または SIP 検査で Cisco IP Phone および Cisco Unified CallManager に対して TLS プロキシをイネーブルにします。

hostname(config)# class-map sec_skinny
hostname(config-cmap)# match port tcp eq 2443
 
hostname(config)# policy-map type inspect skinny skinny_inspect
hostname(config-pmap)# parameters
hostname(config-pmap-p)# ! Skinny inspection parameters
 
hostname(config)# policy-map global_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect skinny skinny_inspect
hostname(config-pmap)# class sec_skinny
hostname(config-pmap-c)# inspect skinny skinny_inspect tls-proxy my_proxy
 
hostname(config)# service-policy global_policy global
 

ステップ 8 ローカル CA 証明書(ldc_server)をエクスポートし、Cisco Unified CallManager サーバで信頼できる証明書としてインストールします。

a. たとえば、proxy-ldc-issuer での信頼ポイントがダイナミック認証の署名者として使用される場合、次のコマンドを使用して証明書をエクスポートします。

hostname(config)# crypto ca export ldc_server identity-certificate
 

b. たとえば、埋め込みローカル CA サーバ LOCAL-CA-SERVER の場合は、次のコマンドを使用して証明書をエクスポートします。

hostname(config)# show crypto ca server certificate
 

出力をファイルに保存し、Cisco Unified CallManager の証明書をインポートします。詳細については、Cisco Unified CallManager のマニュアルを参照してください。 http://www.cisco.com/en/US/products/sw/voicesw/ps556/tsd_products_support_series_home.html

このセットアップ後、Cisco Unified CallManager GUI の証明書の [Display Certificates] 機能を使用して、インストールされた証明書を確認できます。

http://www.cisco.com/en/US/products/sw/voicesw/ps556/tsd_products_support_series_home.html

ステップ 9 CTL クライアント アプリケーションを実行して、サーバ プロキシ証明書(ccm_proxy)を CTL ファイルに追加し、セキュリティ アプライアンスで CTL ファイルをインストールします。CTL クライアントの設定と使用方法の詳細については、Cisco Unified CallManager のマニュアルを参照してください。

http://www.cisco.com/en/US/products/sw/voicesw/ps556/tsd_products_support_series_home.html


) セキュリティ アプライアンスとの相互運用には、Cisco Unified CallManager リリース 5.1 で公開された CTL クライアントが必要です。TLS プロキシ サポートの詳細については、「CTL クライアント」を参照してください。



 

TLS プロキシのデバッグ

SSL syslog と一緒に TLS プロキシ デバッグ フラグをイネーブルにすると、TLS プロキシ接続の問題をデバッグできます。たとえば、次のコマンドを使用して、TLS プロキシ関連のデバッグと syslog 出力だけをイネーブルにします。

hostname(config)# debug inspect tls-proxy events
hostname(config)# debug inspect tls-proxy errors
hostname(config)# logging enable
hostname(config)# logging timestamp
hostname(config)# logging list loglist message 711001
hostname(config)# logging list loglist message 725001-725014
hostname(config)# logging list loglist message 717001-717038
hostname(config)# logging buffer-size 1000000
hostname(config)# logging buffered loglist
hostname(config)# logging debug-trace
 

SIP 電話の正常な TLS プロキシ セッションのセットアップを反映したサンプル出力を次に示します。

hostname(config)# show log
 
Apr 17 2007 23:13:47: %ASA-6-725001: Starting SSL handshake with client outside:133.9.0.218/49159 for TLSv1 session.
Apr 17 2007 23:13:47: %ASA-7-711001: TLSP cbad5120: Set up proxy for Client outside:133.9.0.218/49159 <-> Server inside:195.168.2.201/5061
Apr 17 2007 23:13:47: %ASA-7-711001: TLSP cbad5120: Using trust point 'local_ccm' with the Client, RT proxy cbae1538
Apr 17 2007 23:13:47: %ASA-7-711001: TLSP cbad5120: Waiting for SSL handshake from Client outside:133.9.0.218/49159.
Apr 17 2007 23:13:47: %ASA-7-725010: Device supports the following 4 cipher(s).
Apr 17 2007 23:13:47: %ASA-7-725011: Cipher[1] : RC4-SHA
Apr 17 2007 23:13:47: %ASA-7-725011: Cipher[2] : AES128-SHA
Apr 17 2007 23:13:47: %ASA-7-725011: Cipher[3] : AES256-SHA
Apr 17 2007 23:13:47: %ASA-7-725011: Cipher[4] : DES-CBC3-SHA
Apr 17 2007 23:13:47: %ASA-7-725008: SSL client outside:133.9.0.218/49159 proposes the following 2 cipher(s).
Apr 17 2007 23:13:47: %ASA-7-725011: Cipher[1] : AES256-SHA
Apr 17 2007 23:13:47: %ASA-7-725011: Cipher[2] : AES128-SHA
Apr 17 2007 23:13:47: %ASA-7-725012: Device chooses cipher : AES128-SHA for the SSL session with client outside:133.9.0.218/49159
Apr 17 2007 23:13:47: %ASA-7-725014: SSL lib error. Function: SSL23_READ Reason: ssl handshake failure
Apr 17 2007 23:13:47: %ASA-7-717025: Validating certificate chain containing 1 certificate(s).
Apr 17 2007 23:13:47: %ASA-7-717029: Identified client certificate within certificate chain. serial number: 01, subject name: cn=SEP0017593F50A8.
Apr 17 2007 23:13:47: %ASA-7-717030: Found a suitable trustpoint _internal_ejw-sv-2_cn=CAPF-08a91c01 to validate certificate.
Apr 17 2007 23:13:47: %ASA-6-717022: Certificate was successfully validated. serial number: 01, subject name: cn=SEP0017593F50A8.
Apr 17 2007 23:13:47: %ASA-6-717028: Certificate chain was successfully validated with warning, revocation status was not checked.
Apr 17 2007 23:13:47: %ASA-6-725002: Device completed SSL handshake with client outside:133.9.0.218/49159
Apr 17 2007 23:13:47: %ASA-6-725001: Starting SSL handshake with server inside:195.168.2.201/5061 for TLSv1 session.
Apr 17 2007 23:13:47: %ASA-7-725009: Device proposes the following 2 cipher(s) to server inside:195.168.2.201/5061
Apr 17 2007 23:13:47: %ASA-7-725011: Cipher[1] : AES128-SHA
Apr 17 2007 23:13:47: %ASA-7-725011: Cipher[2] : AES256-SHA
Apr 17 2007 23:13:47: %ASA-7-711001: TLSP cbad5120: Generating LDC for client 'cn=SEP0017593F50A8', key-pair 'phone_common', issuer 'LOCAL-CA-SERVER', RT proxy cbae1538
Apr 17 2007 23:13:47: %ASA-7-711001: TLSP cbad5120: Started SSL handshake with Server
Apr 17 2007 23:13:47: %ASA-7-711001: TLSP cbad5120: Data channel ready for the Client
Apr 17 2007 23:13:47: %ASA-7-725013: SSL Server inside:195.168.2.201/5061 choose cipher : AES128-SHA
Apr 17 2007 23:13:47: %ASA-7-717025: Validating certificate chain containing 1 certificate(s).
Apr 17 2007 23:13:47: %ASA-7-717029: Identified client certificate within certificate chain. serial number: 76022D3D9314743A, subject name: cn=EJW-SV-2.inside.com.
Apr 17 2007 23:13:47: %ASA-6-717022: Certificate was successfully validated. Certificate is resident and trusted, serial number: 76022D3D9314743A, subject name: cn=EJW-SV-2.inside.com.
Apr 17 2007 23:13:47: %ASA-6-717028: Certificate chain was successfully validated with revocation status check.
Apr 17 2007 23:13:47: %ASA-6-725002: Device completed SSL handshake with server inside:195.168.2.201/5061
Apr 17 2007 23:13:47: %ASA-7-711001: TLSP cbad5120: Data channel ready for the Server
 

show tls-proxy コマンドとさまざまなオプションを使用して、アクティブな TLS プロキシ セッションをチェックします。次に、いくつかのサンプル出力を示します。

hostname(config-tlsp)# show tls-proxy
Maximum number of sessions: 1200
 
TLS-Proxy 'sip_proxy': ref_cnt 1, seq# 3
Server proxy:
Trust-point: local_ccm
Client proxy:
Local dynamic certificate issuer: LOCAL-CA-SERVER
Local dynamic certificate key-pair: phone_common
Cipher suite: aes128-sha1 aes256-sha1
Run-time proxies:
Proxy 0xcbae1538: Class-map: sip_ssl, Inspect: sip
Active sess 1, most sess 3, byte 3456043
 
TLS-Proxy 'proxy': ref_cnt 1, seq# 1
Server proxy:
Trust-point: local_ccm
Client proxy:
Local dynamic certificate issuer: ldc_signer
Local dynamic certificate key-pair: phone_common
Cipher-suite: <unconfigured>
Run-time proxies:
Proxy 0xcbadf720: Class-map: skinny_ssl, Inspect: skinny
Active sess 1, most sess 1, byte 42916
 
hostname(config-tlsp)# show tls-proxy session count
2 in use, 4 most used
 
hostname(config-tlsp)# show tls-proxy session
2 in use, 4 most used
outside 133.9.0.211:50437 inside 195.168.2.200:2443 P:0xcbadf720(proxy) S:0xcbc48a08 byte 42940
outside 133.9.0.218:49159 inside 195.168.2.201:5061 P:0xcbae1538(sip_proxy) S:0xcbad5120 byte 8786
 
hostname(config-tlsp)# show tls-proxy session detail
2 in use, 4 most used
outside 133.9.0.211:50437 inside 195.168.2.200:2443 P:0xcbadf720(proxy) S:0xcbc48a08 byte 42940
Client: State SSLOK Cipher AES128-SHA Ch 0xca55e498 TxQSize 0 LastTxLeft 0 Flags 0x1
Server: State SSLOK Cipher AES128-SHA Ch 0xca55e478 TxQSize 0 LastTxLeft 0 Flags 0x9
Local Dynamic Certificate
Status: Available
Certificate Serial Number: 29
Certificate Usage: General Purpose
Public Key Type: RSA (1024 bits)
Issuer Name:
cn=TLS-Proxy-Signer
Subject Name:
cn=SEP0002B9EB0AAD
o=Cisco Systems Inc
c=US
Validity Date:
start date: 09:25:41 PDT Apr 16 2007
end date: 09:25:41 PDT Apr 15 2008
Associated Trustpoints:
 
outside 133.9.0.218:49159 inside 195.168.2.201:5061 P:0xcbae1538(sip_proxy) S:0xcbad5120 byte 8786
Client: State SSLOK Cipher AES128-SHA Ch 0xca55e398 TxQSize 0 LastTxLeft 0 Flags 0x1
Server: State SSLOK Cipher AES128-SHA Ch 0xca55e378 TxQSize 0 LastTxLeft 0 Flags 0x9
Local Dynamic Certificate
Status: Available
Certificate Serial Number: 2b
Certificate Usage: General Purpose
Public Key Type: RSA (1024 bits)
Issuer Name:
cn=F1-ASA.default.domain.invalid
Subject Name:
cn=SEP0017593F50A8
Validity Date:
start date: 23:13:47 PDT Apr 16 2007
end date: 23:13:47 PDT Apr 15 2008
Associated Trustpoints:
 

CTL クライアント

Cisco Unified CallManager リリース 5.1 以降で提供される CTL クライアント アプリケーションでは、CTL ファイル内の TLS プロキシ サーバ(ファイアウォール)がサポートされます。図 23-6図 23-9 に、CTL クライアントでサポートされる TLS プロキシを示します。

図 23-6 CTL クライアント TLS プロキシ機能:ファイアウォールの追加

 

図 23-6 に、TLS プロキシとしてのセキュリティ アプライアンスで構成される CTL の追加のサポートを示します。

 

図 23-7 CTL クライアント TLS プロキシ機能:ASA IP アドレスまたはドメイン名

 

図 23-7に、CTL クライアントでのセキュリティ アプライアンスの IP アドレスまたはドメイン名の入力のサポートを示します。

図 23-8 CTL クライアント TLS プロキシ機能:ASA に対する CTL エントリ

 

図 23-8 に、TLS プロキシが追加されたセキュリティ アプライアンスに対する CTL エントリを示します。CTL エントリは、CTL クライアントがセキュリティ アプライアンスの CTL プロバイダー サービスに接続し、プロキシ証明書を取得した後で追加されます。

 

図 23-9 CTL クライアント TLS プロキシ機能:ASA にインストールされた CTL ファイル

 

セキュリティ アプライアンスではフラッシュに未処理の CTL ファイルが格納されず、CTL ファイルが解析され、適切なトラストポイントがインストールされます。図 23-9 に、インストールに成功した例を示します。

XDMCP 検査

XDMCP 検査はデフォルトでイネーブルですが、XDMCP 検査エンジンは、 established コマンドが適切に構成されていないと使用できません。

XDMCP は、UDP ポート 177 を使用して X セッションをネゴシエートするプロトコルです。X セッションが確立されるときは、TCP が使用されます。

XWindows セッションを正常にネゴシエートして、開始するために、adaptive security applianceは、Xhosted コンピュータからの TCP 戻り接続を許可する必要があります。戻り接続を許可するには、adaptive security applianceに対して established コマンドを使用します。XDMCP がディスプレイを送信するポートをネゴシエートすると、 established コマンドが参照され、この戻り接続を許可すべきかどうかが確認されます。

XWindows セッション中、マネージャは予約済みポート 6000 | n でディスプレイ Xserver と通信します。次の端末設定を行うと、各ディスプレイは別々の接続で Xserver と接続します。

setenv DISPLAY Xserver:n
 

n には、ディスプレイ番号を指定します。

XDMCP が使用されている場合、ディスプレイは IP アドレスを使用してネゴシエートされます。IP アドレスは、adaptive security applianceが必要に応じて NAT 処理できる要素です。XDCMP 検査では、PAT はサポートされません。