Catalyst 6500 シリーズ スイッチ/Cisco 7600 シ リーズ ルータ Firewall Services Module コンフィ ギュレーション ガイド(CLI を使用)
アプリケーション レイヤ プロトコル検査の適 用
アプリケーション レイヤ プロトコル検査の適用
発行日;2012/02/02 | 英語版ドキュメント(2010/04/16 版) | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 13MB) | フィードバック

目次

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

インスペクション エンジンの概要

アプリケーション プロトコル検査を使用する状況

インスペクション エンジンの機能

検査の制限事項

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

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

CTIQBE 検査

CTIQBE 検査の概要

制限事項および制約事項

CTIQBE 検査のイネーブル化および設定

CTIQBE 検査の確認およびモニタ

CTIQBE の設定例

DCERPC 検査

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

DNS 検査

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

DNS Rewrite の動作

DNS Rewrite の設定

DNS Rewrite の alias コマンドの使用

DNS Rewrite の static コマンドの使用

2 つの NAT ゾーンを使用した DNS Rewrite の設定

3 つの NAT ゾーンを使用した DNS Rewrite

3 つの NAT ゾーンを使用した DNS Rewrite の設定

DNS 検査の設定

DNS 検査の確認およびモニタ

DNS ガード

ESMTP 検査

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

FTP 検査

FTP 検査の概要

strict オプションの使用

request-command deny コマンド

FTP 検査の設定

FTP 検査の確認およびモニタ

GTP 検査

GTP 検査の概要

GTP マップおよびコマンド

GTP 検査のイネーブル化および設定

GTP 検査の確認およびモニタ

GGSN 負荷分散

GTP の設定例

H.323 検査

H.323 検査の概要

H.323 の動作

制限事項および制約事項

H.225 設定を必要とするトポロジー

H.225 マップ コマンド

H.323 検査のイネーブル化および設定

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

H.323 検査の確認およびモニタ

H.225 セッションのモニタ

H.245 セッションのモニタ

H.323 RAS セッションのモニタ

H.323 GUP サポート

H.323 GUP の設定

H.323 の設定例

HTTP 検査

HTTP 検査の概要

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

ICMP 検査

ILS 検査

MGCP 検査

MGCP 検査の概要

MGCP コール エージェントおよびゲートウェイの設定

MGCP 検査の設定およびイネーブル化

MGCP タイムアウト値の設定

MGCP 検査の確認およびモニタ

MGCP の設定例

NetBIOS 検査

PPTP 検査

RSH 検査

RTSP 検査

RTSP 検査の概要

RealPlayer の使用

制限事項および制約事項

RTSP 検査のイネーブル化および設定

SIP 検査

SIP 検査の概要

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

IP アドレス プライバシー

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

SIP タイムアウト値の設定

SIP 検査拡張

SIP 検査の確認およびモニタ

SIP の設定例

Skinny(SCCP)検査

SCCP 検査の概要

Cisco IP Phone のサポート

制限事項および制約事項

SCCP 検査の設定およびイネーブル化

SCCP 検査の確認およびモニタ

SCCP(Skinny)の設定例

SMTP および拡張 SMTP 検査

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

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

SNMP 検査

SNMP 検査の概要

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

SQL*Net 検査

Sun RPC 検査

Sun RPC 検査の概要

Sun RPC 検査のイネーブル化および設定

Sun RPC サービスの管理

Sun RPC 検査の確認およびモニタ

TFTP 検査

XDMCP 検査

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

この章では、アプリケーション レイヤ プロトコル検査を設定する手順について説明します。ユーザ データ パケットに IP アドレス情報が組み込まれているサービス、またはダイナミックに割り当てられるポート上でセカンダリ チャネルを開始するサービスには、インスペクション エンジンが必要です。これらのプロトコルでは、FWSM でアクセラレーション パス経由でパケットを転送する代わりに、ディープ パケット検査を実行する必要があります(アクセラレーション パスの詳細については、「ステートフル インスペクションの概要」を参照してください)。結果として、インスペクション エンジンが全体的なスループットに影響を及ぼす可能性があります。

FWSM では、一般的ないくつかのインスペクション エンジンがデフォルトでイネーブルになっていますが、使用しているネットワークに応じて他のエンジンもイネーブルにする必要がある場合があります。この章では、次の内容について説明します。

「インスペクション エンジンの概要」

「アプリケーション プロトコル検査を使用する状況」

「インスペクション エンジンの機能」

「検査の制限事項」

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

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

「CTIQBE 検査」

「DCERPC 検査」

「DNS 検査」

「ESMTP 検査」

「FTP 検査」

「GTP 検査」

「H.323 検査」

「HTTP 検査」

「ICMP 検査」

「ILS 検査」

「MGCP 検査」

「NetBIOS 検査」

「PPTP 検査」

「RSH 検査」

「RTSP 検査」

「SIP 検査」

「Skinny(SCCP)検査」

「SMTP および拡張 SMTP 検査」

「SNMP 検査」

「SQL*Net 検査」

「Sun RPC 検査」

「TFTP 検査」

「XDMCP 検査」

インスペクション エンジンの概要

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

「アプリケーション プロトコル検査を使用する状況」

「検査の制限事項」

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

アプリケーション プロトコル検査を使用する状況

ユーザが接続を確立すると、FWSM ではパケットをアクセス リストと照合し、アドレス変換を作成し、アクセラレーション パスのセッションに対するエントリを作成します。これにより、それ以降のパケットは時間のかかる検証をバイパスできます。ただし、アクセラレーション パスは予測可能なポート番号に依存し、パケット内でアドレス変換は実行されません。

多くのプロトコルでは、セカンダリの TCP ポートまたは UDP ポートをオープンします。well-known ポートでの初期セッションは、ダイナミックに割り当てられるポート番号のネゴシエーションに使用されます。

他のアプリケーションでは、パケットに IP アドレスが組み込まれます。これらの IP アドレスは、パケットが FWSM を通過するときに通常変換される送信元アドレスと一致する必要があります。

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

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

ダイナミックに割り当てられるポートを使用するサービスに対してアプリケーション検査をイネーブルにすると、FWSM ではセッションをモニタしてダイナミック ポートの割り当てを確認し、特定のセッションの間、これらのポート上でのデータ交換を許可します。

インスペクション エンジンの機能

図 21-2 に示すように、FWSM は基本的な動作で、次のデータベースを使用します。

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

検査:スタティックで定義済みのアプリケーションレベルの検査機能がセットで含まれます。

接続(XLATE テーブルおよび CONN テーブル):確立された各接続のステートや情報を保持します。この情報は、確立されたセッション内におけるトラフィック転送を効率的に行うために、ASA とカットスルー プロキシによって使用されます。

図 21-1 インスペクション エンジンの機能

 

図 21-2 に、動作を実行順に説明します。

1. TCP SYN パケットが、新しい接続を確立するために FWSM に到着します。

2. FWSM は、アクセス リスト データベースを確認して、その接続を許可するかどうかを判別します。

3. FWSM は、接続データベース(XLATE テーブルおよび CONN テーブル)内に新しいエントリを作成します。

4. FWSM は、検査データベースを検証して、接続に対してアプリケーションレベルの検査が必要かどうかを判別します。

5. パケットに対してアプリケーション インスペクション エンジンの必要な処理が完了したら、FWSM は宛先システムにパケットを転送します。

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

7. FWSM は、応答パケットを受信し、接続データベースで接続を検索したあと、確立されたセッションに属しているパケットを転送します。

FWSM のデフォルトの設定には、アプリケーション検査エントリのセットが含まれています。このエントリは、サポートされているプロトコルを特定の TCP ポート番号または UDP ポート番号に対応付け、必要とされる特別な処理を指定します。

検査の制限事項

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

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

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

検査されているトラフィックに PAT を設定すると、FWSM は、実ポート番号ではなく、変換されたポート番号でアプリケーション検査を実行します。

変換されたポート番号を持つトラフィックに検査を適用するサービス ポリシーは、変換されたポート番号を使用して、トラフィックを識別するクラス マップを使用する必要があります。たとえば、PAT を実行してポート 2727 とポート 2427 をポート 1400 に変換する場合、well-known ポート 2427 とポート 2727 ではなく、ポート 1400 に送信されたトラフィックと一致するよう Media Gateway Control Protocol(MGCP; メディア ゲートウェイ制御プロトコル)を設定する必要があります。

FWSM で TCP フローに対してアプリケーション検査をイネーブルにしている場合(特に、VoIP などのプロトコルのアプリケーション検査の場合)、TCP 送信側は TCP 受信側によってアドバタイズされた Maximum Segment Size(MSS; 最大セグメント サイズ)に基づいて TCP パケットをセグメント化します。FWSM では、TCP セグメントをリアセンブリし、検査を実行し、TCP 受信側によってアドバタイズされた MSS ではなく、インターフェイスの Maximum Transmission Unit(MTU; 最大伝送ユニット)に基づいて TCP 受信側にパケットを送信します。

たとえば、2 つの SIP エンドポイント(Polycomm テレビ会議装置)で 536 バイトの MSS がアドバタイズされるとします。この接続は FWSM でプロキシされ、一方のビデオ装置から 3 つのパケットにセグメント化された 761 バイトの H.245 セットアップ メッセージが送信されます。FWSM では、これらの 3 つのセグメントをリアセンブリし、単一の 761 データ バイト パケットとしてエンドポイントに送信します。536 バイトの MSS を受け入れて、必要に応じてメッセージをリアセンブリすることはありません。

この制限事項を考慮するには、FWSM で次の処理を行う必要があります。

TCP 受信側で MSS のサイズを大きくします。

FWSM インターフェイスで MTU のサイズを小さくします。

可能な場合にだけ、高度なプロトコル検査をディセーブルにします。

アプリケーション検査がプロトコルに対してイネーブルになっており、検査対象のアプリケーション プロトコルと同じポートが別のアプリケーションで利用されている場合、FWSM はそのアプリケーション プロトコルの検査時に予測不能な動作(パケット損失など)を示すことがあります。この状況が発生したら、そのアプリケーション プロトコルに対するインスペクション エンジンをディセーブルにしてください。

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

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

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

 

表 21-1 サポートされているアプリケーション インスペクション エンジン

アプリケーション1
デフォルト ポート
NAT の制限事項
標準2
説明

CTIQBE

TCP/2748

DCERPC

TCP/135

クライアントに対して EPM のマップおよび検索操作がサポートされています。

DNS over UDP

UDP/53

NAT だけ転送します。

WINS による名前解決用の NAT はサポートされません。

RFC 1123

PTR レコードの変更はありません。

デフォルトの最大パケット長は 512 バイトです。

ESMTP

TCP/25

RFC 821、1123

FTP

TCP/21

RFC 959

デフォルトの FTP 検査は、RFC 規格への準拠を強制しません。強制するには、 strict キーワードを指定して inspect ftp コマンドを設定します。

GTP

UDP/3386(V0)
UDP/2123(V1)

NAT または PAT は使用できません。

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

H.323

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

同一セキュリティ インターフェイス上で NAT は使用できません。

スタティック PAT は使用できません。

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

デフォルトでは、RAS 検査と H.225 検査の両方がイネーブルです。

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 Datagram Service / UDP

UDP/138

 

NetBIOS Name Service / UDP

UDP/137

NAT は使用できません。

PAT は使用できません。

WINS はサポートしません。

PPTP

TCP/1723

RFC 2637

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 は使用できません。

所定の状況では、TFTP でアップロードした Cisco IP Phone コンフィギュレーションは処理されません。

SMTP

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

SunRPC

UDP/111 TCP/111

PAT は使用できません。

ペイロードは NAT 処理しません。

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

TFTP

TCP/69 UDP/69

ペイロードは NAT 処理しません。

RFC 1530

WAAS

TCP

TCP オプション 33 解析をイネーブルにします。

XDCMP

UDP/177

NAT または PAT は使用できません。

1.デフォルト ポートに対してデフォルトでイネーブルになっているインスペクション エンジンは太字で示されています。

2.FWSM はこれらの標準に準拠していますが、検査対象のパケットに対して準拠が強制されることはありません。たとえば、FTP コマンドは特定の順序で使用されることが想定されていますが、FWSM ではその順序は強制されません。

デフォルトのポリシー設定には、次のコマンドが含まれます。

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

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

この機能では、モジュラ ポリシー フレームワークが使用されます。そのため、アプリケーション検査の実装は次のように行います。

1. トラフィックを識別します。

2. トラフィックに検査を適用します。

一部のアプリケーションについては、検査をイネーブルにするときに特別なアクションを実行できます。

3. インターフェイス上で検査をアクティブ化します。

モジュラ ポリシー フレームワークの詳細については、「モジュラ ポリシー フレームワークの使用」を参照してください。

一部のアプリケーションについては、検査がデフォルトでイネーブルになっています。詳細については、「デフォルトの検査ポリシー」を参照してください。この項の説明に従って、検査ポリシーを変更してください。

アプリケーション検査を設定する手順は、次のとおりです。


ステップ 1 検査を適用するトラフィックを識別するには、レイヤ 3/4 クラス マップを追加します。詳細については、「トラフィックの識別(レイヤ 3/4 クラス マップ)」を参照してください。

転送トラフィックに対するデフォルトのレイヤ 3/4 クラス マップは、「inspection_default」と呼ばれます。このクラス マップでは、特別な match コマンド( match default-inspection-traffic )に基づいて、各アプリケーション プロトコルのデフォルト ポートに対応するトラフィックを照合します。

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

非標準ポートと照合する場合は、非標準ポート用の新しいクラス マップを作成する必要があります。各インスペクション エンジンの標準ポートについては、「デフォルトの検査ポリシー」を参照してください。必要に応じて、同じポリシーに複数のクラス マップを組み込むことができます。したがって、特定のトラフィックに一致するクラス マップを 1 つ作成し、別のトラフィックに一致するクラス マップをもう 1 つ作成できます。ただし、トラフィックが検査コマンドを含む 2 つのクラス マップに一致した場合、最初に一致したクラスだけが使用されます。たとえば、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 (任意)一部のインスペクション エンジンでは、検査をトラフィックに適用するときに追加のパラメータを制御できます。次の項を参照して、使用しているアプリケーション用に検査ポリシー マップまたはアプリケーション マップを設定します。検査ポリシー マップおよびアプリケーション マップでは、両方ともインスペクション エンジンをカスタマイズできます。検査ポリシー マップでは、 policy-map type inspect などのモジュラ ポリシー フレームワークのコマンドを使用します。アプリケーション マップでは、 protocol -map の形式のコマンドを使用します。

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

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

FTP:「request-command deny コマンド」を参照してください。

GTP:「GTP マップおよびコマンド」を参照してください。

H.323:「H.225 マップ コマンド」を参照してください。

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

MGCP:「MGCP 検査の設定およびイネーブル化」を参照してください。

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

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 を入力することで、このクラスのアクションを編集できます。このポリシー マップに他のクラス マップを追加するには、別の名前を指定します。必要に応じて、同じポリシーに複数のクラス マップを組み込むことができます。したがって、特定のトラフィックに一致するクラス マップを 1 つ作成し、別のトラフィックに一致するクラス マップをもう 1 つ作成できます。ただし、トラフィックが検査コマンドを含む 2 つのクラス マップに一致した場合、最初に一致したクラスだけが使用されます。たとえば、SNMP は inspection_default クラス マップと一致します。SNMP 検査をイネーブルにするには、ステップ 5 のデフォルトのクラスに対して SNMP 検査をイネーブルにします。SNMP と一致する別のクラスを追加しないでください。

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

hostname(config-pmap-c)# inspect protocol
 

表 21-2 に、 protocol の値を示します。

 

表 21-2 protocol のキーワード

キーワード
説明

ctiqbe

dcerpc [ policy_map_name ]

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

dns [ map_name ]

esmtp [ policy_map_name ]

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

ftp [ strict [ map_name ]]

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

「request-command deny コマンド」に従って FTP アプリケーション マップを追加した場合、このコマンドでマップ名を指定します。

gtp [ map_name ]

「GTP マップおよびコマンド」に従って GTP アプリケーション マップを追加した場合、このコマンドでマップ名を指定します。

h323 h225 [ map_name ]

「H.225 マップ コマンド」に従って H.225 アプリケーション マップを追加した場合、このコマンドでマップ名を指定します。

h323 ras [ map_name ]

http [ policy_map_name ]

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

icmp

icmp error

ils

mgcp [ map_name ]

「MGCP 検査の設定およびイネーブル化」に従って MGCP 検査ポリシー マップを追加した場合、このコマンドでマップ名を指定します。

netbios

pptp

rsh

rtsp

sip [ policy_map_name ]

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

skinny

snmp [ map_name ]

「SNMP アプリケーション検査のイネーブル化および設定」に従って SNMP アプリケーション マップを追加した場合、このコマンドでマップ名を指定します。

sqlnet

sunrpc

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

tftp

waas

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 の設定例」

CTIQBE 検査の概要

inspect ctiqbe コマンドを使用すると、Computer Telephony Interface Quick Buffer Encoding(CTIQBE)プロトコル検査をイネーブルにできます。この検査では、NAT、PAT、および双方向 NAT がサポートされています。これにより、Cisco IP SoftPhone および他の Cisco Telephony Application Programming Interface(TAPI)/Java Telephony Application Programming Interface(JTAPI)アプリケーションは、FWSM 上でコール セットアップを行うために、Cisco CallManager と連動できます。

TAPI および JTAPI は、多くの Cisco VoIP アプリケーションで使用されます。CTIQBE は、Cisco TAPI Service Provider(TSP; TAPI サービス プロバイダー)が Cisco CallManager と通信するために使用します。

制限事項および制約事項

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

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

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

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

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

2 台の Cisco IP SoftPhone が異なる Cisco CallManager に登録されていて、各 CallManager が FWSM の異なるインターフェイスに接続されている場合、これら 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 アドレスを変換する場合、Cisco IP SoftPhone の登録を成功させるため、TCP ポート 2748 を PAT(インターフェイス)アドレスの同一ポートに対してスタティックにマッピングする必要があります。CTIQBE リスニング ポート(TCP 2748)は固定されていて、Cisco CallManager、Cisco IP SoftPhone、または Cisco TSP において、ユーザによる設定はできません。

CTIQBE 検査のイネーブル化および設定

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


ステップ 1 CTIQBE トラフィックを識別するには、クラス マップを作成するか、または既存のクラス マップを変更します。 class-map コマンドを次のように使用します。

hostname(config)# class-map class_map_name
hostname(config-cmap)#
 

class_map_name は、トラフィック クラスの名前です。 class-map コマンドを入力すると、CLI はクラス マップ コンフィギュレーション モードを開始します。

ステップ 2 CTIQBE トラフィックを識別するには、次のように match port コマンドを使用します。

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

ステップ 3 CTIQBE インスペクション エンジンを FTP トラフィックに適用するために使用するポリシー マップを作成するか、または既存のポリシー マップを変更します。そのためには、 policy-map コマンドを次のように使用します。

hostname(config-cmap)# policy-map policy_map_name
hostname(config-pmap)#
 

policy_map_name は、ポリシー マップの名前です。CLI はポリシー マップ コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 4 ステップ 1 で作成したクラス マップを指定します。このクラス マップは CTIQBE トラフィックを識別します。 class コマンドを次のように使用します。

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

class_map_name は、ステップ 1 で作成したクラス マップの名前です。CLI はポリシー マップ クラス コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 5 CTIQBE アプリケーション検査をイネーブルにします。

hostname(config-pmap-c)# inspect ctiqbe
 

ステップ 6 ポリシー マップをグローバルに、または特定のインターフェイスに適用するには、 service-policy コマンドを次のように使用します。

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

policy_map_name は、ステップ 3 で設定したポリシー マップです。ポリシー マップをすべてのインターフェイス上のトラフィックに適用する場合、 global オプションを使用します。ポリシー マップを特定のインターフェイス上のトラフィックに適用する場合、 interface interface_ID オプションを使用します。 interface_ID は、 nameif コマンドでインターフェイスに割り当てられた名前です。

FWSM は、指定のとおりに CTIQBE トラフィックの検査を開始します。


 

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

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

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

CTIQBE 検査の確認およびモニタ

show ctiqbe コマンドは、FWSM を越えて確立された CTIQBE セッションに関する情報を示します。このコマンドは、CTIQBE インスペクション エンジンによって割り当てられたメディア接続に関する情報を表示します。

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

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

CTI デバイスは、CallManager に登録済みです。デバイスの内部アドレスと RTP リスニング ポートは、209.165.201.2 UDP ポート 1028 に PAT 変換されます。その RTCP リスニング ポートは、UDP 1029 に PAT 変換されます。

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

この出力は、コールがこの CTI デバイスと 209.165.201.3 にある別の電話の間に確立されていることを示します。他の電話の RTP および RTCP リスニング ポートは、UDP 26822 および 26823 です。FWSM は 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:209.165.201.2/1025 flags ri idle 0:00:22 timeout 0:00:30
UDP PAT from inside:10.0.0.99/16908 to outside:209.165.201.2/1028 flags ri idle 0:00:00 timeout 0:04:10
UDP PAT from inside:10.0.0.99/16909 to outside:209.165.201.2/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
 

CTIQBE の設定例

次に、Cisco IP SoftPhone 用の単一トランスペアレント ファイアウォールの設定例を示します(図 21-2)。

図 21-2 Cisco IP SoftPhone(バーチャル会議)用の単一トランスペアレント ファイアウォール

 

この例に対応する設定は、次のとおりです。

firewall transparent
!
interface Vlan50
nameif inside
bridge-group 1
security-level 100
!
interface Vlan100
nameif outside
bridge-group 1
security-level 0
!
interface BVI1
ip address 10.0.0.30 255.0.0.0
!
access-list voice extended permit tcp any any eq ctiqbe
access-list voice extended permit tcp any any eq 1503
!
access-group voice in interface inside
access-group voice in interface outside
!
policy-map global_policy
class inspection_default
inspect ctiqbe
!
 

) TCP ポート 1503 は、バーチャル会議室コラボレーション用のセキュリティ アプライアンスを通過することが許可され、このセキュリティ アプライアンスを介して Cisco IP SoftPhone と連動できる必要があります。


次に、NetMeeting をイネーブルにした場合の Cisco IP SoftPhone 用の単一トランスペアレント ファイアウォールの設定例を示します(図 21-3)。Cisco IP SoftPhone は、NetMeeting のコラボレーション設定に基づいて設定します。

図 21-3 NetMeeting を使用した場合の Cisco IP SoftPhone(バーチャル会議)用の単一トランスペアレント ファイアウォール

 

この例に対応する設定は、次のとおりです。

firewall transparent
!
interface Vlan50
nameif inside
bridge-group 1
security-level 100
!
interface Vlan100
nameif outside
bridge-group 1
security-level 0
!
interface BVI1
ip address 10.0.0.30 255.0.0.0
!
access-list voice extended permit tcp any any eq ctiqbe
access-list voice extended permit tcp any any eq h323
access-list voice extended permit tcp any any eq 1503
!
access-group voice in interface inside
access-group voice in interface outside
!
policy-map global_policy
class inspection_default
inspect ctiqbe

!

 


) コラボレーションとアプリケーション共有が正常に行われるようにするには、TCP ポート 1503 および 1720 に対して通過が許可されている必要があります。


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

hostname# show conn detail
25 in use, 33 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 SUNRPC, r - inside acknowledged FIN, S - awaiting inside SYN,
s - awaiting outside SYN, T - SIP, t - SIP transient, U - up
Network Processor 1 connection
TCP out 10.0.0.101:2748 in 10.0.0.23:3598 idle 0:00:09 Bytes 103065 FLAGS - UOI
UDP out 10.0.0.21:30504 in 10.0.0.23:3650 idle 0:00:00 Bytes 4810406
FLAGS - C
UDP out 10.0.0.21:1436 in 10.0.0.23:19972 idle 0:00:00 Bytes 4813240
FLAGS - C
TCP out 10.0.0.21:1437 in 10.0.0.23:1720 idle 0:07:04 Bytes 1027 FLAGS - UBOIh
UDP out 10.0.0.21:49608 in 10.0.0.23:49608 idle 0:00:10 Bytes 241836
FLAGS - H
UDP out 10.0.0.21:49609 in 10.0.0.23:49609 idle 0:00:01 Bytes 17480
FLAGS - H
TCP out 10.0.0.21:1440 in 10.0.0.23:1503 idle 0:06:58 Bytes 4488 FLAGS - UBOI
TCP out 10.0.0.21:1441 in 10.0.0.23:1503 idle 0:04:50 Bytes 17888 FLAGS - UBOI
TCP out 10.0.0.21:1442 in 10.0.0.23:1503 idle 0:04:50 Bytes 471135 FLAGS - UBOI
Network Processor 2 connections
Multicast sessions:
Network Processor 1 connections
Network Processor 2 connections
IPv6 connections:
 

DCERPC 検査

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

通常、クライアントは Endpoint Mapper と呼ばれるサーバにクエリーを送信し、このサーバは要求されたサービスに関して動的に割り当てられたネットワーク情報を well-known ポートで待ち受けます。その後、クライアントは、サービスを提供するサーバ インスタンスとのセカンダリ接続を確立します。セキュリティ アプライアンスは、セカンダリ接続に対して、適切なポート番号とネットワーク アドレスを許可し、必要に応じて NAT も適用します。

DCERPC 検査マップでは、EPM と well-known TCP ポート 135 上のクライアントとの間のネイティブ TCP 通信が検査されます。クライアントに対して EPM のマップおよび検索操作がサポートされています。クライアントとサーバは、任意のセキュリティ ゾーンに配置できます。組み込みのサーバ IP アドレスとポート番号は、該当する EPM 応答メッセージから受け取ります。クライアントは 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 Rewrite の動作」

「DNS Rewrite の設定」

「DNS 検査の設定」

「DNS 検査の確認およびモニタ」

「DNS ガード」

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

FWSM によって DNS 応答が転送されると、FWSM は DNS クエリーに対応付けられた DNS セッションをただちに終了します。FWSM はまた、DNS 応答の ID が DNS クエリーの ID と一致していることを確認するために、メッセージ交換をモニタします。

DNS 検査がイネーブルの場合(デフォルト)、FWSM は次の追加作業を実行します。

alias static nat コマンドを使用して設定を作成し、これに基づいて DNS レコードを変換します(DNS Rewrite)。変換は DNS 応答の A レコードにだけ適用されます。したがって、DNS Rewrite は PTR レコードを要求するリバース検索に影響を及ぼしません。


) 複数の PAT ルールが各 A レコードに適用され、使用する PAT ルールがあいまいになるので、DNS Rewrite は PAT には適用されません。


DNS メッセージの最大長を適用します(デフォルトは 512 バイトで、最大長は 65,535 バイト)。パケット長が設定済みの最大長以下であるか確認するため、FWSM は必要に応じてリアセンブリします。パケット長が最大長を超えた場合、FWSM はパケットを廃棄します。


maximum-length オプションを指定しないで inspect dns コマンドを入力すると、DNS パケット サイズは検証されません。


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

圧縮ポインタが DNS メッセージ内で発生すると、ポインタによって参照されるドメイン名の正当性を確認します。

圧縮ポインタのループが存在するかどうか検証します。

複数の DNS セッションが同じ 2 つのホストの間にあり、セッションが同じ 5 つのタプル(送信元/宛先 IP アドレス、送信元/宛先ポート、プロトコル)を取得していれば、単一の接続がこの複数の DNS セッション用に作成されます。DNS 識別は、app_id によって追跡され、各 app_id のアイドル タイマーは独立して動作します。

app_id は独立してタイムアウトになるので、正規の DNS 応答は制限された時間内で FWSM を通過するだけで、リソース構築はされません。ただし、 show conn コマンドを入力すると、新しい DNS セッションによってリセットされる DNS 接続のアイドル タイマーが表示されます。これは共有 DNS 接続の特性と設計によるものです。

DNS Rewrite の動作

DNS 検査がイネーブルの場合、DNS Rewrite は任意のインターフェイスから発信される DNS メッセージの NAT を完全にサポートします。

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

DNS 検査がイネーブルであれば、 alias 、static、または nat コマンドを使用して、DNS Rewrite を設定できます。必要な設定の詳細については、「DNS Rewrite の設定」を参照してください。

DNS Rewrite は次の 2 つの機能を実行します。

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

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

図 21-4 では、DNS サーバは外部(ISP)ネットワーク上に存在します。FWSM では、 static コマンドは、Web サーバ(192.168.100.1)の実アドレスを ISP 割り当てアドレス(209.165.201.5)へマッピングします。内部インターフェイス上の Web クライアントが、URL http://server.example.com の Web サーバにアクセスしようとすると、Web クライアントが稼動するホストは Web サーバの IP アドレスを解決するため、DNS サーバに DNS 要求を送信します。FWSM は、IP ヘッダー内のルーティング不可能な送信元アドレスを変換して、その外部インターフェイス上の ISP ネットワークに要求を転送します。DNS 応答が返送されると、FWSM は宛先アドレスだけでなく、Web サーバの組み込み IP アドレスにもアドレス変換を適用します。この組み込み IP アドレスは、DNS 応答の A レコードに含まれています。結果として、内部ネットワーク上の Web クライアントは、内部ネットワーク上の Web サーバとの接続に必要な正しいアドレスを取得します。この例の NAT および DNS コンフィギュレーションの詳細については、例 21-2 を参照してください。これと同様の事例に関する設定手順については、「2 つの NAT ゾーンを使用した DNS Rewrite の設定」を参照してください。

図 21-4 2 つの NAT ゾーンを使用した DNS Rewrite

 

DNS 要求を行うクライアントが DMZ ネットワーク上にあり、DNS サーバが内部インターフェイス上にある場合にも、DNS Rewrite は機能します。この事例に関する図および設定手順については、「3 つの NAT ゾーンを使用した DNS Rewrite」を参照してください。

DNS Rewrite の設定

alias 、static、または nat コマンドを使用して、DNS Rewrite を設定できます。 alias および static コマンドは同じ意味で使用されます。ただし、 static コマンドはより正確ではっきりしているので、新しい配置に使用することを推奨します。また、DNS Rewrite は static コマンド使用時のオプションです。

ここでは、 alias および static コマンドを使用して DNS Rewrite を設定する手順について説明します。単純な事例や複雑な事例で、 static コマンドを使用する設定手順を提供します。 nat コマンドの使用は、DNS Rewrite がスタティック マッピングではなくダイナミック変換に基づいている点を除いて、 static コマンドの使用と同様です。

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

「DNS Rewrite の alias コマンドの使用」

「DNS Rewrite の static コマンドの使用」

「2 つの NAT ゾーンを使用した DNS Rewrite の設定」

「3 つの NAT ゾーンを使用した DNS Rewrite」

「3 つの NAT ゾーンを使用した DNS Rewrite の設定」

alias nat static コマンドの詳細な構文およびその他の機能については、『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference 』の対応するコマンド ページを参照してください。

DNS Rewrite の alias コマンドの使用

alias コマンドを使用すると、FWSM は、 任意の インターフェイスに存在する IP ネットワーク上のアドレスを、異なるインターフェイスを介して接続された別の IP ネットワークのアドレスに変換できます。このコマンドの構文は、次のとおりです。

hostname(config)# alias (inside) 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
 

) DNS Rewrite を設定するのに alias コマンドを使用する場合、マッピングされたアドレスに対してプロキシ ARP が実行されます。これを回避するには、alias コマンドを入力したあとに、sysopt noproxyarp internal_interface コマンドを入力することで、プロキシ ARP をディセーブルにします。


DNS Rewrite の static コマンドの使用

static コマンドを使用すると、 特定の インターフェイスに存在する IP ネットワーク上のアドレスを、異なるインターフェイス上の別の IP ネットワークのアドレスに変換できます。このコマンドの構文は、次のとおりです。

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

次に、内部インターフェイス上のアドレス 192.168.100.10 を外部インターフェイス上の 209.165.201.5 に変換する例を示します。

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

nat コマンドの使用は、DNS Rewrite がスタティック マッピングではなくダイナミック変換に基づいている点を除いて、static コマンドの使用と同様です。


2 つの NAT ゾーンを使用した DNS Rewrite の設定

図 21-4 で示す事例のような DNS Rewrite の事例を実装する手順は、次のとおりです。


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

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

引数は次のとおりです。

inside :FWSM の内部インターフェイスの名前

outside :FWSM の外部インターフェイスの名前

mapped-address :Web サーバの変換された IP アドレス

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

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

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

引数は次のとおりです。

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

mapped-address :Web サーバの変換された IP アドレス

port :HTTP 要求に対し、Web サーバが待ち受ける TCP ポート

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

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

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

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

domain-qualified-hostname. IN A mapped-address
 

domain-qualified-hostname は、server.example.com のようなドメイン サフィックスのあるホスト名です。ホスト名のあとのピリオドは重要です。 mapped-address は、Web サーバの変換された IP アドレスです。


 

次に、図 21-4 で示す事例の FWSM を設定する例を示します。DNS 検査はすでにイネーブルであると見なされます。

例 21-2 2 つの NAT ゾーンを使用した DNS Rewrite

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 Rewrite

図 21-5 に、より複雑な事例を示します。DNS 検査により、NAT は、最小限の設定が行われた DNS サーバを使用して透過的に動作できます。これと同様の事例に関する設定手順については、「3 つの NAT ゾーンを使用した DNS Rewrite の設定」を参照してください。

図 21-5 3 つの NAT ゾーンを使用した DNS Rewrite

 

図 21-5 では、Web サーバ(server.example.com)には FWSM の DMZ インターフェイス上に実アドレス 192.168.100.10 があります。IP アドレス 10.10.10.25 を持つ Web クライアントは内部インターフェイス上にあり、パブリック DNS サーバは外部インターフェイス上にあります。サイト NAT ポリシーは次のとおりです。

外部 DNS サーバは、server.example.com 用に信頼性のあるアドレス レコードを保有します。

外部ネットワーク上のホストは、外部 DNS サーバ経由でドメイン名 server.example.com を持つ Web サーバ、または IP アドレス 209.165.200.225 を持つ Web サーバに接続できます。

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

任意のインターフェイス上のホストまたはクライアントが DMZ Web サーバにアクセスする場合、サーバは server.example.com の A レコードに関して公開 DNS サーバに照会します。DNS サーバは、server.example.com がアドレス 209.165.200.225 にバインドすることを示す 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. 外部ホストからのパケットは、外部インターフェイスで FWSM に到達します。

5. スタティック ルールはアドレス 209.165.200.225 を 192.168.100.10 に変換し、FWSM は DMZ 上の Web サーバにパケットを転送します。

内部 ネットワーク上の Web クライアントが http://server.example.com にアクセスしようとすると、次のイベントが発生します。

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

2. DNS サーバは、IP アドレス 209.165.200.225 で応答します。

3. FWSM は 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
 

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


c. 内部 Web クライアントと通信する場合、Web サーバ アドレス([dmz]:192.168.100.10)を変換する NAT を検索します。

NAT ルールは適用されないので、アプリケーション検査が完了します。

NAT ルール(nat または static)を適用する場合、 dns オプションを指定する必要があります。 dns オプションを指定しない場合、ステップ b の A レコードの書き換えは無効になり、他のパケット処理が継続されます。

5. FWSM は、HTTP 要求を DMZ インターフェイス上の server.example.com に送信します。

3 つの NAT ゾーンを使用した DNS Rewrite の設定

図 21-5 の事例の NAT ポリシーをイネーブルにする手順は、次のとおりです。


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

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

引数は次のとおりです。

dmz :FWSM の DMZ インターフェイスの名前

outside :FWSM の外部インターフェイスの名前

mapped-address :Web サーバの変換された IP アドレス

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

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

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

引数は次のとおりです。

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

mapped-address :Web サーバの変換された IP アドレス

port :HTTP 要求に対し、Web サーバが待ち受ける TCP ポート

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

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

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

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

domain-qualified-hostname. IN A mapped-address
 

domain-qualified-hostname は、server.example.com のようなドメイン サフィックスのあるホスト名です。ホスト名のあとのピリオドは重要です。 mapped-address は、Web サーバの変換された IP アドレスです。


 

次に、図 21-5 で示す事例の FWSM を設定する例を示します。DNS 検査はすでにイネーブルであると見なされます。

例 21-3 3 つの NAT ゾーンを使用した DNS Rewrite

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 検査はデフォルトではイネーブルです。

DNS 検査をイネーブルにする手順(検査が以前にディセーブルであった場合)、または DNS トラフィックの受信に使用するデフォルト ポートを変更する手順は、次のとおりです。


ステップ 1 DNS トラフィックを識別するには、クラス マップを作成するか、または既存のクラス マップを変更します。 class-map コマンドを次のように使用します。

hostname(config)# class-map class_map_name
hostname(config-cmap)#
 

class_map_name は、トラフィック クラスの名前です。 class-map コマンドを入力すると、CLI はクラス マップ コンフィギュレーション モードを開始します。

ステップ 2 match port コマンドを使用して、DNS トラフィックを識別します。DNS のデフォルト ポートは UDP ポート 53 です。

hostname(config-cmap)# match port udp eq 53
 

ステップ 3 DNS インスペクション エンジンを FTP トラフィックに適用するために使用するポリシー マップを作成するか、または既存のポリシー マップを変更します。そのためには、 policy-map コマンドを次のように使用します。

hostname(config-cmap)# policy-map policy_map_name
hostname(config-pmap)#
 

policy_map_name は、ポリシー マップの名前です。CLI はポリシー マップ コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 4 DNS アプリケーション検査をイネーブルにします。そのためには、 inspect dns コマンドを次のように使用します。

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

DNS パケットの最大長をデフォルト(512)から変更するには、 maximum-length 引数を使用して、 max-pkt-length に新しい数値を指定します。長いパケットは廃棄されます。DNS パケット長の検証をディセーブルにするには、 maximum-length キーワードを指定しないで inspect dns コマンドを入力します。

ステップ 5 ポリシー マップをグローバルに、または特定のインターフェイスに適用するには、 service-policy コマンドを次のように使用します。

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

policy_map_name は、ステップ 3 で設定したポリシー マップです。ポリシー マップをすべてのインターフェイス上のトラフィックに適用する場合、 global オプションを使用します。ポリシー マップを特定のインターフェイス上のトラフィックに適用する場合、 interface interface_ID オプションを使用します。 interface_ID は、 nameif コマンドでインターフェイスに割り当てられた名前です。

FWSM は、指定のとおりに DNS トラフィックの検査を開始します。


 

例 21-4 DNS 検査のイネーブル化および設定

次に、デフォルト ポート(53)上の DNS トラフィックと一致するクラス マップを作成し、sample_policy ポリシー マップで DNS 検査をイネーブルにし、DNS 検査を外部インターフェイスに適用する例を示します。

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

DNS 検査の確認およびモニタ

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

hostname# show conn
 

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

複数の DNS セッションが同じ 2 つのホストの間にあり、セッションが同じ 5 つのタプル(送信元/宛先 IP アドレス、送信元/宛先ポート、プロトコル)を取得していれば、単一の接続がこの複数の DNS セッション用に作成されます。DNS 識別は、app_id によって追跡され、各 app_id のアイドル タイマーは独立して動作します。

app_id は独立してタイムアウトになるので、正規の DNS 応答は制限された時間内で FWSM を通過するだけで、リソース構築はされません。ただし、 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 サーバに送信されたとき、最初の応答だけが FWSM で受け入れられます。他の DNS サーバからの追加の応答はすべて FWSM で廃棄されます。

クライアントで DNS 要求が発行されると、ダイナミック ホールにより、DNS サーバから UDP パケットを戻すことが許可されます。FWSM で最初の DNS サーバから応答を受信すると、アクセラレーション パスで作成された接続が廃棄され、他の DNS サーバからのそれ以降の応答が FWSM で廃棄されるようになります。UDP DNS 接続は、削除用にマーク付けされるのではなく、即座に削除されます。

FWSM では、送信元/宛先ポートの代わりに、送信元/宛先 IP アドレス、プロトコル、および DNS ID に基づいてセッション検索キーが作成されます。

DNS クライアントと DNS サーバで DNS 用の TCP が使用されている場合、接続は標準の TCP 接続と同じようにクリアされます。

ただし、クライアントで複数の DNS サーバからの DNS 応答を受信する場合は、コンテキストごとにデフォルトの DNS 動作をディセーブルにできます。DNS ガードをディセーブルにすると、接続は最初の DNS サーバからの応答では削除されず、標準の UDP 接続として扱われます。

DNS ガードはデフォルトではイネーブルです。

DNS ガードをディセーブルにするには、次のコマンドを入力します。

hostname(config)# no dns-guard
hostname(config)# show running-config | inc dns-guard
no dns-guard
hostname(config)#

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 のヘルプまたは『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module 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 パラメータを照合するには、次のコマンドを入力します。

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 フィールドのカウントを照合するには、次のコマンドを入力します。

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

count は、ヘッダーの To フィールドに含まれる受信者の数です。

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 は、filename の長さ(1 ~ 1000)です。

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 オプションの使用」

「request-command deny コマンド」

「FTP 検査の設定」

「FTP 検査の確認およびモニタ」

FTP 検査の概要

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

動的なセカンダリ データ接続の準備

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

監査証跡の生成

組み込み IP アドレスの NAT 処理

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


no inspect ftp コマンドを使用して FTP インスペクション エンジンをディセーブルにした場合、発信ユーザが接続を開始できるのはパッシブ モードだけで、すべての着信 FTP はディセーブルになります。


strict オプションの使用

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


ヒント FWSM を通過することを許可されていない FTP コマンドを指定するには、FTP マップを作成し、FTP マップ コンフィギュレーション モードで request-command deny コマンドを入力します。


インターフェイスで strict オプションがイネーブルになったあと、FTP 検査は次の処理を実行します。

FWSM が新しいコマンドを許可する前に、FTP コマンドに対して確認応答が返される必要があります。

FWSM は、組み込みコマンドを送信する接続を廃棄します。

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


注意 strict オプションを使用すると、FTP RFC に厳密に準拠しない FTP クライアントの障害が発生する場合があります。

strict オプションがイネーブルである場合、次の異常動作について、各 ftp コマンドと応答シーケンスが追跡されます。

不完全なコマンド:PORT および PASV 応答コマンド内のカンマ数が 5 つかどうかが確認されます。5 つ以外の場合、PORT コマンドは不完全であると見なされ、TCP 接続は終了します。

不正コマンド:RFC に規定されているように、 ftp コマンドが <CR><LF> 文字で終了しているかどうかが確認されます。異なっている場合、接続は終了します。

RETR コマンドおよび STOR コマンドのサイズ:固定数になっているかどうかが確認されます。サイズが大きい場合、エラー メッセージが記録され、接続は終了します。

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

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

TCP ストリーム編集:TCP ストリーム編集が検出されると、FWSM は接続を終了します。

無効なポートのネゴシエーション:ネゴシエートされたダイナミック ポートの値が 1024 未満かどうかが確認されます。1 ~ 1024 のポート番号は既知の接続用に予約されているので、ネゴシエートされたポートがこの範囲内の場合には、TCP 接続は解放されます。

コマンドのパイプライン化:PORT コマンドおよび PASV 応答コマンド内のポート番号よりあとの文字数が、定数の 8 であるかどうかが相互確認されます。8 を超えている場合、TCP 接続は終了します。

FWSM は、SYST コマンドに対する FTP サーバの応答を一連の X に置き換え、サーバが FTP クライアントに対し、そのシステム タイプを開示するのを回避します。このデフォルト動作を上書きするには、FTP マップ コンフィギュレーション モードで no mask-syst-reply コマンドを使用します。

request-command deny コマンド

request-command deny コマンドを使用すると、FWSM がどの FTP コマンドに対し、FTP トラフィックが FWSM を通過する許可を与えるか制御できます。このコマンドは FTP マップ コンフィギュレーション モードで利用可能です。そのため、このコマンドを利用するには、「FTP 検査の設定」に従って FTP マップを作成し、FTP 検査をイネーブルにするときにそのマップを使用する必要があります。

表 21-3 に、 request-command deny コマンドを使用することで、許可できなくする FTP コマンドを示します。

 

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

request-command deny
オプション
目的

appe

ファイルに追加するコマンドを許可しません。

cdup

現在のワーキング ディレクトリのペアレント ディレクトリに
変わるコマンドを許可しません。

dele

サーバのファイルを削除するコマンドを許可しません。

get

サーバからファイルを検索するクライアント コマンドを許可
しません。

help

ヘルプ情報を提供するコマンドを許可しません。

mkd

サーバ上にディレクトリを作成するコマンドを許可しません。

put

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

rmd

サーバ上のディレクトリを削除するコマンドを許可しません。

rnfr

ファイル名から rename を指定するコマンドを許可しません。

rnto

ファイル名へ rename を指定するコマンドを許可しません。

site

サーバ システムに固有なコマンドを許可しません。通常はリモート管理用に使用されます。

stou

一意なファイル名を使用してファイルを保存するコマンドを許可しません。

FTP 検査の設定

FTP アプリケーション検査はデフォルトではイネーブルなので、次の方法で手順を実行する必要があるのはデフォルトの FTP 設定を変更する場合だけです。

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

FWSM を通過することを許可されていない特定の FTP コマンドを識別します。

デフォルトのポート番号を変更します。

FTP 検査を設定する手順は、次のとおりです。


ステップ 1 FWSM の後ろで FTP サーバが待ち受けるポートを決定します。デフォルトの FTP ポートは TCP ポート 21 です。ただし、thwart 攻撃に対する簡単な手段として、代替ポートがしばしば使用されます。すべての FTP トラフィックを検査することを確認するには、TCP ポート 21 以外のポートの使用に関して、FTP サーバを検証してください。

ステップ 2 FTP トラフィックを識別するには、クラス マップを作成するか、または既存のクラス マップを変更します。 class-map コマンドを次のように使用します。

hostname(config)# class-map class_map_name
hostname(config-cmap)#
 

class_map_name は、トラフィック クラスの名前です。 class-map コマンドを入力すると、CLI はクラス マップ コンフィギュレーション モードを開始します。

ステップ 3 ステップ 1 で決定した FTP ポートに送信されたトラフィックを識別します。そのためには、 match port または match access-list コマンドを使用します。

連続しない複数のポートを識別する必要がある場合、 access-list extended コマンドを使用してアクセス リストを作成し、各ポートと一致する Access Control Entry(ACE; アクセス制御エントリ)を追加してから、 match access-list コマンドを使用します。次のコマンドは、アクセス リストを使用して、アクセス リストを持った複数の TCP ポートを識別します。

hostname(config)# access-list acl-name any any tcp eq port_number_1
hostname(config)# access-list acl-name any any tcp eq port_number_2
hostname(config)# class-map class_map_name
hostname(config-cmap)# match access-list acl-name
 

単一ポートを識別する必要がある場合、次のように match port コマンドを使用します。

hostname(config-cmap)# match port tcp port_number
 

port_number は、FWSM の後ろの FTP サーバが待ち受ける TCP ポートだけです。

単一プロトコルの連続したポート範囲を識別する必要がある場合、次のように range キーワードを指定して match port コマンドを使用します。

hostname(config-cmap)# match port tcp range begin_port_number end_port_number
 

begin_port_number は、FTP ポート範囲の最小ポートで、 end_port_number は最大ポートです。

ステップ 4 (任意)FTP 検査を実行する場合は、次の手順を実行します。

FTP クライアントに対して、FTP サーバのシステム タイプの開示を許可します。

許可された FTP コマンドを制限します。

FTP マップを作成して、設定します。そのためには、次の手順を実行します。

a. FTP 検査の追加パラメータを含んだ FTP マップを作成します。 ftp-map コマンドを次のように使用します。

hostname(config-cmap)# ftp-map map_name
hostname(config-ftp-map)#
 

map_name は、FTP マップの名前です。CLI は、FTP マップ コンフィギュレーション コマンドを開始します。

b. (任意)SYST メッセージに応答して、FTP サーバにシステム タイプを FTP クライアントに開示させる場合、次のように mask-syst-reply コマンドの no 形式を使用します。

hostname(config-ftp-map)# no mask-syst-reply
hostname(config-ftp-map)#
 

) デフォルトでは、FTP 検査がイネーブルである場合、SYST メッセージへの応答はマスクされます。SYST 応答マスキングをディセーブルにした場合、mask-syst-response コマンドを使用して、マスキングを再度イネーブルにできます。


c. (任意)特定の FTP コマンドを許可しない場合、 request-command deny コマンドを使用して、許可しない各 FTP コマンドを次のように指定します。

hostname(config-ftp-map)# request-command deny ftp_command [ftp_command...]
hostname(config-ftp-map)#
 

ftp_command は、制限する 1 つまたは複数の FTP コマンドです。制限可能な FTP コマンドのリストについては、表 21-3 を参照してください。

ステップ 5 FTP インスペクション エンジンを FTP トラフィックに適用するために使用するポリシー マップを作成するか、または既存のポリシー マップを変更します。そのためには、 policy-map コマンドを次のように使用します。

hostname(config-cmap)# policy-map policy_map_name
hostname(config-pmap)#
 

policy_map_name は、ポリシー マップの名前です。CLI はポリシー マップ コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 6 ステップ 2 で作成したクラス マップを指定します。このクラス マップは FTP トラフィックを識別します。 class コマンドを次のように使用します。

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

class_map_name は、ステップ 2 で作成したクラス マップの名前です。CLI はポリシー マップ クラス コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 7 必要なオプションを指定して、FTP アプリケーション検査をイネーブルにします。そのためには、次の手順のいずれかを実行します。

完全な FTP 検査をイネーブルにする場合、次のように strict キーワードを指定して、 inspect ftp コマンドを使用します。

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

ステップ 4 で設定したオプションの FTP マップを使用して完全な FTP 検査をイネーブルにする場合、次のように strict キーワードと FTP マップ名を指定して、 inspect ftp コマンドを使用します。

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

デフォルトの FTP 検査に戻す場合、次のようにキーワードを指定しないで、 inspect ftp コマンドを使用します。

hostname(config-pmap-c)# inspect ftp
 

ステップ 8 ポリシー マップをグローバルに、または特定のインターフェイスに適用するには、 service-policy コマンドを次のように使用します。

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

policy_map_name は、ステップ 5 で設定したポリシー マップです。ポリシー マップをすべてのインターフェイス上のトラフィックに適用する場合、 global オプションを使用します。ポリシー マップを特定のインターフェイス上のトラフィックに適用する場合、 interface interface_ID オプションを使用します。 interface_ID は、 nameif コマンドでインターフェイスに割り当てられた名前です。

FWSM は、指定のとおりに FTP トラフィックの検査を開始します。


 

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

例 21-5 完全な FTP 検査のイネーブル化および設定

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

FTP 検査の確認およびモニタ

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

取り込まれた、またはアップロードされた各ファイルについて、監査記録 302002 が生成されます。

FTP コマンドが RETR または STOR であるかを判断するため検証され、retrieve コマンドおよび store コマンドが記録されます。

ユーザ名は、IP アドレスを提供するテーブルを検索することで取得されます。

ユーザ名、送信元 IP アドレス、宛先 IP アドレス、NAT アドレス、ファイル操作が記録されます。

メモリ不足によってセカンダリ ダイナミック チャネルの準備に失敗した場合、監査記録 201005 が生成されます。

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

GTP 検査

ここでは、GTP インスペクション エンジンの機能と、その設定を変更する手順について説明します。ここでは、次の内容について説明します。

「GTP 検査の概要」

「GTP マップおよびコマンド」

「GTP 検査のイネーブル化および設定」

「GTP 検査の確認およびモニタ」

「GGSN 負荷分散」

「GTP の設定例」


) GTP 検査には、特別なライセンスが必要です。必要なライセンスなしで FWSM で GTP 関連コマンドを入力すると、FWSM はエラー メッセージを表示します。


GTP 検査の概要

General Packet Radio Service(GPRS)は、GSM ネットワークと企業ネットワーク、またはインターネットの間で、携帯電話加入者に連続した接続を提供します。Gateway GPRS Support Node(GGSN; ゲートウェイ GPRS サポート ノード)は、GPRS ワイヤレス データ ネットワークと他のネットワークの間のインターフェイスです。Serving GPRS Support Node(SGSN)は、モビリティ管理、データ セッション管理、データ圧縮を行います(図 21-6 を参照)。

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

 

Universal Telecommunications System(UMTS)は、固定回線電話、携帯電話、インターネット、コンピュータ技術を融合したものです。Universal Terrestrial Radio Access Network(UTRAN)は、このシステムでワイヤレス ネットワークを実装するのに使用するネットワーキング プロトコルです。GTP により、GGSN、SGSN、UTRAN の間の UMTS/GPRS バックボーンを介して、マルチプロトコル パケットをトンネリングできます。

GTP には、固有のセキュリティまたはユーザ データの暗号化は含まれませんが、FWSM で GTP を使用するとリスクからネットワークを保護できます。

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


) フェールオーバーのある GTP を使用して GTP 接続が確立され、データがトンネル上で転送される前にアクティブ ユニットが失敗した場合、GTP データ接続(「j」フラグ セット付き)はスタンバイ ユニットに複製されません。これが発生するのは、アクティブ ユニットがスタンバイ ユニットへの初期接続を複製しないからです。


GGSN 負荷分散機能を使用すると、GSN プールに属する任意の GSN が SGSN 要求に応答して GGSN 上で負荷分散を実現できるようになります。

GTP マップおよびコマンド

GTP トラフィック上に追加の検査パラメータを実行できます。 gtp-map コマンドは、検査パラメータを指定します。 inspect gtp コマンドを使用して GTP 検査をイネーブルにする場合、GTP マップを指定するオプションがあります。

inspect gtp コマンドを使用してマップを指定しない場合、FWSM はデフォルトの 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

表 21-4 に、GTP 検査パラメータの設定に使用するコマンドを要約します。次のコマンドは、GTP マップ コンフィギュレーション モードで利用できます。各コマンドの詳細な構文については、『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference 』の対応するコマンド ページを参照してください。

 

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

コマンド
説明

description

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

drop

廃棄するメッセージ ID、APN、または GTP バージョンを指定
します。

mcc

3 桁の Mobile Country Code(000 ~ 999)を指定します。1 桁
または 2 桁のエントリの場合は前に 0 が付きます。

message-length

最小および最大メッセージ長を指定します。

permit errors

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

permit response

別のオブジェクト グループからの応答を受信することが許可
されたオブジェクト グループを指定します。

request-queue

キューで許可される要求の最大数を指定します。

timeout(gtp-map)

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

tunnel-limit

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

GTP 検査のイネーブル化および設定

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


) GTP 検査には、特別なライセンスが必要です。必要なライセンスなしで FWSM で GTP 関連コマンドを入力すると、FWSM はエラー メッセージを表示します。


GTP 設定をイネーブルにする、または変更する手順は、次のとおりです。


ステップ 1 GTP トラフィックに必要なポートを識別する ACE を持つアクセス リストを定義します。標準ポートは、UDP ポート 2123 および 3386 です。アクセス リストを作成するには、次のように各 ACE に 1 回だけ access-list extended コマンドを使用します。

hostname(config)# access-list acl-name permit {udp | tcp} any any eq port
 

acl-name はアクセス リストに割り当てられた名前で、 port は ACE が識別する GTP ポートです。

ステップ 2 GTP トラフィックを識別するには、クラス マップを作成するか、または既存のクラス マップを変更します。 class-map コマンドを次のように使用します。

hostname(config)# class-map class_map_name
hostname(config-cmap)#
 

class_map_name は、トラフィック クラスの名前です。 class-map コマンドを入力すると、CLI はクラス マップ コンフィギュレーション モードを開始します。

ステップ 3 match access-list コマンドを使用して、ステップ 1 で作成したアクセス リストで GTP トラフィックを識別します。

hostname(config-cmap)# match access-list acl-name
 

ステップ 4 (任意)GTP トラフィック上で追加パラメータを実行する場合、GTP マップを作成および設定します。GTP マップを指定しない場合の GTP マップと実行されるデフォルト値の詳細については、「GTP マップおよびコマンド」を参照してください。GTP マップを作成および設定するには、次の手順を実行します。

a. GTP 検査の追加パラメータを含んだ GTP マップを作成します。 gtp-map コマンドを次のように使用します。

hostname(config-cmap)# gtp-map map_name
hostname(config-gtp-map)#
 

map_name は、GTP マップの名前です。CLI は GTP マップ コンフィギュレーション モードを開始します。

b. GTP 検査のパラメータ設定します。そのためには、実行する GTP マップ コンフィギュレーション モード コマンドを使用します。コマンド リストについては、表 21-4 を参照してください。

ステップ 5 GTP インスペクション エンジンを GTP トラフィックに適用するために使用するポリシー マップを作成するか、または既存のポリシー マップを変更します。そのためには、 policy-map コマンドを次のように使用します。

hostname(config-cmap)# policy-map policy_map_name
hostname(config-pmap)#
 

policy_map_name は、ポリシー マップの名前です。CLI はポリシー マップ コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 6 ステップ 2 で作成したクラス マップを指定します。このクラス マップは GTP トラフィックを識別します。 class コマンドを次のように使用します。

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

class_map_name は、ステップ 2 で作成したクラス マップの名前です。CLI はポリシー マップ クラス コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

 

ステップ 7 GTP アプリケーション検査をイネーブルにします。そのためには、 inspect gtp コマンドを次のように使用します。

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

map_name は、ステップ 4(任意)で作成した GTP マップです。

ステップ 8 ポリシー マップをグローバルに、または特定のインターフェイスに適用するには、 service-policy コマンドを次のように使用します。

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

policy_map_name は、ステップ 5 で設定したポリシー マップです。ポリシー マップをすべてのインターフェイス上のトラフィックに適用する場合、 global オプションを使用します。ポリシー マップを特定のインターフェイス上のトラフィックに適用する場合、 interface interface_ID オプションを使用します。 interface_ID は、 nameif コマンドでインターフェイスに割り当てられた名前です。

FWSM は、指定のとおりに GTP トラフィックの検査を開始します。


 

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

例 21-6 GTP 検査のイネーブル化および設定

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

GTP 検査の確認およびモニタ

GTP 設定を表示するには、イネーブル EXEC モードで show service-policy inspect gtp コマンドを入力します。このコマンドの詳細な構文については、『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference 』のコマンド ページを参照してください。

GTP 検査の統計情報を表示するには、 show service-policy inspect gtp statistics コマンドを使用します。次に、 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
 

表示をフィルタリングするには、縦棒(|)を使用します。詳細なフィルタ オプションを表示するには、 ?| と入力します。

PDP コンテキスト関連情報を表示するには、 show service-policy inspect gtp pdp-context コマンドを使用します。次に、 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.example.com
 
user_name (IMSI): 214365870921435 MS address: 10.5.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 コンテキストはトンネル ID によって識別されます。トンネル ID は IMSI 値と NSAPI 値を組み合わせたものです。GTP トンネルは、異なる GSN ノードで対応付けられた 2 つの PDP コンテキストによって定義され、トンネル ID で識別されます。GTP トンネルは、外部パケット データ ネットワークと MS ユーザの間でパケットを転送するのに必要です。

次に、縦棒(|)を使用して表示をフィルタリングする例を示します。

hostname# show service-policy gtp statistics | grep gsn
 

GGSN 負荷分散

GGSN 負荷分散(GSN プーリング)を使用すると、GSN プールに属する任意の GSN が SGSN 要求に応答して GGSN 上で負荷分散を実現できるようになります。GSN プーリングのサポートをイネーブルにするには、permit response コマンドを使用します。

セキュリティ アプライアンスで GTP 検査を実行する場合、デフォルトでは、GTP 要求に指定されていない GSN からの GTP 応答は廃棄されます。この状況は、GSN のプール間で負荷分散を使用して GPRS の効率とスケーラビリティを確保している場合に発生します。

permit response コマンドを使用して、GSN プーリングのサポートをイネーブルにできます。このコマンドでは、GTP 要求が送信された GSN に関係なく、指定したセットの任意の GSN からの応答を許可するようにセキュリティ アプライアンスを設定します。負荷分散 GSN のプールをネットワーク オブジェクトと見なします。同様に、SGSN をネットワーク オブジェクトと見なします。応答を行う GSN が GTP 要求の送信先 GSN と同じオブジェクト グループに属しており、SGSN が含まれるオブジェクト グループがその GTP 応答の送信先として許可されている場合に、セキュリティ アプライアンスで応答が許可されます。

負荷分散 GSN のプールを表すオブジェクトを作成する手順は、次のとおりです。


ステップ 1 負荷分散 GSN のプールを表す新しいネットワーク オブジェクト グループを定義します。そのためには、object-group コマンドを使用します。

hostname(config)# object-group network GSN-pool-name
hostname(config)#
 
where GSN-pool-name is the object group name for GGSNs.
 

ステップ 2 network-object コマンドを使用して、負荷分散 GSN を指定します。host キーワードを使用して、GSN ごとに 1 つの network-object コマンドを設定できます。また、負荷分散を実行する GSN を含むネットワークを指定することもできます。

hostname(config)# network-object host IP-address
hostname(config)#
 
where IP-address is the IP address of the host.
 

ステップ 3 負荷分散 GSN が応答を許可されている SGSN を表すオブジェクトを作成します。そのためには、object-group コマンドを使用します。

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

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

SGSN-name は、SGSN ネットワーク オブジェクト グループ名です。

b. SGSN を指定します。そのためには、network-object コマンドを使用します。

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

IP-address は、SGSN です。

ステップ 4 GSN プールを表すネットワーク オブジェクト内の任意の GSN から、SGSN を表すネットワーク オブジェクトへの GTP 応答を許可します。そのためには、gtp-map および permit responses コマンドを使用します。

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

map-name は、GTP マップの名前です。SGSN-name は、ステップ 3 で作成した SGSN の名前です。GSN-pool-name は、ステップ 1 で作成した GSN プールの名前です。


 

次に、GSN プールおよび SGSN を表すネットワーク オブジェクトを定義して GSN プーリングをサポートする例を示します。この例では、クラス C ネットワーク全体が GSN プールとして定義されていますが、複数の IP アドレスを個別に指定することもできます。GTP マップは、GSN プールから SGSN への応答を許可するように設定されています。

例 21-7 GGSN 負荷分散のイネーブル化および設定

hostname(config)# object-group network GGSNS
hostname(config-network)# network-object 10.1.1.0 255.255.255.0
hostname(config)# object-group network SGSNS
hostname(config-network)# network-object hjost 192.168.1.1
hostname(config)# gtp-map GTPMAP
hostname(config-gtp-map)# permit response to-object-group SGSNS from-object-group GGSNS
 

GGSN 負荷分散と設定の詳細については、『Cisco GGSN Release 7.0 Configuration Guide』および『Cisco MultiProcessor WAN Module User Guide』を参照してください。

GTP の設定例

図 21-7 に、GTP 検査の設定例を示します。

図 21-7 GTP 検査の設定

 

この設定例は、SLB(IOS SLB、使用されている MSFC)、GGSN(使用されている MWAM モジュール)、および FWSM での構成を示しています。また、スーパーバイザ/MSFC では SLB と MWAM の構成が使用されています。

MWAM は、Cisco Catalyst 6500 シリーズ スイッチに搭載できる Cisco IOS アプリケーション モジュールです。各 MWAM では 3 つのプロセッサ複合体が使用され、それぞれに 2 つの CPU が搭載されています。また、各 CPU を使用して、独立した IOS イメージを実行できます。複数の Cisco モバイル無線アプリケーションがサポートされています。この設定例では、Cisco ゲートウェイ General Packet Radio Service(GPRS)サポート、つまり GPRS パケット ゲートウェイ アプリケーションが実行されています。

Cisco Catalyst 6500 シリーズ スイッチへの MWAM モジュールの搭載とその設定については、次のマニュアルを参照してください。

http://cisco.com/en/US/partner/products/hw/modules/ps5510/products_user_guide_chapter09186a0080551fd8.html

次の設定では、MWAM モジュールの設定要件、および Cisco IOS ソフトウェア Server Load Balancing(SLB)機能を使用して、負荷分散機能をサポートするように Gateway GPRS Support Node(GGSN; ゲートウェイ GPRS サポート ノード)を設定する方法について説明します。

GGSN での負荷分散の設定については、次のマニュアルを参照してください。

http://cisco.com/en/US/partner/products/ps6706/products_feature_guide_chapter09186a00807873e8.html

図 21-6 に示すように、MWAM モジュールでは 2 つの GGSN(GGSN1 および GGSN2)が設定されています。

firewall multiple-vlan-interfaces
firewall module 4 vlan-group 1
firewall module 10 vlan-group 1
firewall vlan-group 1 3-40,44,84,115,119,172,200-202,400-500,800-900
mwam module 9 port 1 allowed-vlan 1,3-40,44,84,172,200-202,400-500,800-900
mwam module 9 port 2 allowed-vlan 1,3-40,44,84,172,200-202,400-500,800-900
mwam module 9 port 3 allowed-vlan 1,3-40,44,84,172,200-202,400-500,800-900
ip subnet-zero
!
no ip domain-lookup
ip slb timers gtp gsn 40000
ip slb probe PING ping
!
ip slb serverfarm GGSN-POOL
nat server
probe PING
!
real 10.4.1.32
weight 1
inservice
!
real 10.4.1.33
weight 1
inservice
!
ip slb serverfarm TGGSN-POOL
nat server
probe PING
!
real 10.4.1.34
faildetect numconns 2
inservice
!
real 10.4.1.35
faildetect numconns 2
inservice
!
ip slb vserver GTP-V0
virtual 10.2.1.29 udp 3386 service gtp
serverfarm GGSN-POOL
inservice
!
ip slb vserver GTP-V1
virtual 10.2.1.29 udp 2123 service gtp
serverfarm GGSN-POOL
inservice
!
ip slb vserver TGTP-V0
virtual 10.2.1.28 udp 3386 service gtp
serverfarm TGGSN-POOL
inservice
!
ip slb vserver TGTP-V1
virtual 10.2.1.28 udp 2123 service gtp
serverfarm TGGSN-POOL
inservice
!
ip slb dfp password 7 13061E010803
agent 10.1.1.2 1111 30 0 10
agent 10.1.1.3 1111 30 0 10
agent 10.1.1.4 1111 30 0 10
agent 10.1.1.5 1111 30 0 10
!
 

GGSN1 は次のように設定されています。

hostname# show running config
Building configuration...
 
Current configuration : 1460 bytes
!
! Last configuration change at 21:33:19 UTC Wed Dec 13 2006
! NVRAM config last updated at 01:54:40 UTC Sat Nov 18 2006
!
version 12.3
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
service gprs ggsn
!
hostname GGSN2ADCTX
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
!
resource policy
!
ip subnet-zero
ip dfp agent gprs
port 1111
password cisco
inservice
!
ip cef
no ip domain lookup
ip domain name cisco.com
no ip dhcp use vrf connected
!
interface GigabitEthernet0/0
no ip address
!
interface GigabitEthernet0/0.1
!
interface GigabitEthernet0/0.8
encapsulation dot1Q 8
ip address 10.1.1.2 255.255.255.0
no snmp trap link-status
!
interface Virtual-Template1
ip address 10.4.1.32 255.255.255.0
encapsulation gtp
gprs access-point-list gtp-test
!
ip local pool localpool1 10.1.1.101 10.1.1.110
ip local pool localpool11 10.7.3.3 10.7.3.255
ip classless
ip route 0.0.0.0 0.0.0.0 10.1.1.1
!
no ip http server
!
gprs access-point-list gtp-test
access-point 1
access-point-name sj-gtp.cisco.com
ip-address-pool local localpool11
!
control-plane
!
line con 0
line vty 0
no login
line vty 1 4
login
line vty 5 15
login
!
end

GGSN3 は次のように設定されています。

 
hostname# show running-config
Building configuration...
 
Current configuration : 1533 bytes
!
! Last configuration change at 21:33:47 UTC Wed Dec 13 2006
! NVRAM config last updated at 01:56:07 UTC Sat Nov 18 2006
!
version 12.3
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
service gprs ggsn
!
hostname GGSN3ADCTX
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
!
resource policy
!
ip subnet-zero
ip dfp agent gprs
port 1111
password cisco
inservice
!
ip cef
no ip domain lookup
ip domain name cisco.com
no ip dhcp use vrf connected
!
interface GigabitEthernet0/0
no ip address
!
interface GigabitEthernet0/0.3
!
interface GigabitEthernet0/0.8
encapsulation dot1Q 8
ip address 10.4.1.3 255.255.255.0
no snmp trap link-status
!
interface Virtual-Template1
ip address 10.1.1.33 255.255.255.0
encapsulation gtp
gprs access-point-list gtp-test
!
ip local pool localpool2 10.1.1.111 10.1.1.120
ip local pool localpool22 10.8.4.4 10.8.4.254
ip classless
ip route 0.0.0.0 0.0.0.0 10.1.1.1
!
no ip http server
!
gprs maximum-pdp-context-allowed 50000
gprs qos default-response requested
gprs access-point-list gtp-test
access-point 1
access-point-name sj-gtp.cisco.com
ip-address-pool local localpool22
!
control-plane
!
line con 0
line vty 0
no login
line vty 1 4
login
line vty 5 15
login
!
!
end
 

GGSN で負荷分散を行うための FWSM 設定は、次のとおりです。

FWSM Version 3.2(0)45 <context>
!
hostname admin
domain-name cisco.com
enable password 9jNfZuG3TC5tCVH0 encrypted
no names
!
interface Vlan172
nameif mgmt
security-level 100
ip address 172.21.64.35 255.255.255.128 standby 172.21.64.36
!
interface Vlan5
nameif inside
security-level 100
ip address 10.2.1.41 255.255.255.0 standby 10.2.1.40
!
interface Vlan9
nameif outside
security-level 0
ip address 209.165.201.41 255.255.255.0 standby 209.165.201.40
!
passwd 2KFQnbNIdI.2KYOU encrypted
same-security-traffic permit inter-interface
object-group network GGSNS ================================configured object group to define GGSNs
network-object host 10.4.1.32
network-object host 10.4.1.33
object-group network SGSNS =================================configured object group to define SGSNs
network-object host 10.5.1.1
object-group network servers
network-object 10.2.1.0 255.255.255.0
network-object host 10.6.1.25
network-object host 10.6.1.26
network-object host 10.6.1.27
network-object host 10.4.1.32
network-object host 10.4.1.33
object-group network clients
network-object 10.6.1.0 255.255.255.0
network-object host 10.5.1.1
access-list gtpacl extended permit udp any any eq 2123
access-list gtpacl extended permit udp any any eq 3386
access-list gtpacl extended permit icmp any any
access-list gtpacl extended permit udp any any
access-list gtpacl extended permit tcp any any eq www
access-list gtpacl extended permit tcp any any eq ftp
access-list gtpacl extended permit tcp any any eq telnet
access-list gtpacl extended permit tcp any any eq ssh
access-list 112 extended permit tcp object-group servers object-group clients eq www
access-list 112 extended permit tcp object-group servers object-group clients eq https
access-list 112 extended permit tcp object-group servers object-group clients eq ftp
access-list 112 extended permit tcp object-group servers object-group clients eq telnet
access-list 112 extended permit udp object-group servers object-group clients eq 3386
access-list 112 extended permit udp object-group servers object-group clients eq 2123
access-list 112 extended permit tcp object-group servers object-group clients eq ssh
!
gtp-map GTPMAP ============================================================configured GTP map to include the permit response cli
permit response to-object-group SGSNS from-object-group GGSNS
permit errors
!
pager lines 24
logging enable
logging timestamp
logging buffered debugging
mtu mgmt 1500
mtu inside 1500
mtu outside 1500
monitor-interface inside
monitor-interface outside
icmp permit any mgmt
icmp permit any inside
icmp permit any outside
asdm history enable
arp timeout 14400
nat-control
no xlate-bypass
static (outside,inside) 10.5.1.1 10.5.1.1 netmask 255.255.255.255
static (inside,outside) 10.4.1.31 10.4.1.31 netmask 255.255.255.255
static (inside,outside) 10.4.1.32 10.4.1.32 netmask 255.255.255.255
static (inside,outside) 10.4.1.33 10.4.1.33 netmask 255.255.255.255
access-group OO in interface mgmt
access-group 111 in interface outside per-user-override
route inside 10.4.1.32 255.255.255.255 10.1.1.2 1
route inside 10.4.1.33 255.255.255.255 10.1.1.3 1
route outside 10.5.1.1 255.255.255.255 209.165.201.31 1
timeout xlate 3:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00
timeout mgcp-pat 0:05:00 sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
timeout uauth 0:05:00 absolute
username cisco password 3USUcOPFUiMCO4Jk encrypted
no snmp-server location
no snmp-server contact
telnet timeout 5
ssh 171.69.42.198 255.255.255.255 mgmt
ssh timeout 5
!
class-map inspection_default
match default-inspection-traffic
!
!
policy-map global_policy
class inspection_default
inspect dns maximum-length 512
inspect ftp
inspect h323 h225
inspect h323 ras
inspect http
inspect netbios
inspect rsh
inspect rtsp
inspect skinny
inspect smtp
inspect sunrpc
inspect tftp
inspect xdmcp
inspect icmp
inspect gtp GTPMAP =========================================attached the GTP map to gtp inspection in service policy
!
service-policy global_policy global
Cryptochecksum:3b1c3373e908cb9163d9aa1387478fa4
: end
 

H.323 検査

ここでは、H.323 アプリケーション検査をイネーブルにして、デフォルトのポート設定を変更する手順について説明します。ここでは、次の内容について説明します。

「H.323 検査の概要」

「H.323 の動作」

「制限事項および制約事項」

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

「H.225 設定を必要とするトポロジー」

「H.225 マップ コマンド」

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

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

「H.323 検査の確認およびモニタ」

「H.323 GUP サポート」

「H.323 の設定例」

H.323 検査の概要

H.323 検査は、H.323 準拠アプリケーション(Cisco CallManager および VocalTec Gatekeeper など)をサポートします。H.323 は、International Telecommunication Union(ITU; 国際電気通信連合)により、LAN 上でのマルチメディア会議用として定義されているプロトコル スイートです。FWSM では、H.323 v3 機能の Multiple Calls on One Call Signaling Channel(1 つのコール シグナリング チャネルでの複数コール)を含め、H.323 Version 4 がサポートされます。また、H.323 Gatekeeper Update Protocol(GUP)検査もサポートされています。GUP はシスコ独自のプロトコルであるため、H.323-GUP 検査は、Cisco Gatekeeper デバイスが採用されているトポロジーにだけ関連します。

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

H.323 検査には、2 つの主要機能があります。

H.225 および H.245 メッセージ内に組み込まれた必要な IPv4 アドレスに対し、NAT を実行します。H.323 メッセージは PER 符号化フォーマットで符号化されているので、FWSM は 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 接続に使用するポート番号をクライアントに提供します。H.323 ゲートキーパを使用している環境では、最初のパケットは UDP によって送信されます。

H.323 検査は、Q.931 TCP 接続をモニタして、H.245 のポート番号を判別します。H.323 端末が FastConnect を使用していない場合、FWSM は、H.225 メッセージの検査に基づいて H.245 接続を動的に割り当てます。

各 H.245 メッセージ内で、H.323 エンドポイントは、以降の UDP データ ストリームに使用するポート番号を交換します。H.323 検査は、H.245 メッセージを検査してこれらのポートを識別し、メディア交換用の接続を動的に作成します。Real-Time Transport Protocol(RTP)はネゴシエートされたポート番号を使用しますが、RTP Control Protocol(RTCP)は次の上位ポート番号を使用します。

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

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

UDP ポート 1719:RAS

TCP ポート 1720:制御ポート

H.225 コール シグナリングについて、well-known の H.323 ポート 1720 のトラフィックを許可しておく必要があります。ただし、H.245 シグナリング ポートは、H.225 シグナリング内のエンドポイントの間でネゴシエートされます。H.323 ゲートキーパが使用されている場合、FWSM は、Admission Confirm(ACF; 許可確認)メッセージの検査に基づいて H.225 接続を開始します。

FWSM は、H.225 メッセージを検査したあと、H.245 チャネルをオープンし、H.245 チャネル上で送信されたトラフィックを同様に検査します。すなわち、FWSM を通過した H.245 メッセージはすべて H.245 アプリケーション検査を通過し、組み込み IP アドレスが NAT 処理され、H.245 メッセージでネゴシエートされたメディア チャネルが開始されることを意味します。

H.323 ITU 標準規格では、信頼性のある接続上に送信する前に、H.225 および H.245 の前に TPKT ヘッダーによりメッセージの長さを定義することが規定されています。TPKT ヘッダーは H.225 および H.245 メッセージと同じ TCP パケットで送信されるとは限らないので、メッセージを適切に処理およびデコードするには、FWSM で TPKT 長を保持しておく必要があります。FWSM は各接続に対して、1 つのレコードを維持します。このレコードには次に送信されるメッセージの TPKT 長が含まれます。

FWSM でメッセージ内の IP アドレスを NAT 処理する必要がある場合、チェックサム、User-User Information Element(UUIE; ユーザ対ユーザ情報要素)の長さ、TPKT(H.225 メッセージの TCP パケットに含まれている場合)を変更する必要があります。TPKT が別の TCP パケットで送信される場合には、FWSM は TPKT のプロキシ ACK を実行し、H.245 メッセージに新しい長さの TPKT を付加します。


) FWSM による TPKT のプロキシ ACK では、TCP オプションはサポートされません。


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

制限事項および制約事項

H.323 アプリケーション検査の一部の既知の問題と制限事項は、次のとおりです。

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

NetMeeting クライアントが H.323 ゲートキーパに登録し、H.323 ゲートキーパに登録された H.323 ゲートウェイを呼び出そうとする場合、接続は確立されますが、音声はどの方向でも聞こえません。この問題は、FWSM とは無関係です。

ネットワーク スタティック アドレスがサードパーティのネットマスクおよびアドレスと同じであるときに、ネットワーク スタティック アドレスを設定する場合、発信 H.323 接続は切断されます。

H.323-GUP 検査では、ダイナミック NAT(PAT)はサポートされていません。

H.225 設定を必要とするトポロジー

FWSM を介して接続している H.323 エンドポイントの間でコール制御が発生したトポロジーでは、一部の追加 H.225 設定が必要です(図 21-8 を参照)。

図 21-8 H.225 設定を必要とするトポロジー

 

このトポロジーでは、FWSM の片側の Cisco CallManager と HSI の間で、もう片方の側の HSI と Cisco CallManager エンドポイントの間で、コール シグナリングが発生します。それから、Cisco CallManager と Cisco CallManager エンドポイントの間でコール制御が発生します。HSI と 1 つのエンドポイントが FWSM によって保護されたネットワーク上にあり、もう 1 つのエンドポイントが別のネットワーク上にある場合、H.225 設定を追加しないとコール制御は実施されません。

FWSM は、このトポロジーの Cisco CallManager の存在を認識していません。セキュリティ アプライアンス経由で発生するパケット フローだけでは、FWSM はコールを成功させる適切なピンホールをオープンできません。したがって、この事例ではいくつかの追加 H.225 設定が必要となります。

必要な設定を提供するには、HSI と HSI グループ内の関連エンドポイントを特定します。設定が完了すると、FWSM は HSI を H.225 接続の通信ホストの 1 つと見なし、HSI グループ内のエンドポイントの間で H.245 ホールをオープンします。実際の H.245 接続は、これらのピンホールの 1 つと一致し、正しく実行されます。

H.225 マップ コマンド

H.225 マップにより、HSI が H.225 コール シグナリングに関与している場合に、FWSM は H.245 接続のため、動的なポート固有のピンホールをオープンします。H.225 マップは、HSI および関連するエンドポイントに関する情報を提供します。この情報は、FWSM によって保護されたネットワーク セキュリティを損なうことなく、この接続を確立するのに必要です。

h225-map コマンドは、H.225 マップを作成します。1 つの H225 マップには、最大 5 つの HSI グループを含めることができます。 表 21-5 に、H.225 マップ コンフィギュレーション モードで利用可能なコマンドを示します。

 

表 21-5 H.225 コンフィギュレーション コマンド

コマンド
コンフィギュレーション
モード
説明

hsi-group

H.225 マップ コンフィギュレーション モード

HSI グループを定義し、HSI グループ コンフィギュレーション モードを開始します。各 HSI グループには最大で 10 個のエンドポイントを含めることができます。

hsi

HSI グループ コンフィギュレーション モード

HSI を特定します。

endpoint

HSI グループ コンフィギュレーション モード

HSI グループ内の 1 つまたは複数のエンドポイントを特定します。

H.323 検査のイネーブル化および設定

H.323 検査はデフォルトではイネーブルです。

H.225 マップのオプション使用を含めた、H.323 検査をイネーブルにする手順は、次のとおりです。


ステップ 1 H.323 トラフィックに必要なポートを識別する ACE を持つアクセス リストを定義するには、ACE ごとに次のコマンドを入力します。

hostname(config)# access-list acl-name permit {udp | tcp} any any eq port
 

acl-name はアクセス リストに割り当てられた名前で、 port は ACE が識別する H.323 ポートです。

標準ポートは、UDP ポート 1718 と 1719、TCP ポート 1720 です。

ステップ 2 H.323 トラフィックを識別するには、クラス マップを作成するか、または既存のクラス マップを変更します。 class-map コマンドを次のように使用します。

hostname(config)# class-map class_map_name
hostname(config-cmap)#
 

class_map_name は、トラフィック クラスの名前です。 class-map コマンドを入力すると、CLI はクラス マップ コンフィギュレーション モードを開始します。

ステップ 3 match access-list コマンドを使用して、ステップ 1 で作成したアクセス リストで H.323 トラフィックを識別します。

hostname(config-cmap)# match access-list acl-name
 

ステップ 4 (任意)ネットワーク トポロジーで必要な場合、H.225 マップを設定します。ネットワークが H.225 マップを必要とするかどうかについては、「H.225 設定を必要とするトポロジー」を参照してください。H.225 マップを作成および設定するには、次の手順を実行します。

a. H.225 マップを作成します。

hostname(config)# h225-map map_name
hostname(config-h225-map)#
 

システムは H.225 マップ コンフィギュレーション モードを開始し、CLI プロンプトがそれに応じて変わります。

b. HSI グループを識別します。そのためには、 hsi-group コマンドを次のように使用します。

hostname(config-h225-map)# hsi-group group_ID
hostname(config-h225-map-hsi-grp)#
 

group_ID は、0 ~ 2147483647 の番号で、HSI グループを識別します。


) H.225 マップ単位で許可された HSI グループの最大数は 5 です。


システムは HSI グループ コンフィギュレーション モードを開始し、CLI プロンプトがそれに応じて変わります。

c. グループの HSI を定義します。

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

ip_address は、HSI のアドレスです。

d. 最大 10 個のエンドポイントを定義します。そのためには、エンドポイントごとに endpoint コマンドを 1 回、次のように使用します。

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

interface は、エンドポイントに接続された FWSM 上のインターフェイスです。 ip_address は、そのエンドポイントのアドレスです。

e. 追加の HSI グループを作成する場合、ステップ b.d. を繰り返します。

ステップ 5 H.323 インスペクション エンジンを H.323 トラフィックに適用するために使用するポリシー マップを作成するか、または既存のポリシー マップを変更します。そのためには、 policy-map コマンドを次のように使用します。

hostname(config-cmap)# policy-map policy_map_name
hostname(config-pmap)#
 

policy_map_name は、ポリシー マップの名前です。CLI はポリシー マップ コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 6 ステップ 2 で作成したクラス マップを指定します。このクラス マップは H.323 トラフィックを識別します。 class コマンドを次のように使用します。

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

class_map_name は、ステップ 2 で作成したクラス マップの名前です。CLI はポリシー マップ クラス コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

 

ステップ 7 H.323 アプリケーション検査をイネーブルにします。そのためには、 inspect h323 コマンドを次のように使用します。

hostname(config-pmap-c)# inspect h323 [h225 map_name]
hostname(config-pmap-c)#
 

map_name は、ステップ 4(任意)で作成した H.225 マップです。

ステップ 8 ポリシー マップをグローバルに、または特定のインターフェイスに適用するには、 service-policy コマンドを次のように使用します。

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

policy_map_name は、ステップ 5 で設定したポリシー マップです。ポリシー マップをすべてのインターフェイス上のトラフィックに適用する場合、 global オプションを使用します。ポリシー マップを特定のインターフェイス上のトラフィックに適用する場合、 interface interface_ID オプションを使用します。 interface_ID は、 nameif コマンドでインターフェイスに割り当てられた名前です。

FWSM は、指定のとおりに H.323 トラフィックの検査を開始します。


 

例 21-8 H.225 マップを使用しない場合の H.323 検査の設定

次の例では、H.323 インスペクション エンジンをイネーブルにし、デフォルト ポート(1720)の H.323 トラフィックと一致するクラス マップを作成します。それからサービス ポリシーを外部インターフェイスに適用します。

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

例 21-9 には、H.323 設定全体の一部として、2 つの HSI グループを持った H.225 マップが含まれます。

例 21-9 H.225 マップを使用した場合の H.323 検査の設定

hostname(config)# access-list h323_acl permit udp any any eq 1718
hostname(config)# access-list h323_acl permit udp any any eq 1719
hostname(config)# access-list h323_acl permit tcp any any eq 1720
hostname(config)# class-map h323-traffic
hostname(config-cmap)# match access-list h323_acl
hostname(config-cmap)# h225-map sample_map
hostname(config-h225-map)# hsi-group 1
hostname(config-h225-map-hsi-grp)# hsi 10.10.15.11
hostname(config-h225-map-hsi-grp)# endpoint 10.3.6.1 inside
hostname(config-h225-map-hsi-grp)# endpoint 10.10.25.5 outside
hostname(config-h225-map-hsi-grp)# policy-map sample_policy
hostname(config-pmap)# class h323_port
hostname(config-pmap-c)# inspect h323 ras
hostname(config-pmap-c)# inspect h323 h225 sample_map
hostname(config-pmap-c)# service-policy sample_policy interface outside
hostname(config)#
 

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 コマンドは、FWSM を越えて確立された 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
 

この出力では、現在 FWSM を通過しているアクティブ H.323 コールが 1 つ、ローカル エンドポイント 10.130.56.3 と外部のホスト 172.30.254.203 の間にあることを示します。また、これらの特定のエンドポイントの間に、同時コールが 1 つあり、そのコールの Call Reference Value(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 コマンドは、スロースタートを使用しているエンドポイントが FWSM を越えて確立された 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
 

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

これらのエンドポイント間でネゴシエートされたメディアには、258 という Logical Channel Number(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 コマンドは、FWSM を越えてゲートキーパとその H.323 エンドポイントの間に確立された H.323 RAS セッションの情報を表示します。 debug h323 ras event および show local-host コマンドとともに、このコマンドは、H.323 RAS インスペクション エンジンの問題のトラブルシューティングに使用されます。

show h323-ras コマンドは、H.323 RAS インスペクション エンジンの問題をトラブルシューティングするための接続情報を表示します。次に、 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 つあることを示します。

H.323 GUP サポート

H.323-GUP 機能は、H.323-RAS 接続からの H.323-GUP 接続用のセカンダリ チャネルを作成したり、GUP メッセージに組み込まれたアドレスを変換(NAT 処理)したりするために使用されます。この機能により、ゲートキーパがファイアウォール経由で相互に通信できるようになります。

H.323-GUP を明示的にイネーブルにする必要はありません。この機能を利用するには、(UDP ポート 1719 を許可した)適切なアクセス リストを使用して H.323-RAS 検査をイネーブルにします。

制限事項

GUP はシスコ独自のプロトコルであるため、H.323-GUP 検査は、Cisco Gatekeeper デバイスが採用されているトポロジーにだけ関連します。

H.323 GUP 検査では、ダイナミック NAT およびダイナミック PAT はサポートされていません。

H.323 GUP の設定

図 21-9 に、H.323 GUP サポートを使用するように構成された H.323 検査トポロジーを示します。

図 21-9 H.323 GUP サポートを使用した場合の H.323 検査の設定

 

図 21-9 には、次の設定が適用されます。

firewall transparent
hostname FWSM
!
interface Vlan50
nameif inside
bridge-group 1
security-level 100
!
interface Vlan100
nameif outside
bridge-group 1
security-level 0
!
interface BVI1
ip address 10.0.0.8 255.255.255.0
!
access-list h323-gup-permit extended permit udp any any eq 1719
access-group h323-gup-permit in interface inside
access-group h323-gup-permit in interface outside
 

) RAS 検査は、GUP プロトコルを実行しているゲートキーパが経由するインターフェイスに対してイネーブルにする必要があります。この例では、内部インターフェイスと外部インターフェイスの両方に対して RAS 検査がイネーブルになっています。


外部ゲートキーパ(GK)の設定は次のとおりです。

gatekeeper
zone local GK cisco.com 10.0.0.6
zone cluster local gup-cluster GK
element inGK 10.0.0.7 1719
 

内部ゲートキーパ(inGK)の設定は次のとおりです。

gatekeeper
zone local inGK cisco.com 10.0.0.7
zone cluster local gup-cluster inGK
element GK 10.0.0.6 1719
 

次に、この設定で H.323 GUP セッションが確立された場合の show h323 gup コマンドの出力例を示します。

hostname(config)# show h323 gup
 
No. LOCAL FOREIGN
1 inside:10.0.0.7/15970 Outside:209.165.201.6/22754
 

次に、show conn コマンドの出力例を示します。この例は、フラグ n でマーク付けされた H.323 ゲートキーパおよび H.323 GUP 接続間で確立されたセカンダリ チャネルを示しています。

hostname(config)# show conn
 
3 in use, 37 most used
Network Processor 1 connection
UDP out 209.165.201.6:1719 in 10.0.0.7:1719 idle 0:00:45 Bytes 672
FLAGS - H
TCP out 209.165.201.6:22754 in 10.0.0.7:15970 idle 0:00:04 Bytes 1188 FLAGS - UBIn
Network Processor 2 connections
 
Multicast sessions:
Network Processor 1 connection
Network Processor 2 connections
IPv6 connections:
 

H.323 の設定例

図 21-10 に、H.323 検査の設定例を示します。

図 21-10 H.323 検査の設定

 

外部インターフェイス上の IOS H.323 ゲートウェイ(ルータ R2)の設定は次のとおりです。

hostname(config)#hostname R2
hostname(config)#interface FastEthernet0/1
hostname(config-if)# ip address 209.165.201.1 255.0.0.0
hostname(config-if)#no shut
hostname(config-if)#exit
hostname(config)#ip route 10.0.0.0 255.0.0.0 209.165.201.2
hostname(config)#voice-port 1/0/0
hostname(config-voiceport)#no shut
hostname(config-voiceport)#exit
hostname(config)#gateway
hostname(config-gateway)#
hostname(config-gateway)#exit
hostname(config)#ip cef
hostname(config)#int f0/1
hostname(config-if)#h323-gateway voip interface
hostname(config-if)#h323-gateway voip id inGK ipaddr 10.0.0.6
hostname(config-if)#h323-gateway voip h323-id R2
 

H.323 プロトコルを使用して宛先番号 408555010991 への音声コールを転送するようにダイヤル ピアを設定します。

hostname(config)#dial-peer voice 101 voip
hostname(config-dial-peer)#destination-pattern 40855501099
hostname(config-dial-peer)#session target ras
hostname(config-dial-peer)#exit
 

4085550100 への音声コールをルータ R2 の音声ポート 1/0/0 に転送するようにダイヤル ピアを設定します。

hostname(config)#dial-peer voice 102 pots
hostname(config-dial-peer)#destination-pattern 4085550100
hostname(config-dial-peer)#port 1/0/0
hostname(config-dial-peer)#exit
hostname(config)#exit
 

内部インターフェイス上の IOS H.323 ゲートウェイ(ルータ R1)の設定は次のとおりです。

hostname(config)#hostname R1
hostname(config)#interface FastEthernet0/1
hostname(config-if)# ip address 10.100.100.1 255.0.0.0
hostname(config-if)#no shut
hostname(config-if)#ip route 209.165.201.0 255.0.0.0 10.100.100.2
hostname(config)#
hostname(config)#voice-port 3/0/0
hostname(config-voiceport)#no shut
hostname(config-voiceport)#exit
hostname(config)#gateway
hostname(config-gateway)#exit
hostname(config)#ip cef
hostname(config)#int fastethernet0/1
hostname(config-if)#h323-gateway voip interface
hostname(config-if)#h323-gateway voip id inGK ipaddr 10.0.0.6
hostname(config-if)#h323-gateway voip h323-id R1
hostname(config-if)#exit
 

H.323 プロトコルを使用して宛先 4085550100 へのすべての音声コールを転送します。

hostname(config)#dial-peer voice 101 voip
hostname(config-dial-peer)#destination-pattern 4085550100
hostname(config-dial-peer)#session target ras
 

宛先 4085550199 へのすべての音声コールを音声ポート 3/0/0 に転送します。

hostname(config)#dial-peer voice 102 pots
hostname(config-dial-peer)#destination-pattern 4085550199
hostname(config-dial-peer)#port 3/0/0
hostname(config-dial-peer)#^Z
 

内部インターフェイス上の IOS H.323 ゲートキーパ(ルータ inGK)の設定は次のとおりです。

 
hostname(config)#hostname inGK
hostname(config)#interface FastEthernet0/1
hostname(config-if)# ip address 10.0.0.6 255.0.0.0
hostname(config-if)#no shut
hostname(config-if)#exit
hostname(config)#gatekeeper
hostname(config-gk)#zone local inGK cisco.com 10.0.0.6
hostname(config-gk)#no shut
hostname(config)#
hostname(config)#ip route 209.165.201.0 255.0.0.0 10.100.100.2
 

H.323 検査用の FWSM の設定は次のとおりです。

 
hostname# config t
hostname(config)# interface Vlan100
hostname(config-if)# nameif outside
hostname(config-if)# security-level 0
hostname(config-if)# ip address 209.165.201.2 255.0.0.0
hostname(config-if)#
hostname(config-if)# interface Vlan50
hostname(config-if)# nameif inside
hostname(config-if)# security-level 100
hostname(config-if)# ip address 10.100.100.2 255.0.0.0
hostname(config-if)#
hostname(config-if)# access-list voice extended permit udp any any eq 1719
hostname(config)# access-list voice extended permit tcp any any eq h323
hostname(config)#
hostname(config)# access-group voice in interface outside
hostname(config)# access-group voice in interface inside
hostname(config)#
hostname(config)# policy-map global_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect h323 h225
hostname(config-pmap-c)# inspect h323 ras
hostname(config-pmap-c)#
 

次に、show conn の出力例を示します。この例は、H.323 メディア接続およびコントロール(h フラグでマーク付けされた接続および show h225 の出力)を示しています。

FWSM/admin# show conn
4 in use, 7 most used
Network Processor 1 connections
UDP out 209.165.201.1:52906 in 10.0.0.6:1719 idle 0:00:07 Bytes 5162
FLAGS - H
TCP out 209.165.201.1:1720 in 10.100.100.1:12139 idle 0:00:54 Bytes 1307 FLAGS - UOIh
UDP out 209.165.201.1:19253 in 10.100.100.1:17815 idle 0:00:03 Bytes 13012
FLAGS - H
UDP out 209.165.201.1:19252 in 10.100.100.1:17814 idle 0:00:00 Bytes 1370400
FLAGS - H
Network Processor 2 connections
Multicast sessions:
Network Processor 1 connections
Network Processor 2 connections
IPv6 connections:
 
FWSM/admin# show h225
Total: 1
1 Concurrent Call(s) for
Local: 10.100.100.1/12139 Foreign: 209.165.201.1/1720
0 CRV: 2
Local: 10.100.100.1/12139 TPKT: 211 Foreign: 209.165.201.1/1720 TPKT: 113
 

HTTP 検査

ここでは、HTTP インスペクション エンジンの機能と、その設定を変更する手順について説明します。ここでは、次の内容について説明します。

「HTTP 検査の概要」

「検査制御を拡張するための HTTP 検査ポリシー マップの設定」

HTTP 検査の概要

HTTP インスペクション エンジンを使用して、HTTP に関連する特定の攻撃や他の脅威から保護します。HTTP 検査では、いくつかの機能を実行します。

拡張 HTTP 検査

Java および ActiveX のフィルタリング

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


) また、no inspect http コマンドは、filter url コマンドをディセーブルにします。


拡張 HTTP 検査機能は、アプリケーション ファイアウォールとして知られており、HTTP マップを設定するときに使用できます(「検査制御を拡張するための HTTP 検査ポリシー マップの設定」を参照)。この機能は、攻撃側がネットワーク セキュリティ ポリシーを回避するため HTTP メッセージを使用するのを防ぎます。この機能は次の HTTP メッセージすべてを確認します。

RFC 2616 への適合

RFC 定義方法だけを使用

追加基準への準拠

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

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


) HTTP 検査をイネーブルにして検査ポリシー マップを適用すると、アクションをリセットした完全な HTTP 検査とログがデフォルトでイネーブルになります。検査失敗に応じて実行されるアクションは変更できますが、検査ポリシー マップがイネーブルであるかぎり、完全な検査はディセーブルにできません。


HTTP 検査ポリシー マップを作成する手順は、次のとおりです。


ステップ 1 (任意)「正規表現の作成」に従って、1 つまたは複数の正規表現を追加してトラフィック照合コマンドで使用できるようにします。ステップ 3 に記載されている match コマンドで照合できるテキストのタイプを参照してください。

ステップ 2 (任意)「正規表現クラス マップの作成」に従って、1 つまたは複数の正規表現のクラス マップを作成して正規表現をグループ化します。

ステップ 3 (任意)次の手順を実行して、HTTP 検査クラス マップを作成します。

クラス マップでは、複数のトラフィックの一致をグループ化します。トラフィックがクラス マップと一致するためには、 match コマンドの all と一致する必要があります。ポリシー マップに直接 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 要求メッセージの本文に含まれるテキストを照合するか、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-connection [send-protocol-error]| reset] [log]}
 

match または class コマンドですべてのオプションが使用できるわけではありません。使用可能な正確なオプションについては、CLI のヘルプまたは『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference 』を参照してください。

drop-connection キーワードでは、パケットを廃棄して、接続を終了します。

reset キーワードでは、パケットを廃棄し、接続を終了して、TCP リセットをサーバまたはクライアント(あるいはその両方)に送信します。

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

ポリシー マップには複数の 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. バナーを難読化するには、次のコマンドを入力します。

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

mask-banner コマンドは、 policy-map type inspect が設定されている場合のデフォルト値です。ただし、 no mask-banner を入力してデフォルト値を変更できます。

d. サーバ ヘッダー フィールドの代わりに使用する文字列を指定するには、次のコマンドを入力します。

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

string 引数は、サーバ ヘッダー フィールドの代わりに使用する文字列です。注:WebVPN ストリームは、spoof-server コマンドの対象とはなりません。


 

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

hostname(config)# regex url1 “www\.example.com/.*\.asp”
hostname(config)# regex url2 “www\.example[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
 

ICMP 検査

ICMP 検査は、デフォルトではディセーブルです。

ICMP 検査の詳細については、『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference 』の inspect icmp および inspect icmp error コマンド ページを参照してください。

ILS 検査

ILS 検査は、デフォルトではディセーブルです。

ILS 検査の詳細については、『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference 』の inspect ils コマンド ページを参照してください。

MGCP 検査

ここでは、MGCP アプリケーション検査をイネーブルにして設定し、デフォルトのポート設定を変更する手順について説明します。ここでは、次の内容について説明します。

「MGCP 検査の概要」

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

「MGCP 検査の設定およびイネーブル化」

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

「MGCP 検査の確認およびモニタ」

「MGCP の設定例」

MGCP 検査の概要

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

トランキング ゲートウェイ。電話網と Voice over IP(VoIP)ネットワーク間のインターフェイスです。このゲートウェイは一般的に多数のデジタル回線を管理します。

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

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

MGCP メッセージは、UDP 上で転送されます。応答は、コマンドの送信元(IP アドレスおよび UDP ポート番号)に返送されますが、コマンドの宛先と同じアドレスから応答が戻されるとはかぎりません。たとえば、複数のコール エージェントがフェールオーバー設定に使用され、コマンドを受信したコール エージェントからバックアップ コール エージェントに制御が渡されたあとで、応答が戻される場合です。図 21-11 に、MGCP とともに NAT を使用する例を示します。

図 21-11 MGCP と NAT の使用

 

MGCP エンドポイントは、データ用の物理的または仮想の送信元/宛先です。メディア ゲートウェイには、コール エージェントが、他のマルチメディア エンドポイントとのメディア セッションを確立し制御するための接続を実行、変更、削除できるエンドポイントが含まれます。また、コール エージェントはエンドポイントに対し、所定のイベントを検出し、信号を生成するよう指示できます。エンドポイントは、サービス ステートの変更を自動的にコール エージェントに通知します。

MGCP トランザクションは、コマンドと必須応答で構成されています。8 つのコマンド タイプがあります。

CreateConnection

ModifyConnection

DeleteConnection

NotificationRequest

Notify

AuditEndpoint

AuditConnection

RestartInProgress

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

すべてのコマンドは Command ヘッダーで構成され、セッションの説明があとに続く場合があります。すべての応答は Response ヘッダーで構成され、セッションの説明があとに続く場合があります。

MGCP を使用するには、通常、次の 2 つのポートに送信されるトラフィックの検査を設定する必要があります。

ゲートウェイがコール エージェントからコマンドを受信するポート。ゲートウェイは通常、UDP ポート 2427 を待ち受けます。

コール エージェントがゲートウェイからコマンドを受信するポート。コール エージェントは通常、UDP ポート 2727 を待ち受けます。


) MGCP 検査は、MGCP シグナリングおよび RTP データの異なる IP アドレスの使用をサポートしません。共通の推奨する操作は、レジリエント IP アドレス(ループバックまたは仮想 IP アドレスなど)から RTP データを送信することです。ただし、FWSM は RTP データに対し、MGCP シグナリングと同じアドレスから着信するよう要求します。


MGCP コール エージェントおよびゲートウェイの設定

1 つまたは複数のゲートウェイを管理できるコール エージェントのグループを指定するには、 call-agent コマンドを使用します。コール エージェント情報は、(ゲートウェイからのコマンド送信先と異なる)グループ内のコール エージェントで接続を開始する場合に使用されます。したがって、どのコール エージェントからでも応答を送信できます。同じ group_id を持つコール エージェントは、同じグループに属します。コール エージェントは複数のグループに所属できます。 group_id オプションは、0 ~ 4294967295 の数値です。 ip_address オプションでは、コール エージェントの IP アドレスを指定します。

コール エージェント グループを指定するには、MGCP マップ コンフィギュレーション モードで call-agent コマンドを入力します。これは、グローバル コンフィギュレーション モードで mgcp-map コマンドを入力することで利用できます。


) コール エージェントを使用して MGCP ゲートウェイを制御しても、ゲートウェイ間のコールは制限されません。たとえば、FWSM では、mgcp-map コマンドを使用して設定されたコール エージェントまたはゲートウェイ IP アドレスに基づく音声コールは拒否されません。ゲートウェイでは、mgcp-map コマンドを使用して設定されていない音声コールも実行できます。


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


) MGCP コール エージェントは、MGCP エンドポイントがあるかどうかを判別するため、AUEP メッセージを送信します。これにより FWSM 経由のフローが確立され、MGCP エンドポイントをコール エージェントに登録できるようになります。


MGCP 検査の設定およびイネーブル化

MGCP アプリケーション検査をイネーブルにして設定する手順は、次のとおりです。


ステップ 1 MGCP トラフィックの受信に必要な次の 2 つのポートを識別する ACE を持つアクセス リストを定義します。標準ポートは、UDP ポート 2427 および 2727 です。アクセス リストを作成するには、 access-list extended コマンドを次のように使用します。

hostname(config)# access-list acl-name permit udp any any eq port-1
hostname(config)# access-list acl-name permit udp any any eq port-2
 

acl-name はアクセス リストに割り当てられた名前です。 port-1 は最初の MGCP ポートで、 port-2 は 2 番めの MGCP ポートです。

ステップ 2 MGCP トラフィックを識別するには、クラス マップを作成するか、または既存のクラス マップを変更します。 class-map コマンドを次のように使用します。

hostname(config)# class-map class_map_name
hostname(config-cmap)#
 

class_map_name は、トラフィック クラスの名前です。 class-map コマンドを入力すると、CLI はクラス マップ コンフィギュレーション モードを開始します。

ステップ 3 match access-list コマンドを使用して、ステップ 1 で作成したアクセス リストで MGCP トラフィックを識別します。

hostname(config-cmap)# match access-list acl-name
 

ステップ 4 (任意)FWSM がピンホールをオープンする必要がある複数のコール エージェントおよびゲートウェイがネットワークにある場合、MGCP マップを作成します。そのためには、次の手順を実行します。

a. mgcp-map コマンドを使用して、MGCP マップを作成します。mgcp-map コマンドを使用すると、MGCP 検査のパラメータを作成できます。 mgcp-map コマンドを次のように使用します。

hostname(config-cmap)# mgcp-map map_name
hostname(config-mgcp-map)#
 

map_name は、MGCP マップの名前です。システムは MGCP マップ コンフィギュレーション モードを開始し、CLI プロンプトがそれに応じて変わります。

b. コール エージェントを設定します。そのためには、コール エージェントごとに call-agent コマンドを 1 回、次のように使用します。

hostname(config-mgcp-map)# call-agent ip_address group_id
 

c. ゲートウェイを設定します。そのためには、ゲートウェイごとに gateway コマンドを 1 回、次のように使用します。

hostname(config-mgcp-map)# gateway ip_address group_id
 

d. (任意)MGCP コマンド キューで許可されたコマンドの最大数を変更する場合、次のように command-queue コマンドを使用します。

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

ステップ 5 MGCP インスペクション エンジンを MGCP トラフィックに適用するために使用するポリシー マップを作成するか、または既存のポリシー マップを変更します。そのためには、 policy-map コマンドを次のように使用します。

hostname(config-cmap)# policy-map policy_map_name
hostname(config-pmap)#
 

policy_map_name は、ポリシー マップの名前です。CLI はポリシー マップ コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 6 ステップ 2 で作成したクラス マップを指定します。このクラス マップは MGCP トラフィックを識別します。 class コマンドを次のように使用します。

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

class_map_name は、ステップ 2 で作成したクラス マップの名前です。CLI はポリシー マップ クラス コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

 

ステップ 7 MGCP アプリケーション検査をイネーブルにします。そのためには、 inspect mgcp コマンドを次のように使用します。

hostname(config-pmap-c)# inspect mgcp [map_name]
hostname(config-pmap-c)#
 

map_name は、ステップ 4(任意)で作成した MGCP マップです。

ステップ 8 ポリシー マップをグローバルに、または特定のインターフェイスに適用するには、 service-policy コマンドを次のように使用します。

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

policy_map_name は、ステップ 5 で設定したポリシー マップです。ポリシー マップをすべてのインターフェイス上のトラフィックに適用する場合、 global オプションを使用します。ポリシー マップを特定のインターフェイス上のトラフィックに適用する場合、 interface interface_ID オプションを使用します。 interface_ID は、 nameif コマンドでインターフェイスに割り当てられた名前です。

FWSM は、指定のとおりに MGCP トラフィックの検査を開始します。


 

例 21-10 に、MGCP トラフィックを識別し、MGCP マップを定義し、ポリシーを定義し、そのポリシーを外部インターフェイスに適用する例を示します。これは、デフォルト ポート(2427 および 2727)上の MGCP トラフィックと一致するクラス マップを作成します。この設定により、コール エージェント 10.10.11.5 および 10.10.11.6 がゲートウェイ 10.10.10.115 を制御し、コール エージェント 10.10.11.7 および 10.10.11.8 がゲートウェイ 10.10.10.116 および 10.10.10.117 の両方を制御できます。MGCP コマンド キューの最大数は 150 です。それからサービス ポリシーを外部インターフェイスに適用します。

例 21-10 MGCP 検査のイネーブル化および設定

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

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 commands 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
 

MGCP の設定例

図 21-12 に、MGCP 検査の設定例を示します。

図 21-12 MGCP 検査の設定

 

この例に対応する設定は、次のとおりです。

hostname(config)# interface Vlan100
hostname(config-if)# nameif outside
hostname(config-if)# security-level 0
hostname(config-if)# ip address 209.165.201.2 255.0.0.0
hostname(config-if)# !
hostname(config-if)# interface Vlan50
hostname(config-if)# nameif inside
hostname(config-if)# security-level 100
hostname(config-if)# ip address 10.100.100.2 255.0.0.0
hostname(config-if)# !
hostname(config-if)# interface Vlan90
hostname(config-if)# nameif callmgr
hostname(config-if)# security-level 75
hostname(config-if)# ip address 10.0.0.254 255.0.0.0
 

IOS MGCP ゲートウェイが Cisco CallManager からコンフィギュレーション ファイルをダウンロードできるように、TFTP ポートがイネーブルになっています。UDP ポート 2427 を使用する MGCP 制御プロトコルがパススルーに対してイネーブルになっています。MGCP バックアップ ポート TCP 2428 がイネーブルになっています。

hostname(config-if)# access-list mgcp extended permit udp any host 10.0.0.210 eq 2428
hostname(config)# access-list mgcp extended permit udp any any eq 2427
hostname(config)# access-list mgcp extended permit udp any any eq tftp
 

着信トラフィック用の内部および外部インターフェイスで上記のアクセス リストを適用します。

hostname(config)# access-group mgcp in interface outside
hostname(config)# access-group mgcp in interface inside
 

MGCP マップでコール エージェント(Cisco CallManager の IP アドレス)および IOS MGCP ゲートウェイの IP アドレスを設定します。

hostname(config)# mgcp-map mgcp-inspect
hostname(config-mgcp-map)# call-agent 15.0.0.210 101
hostname(config-mgcp-map)# gateway 10.100.100.1 101
hostname(config-mgcp-map)# gateway 209.165.201.1 101
hostname(config-mgcp-map)# command-queue 150
hostname(config-mgcp-map)# exit
 

MGCP マップを使用して MGCP 検査を適用します。

hostname(config)# policy-map global_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect mgcp mgcp-inspect
 

次に、管理コンテキストでの show conn の出力例を示します。この例は、IOS MGCP ゲートウェイとコール エージェント間で確立された接続を示しています。

hostname(config)# show conn
6in use, 48 most used
Network Processor 1 connections
Network Processor 2 connections
UDP out 15.0.0.210:2427 in 10.100.100.1:2427 idle 0:00:04 Bytes 5790 FLAGS - g
UDP out 209.165.201.1:2427 in 10.0.0.210:2427 idle 0:00:00 Bytes 8221 FLAGS - g
UDP out 209.165.201.1:18199 in 10.100.100.1:19247 idle 0:00:03 Bytes 14080 FLAGS - g
UDP out 209.165.201.1:18199 in 10.100.100.1:19246 idle 0:00:00 Bytes 4030838 FLAGS - g
TCP out 10.0.0.210:2428 in 10.100.100.1:12695 idle 0:00:04 Bytes 1346 FLAGS - UOI
TCP out 209.165.201.1:15954 in 10.0.0.210:2428 idle 0:00:00 Bytes 1346 FLAGS - UBOI
Multicast sessions:
Network Processor 1 connections
Network Processor 2 connections
IPV6 connections:
 

ルータ R2 の IOS MGCP ゲートウェイの設定は次のとおりです。

hostname(config)# interface FastEthernet 0/1
hostname(config-if)# ip address 209.165.201.1 255.0.0.0
hostname(config-if)# no shut
hostname(config-if)# ip host FWSM-CCM-14 10.0.0.210
hostname(config-if)# exit
hostname(config)# ip route 10.0.0.0 255.0.0.0 209.165.201.2
hostname(config)# mgcp
hostname(config)# mgcp call-agent FWSM-CCM-14
hostname(config)# mgcp dtmf-relay voip codec all mode out-of-band
hostname(config)# ccm-manager mgcp
hostname(config)# ccm-manager config server 10.0.0.210
hostname(config)# ccm-manager config
hostname(config)# dial-peer voice 100 pots
hostname(config-dial-peer)# application mgcpapp
hostname(config-dial-peer)# port 1/0/0
hostname(config-dial-peer)# no shut
 

ルータ R1 の IOS MGCP ゲートウェイの設定は次のとおりです。

hostname(config)# interface FastEthernet 0/1
hostname(config-if)# ip address 10.100.100.1 255.0.0.0
hostname(config-if)# no shut
hostname(config-if)# exit
hostname(config)# ip route 10.0.0.0 255.0.0.0 10.100.100.2
hostname(config)# ccm-manager mgcp
hostname(config)# ccm-manager music-on-hold
hostname(config)# ccm-manager config server 10.0.0.210
hostname(config)# ccm-manager config
hostname(config)# mgcp
hostname(config)# mgcp call-agent FWSM-CCM-14
hostname(config)# mgcp dtmf-relay voip codec all mode out-of-band
hostname(config)# dial-peer voice 101 pots
hostname(config-dial-peer)# application mgcpapp
hostname(config-dial-peer)# port 3/0/0
 

NetBIOS 検査

NetBIOS 検査はデフォルトではイネーブルです。

NetBIOS 検査の詳細については、『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference 』の inspect netbios コマンド ページを参照してください。

PPTP 検査

PPTP 検査はデフォルトではディセーブルです。

PPTP 検査の詳細については、『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference 』の inspect pptp コマンド ページを参照してください。

RSH 検査

RSH 検査はデフォルトではイネーブルです。

RSH 検査の詳細については、『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference 』の inspect rsh コマンド ページを参照してください。

RTSP 検査

ここでは、RTSP アプリケーション検査をイネーブルにして、デフォルトのポート設定を変更する手順について説明します。ここでは、次の内容について説明します。

「RTSP 検査の概要」

「RealPlayer の使用」

「制限事項および制約事項」

「RTSP 検査のイネーブル化および設定」

RTSP 検査の概要

inspect rtsp コマンドを使用して、RTSP アプリケーション検査を制御します。このコマンドは、ポリシー マップ クラス コンフィギュレーション モードで利用できます。このコマンドは、デフォルトではディセーブルです。 inspect rtsp コマンドは、FWSM に RTSP パケットを通過させます。RTSP は、RealAudio、RealNetworks、Apple QuickTime 4、RealPlayer、Cisco IP/TV 接続によって使用されます。


) Cisco IP/TV の場合、RTSP TCP ポート 554 および TCP 8554 を使用します。


RTSP アプリケーションは、well-known ポート 554 の TCP(まれに UDP)を制御チャネルとして使用します。FWSM は、RFC 2326 に基づき、TCP だけをサポートしています。TCP 制御チャネルは、クライアント上に設定されたトランスポート モードに応じて、音声/ビデオ トラフィックの伝送に使用するデータ チャネルをネゴシエートするために使用されます。

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

FWSM は、ステータス コード 200 の SETUP 応答メッセージを解析します。FWSM よりも外部にあるサーバからの応答メッセージを着信させるには、サーバからの着信接続用にダイナミック チャネルをオープンする必要があります。応答メッセージを発信する場合は、FWSM でダイナミック チャネルをオープンする必要はありません。

RFC 2326 は、SETUP 応答にクライアント ポートとサーバ ポートを含めることを規定していないので、FWSM でステートを保持し、SETUP メッセージ内のクライアント ポートを記憶します。QuickTime では、SETUP メッセージにクライアント ポートが設定され、サーバはサーバ ポートでだけ応答します。

RTSP 検査では、PAT がサポートされています。ただし、デュアル NAT はサポートされていません。また、FWSM では、RTSP メッセージが HTTP メッセージ内に隠されている場合に HTTP クローキングを認識できません。

RealPlayer の使用

RealPlayer を使用する場合は、トランスポート モードを正しく設定することが重要です。FWSM では、サーバからクライアントに、またはクライアントからサーバに、 access-list コマンドを追加します。RealPlayer では、[ Options ] > [ Preferences ] > [ Transport ] > [ RTSP Settings ] の順に選択して、トランスポート モードを変更します。

RealPlayer で TCP モードを使用する場合は、[ Use TCP to Connect to Server ] および [ Attempt to use TCP for all content ] のチェックボックスを選択します。FWSM でインスペクション エンジンを設定する必要はありません。

RealPlayer で UDP モードを使用する場合は、[ Use TCP to Connect to Server ] および [ Attempt to use UDP for static content ] のチェックボックスを選択します。 マルチキャスト経由でライブ コンテンツは利用できません。 FWSM で、 inspect rtsp port コマンドを追加します。

制限事項および制約事項

RTSP 検査には、次の制限が適用されます。

FWSM は、UDP 上のマルチキャスト RTSP または RTSP メッセージをサポートしません。

FWSM では、RTSP メッセージが HTTP メッセージ内に隠されている場合に HTTP クローキングを認識する機能はありません。

FWSM では、RTSP メッセージ上で NAT を実行できません。組み込み IP アドレスが、HTTP または RTSP メッセージの一部である Session Description Protocol(SDP)ファイル内に含まれているからです。パケットは分割されることがあります。FWSM は、分割されたパケットに対しては NAT を実行できません。

Cisco IP/TV を使用する場合、FWSM がメッセージの SDP 部分で実行する NAT 数は、Content Manager 内のプログラム リスト数に比例します(各プログラム リストには最低 6 つの IP アドレスが組み込まれています)。

Apple QuickTime 4 または RealPlayer については、NAT を設定できます。Cisco IP/TV は、Viewer および Content Manager が外部ネットワーク上にあり、サーバが内部ネットワーク上にある場合にかぎり、NAT をサポートします。

RTSP 検査のイネーブル化および設定

RTSP アプリケーション検査をイネーブルにして設定する手順は、次のとおりです。


ステップ 1 FWSM の後ろで RTSP SETUP メッセージを受信するポートを決定します。デフォルト ポートは、TCP ポート 554 および 8554 です。

ステップ 2 RTSP SETUP メッセージを識別するアクセス リストを作成します。 access-list extended コマンドを使用して、次のように各ポートと一致する ACE を追加します。

hostname(config)# access-list acl-name any any tcp eq port_number
 

ヒント 1 つのポート上にだけ、または連続したポート範囲に RTSP SETUP メッセージを許可する場合、アクセス リストの作成を省略できます。ステップ 4 では、match access-list コマンドではなく、match port コマンドを使用します。


ステップ 3 RTSP トラフィックを識別するには、クラス マップを作成するか、または既存のクラス マップを変更します。 class-map コマンドを次のように使用します。

hostname(config)# class-map class_map_name
hostname(config-cmap)#
 

class_map_name は、トラフィック クラスの名前です。 class-map コマンドを入力すると、CLI はクラス マップ コンフィギュレーション モードを開始します。

ステップ 4 ステップ 1 で決定した RTSP ポートに送信されたトラフィックを識別します。そのためには、 match access-list コマンドを次のように使用します。

hostname(config-cmap)# match access-list acl-name
 

ステップ 5 RTSP インスペクション エンジンを RTSP トラフィックに適用するために使用するポリシー マップを作成するか、または既存のポリシー マップを変更します。そのためには、 policy-map コマンドを次のように使用します。

hostname(config-cmap)# policy-map policy_map_name
hostname(config-pmap)#
 

policy_map_name は、ポリシー マップの名前です。CLI はポリシー マップ コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 6 ステップ 3 で作成したクラス マップを指定します。このクラス マップは RTSP トラフィックを識別します。 class コマンドを次のように使用します。

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

class_map_name は、作成したクラス マップの名前です。CLI はポリシー マップ クラス コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 7 RTSP アプリケーション検査をイネーブルにします。そのためには、 inspect rtsp コマンドを次のように使用します。

hostname(config-pmap-c)# inspect rtsp
hostname(config-pmap-c)#
 

ステップ 8 ポリシー マップをグローバルに、または特定のインターフェイスに適用するには、 service-policy コマンドを次のように使用します。

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

policy_map_name は、ステップ 5 で設定したポリシー マップです。ポリシー マップをすべてのインターフェイス上のトラフィックに適用する場合、 global オプションを使用します。ポリシー マップを特定のインターフェイス上のトラフィックに適用する場合、 interface interface_ID オプションを使用します。 interface_ID は、 nameif コマンドでインターフェイスに割り当てられた名前です。

FWSM は、指定のとおりに RTSP トラフィックの検査を開始します。

 


 

例 21-11 に、デフォルト ポート(554 および 8554)上で RTSP インスペクション エンジンの RTSP トラフィックをイネーブルにする手順を示します。それからサービス ポリシーを外部インターフェイスに適用します。

例 21-11 RTSP 検査のイネーブル化および設定

hostname(config)# access-list rtsp_acl permit tcp any any eq 554
hostname(config)# access-list rtsp_acl permit tcp any any eq 8554
hostname(config)# class-map rtsp-traffic
hostname(config-cmap)# match access-list rtsp_acl
hostname(config-cmap)# policy-map sample_policy
hostname(config-pmap)# class rtsp_port
hostname(config-pmap-c)# inspect rtsp
hostname(config-pmap-c)# service-policy sample_policy interface outside
 

SIP 検査

ここでは、SIP アプリケーション検査をイネーブルにして、デフォルトのポート設定を変更する手順について説明します。ここでは、次の内容について説明します。

「SIP 検査の概要」

「SIP インスタント メッセージング」

「IP アドレス プライバシー」

「検査制御を拡張するための SIP 検査ポリシー マップの設定」

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

「SIP 検査拡張」

「SIP 検査の確認およびモニタ」

「SIP の設定例」

SIP 検査の概要

SIP は、Internet Engineering Task Force(IETF)に定義されているように、コール処理セッションをイネーブルにします。特に、二者間の音声会議(「コール」)に使用されます。SIP は、コール シグナリングのために SDP と連動します。SDP は、メディア ストリームのポートを指定します。SIP を使用すると、FWSM は、任意の SIP VoIP ゲートウェイと VoIP プロキシ サーバをサポートできます。SIP と SDP の定義は、次の RFC で定義されています。

SIP:Session Initiation Protocol、RFC 2543

SDP:Session Description Protocol、RFC 2327

FWSM 経由の SIP コールをサポートするには、メディア接続アドレス、メディア ポート、メディアの初期接続のシグナリング メッセージを検査する必要があります。SIP シグナリングが well-known 宛先ポート(UDP/TCP 5060)に送信される間に、メディア ストリームはダイナミックに割り当てられたポートを使用します。また、SIP は、IP パケットのユーザ データ部分に IP アドレスを組み込みます。SIP 検査は、これらの組み込まれた IP アドレスに対して NAT を適用します。

SIP とともに PAT を使用する場合に、次の制限事項および制約事項が適用されます。

リモート エンドポイントが、FWSM によって保護されたネットワーク上の SIP プロキシに登録しようとする場合、次の特殊な状態では登録できません。

PAT がリモート エンドポイントに設定されています。

SIP 登録サーバが、外部ネットワーク上にあります。

エンドポイントによってプロキシ サーバに送信された REGISTER メッセージ内の接続フィールドで、ポートが失われます。

SIP デバイスが、SDP 部分に owner/creator フィールド(o=)の IP アドレスがあるパケットを送信する場合、o= フィールドの IP アドレスは正しく変換されないことがあります。この owner/creator フィールドの IP アドレスは、接続フィールド(c=)の IP アドレスとは異なります。これは、SIP プロトコルの制限事項によるもので、o= フィールドにポート値を提供しません。

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

インスタント メッセージングは、ユーザの間でほぼリアルタイムでメッセージを転送することです。SIP は、Windows Messenger RTC Client バージョン 4.7.0105 だけを使用して、Windows XP 上でチャット機能をサポートします。MESSAGE/INFO 方式および 202 Accept 応答は、次の RFC で定義された 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 タイムアウト値に従って、タイムアウトするピンホールをオープンします。この値は、Subscription 時間よりも 5 分以上長く設定する必要があります。Subscription 時間は、Contact Expires 値で定義され、一般的に 30 分です。

MESSAGE/INFO 要求は一般的に、ポート 5060 以外のダイナミックに割り当てられたポートを使用して送信されるので、SIP インスペクション エンジンを通過する必要があります。


) 現在、チャット機能だけがサポートされています。ホワイトボード、ファイル転送、アプリケーション共有はサポートされていません。RTC Client 5.0 はサポートされません。


SIP 検査は、SIP のテキスト ベースのメッセージで NAT を実行し、メッセージの SDP 部分のコンテンツの長さを再計算し、さらにパケット長とチェックサムを再計算します。また、SIP メッセージの SDP 部分に指定されたポートのメディア接続をダイナミックにオープンします。エンドポイントは、そのアドレス/ポート上で待ち受けるからです。

SIP 検査には、SIP ペイロードからの CALL_ID/FROM/TO インデックスを持ったデータベースがあります。このインデックスは、コール、送信元、宛先を識別します。このデータベースには、SDP メディア情報フィールドのメディア アドレスとメディア ポート、およびメディアのタイプが保管されます。1 つのセッションに複数のメディア アドレスとポートが存在することもあります。FWSM は、これらのメディア アドレス/ポートを使用して 2 つのエンドポイント間で RTP/RTCP 接続をオープンします。

初回のコール セットアップ(INVITE)メッセージには、well-known ポート 5060 を使用する必要があります。ただし、以降のメッセージには、このポート番号を含める必要はありません。SIP インスペクション エンジンは、シグナリング接続ピンホールをオープンし、これらの接続を SIP 接続としてマークします。これは、メッセージに SIP を適用し、NAT を実行するためです。

コールがセットアップされると、SIP セッションは、接続先エンドポイントからの応答メッセージにより、接続先エンドポイントが待ち受ける RTP ポートを示すメディア アドレスとメディア ポートを受信するまで、「一時的な」ステートになります。1 分以内に応答メッセージを受信しなかった場合、そのシグナリング接続は切断されます。

最終ハンドシェイクが完了すると、コール ステートがアクティブになり、BYE メッセージを受信するまで、シグナリング接続が持続されます。

内部エンドポイントから外部エンドポイントにコールを開始する場合には、内部エンドポイントからの INVITE メッセージに指定される内部エンドポイントのメディア アドレスおよびメディア ポートに RTP/RTCP UDP パケットが転送されるように、外部インターフェイスに対してメディア ホールがオープンされます。内部インターフェイスへの非送信要求 RTP/RTCP UDP パケットは、FWSM の設定で具体的に許可されている場合を除き、FWSM を通過しません。

IP アドレス プライバシー

IP アドレス プライバシーをイネーブルにすると、IP Phone コールまたはインスタント メッセージング セッションに参加している 2 つの SIP エンドポイントが、同じ内部ファイアウォール インターフェイスを使用して、外部ファイアウォール インターフェイス上の SIP プロキシ サーバに接続する場合、すべての SIP シグナリング メッセージは SIP プロキシ サーバを通過します。

SIP over TCP または UDP アプリケーション検査がイネーブルであれば、IP アドレス プライバシーをイネーブルにできます。この機能は、デフォルトではディセーブルです。IP アドレス プライバシーがイネーブルの場合、FWSM は、着信 SIP トラフィックの TCP または UDP ペイロードに組み込まれた内部および外部ホスト IP アドレスを変換せず、IP アドレスの変換ルールは無視されます。

SIP マップ コンフィギュレーション モードで ip-address-privacy コマンドを使用すると、この機能がイネーブルであるかどうか制御できます。

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

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

SIP 検査ポリシー マップを作成する手順は、次のとおりです。


ステップ 1 (任意)「正規表現の作成」に従って、1 つまたは複数の正規表現を追加してトラフィック照合コマンドで使用できるようにします。ステップ 3 に記載されている match コマンドで照合できるテキストのタイプを参照してください。

ステップ 2 (任意)「正規表現クラス マップの作成」に従って、1 つまたは複数の正規表現のクラス マップを作成して正規表現をグループ化します。

ステップ 3 (任意)次の手順を実行して、SIP 検査クラス マップを作成します。

クラス マップでは、複数のトラフィックの一致をグループ化します。match-all キーワードを指定した場合、トラフィックがクラス マップと一致するためにはすべての match コマンドと一致する必要があります。match-any キーワードを指定した場合、トラフィックがクラス マップと一致するためにはいずれか 1 つの 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 は、クラス マップの名前です。名前に使用できる文字数は最大 40 文字です。match-all キーワード(デフォルト値)を指定した場合、トラフィックがクラス マップと一致するためにはすべての基準を満たす必要があります。match-any キーワードを指定した場合、クラス マップ内のいずれかの match コマンドと一致すれば、トラフィックはクラス マップと一致することになります。

CLI はクラス マップ コンフィギュレーション モードを開始します。このモードでは、1 つまたは複数の match コマンドを入力できます。

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

hostname(config-cmap)# description string
 

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

c. (任意)To ヘッダーまたは Contact ヘッダーで指定されている着信側を照合するには、次のコマンドを入力します。

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. (任意)SIP REGISTER メッセージの From ヘッダーを照合することで第三者の登録の要求者を照合するには、次のコマンドを入力します。このコマンドによって要求者が照合されるのは、SIP REGISTER メッセージの To フィールドと From フィールドのコンテンツが異なる場合だけです。

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
 

説明に使用できる文字数は最大 200 文字です。

ステップ 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 | drop-connection | mask | reset] [log]}
 

match または class コマンドですべてのオプションが使用できるわけではありません。使用可能な正確なオプションについては、CLI のヘルプまたは『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference 』を参照してください。

drop キーワードでは、一致したすべてのパケットを廃棄します。

drop-connection キーワードでは、パケットを廃棄して、接続を終了します。

mask キーワードでは、パケットの一致部分をマスクします。

reset キーワードでは、パケットを廃棄し、接続を終了して、TCP リセットをサーバまたはクライアント(あるいはその両方)に送信します。

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

ポリシー マップには複数の 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 メッセージにソフトウェア バージョンと Alert-Info および Call-Info ヘッダー フィールドが含まれる場合にその SIP ヘッダーを削除します。

g. ステート チェック検証をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-p)# state-checking action {drop | drop-connection | reset | log} [log]
 

h. RFC 3261 に従って SIP メッセージのヘッダー フィールドの厳密な検証をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-p)# strict-header-validation action {drop | drop-connection | reset | log} [log]

) SIP メッセージ ヘッダーに違反が存在する場合に Universal Access Concentrator(UAC; ユニバーサル アクセス コンセントレータ)から User Agent Server(UAS)に TCP リセットを送信するには、service resetinbound コマンドを設定し、さらに strict-header-validation コマンドに reset log キーワードを入力する必要があります。

内部インターフェイスと外部インターフェイスでセキュリティ レベルが異なる場合、リセットは内部ホストにだけ送信されます。外部ホストにリセットを送信するには、service resetinbound コマンドを設定し、strict-header-validation コマンドに reset log キーワードを入力する必要があります。


i. SIP 以外のトラフィックに well-known SIP シグナリング ポートの使用を許可するには、次のコマンドを入力します。SIP 以外のトラフィックに対する well-known SIP シグナリング ポートの使用許可は、デフォルトでイネーブルになっています。

hostname(config-pmap-p)# traffic-non-sip
 

j. SIP メッセージの Alert-Info および Call-Info ヘッダー フィールドなど、SIP ヘッダーの有無を確認するには、次のコマンドを入力します。

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)# no inspect sip
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_disconnect hh:mm:ss
 

このコマンドでは、SIP メディアを削除し、メディアの xlate を終了するまでのアイドル タイムアウトを設定します。範囲は 1 ~ 10 分です。

SIP INVITE のタイムアウト値を設定するには、次のコマンドを使用します。

hostname(config)# timeout sip_invite hh:mm:ss
 

このコマンドでは、SIP ヘッダーに EXPIRE フィールドがない場合に、暫定応答用のピンホールおよびメディアの xlate を終了するまでのアイドル タイムアウトを設定します。範囲は 1 ~ 30 分です。デフォルトは 30 分です。

SIP メディア タイマーのタイムアウト値を設定するには、次のコマンドを使用します。

hostname(config)# timeout sip_media hh:mm:ss
 

このコマンドでは、SIP メディアのアイドル タイマーを変更し、非アクティブ状態になった SIP RTP/RTCP 接続を切断するまでの時間を決定します。このコマンドでは、SIP メディア接続に対してだけ、UDP 非アクティブ タイムアウト値(timeout udp コマンド)を上書きします。デフォルトのタイムアウト値は 2 分です。最小タイムアウト値は 1 分です。最大タイムアウト値は 1193 分です。値 0 を指定すると、SIP メディア接続はタイムアウトしません。

SIP 検査拡張

SIP 検査拡張では、アイドル タイムアウトを待つ代わりに、BYE SIP メッセージに対する 200 OK、CANCEL SIP メッセージに対する 200 OK、および 4xx/5xx/6xx SIP メッセージに対する 200 OK を受信したら、メディア接続を削除します。

図 21-13 BYE メッセージに対するメディア接続のクリア

 

図 21-13 では、BYE メッセージに対する 200 OK を受信しない場合、timeout sip-disconnect が発生したときにメディア接続がクリアされます。

図 21-14 CANCEL メッセージに対するメディア接続のクリア

 

図 21-14 では、CANCEL メッセージに対する 200 OK を受信したら、メディア接続がクリアされます。CANCEL SIP メッセージに対する 200 OK を受信しない場合、timeout sip-disconnect が発生したときにメディア接続がクリアされます。

図 21-15 4xx/5xx/6xx SIP メッセージに対するメディア接続のクリア

 

図 21-15 では、4xx/5xx/6xx SIP メッセージに対する応答として 200 OK を受信したら、即座にメディア接続がクリアされます。200 OK を受信しない場合、timeout sip-disconnect が発生したときにメディア接続がクリアされます。

暫定応答用にタイムアウトを延長できます。ピンホールで 1xx/2xx 応答を受信するときのタイムアウトは、EXPIRE フィールドに基づいて自動的に設定されますが、独自に設定することもできます。SIP INVITE メッセージに EXPIRE フィールドが存在し、その値が 30 分未満の場合、ピンホールで 1xx/2xx 応答を受信するときのタイムアウトは EXPIRE フィールドの値に設定されます。SIP INVITE ヘッダーの EXPIRE フィールドの値が 30 分より大きい場合、暫定応答用のタイムアウトは 30 分に設定されます。SIP INVITE メッセージに EXPIRE フィールドが存在しない場合、暫定応答用のタイムアウトは timeout sip-invite コマンドで指定した値に設定されます。

図 21-16 暫定応答用のタイムアウトの延長

 

次の制限があります。

SIP セッションがフェールオーバーよりも前に確立された場合、BYE メッセージ、CANCEL メッセージ、または 4xx/5xx/6xx SIP メッセージに対する 200 OK を受信しても、SIP メディア接続はクリアされません。フェールオーバー後に確立された SIP セッションはクリアされます。

BYE SIP メッセージ、CANCEL SIP メッセージ、または 4xx/5xx/6xx SIP メッセージに対する 200 OK を受信しても、SIP 応答用にオープンされたピンホールが SIM メディア接続とともにクリアされることはありません。ピンホール接続はタイムアウトによって最終的にクリアされます。

SIP 検査の確認およびモニタ

show sip コマンドは、SIP インスペクション エンジンの問題のトラブルシューティングに役立ちます。説明については、 inspect protocol sip udp 5060 コマンドを参照してください。 show timeout sip コマンドは、指定されたプロトコルのタイムアウト値を表示します。

show sip コマンドは、FWSM を越えて確立された SIP セッションに関する情報を表示します。 debug sip show local-host 、および show service-policy inspect sip コマンドとともに、このコマンドは 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
 

この例では、FWSM 上に 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 秒間アイドル状態でした。

SIP の設定例

図 21-17 に、SIP 検査の設定例を示します。

図 21-17 SIP IP アドレス プライバシーの設定

 

この例に対応する設定は、次のとおりです。

hostname(config)# interface Vlan12
hostname(config-if)# nameif outside
hostname(config-if)# security-level 0
hostname(config-if)# ip address 10.2.0.10 255.0.0.0
hostname(config-if)# !
 

Vlan 12 は、10.x.x.x ネットワークへのすべてのパケットを、ネクストホップ IP アドレスが 10.2.0.10 に設定された FWSM に返す外部 Vlan です。この処理を行うには、アップストリーム ルータでポリシーベースのルーティングを設定します。

hostname(config-if)# interface Vlan50
hostname(config-if)# nameif inside
hostname(config-if)# security-level 100
hostname(config-if)# ip address 10.100.100.7 255.255.255.0
 

2 つの電話 4085550100 および 4085550199 は、同じ 209.165.201.0 サブネットで使用されます。

hostname(config)# access-list voice extended permit udp any any eq sip
hostname(config)# access-list voice extended permit tcp any any eq sip
hostname(config)# access-list voice extended permit udp any any eq tftp
hostname(config)# !
hostname(config)# sip-map privacy
hostname(config-if)# ip-address-privacy
hostname(config)# !
hostname(config)# nat-control
hostname(config)# static (inside, outside) 10.3.100.115 209.165.201.115 netmask 255.255.255.255
hostname(config)# static (inside, outside) 10.3.100.118 209.165.201.118 netmask 255.255.255.255
 

各電話の IP アドレスは、FWSM に接続されたネットワークに存在しない外部のダミー IP アドレスに変換されます。変換後の IP アドレスは、FWSM に接続されたネットワークに存在していてはなりません。

hostname(config)# access-group voice in interface outside
hostname(config)# access-group voice in interface inside
hostname(config)# route outside 10.3.0.0 255.0.0.0 10.2.0.5 1
 

10.3.0.0 へのルートを 10.2.0.5(ネクストホップ ルータの IP アドレス)経由で設定します。

hostname(config)# route outside 209.165.201.0 255.0.0.0 10.2.0.5 1
hostname(config)# !
hostname(config)# policy-map global_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect dns maximum-length 512
hostname(config-pmap-c)# inspect ftp
hostname(config-pmap-c)# inspect h323 h225
hostname(config-pmap-c)# inspect h323 ras
hostname(config-pmap-c)# inspect rsh
hostname(config-pmap-c)# inspect smtp
hostname(config-pmap-c)# inspect sqlnet
hostname(config-pmap-c)# inspect skinny
hostname(config-pmap-c)# inspect sunrpc
hostname(config-pmap-c)# inspect xdmcp
hostname(config-pmap-c)# inspect netbios
hostname(config-pmap-c)# inspect tftp
hostname(config-pmap-c)# inspect sip privacy

 

ルータの設定は次のとおりです。

hostname(config)# interface GigabitEthernet0/2
hostname(config-if)# ip address 10.2.0.5 255.0.0.0
hostname(config-if)# ip policy route-map privacy
hostname(config-if)# duplex auto
hostname(config-if)# speed auto
hostname(config-if)# media-type rj45
hostname(config-if)# no negotiation auto
hostname(config-if)# !
hostname(config)# interface GigabitEthernet0/3
hostname(config-if)# ip address 209.165.201.1 255.0.0.0
hostname(config-if)# duplex auto
hostname(config-if)# speed auto
hostname(config-if)# media-type rj45
hostname(config-if)# no negotiation auto
hostname(config-if)# !
hostname(config-if)# ip route 10.3.0.0 255.0.0.0 10.2.0.10
hostname(config-if)# ip route 50.0.0.0 255.0.0.0 12.0.0.10
 

10.3.0.0 および 209.165.201.0 へのルートは、10.2.0.10(FWSM の IP アドレス)経由で到達できるように設定されています。

hostname(config)# access-list 10 permit ip any 10.3.0.0 0.255.255.255
hostname(config)# !
hostname(config)# route-map privacy permit 10
hostname(config-if)# match ip address 100
hostname(config-if)# set ip next-hop 10.2.0.10

 

10.3.0.0 ネットワークを宛先とするすべてのパケットをキャプチャして 10.2.0.10(FWSM の IP アドレス)に送信するようにルート マップが設定されています。

次に、FWSM での show conn の出力例を示します。この例では、音声トラフィックが FWSM モジュール経由でスイッチングされ、各電話の IP アドレスを隠しています。RTP トラフィックは同じサブネット経由ではスイッチングされません。代わりに、FWSM 経由でルーティングされます。

hostname(config)# show conn
6 in use, 28 most used
Network Processor 1 connections
UDP out 209.165.201.100:5060 in 209.165.201.118:5060 idle 0:00:21 Bytes 67358 FLAGS - T
UDP out 10.3.100.115:16384 in 209.165.201.118:16384 idle 0:00:00 Bytes 6042324 FLAGS - m
UDP out 209.165.201.100:0 in 209.165.201.118:5060 idle 0:00:21 Bytes 18 FLAGS - t
Network Processor 2 connections
UDP out 209.165.201.100:5060 in 209.165.201.115:5060 idle 0:00:25 Bytes 80181 FLAGS - T
UDP out 10.3.100.118:16384 in 209.165.201.115:16384 idle 0:00:00 Bytes 6047556 FLAGS - m
UDP out 209.165.201.100:0 in 209.165.201.115:5060 idle 0:00:25 Bytes 33 FLAGS - t
Multicast sessions:
Network Processor 1 connections
Network Processor 2 connections
IPv6 connections:
 
hostname(config)# show xlate
2 in use, 2 most used
Global 30.100.100.115 Local 209.165.201.115
Global 30.100.100.118 Local 209.165.201.118
 

Skinny(SCCP)検査

ここでは、SCCP アプリケーション検査をイネーブルにして、デフォルトのポート設定を変更する手順について説明します。ここでは、次の内容について説明します。

「SCCP 検査の概要」

「Cisco IP Phone のサポート」

「制限事項および制約事項」

「SCCP 検査の設定およびイネーブル化」

「SCCP 検査の確認およびモニタ」

「SCCP(Skinny)の設定例」

SCCP 検査の概要

Skinny(SCCP)は、VoIP ネットワークで使用される簡易プロトコルです。SCCP を使用する Cisco IP Phone は、H.323 環境と併用できます。Cisco CallManager を使用することにより、SCCP クライアントと H.323 準拠端末を相互運用できます。FWSM では、次の点を含め、バージョン 17 までのすべてのバージョンがサポートされています。

SCCP バージョン 17 の電話の登録。

ビデオ/音声ストリーム用のピンホールをオープンするための SCCP バージョン 17 メディア関連メッセージ。

次のアクションはサポートされていません。

IPv6 アドレスを使用するエンドポイントの登録。Register メッセージは廃棄され、デバッグ メッセージが生成されます。

SCCP メッセージに組み込まれた IPv6 メッセージの NAT 処理または PAT 処理。これらのメッセージは変換されません。

FWSM は、SCCP の PAT と NAT をサポートします。PAT は、使用する IP Phone のグローバル IP アドレスより IP Phone の数が多い場合に必要です。SCCP シグナリング パケットの NAT および PAT をサポートすることで、Skinny アプリケーション検査では、SCCP シグナリング パケットとメディア パケットのすべてが FWSM を通過することを保証します。

Cisco CallManager と Cisco IP Phone の間の通常のトラフィックは SCCP を使用し、特別な設定をすることなく SCCP 検査によって処理されます。FWSM は、DHCP オプション 150 および 66 もサポートしているので、Cisco IP Phone および他の DHCP クライアントに TFTP サーバの場所を送信できます。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 用に設定されている場合、外部 Cisco IP Phone の登録は失敗します。これは、FWSM が TFTP で転送されたファイル内容の NAT または PAT をサポートしていないからです。FWSM は TFTP メッセージの NAT をサポートし、TFTP ファイル用にピンホールをオープンしますが、FWSM は電話の登録中に TFTP によって転送された Cisco IP Phone のコンフィギュレーション ファイルに埋め込まれた Cisco CallManager の IP アドレスおよびポートを変換できません。

SCCP バージョン 17 の電話では、次のアクションはサポートされていません。

IPv6 アドレスを使用するエンドポイントの登録。Register メッセージは廃棄され、デバッグ メッセージが生成されます。

SCCP メッセージに組み込まれた IPv6 メッセージの NAT 処理または PAT 処理。これらのメッセージは変換されません。


) FWSM では、コール セットアップ中であるコール以外の SCCP コールのステートフル フェールオーバーはサポートされていません。


SCCP 検査の設定およびイネーブル化

SCCP 検査はデフォルトではイネーブルです。

SCCP 検査をイネーブルにする、または SCCP トラフィックの受信に使用するデフォルト ポートを変更する手順は、次のとおりです。


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

hostname(config)# class-map class_map_name
 

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

hostname(config)# class-map sccp_port
 

class-map コマンドを入力すると、CLI はクラス マップ コンフィギュレーション モードを開始し、プロンプトが変わります。次に例を示します。

hostname(config-cmap)#
 

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

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

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

hostname(config-cmap)# match port tcp range 2000-2010
 

連続しない複数のポートを SCCP 検査に割り当てるには、 access-list extended コマンドを入力して、各ポートと一致するよう ACE を定義します。それから match コマンドを入力して、アクセス リストと SCCP トラフィック クラスを対応付けます。

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

hostname(config)# policy-map policy_map_name
 

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

hostname(config)# policy-map sample_policy
 

CLI はポリシー マップ コンフィギュレーション モードを開始し、それに応じてプロンプトが次のように変わります。

hostname(config-pmap)#
 

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

hostname(config-pmap)# class class_map_name
 

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

hostname(config-pmap)# class sccp_port
 

CLI はポリシー マップ クラス コンフィギュレーション モードを開始し、それに応じてプロンプトが次のように変わります。

hostname(config-pmap-c)#
 

ステップ 5 (任意)SCCP トラフィックを受信するため FWSM が使用するデフォルト ポートを変更するには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect skinny
 

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

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

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

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

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

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

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

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

hostname(config)# service-policy sample_policy interface outside
 

次のコマンドは sample_policy をすべての FWSM インターフェイスに適用します。

hostname(config)# service-policy sample_policy global
 


 

例 21-12 に示すように、SCCP インスペクション エンジンをイネーブルにし、デフォルト ポート(2000)の SCCP トラフィックと一致するクラス マップを作成します。それからサービス ポリシーを外部インターフェイスに適用します。

例 21-12 SCCP アプリケーション検査のイネーブル化

hostname(config)# class-map sccp_port
hostname(config-cmap)# match port tcp eq 2000
hostname(config-cmap)# exit
hostname(config)# policy-map sample_policy
hostname(config-pmap)# class sccp_port
hostname(config-pmap-c)# inspect skinny
hostname(config-pmap-c)# exit
hostname(config)# service-policy sample_policy interface outside

SCCP 検査の確認およびモニタ

show skinny コマンドは、SCCP(Skinny)インスペクション エンジンの問題のトラブルシューティングに役立ちます。次に、以下の条件における show skinny コマンドの出力例を示します。FWSM を越えてセットアップされているアクティブな Skinny セッションが 2 つあります。最初のセッションは、ローカル アドレス 10.0.0.11 にある内部 Cisco IP Phone と 172.18.1.33 にある外部 Cisco CallManager の間に確立された音声接続です。TCP ポート 2000 は CallManager です。2 番めのセッションは、ローカル アドレス 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
AUDIO 10.0.0.11/22948 172.18.1.22/20798
2 10.0.0.22/52232 172.18.1.33/2000 1
VIDEO 10.0.0.22/20798 172.18.1.11/22948
 

この出力は、両方の内部 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
 

SCCP(Skinny)の設定例

図 21-18 に、SCCP(Skinny)検査の設定例を示します。

図 21-18 SCCP(Skinny)検査の設定

 

この例に対応する設定は、次のとおりです。

hostname(config)# interface Vlan100
hostname(config-if)# nameif outside
hostname(config-if)# security-level 0
hostname(config-if)# ip address 209.165.201.2 255.0.0.0
hostname(config-if)# !
hostname(config-if)# interface Vlan50
hostname(config-if)# nameif inside
hostname(config-if)# security-level 100
hostname(config-if)# ip address 10.100.100.2 255.0.0.0
hostname(config-if)# !
hostname(config-if)# interface Vlan90
hostname(config-if)# nameif callmgr
hostname(config-if)# security-level 75
hostname(config-if)# ip address 209.165.201.254 255.0.0.0
 

TFTP ポートを CallManager の IP アドレスに対してイネーブルにして、内部および外部の電話で初期設定用に CallManager からコンフィギュレーション ファイルをダウンロードできるようにしています。TCP ポート 2000 を CallManager の IP アドレスに対してイネーブルにして、Skinny シグナリングにおいて電話と CallManager 間のモジュールがファイアウォール モジュールを通過できるようにしています。

hostname(config-if)# access-list voice extended permit udp any host 209.165.201.210 eq tftp
hostname(config)# access-list voice extended permit tcp any host 209.165.201.210 eq 2000
 

着信トラフィック用の内部および外部インターフェイスで上記のアクセス リストを適用します。

hostname(config)# access-group voice in interface outside
hostname(config)# access-group voice in interface inside
 

SCCP(Skinny)検査を設定します。

hostname(config)# policy-map global_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect skinny

 

次に、ファイアウォール モジュール経由の Skinny 電話のコールがアクティブな場合の show skinny の出力例を示します。

hostname(config)# show skinny
LOCAL FOREIGN STATE
---------------------------------------------------------------------
1 10.0.0.2/49723 209.165.201.210/2000 1
AUDIO 209.165.201.2/24002 209.165.201.211/19212
2 209.165.201.210/2000 209.165.201.211/49692 1
AUDIO 10.0.0.2/24002 209.165.201.211/19212
 

次に、Skinny 電話間(それぞれ内部および外部インターフェイス経由で到達可能)にアクティブなコールが 1 つ存在する場合の show conn の出力例を示します。Skinny 接続は k フラグでマーク付けされています。

hostname(config)# show conn
3 in use, 26 most used
Network Processor 1 connections
TCP out 209.165.201.210:2000 in 10.0.0.2:49723 idle 0:00:07 Bytes 10232 FLAGS - UOI
Network Processor 2 connections
TCP out 209.165.201.211:49692 in 209.165.201.210:49723 idle 0:00:27 Bytes 12394 FLAGS - UBOI
UDP out 209.165.201.211:19212 in 10.0.0.2:24002 idle 0:00:00 Bytes 3575654 FLAGS - K
Multicast sessions:
Network Processor 1 connections
Network Processor 2 connections
IPV6 connections:
 

SMTP および拡張 SMTP 検査

ここでは、SMTP および ESMTP アプリケーション検査をイネーブルにして、デフォルトのポート設定を変更する手順について説明します。ここでは、次の内容について説明します。

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

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

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

FWSM は、SMTP および ESMTP のアプリケーション検査をサポートします。これらのプロトコルのアプリケーション検査は、FWSM を通過できる SMTP または ESMTP コマンドのタイプを制限したり、モニタ機能を追加することで、攻撃から保護します。

ESMTP は SMTP プロトコルの機能を強化したもので、SMTP と同様の機能を持ちます。便宜上、ここでは SMTP という用語を使用して、SMTP と ESMTP 両方を表します。ESMTP のアプリケーション検査プロセスには、SMTP セッションのサポートが含まれます。ESMTP セッションで使用するコマンドの多くは、SMTP セッションで使用するコマンドと同じですが、ESMTP セッションはかなり高速で、信頼性とセキュリティに関連したオプション(配信ステータス通知など)をより多く提供します。

inspect smtp コマンドは、7 つの RFC 821 コマンド(DATA、HELO、MAIL、NOOP、QUIT、RCPT、RSET)をサポートします。 inspect esmtp コマンドは、この 7 つのコマンドをサポートし、拡張 SMTP コマンド(AUTH、HELP、EHLO、ETRN、SAML、SEND、SOML、VRFY)もサポートします。

他の SMTP または ESMTP コマンド、および ESMTP のプライベートな拡張はサポートされません。サポートされないコマンドは X に変換され、FWSM で保護された SMTP サーバによって拒否されます。この場合、「500 Command unknown: 'XXX'」というメッセージが表示されます。不完全なコマンドは廃棄されます。

SMTP アプリケーション検査は、 inspect smtp コマンドでイネーブルになって、高速パス処理で実行されます。したがって、この検査は FWSM 上の 3 つのネットワーク プロセッサのいずれかで実行されます。ESMTP アプリケーション検査は、 inspect esmtp コマンドでイネーブルになって、制御プレーン パス処理で実行されます。したがって、この検査は FWSM 上の 1 つの汎用プロセッサで実行されます。


) ポリシー マップに inspect smtp コマンドと inspect esmtp コマンドの両方が含まれる場合、ポリシー マップに記載された最初のコマンドだけが一致するトラフィックに適用されます。


検査では、「2」、「0」、「0」の文字を除き、サーバの SMTP バナーの文字をアスタリスクに変更します。Carriage Return(CR; 復帰)および Linefeed(LF; 改行)の文字は無視されます。

SMTP 検査がイネーブルで、次のルールが順守されていない場合、インタラクティブ SMTP に使用する Telnet セッションが中断することがあります。SMTP コマンドの長さは 4 文字以上で、CR および LF で終了する必要があります。また、次の応答を発行する前に、応答を待つ必要があります。

SMTP サーバは、応答コードの番号と任意の読み取り可能な文字列によって、クライアントの要求に応答します。SMTP アプリケーション検査は、ユーザが使用できるコマンドおよびサーバが戻すメッセージを制御して、削減します。SMTP 検査は、次の 3 つの主要なタスクを実行します。

SMTP 要求を、7 つの基本的な SMTP コマンドと 8 つの拡張コマンドに制限します。

SMTP コマンド応答シーケンスをモニタします。

監査証跡の生成:メール アドレス内の無効文字が置換された場合、監査記録 108002 が生成されます。詳細については、RFC 821 を参照してください。

SMTP 検査は、コマンドと応答のシーケンスをモニタして、次の異常を検出します。

不完全なコマンド

コマンドの不正な終了(<CR><LR> で終了していない)

MAIL コマンドおよび RCPT コマンドには、メールの送信者および受信者が指定されています。不正な文字が含まれていないかどうか、メール アドレスがスキャンされます。パイプライン文字(|)は削除されます(空白スペースに変更されます)。「<」および「>」は、メール アドレスを定義している場合にだけ認められます(「>」の前に必ず「<」があることが前提です)。

SMTP サーバによる予期しない移行

未知のコマンドがあると、FWSM はパケット内のすべての文字を X に変更します。この場合、サーバからクライアントにエラー コードが戻されます。パケット内が変更されるので、TCP チェックサムが再計算または調整されます。

TCP ストリームの編集

コマンドのパイプライン化

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

SMTP 検査はデフォルトではイネーブルです。

SMTP または拡張 SMTP 検査をイネーブルにする手順は、次のとおりです。


ステップ 1 FWSM の後ろの SMTP サーバが SMTP トラフィックを待ち受けるポートを決定します。デフォルト ポートは TCP ポート 25 ですが、他のポートを待ち受けるよう SMTP サーバを設定できます。

ステップ 2 SMTP トラフィックを識別するには、クラス マップを作成するか、または既存のクラス マップを変更します。 class-map コマンドを次のように使用します。

hostname(config)# class-map class_map_name
hostname(config-cmap)#
 

class_map_name は、トラフィック クラスの名前です。 class-map コマンドを入力すると、CLI はクラス マップ コンフィギュレーション モードを開始します。

ステップ 3 match コマンドを使用して、ステップ 1 で決定した SMTP ポートに送信されたトラフィックを識別します。

ポート マッパ プロセスが単一ポートを待ち受ける場合、 match port コマンドを使用して、ポートに送信されたトラフィックを次のように識別できます。

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

port_number は、ポート マッパ プロセスが待ち受けるポートです。連続したポート範囲を割り当てる必要がある場合、 range キーワードを使用します。次に例を示します。

hostname(config-cmap)# match port tcp range begin_port_number end_port_number
 

ヒント 連続しない複数のポートを識別する必要がある場合、access-list extended コマンドを入力して、各ポートと一致するよう ACE を定義します。それから、match port コマンドではなく、match access-list コマンドを使用して、アクセス リストと SMTP トラフィック クラスを対応付けます。


ステップ 4 SMTP インスペクション エンジンを SMTP トラフィックに適用するのに使用するポリシー マップを作成します。そのためには、 policy-map コマンドを次のように使用します。

hostname(config-cmap)# policy-map policy_map_name
hostname(config-pmap)#
 

policy_map_name は、ポリシー マップの名前です。CLI はポリシー マップ コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 5 ステップ 2 で作成したクラス マップを指定します。このクラス マップは SMTP トラフィックを識別します。 class コマンドを次のように使用します。

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

class_map_name は、ステップ 2 で作成したクラス マップの名前です。CLI はポリシー マップ クラス コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 6 次のうち、いずれかの作業を実行します。

a. 拡張 SMTP アプリケーション検査をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect esmtp
 

b. SMTP アプリケーション検査をイネーブルにするには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect smtp
 

inspect smtp コマンドと inspect esmtp コマンドの違いについては、「SMTP および拡張 SMTP 検査の概要」を参照してください。


ステップ 7 ポリシー マップをグローバルに、または特定のインターフェイスに適用するには、 service-policy コマンドを次のように使用します。

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

policy_map_name は、ステップ 4 で設定したポリシー マップです。ポリシー マップをすべてのインターフェイス上のトラフィックに適用する場合、 global オプションを使用します。ポリシー マップを特定のインターフェイス上のトラフィックに適用する場合、 interface interface_ID オプションを使用します。 interface_ID は、 nameif コマンドでインターフェイスに割り当てられた名前です。

FWSM は、指定のとおりに SMTP トラフィックの検査を開始します。


 

例 21-13 ESMTP 検査の設定およびイネーブル化

hostname(config)# class-map smtp_port
hostname(config-cmap)# match port tcp eq 25
hostname(config-cmap)# policy-map sample_policy
hostname(config-pmap)# class smtp_port
hostname(config-pmap-c)# inspect esmtp
hostname(config-pmap-c)# service-policy sample_policy interface outside
hostname(config)#
 

SNMP 検査

ここでは、SNMP アプリケーション検査をイネーブルにして、デフォルトのポート設定を変更する手順について説明します。ここでは、次の内容について説明します。

「SNMP 検査の概要」

「SNMP アプリケーション検査のイネーブル化および設定」

SNMP 検査の概要

SNMP アプリケーション検査は、SNMP の特定のバージョンへの SNMP トラフィックを制限します。SNMP の初期のバージョンはセキュリティが低く、したがって、セキュリティ ポリシーによって所定の SNMP バージョンを拒否する必要があります。FWSM は、SNMP バージョン 1、2、2c、または 3 を拒否できます。SNMP マップ コンフィギュレーション モードで deny version コマンドを使用することにより、許可するバージョンを制御します。

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

SNMP 検査のデフォルト設定を変更する手順は、次のとおりです。


ステップ 1 FWSM の後ろのネットワーク デバイスが SNMP トラフィックを待ち受けるポートを決定します。デフォルト ポートは、TCP ポート 161 および 162 です。

ステップ 2 SNMP トラフィックを識別するには、クラス マップを作成するか、または既存のクラス マップを変更します。 class-map コマンドを次のように使用します。

hostname(config)# class-map class_map_name
hostname(config-cmap)#
 

class_map_name は、トラフィック クラスの名前です。 class-map コマンドを入力すると、CLI はクラス マップ コンフィギュレーション モードを開始します。

ステップ 3 match コマンドを使用して、ステップ 1 で決定した SNMP ポートに送信されたトラフィックを識別します。

連続したポート範囲を割り当てる必要がある場合、 range キーワードを使用します。次に例を示します。

hostname(config-cmap)# match port tcp range begin_port_number end_port_number
 

begin_port_number は、SNMP ポート範囲の最小ポートで、 end_port_number は最大ポートです。


ヒント 連続しない複数のポートを識別する必要がある場合、access-list extended コマンドを入力して、各ポートと一致するよう ACE を定義します。それから、match port コマンドではなく、match access-list コマンドを使用して、アクセス リストと SNMP トラフィック クラスを対応付けます。


ステップ 4 SNMP 検査のパラメータを含む SNMP マップを作成します。 snmp-map コマンドを次のように使用します。

hostname(config-cmap)# snmp-map map_name
hostname(config-snmp-map)#
 

map_name は、SNMP マップの名前です。CLI は、SNMP マップ コンフィギュレーション コマンドを開始します。

ステップ 5 SNMP マップによって許可された SNMP のバージョンを指定します。そのためには、 deny version コマンドを使用して、許可しないバージョンを次のように否定します。

hostname(config-snmp-map)# deny version version
hostname(config-snmp-map)#
 

version は、制限する SNMP バージョンです。 version の有効な値は 1、2、2c、3 です。 deny version コマンドは、必要な回数入力できます。

ステップ 6 SNMP インスペクション エンジンを SNMP トラフィックに適用するために使用するポリシー マップを作成するか、または既存のポリシー マップを変更します。そのためには、 policy-map コマンドを次のように使用します。

hostname(config-cmap)# policy-map policy_map_name
hostname(config-pmap)#
 

policy_map_name は、ポリシー マップの名前です。CLI はポリシー マップ コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 7 ステップ 2 で作成したクラス マップを指定します。このクラス マップは SNMP トラフィックを識別します。 class コマンドを次のように使用します。

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

class_map_name は、ステップ 2 で作成したクラス マップの名前です。CLI はポリシー マップ クラス コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 8 SNMP アプリケーション検査をイネーブルにします。そのためには、 inspect snmp コマンドを次のように使用します。

hostname(config-pmap-c)# inspect snmp snmp_map_name
hostname(config-pmap-c)#
 

snmp_map_name は、ステップ 4 で作成した SNMP マップです。

ステップ 9 ポリシー マップをグローバルに、または特定のインターフェイスに適用するには、 service-policy コマンドを次のように使用します。

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

policy_map_name は、ステップ 6 で設定したポリシー マップです。ポリシー マップをすべてのインターフェイス上のトラフィックに適用する場合、 global オプションを使用します。ポリシー マップを特定のインターフェイス上のトラフィックに適用する場合、 interface interface_ID オプションを使用します。 interface_ID は、 nameif コマンドでインターフェイスに割り当てられた名前です。

FWSM は、指定のとおりに SNMP トラフィックの検査を開始します。


 

例 21-14 は、外部インターフェイスから TCP ポート 161 および 162 に送信されたトラフィック上で SNMP アプリケーション検査をイネーブルにします。

例 21-14 SNMP アプリケーション検査の設定

hostname(config)# class-map snmp_port
hostname(config-cmap)# match port tcp range 161 162
hostname(config-cmap)# snmp-map sample_map
hostname(config-snmp-map)# deny version 1
hostname(config-snmp-map)# deny version 2
hostname(config-snmp-map)# policy-map sample_policy
hostname(config-pmap)# class snmp_port
hostname(config-pmap-c)# inspect snmp sample_map
hostname(config-pmap-c)# service-policy sample_policy interface outside
hostname(config)#
 

SQL*Net 検査

SQL*Net 検査はデフォルトではイネーブルです。

SQL*Net 検査の詳細については、『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference 』の inspect sqlnet コマンド ページを参照してください。

Sun RPC 検査

ここでは、Sun RPC アプリケーション検査をイネーブルにして、デフォルトのポート設定を変更し、Sun RPC サービス テーブルを管理する手順について説明します。ここでは、次の内容について説明します。

「Sun RPC 検査の概要」

「Sun RPC 検査のイネーブル化および設定」

「Sun RPC サービスの管理」

「Sun RPC 検査の確認およびモニタ」

Sun RPC 検査の概要

Sun RPC アプリケーション検査をイネーブルにする、または FWSM が待ち受けるポートを変更するには、ポリシー マップ クラス コンフィギュレーション モードで inspect sunrpc コマンドを使用します。このモードは、ポリシー マップ コンフィギュレーション モード内で class コマンドを使用すると利用できます。コンフィギュレーションを削除するには、このコマンドの no 形式を使用します。

inspect sunrpc コマンドは、Sun RPC プロトコルのアプリケーション検査をイネーブルまたはディセーブルにします。Sun RPC は NFS および Network Information Service(NIS; ネットワーク情報サービス)によって使用されます。Sun RPC サービスは、任意のポート上で実行できます。クライアントからサーバ上の Sun RPC サーバにアクセスする場合には、サービスを実行しているポートを学習する必要があります。そのためには、well-known ポート 111 上のポート マッパ プロセス(通常は rpcbind)にクエリーを送信します。

クライアントからサービスの Sun RPC プログラム番号を送信すると、ポート マッパ プロセスはサービスのポート番号を戻します。クライアントは Sun RPC クエリーをサーバに送信し、ポート マッパ プロセスによって特定されたポートを指定します。サーバから応答が送信されると、FWSM はこのパケットを代行受信し、そのポート上で、TCP/UDP の両方の初期接続をオープンします。


Sun RPC ペイロード情報の NAT または PAT はサポートされません。


Sun RPC 検査のイネーブル化および設定

Sun RPC 検査はデフォルトではイネーブルです。


) UDP 上で Sun RPC 検査をイネーブルにしたり設定したりするには、別のトラフィック クラスまたは新しいポリシー マップを定義する必要はありません。単に inspect sunrpc コマンドをポリシー マップに追加します。このポリシー マップのトラフィック クラスはデフォルトのトラフィック クラスによって定義されます。例 21-16(P.21-110) に、この設定の例を示します。


Sun RPC 検査をイネーブルにする、または TCP を使用して Sun RPC トラフィックの受信に使用するデフォルト ポートを変更する手順は、次のとおりです。


ステップ 1 ポート マッパ プロセスが待ち受けるポートを決定します。これはほとんどの場合、ポート 111 で、オペレーティング システムと実装状態に応じて異なります。

ステップ 2 Sun RPC トラフィックを識別するには、クラス マップを作成するか、または既存のクラス マップを変更します。 class-map コマンドを次のように使用します。

hostname(config)# class-map class_map_name
hostname(config-cmap)#
 

class_map_name は、トラフィック クラスの名前です。 class-map コマンドを入力すると、CLI はクラス マップ コンフィギュレーション モードを開始します。

ステップ 3 match コマンドを使用して、ステップ 1 で決定したポートに送信されたトラフィックを識別します。

ポート マッパ プロセスが単一ポートを待ち受ける場合、 match port コマンドを使用して、ポートに送信されたトラフィックを次のように識別できます。

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

port_number は、ポート マッパ プロセスが待ち受けるポートです。連続したポート範囲を割り当てる必要がある場合、 range キーワードを使用します。次に例を示します。

hostname(config-cmap)# match port tcp range begin_port_number end_port_number
 

ヒント 連続しない複数のポートを識別する必要がある場合、access-list extended コマンドを入力して、各ポートと一致するよう ACE を定義します。それから、match port コマンドではなく、match access-list コマンドを使用して、アクセス リストと Sun RPC トラフィック クラスを対応付けます。


ステップ 4 Sun RPC インスペクション エンジンを Sun RPC トラフィックに適用するために使用するポリシー マップを作成するか、または既存のポリシー マップを変更します。そのためには、 policy-map コマンドを次のように使用します。

hostname(config-cmap)# policy-map policy_map_name
hostname(config-pmap)#
 

policy_map_name は、ポリシー マップの名前です。CLI はポリシー マップ コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 5 ステップ 2 で作成したクラス マップを指定します。このクラス マップは Sun RPC トラフィックを識別します。 class コマンドを次のように使用します。

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

class_map_name は、ステップ 2 で作成したクラス マップの名前です。CLI はポリシー マップ クラス コンフィギュレーション モードを開始し、プロンプトがそれに応じて変わります。

ステップ 6 Sun RPC アプリケーション検査をイネーブルにします。そのためには、次のコマンドを入力します。

hostname(config-pmap-c)# inspect sunrpc
hostname(config-pmap-c)#
 

ステップ 7 ポリシー マップをグローバルに、または特定のインターフェイスに適用するには、 service-policy コマンドを次のように使用します。

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

policy_map_name は、ステップ 4 で設定したポリシー マップです。ポリシー マップをすべてのインターフェイス上のトラフィックに適用する場合、 global オプションを使用します。ポリシー マップを特定のインターフェイス上のトラフィックに適用する場合、 interface interface_ID オプションを使用します。 interface_ID は、 nameif コマンドでインターフェイスに割り当てられた名前です。

FWSM は、指定のとおりに Sun RPC トラフィックの検査を開始します。


 

例 21-15 TCP ベースの Sun RPC 検査のイネーブル化および設定

次に、外部インターフェイスから TCP ポート 111 に送信されたトラフィック上で Sun RPC アプリケーション検査をイネーブルにする例を示します。

hostname(config)# class-map sunrpc_port
hostname(config-cmap)# match port tcp eq 111
hostname(config-cmap)# policy-map sample_policy
hostname(config-pmap)# class sunrpc_port
hostname(config-pmap-c)# inspect sunrpc
hostname(config-pmap-c)# service-policy sample_policy interface outside
hostname(config)#
 

例 21-16 に、Sun RPC over UDP をイネーブルにする例を示します。これを行うには、アクションをデフォルト トラフィック クラスに適用するポリシー マップに、 inspect sunrpc コマンドを追加します。

例 21-16 UDP ベースの Sun RPC 検査のイネーブル化および設定

hostname(config)# policy-map asa_global_fw_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect sunrpc
hostname(config-pmap-c)#
 

Sun RPC サービスの管理

FWSM は、確立された Sun RPC セッションを制御するための Sun RPC サービス テーブルを保持します。Sun RPC サービス テーブルにエントリを作成するには、グローバル コンフィギュレーション モードで sunrpc-server コマンドを使用します。

sunrpc-server コマンドを使用して、FWSM が 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
 

Sun RPC アプリケーション検査はポート マッパ サービスへのサービス要求に基づいてトラフィックをイネーブルにしたので、これはオープンしたピンホールを消去します。

Sun RPC 検査の確認およびモニタ

ここでの出力例は、内部インターフェイス上で IP アドレス 192.168.100.2 を持つ Sun RPC サーバ、および外部インターフェイス上で IP アドレス 209.165.201.5 を持つ Sun RPC クライアントが対象です。

現在の 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.168.201.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
 

この出力では、30 分のタイムアウト間隔が、内部インターフェイス上で IP アドレス 192.168.100.2 を持つ Sun RPC サーバの UDP ポート 111 に設定されたことを示します。

Sun RPC サービスのオープンしたピンホールを表示するには、 show sunrpc-server active コマンドを入力します。次に、 show sunrpc-server active コマンドの出力例を示します。

hostname# show sunrpc-server active
LOCAL FOREIGN SERVICE TIMEOUT
-----------------------------------------------
1 209.165.201.5/0 192.168.100.2/2049 100003 0:30:00
2 209.165.201.5/0 192.168.100.2/2049 100003 0:30:00
3 209.165.201.5/0 192.168.100.2/647 100005 0:30:00
4 209.165.201.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 ポート 650 を使用します。

TFTP 検査

TFTP 検査はデフォルトではイネーブルです。

TFTP 検査の詳細については、『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference 』の inspect tftp コマンド ページを参照してください。

XDMCP 検査

XDMCP 検査はデフォルトではイネーブルです。ただし、XDMCP インスペクション エンジンは established コマンドの設定が正しくないと動作しません。

XDMCP 検査の詳細については、『 Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference 』の established および inspect pptp コマンド ページを参照してください。