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

目次

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

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

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

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

検査の制限事項

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

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

CTIQBE 検査

CTIQBE 検査の概要

制限事項および制約事項

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

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

CTIQBE の設定例

DCERPC 検査

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

DNS 検査

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

DNS リライトの機能

DNS Rewrite の設定

DNS Rewrite の alias コマンドの使用

DNS Rewrite の static コマンドの使用

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

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

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

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 はセッションをモニタしてダイナミックに割り当てられたポートを特定し、所定のセッションの間、それらのポートでのデータ交換を許可します。

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

図 22-2 に示されているように、FWSM は基本動作に 3 種類のデータベースを使用します。

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

検査:事前定義済みの一連のスタティックなアプリケーションレベルの検査機能を含みます。

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

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

 

図 22-2 では、動作にはその発生順に番号が付けられており、次でその動作について説明します。

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

2. FWSM はアクセス リスト データベースをチェックして、接続が許可されるかどうかを判定します。

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

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

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

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

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

FWSM のデフォルト コンフィギュレーションには、サポートされるプロトコルを特定の TCP または UDP ポート番号と関連付けて、必要とされる特殊な処理を識別する、一連のアプリケーション検査エントリが含まれます。

検査の制限事項

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

検査が必要なマルチメディア セッションのステート情報は、ステートフル フェールオーバーのステート リンク経由では渡されません。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 つだけです。したがって、グローバル ポリシーを変更して、検査を非標準ポートに適用したり、デフォルトでイネーブルになっていない検査を追加したりする場合は、デフォルトのポリシーを編集するか、それをディセーブルにして新しいポリシーを適用する必要があります。

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

 

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

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

CTIQBE

TCP/2748

--

--

--

DCERPC

TCP/135

--

--

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

DNS over UDP

UDP/53

NAT だけ転送します。

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

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

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

RFC 2326、2327、1889

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

SIP

TCP/5060
UDP/5060

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

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

RFC 3261

--

SKINNY(SCCP)

TCP/2000

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

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

--

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

SMTP

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

非標準ポートと照合する場合は、非標準ポート用の新しいクラス マップを作成する必要があります。各インスペクション エンジンの標準ポートについては、「デフォルトの検査ポリシー」を参照してください。必要に応じて同じポリシー内に複数のクラスマップを組み合わせることができるため、照合するトラフィックに応じたクラスマップを作成することができます。ただし、トラフィックが検査コマンドを含む 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 を名前として入力します。このポリシーマップに別のクラスマップを追加する場合は、異なる名前を指定してください。必要に応じて同じポリシー内に複数のクラスマップを組み合わせることができるため、照合するトラフィックに応じたクラスマップを作成することができます。ただし、トラフィックが検査コマンドを含む 2 つのクラス マップに一致した場合、最初に一致したクラスだけが使用されます。たとえば、SNMP では inspection_default クラスマップを照合します。SNMP 検査をイネーブルにするには、ステップ 5 に従って、デフォルト クラスの SNMP 検査をイネーブルにします。SNMP を照合する他のクラスを追加しないでください。

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

hostname(config-pmap-c)# inspect protocol
 

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

 

表 22-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 コマンドは、NAT、PAT、および双方向 NAT をサポートしている CTIQBE プロトコル検査をイネーブルにします。これにより、Cisco IP SoftPhone および他の Cisco TAPI/JTAPI アプリケーションが Cisco CallManager と正しく機能するようになり、 FWSM を通じたコール設定が可能になります。

TAPI と JTAPI は、多くの Cisco VoIP アプリケーションで使用されます。CTIQBE は、Cisco TSP が 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 CallManager が Cisco IP SoftPhone と比べてよりセキュリティの高いインターフェイスに配置されているときに、Cisco CallManager IP アドレスの NAT または外部 NAT が必要な場合、Cisco IP SoftPhone では Cisco CallManager IP アドレスが PC 上の Cisco TSP コンフィギュレーションで明確に指定されている必要があるため、マッピングはスタティックにする必要があります。

PAT または外部 PAT の使用時に Cisco CallManager IP アドレスを変換する場合、Cisco IP SoftPhone を正常に登録させるには、TCP ポート 2748 を PAT(インターフェイス)アドレスと同じポートにスタティックにマッピングする必要があります。Cisco CallManager、Cisco IP SoftPhone、または Cisco TSP では CTIQBE リスニング ポート(TCP 2748)は固定であり、ユーザが設定することはできません。

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 トラフィックの検査を開始します。


 

例 22-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 で確認できます。

これらの CTIQBE 接続の 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 用の単一トランスペアレント ファイアウォールの設定例を示します(図 22-2)。

図 22-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 用の単一トランスペアレント ファイアウォールの設定例を示します(図 22-3)。Cisco IP SoftPhone は、NetMeeting のコラボレーション設定に基づいて設定します。

図 22-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 社の分散クライアント/サーバ アプリケーションで広く使われているプロトコルです。このプロトコルによって、ソフトウェア クライアントがサーバにあるプログラムをリモートで実行できるようになります。

通常、このプロトコルの接続では、クライアントが予約済みポート番号で接続を受け入れるエンドポイント マッパーというサーバに、必要なサービスについてダイナミックに割り当てられるネットワーク情報を問い合わせます。その後、クライアントは、サービスを提供しているサーバ インスタンスへのセカンダリ接続を設定します。セキュリティ アプライアンスでは、適切なポート番号とネットワーク アドレスが許可され、必要に応じてセカンダリ接続の NAT も適用されます。

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


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


DCERPC 検査は、次のメッセージをサポートします。

エンド ポイント マッパー(EPMAP)

RemoteCreateInstance

IP アドレスまたはポート情報を含まない任意のメッセージ(これらのメッセージでは検査の必要がないため)

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

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

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


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

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

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

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

hostname(config-pmap)# description string
 

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

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

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

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

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

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

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

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

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


 

次に、DCERPC ピンホールに設定したタイムアウトを使用して DCERPC 検査ポリシー マップを定義する例を示します。

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

DNS 検査

ここでは、DNS アプリケーション検査を管理する手順について説明します。ここでは、次の内容について説明します。

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

「DNS リライトの機能」

「DNS Rewrite の設定」

「DNS 検査の設定」

「DNS 検査の確認とモニタリング」

「DNS ガード」

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

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

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

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


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


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


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


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

DNS メッセージ内に圧縮ポインタが出現する場合に、ポインタが参照するドメイン名の完全性を検証します。

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

ある 2 つのホストの間に複数の DNS セッションがある場合、これらのセッションに対して作成される接続は 1 つです。また、これらのセッションは同一の 5 つのタプル(送信元/宛先 IP アドレス、送信元/宛先ポート、およびプロトコル)を持ちます。追跡用の DNS ID は app_id で、アイドル タイマーは app_id ごとに実行されます。

app_id は個別に期限が切れるため、正規の DNS 応答は制限時間内にのみ FWSM を通過可能で、リソースは蓄積されません。ただし、 show conn コマンドを入力すると、DNS 接続のアイドル タイマーが新しい DNS セッションによってリセットされていることが示されます。これは共有 DNS 接続の性質で、意図的なものです。

DNS リライトの機能

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

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

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

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

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

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

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

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

 

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

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 リライトの設定」

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

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

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 リライトの設定

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


ステップ 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 Web サーバが HTTP 要求を受信するポートへのトラフィックを許可するアクセス リストを作成します。

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

引数は次のとおりです。

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

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

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

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

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

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

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

domain-qualified-hostname. IN A mapped-address
 

domain-qualified-hostname は、server.example.com のようにドメイン サフィクスを付けたホスト名です。ホスト名の後ろのピリオドは重要です。 mapped-address は、Web サーバの変換後の IP アドレスです。


 

次の例では、図 22-4 の事例の FWSM を設定しています。DNS 検査はすでにイネーブルになっていることが前提です。

例 22-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 リライト

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

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

 

図 22-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 サーバに接続できます。

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

いずれかのインターフェイスのホストまたはクライアントは、DMZ Web サーバにアクセスするときに、パブリック DNS サーバに対して server.example.com の A レコードを問い合わせます。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
 

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


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

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

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

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

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

図 22-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 Web サーバが HTTP 要求を受信するポートへのトラフィックを許可するアクセス リストを作成します。

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

引数は次のとおりです。

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

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

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

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

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

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

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

domain-qualified-hostname. IN A mapped-address
 

domain-qualified-hostname は、server.example.com のようにドメイン サフィクスを付けたホスト名です。ホスト名の後ろのピリオドは重要です。 mapped-address は、Web サーバの変換後の IP アドレスです。


 

次の例では、図 22-5 の事例の FWSM を設定しています。DNS 検査はすでにイネーブルになっていることが前提です。

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

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

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

server.example.com. IN A 209.165.200.225
 

DNS 検査の設定

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

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 トラフィックの検査を開始します。


 

例 22-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 アドレスに置き換えられる場合があります。

ある 2 つのホストの間に複数の DNS セッションがある場合、これらのセッションに対して作成される接続は 1 つです。また、これらのセッションは同一の 5 つのタプル(送信元/宛先 IP アドレス、送信元/宛先ポート、およびプロトコル)を持ちます。追跡用の DNS ID は 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 検査によって次の動作が適用されます。

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

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

227 コマンドおよび PORT コマンドは、これらのコマンドがエラー ストリング内に表示されないようにするためにチェックされます。


注意 strict オプションを使用すると、FTP RFC に厳密に準拠していない FTP クライアントは失敗することがあります。

strict オプションがイネーブルの場合、次の異常なアクティビティに関して、各 ftp コマンドと応答シーケンスが追跡されます。

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

不正なコマンド: ftp コマンドが、RFC で要求されているとおりに <CR><LF> 文字で終了しているかどうかがチェックされます。これらの文字で終了していない場合、接続は閉じられます。

RETR および STOR コマンドのサイズ:これらのコマンドのサイズが固定値と照合されます。サイズが固定値より大きい場合、エラー メッセージがログに記録され、接続は閉じられます。

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

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

TCP ストリーム編集:FWSM は、TCP ストリーム編集を検出した場合に接続が閉じられます。

無効なポートのネゴシエーション:ネゴシエートされたダイナミック ポートの値が 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 検査をイネーブルにするときにそのマップを使用する必要があります。

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

.

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

request-command deny オプション
目的

appe

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

cdup

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

dele

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

get

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

help

ヘルプ情報を表示するコマンドを禁止します。

mkd

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

put

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

rmd

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

rnfr

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

rnto

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

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 コマンドのリストについては、表 22-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 マップを定義し、ポリシーを定義し、そのポリシーを外部インターフェイスに適用する例を示します。

例 22-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 であり、取得および保管コマンドがログに記録されるか確認されます。

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

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

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

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

GTP 検査

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

「GTP 検査の概要」

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

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

「GTP 検査の確認とモニタリング」

「GGSN ロード バランシング」

「GTP の設定例」


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


GTP 検査の概要

General Packet Radio Service(GPRS)は、GSM ネットワークと企業ネットワーク、またはインターネットの間で、携帯電話加入者に連続した接続を提供します。GGSN は、GPRS 無線データ ネットワークと他のネットワークとの間のインターフェイスです。SGSN は、モビリティ、データ セッション管理、およびデータ圧縮を実行します(図 22-6 を参照)。

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

 

UMTS は、固定回線テレフォニー、モバイル、インターネット、コンピュータ テクノロジーの商用コンバージェンスです。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

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

 

表 22-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 マップ コンフィギュレーション モード コマンドを使用します。コマンド リストについては、表 22-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 トラフィックの検査を開始します。


 

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

例 22-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 』のコマンドのページを参照してください。

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

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

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

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

hostname# show service-policy inspect gtp pdp-context detail
1 in use, 1 most used, timeout 0:00:00
 
Version TID MS Addr SGSN Addr Idle APN
v1 1234567890123425 10.0.1.1 10.0.0.2 0:00:13 gprs.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 コンテキストは、IMSI と NSAPI の値の組み合わせであるトンネル ID によって識別されます。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 への応答を許可するように設定されています。

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

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

図 22-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 パケット ゲートウェイ アプリケーションが実行されています。

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

図 22-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 は、LAN 上でのマルチメディア会議について国際電気通信連合が定義しているプロトコルのスイートです。FWSM は、One Call Signaling Channel 上の Multiple Calls の H.323 v3 機能など、バージョン 4 までの H.323 をサポートしています。また、H.323 Gatekeeper Update Protocol(GUP)検査もサポートされています。GUP はシスコ独自のプロトコルであるため、H.323-GUP 検査は、Cisco Gatekeeper デバイスが採用されているトポロジーにだけ関連します。

H.323 検査がイネーブルの場合、FWSM は、H.323 バージョン 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 メッセージを検査してこれらのポートを識別し、メディア交換用にダイナミックに接続を作成します。RTP はネゴシエートされたポート番号を使用し、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 は ACF メッセージの検査に基づいて H.225 接続を開きます。

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

H.323 ITU 標準では、信頼できる接続に送信する前に、メッセージ長を定義する TPKT ヘッダーを H.225 および H.245 の前に配置することが規定されています。TPKT ヘッダーは、必ずしも H.225 メッセージや H.245 メッセージと同一の TCP パケットで送信される必要はないため、FWSM は、メッセージを正しく処理して復号化するために TPKT 長を記憶しておく必要があります。FWSM は、次のメッセージに備えて、TPKT 長が含まれるレコードを接続ごとに保持します。

FWSM でメッセージ内の IP アドレスに NAT を行う必要がある場合、チェックサム、UUIE 長、および TPKT(H.225 メッセージが入っている TCP パケットに含まれている場合)は変更されます。TPKT が別の TCP パケットで送信される場合、FWSM がその TPKT へのプロキシ ACK を実行し、新しい TPKT を新しい長さで H.245 メッセージに追加します。


) 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 設定が必要です(図 22-8 を参照)。

図 22-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 グループを含めることができます。 表 22-5 に、H.225 マップ コンフィギュレーション モードで利用可能なコマンドを示します。

 

表 22-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 トラフィックの検査を開始します。


 

例 22-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)#
 

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

例 22-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 つあり、そのコールの CRV が 9861 であることを示しています。

ローカル エンドポイント 10.130.56.4 と外部ホスト 172.30.254.205 に対して、同時コールは 0 です。これは、エンドポイント間に H.225 セッションが存在していても、アクティブなコールは存在しないことを意味しています。この状況は、 show h225 コマンドの実行時にコールはすでに終了しているが、H.225 セッションがまだ削除されていない場合に発生することがあります。または、2 つのエンドポイントが「maintainConnection」を TRUE に設定しているため、エンドポイント間の TCP 接続がまだ開いたままになっていることを意味する可能性もあります。したがって、2 つのエンドポイントが「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 を越える 1 つの H.245 コントロール セッションがアクティブです。ローカル エンドポイントは 10.130.56.3 で、TPKT 値が 0 のため、このエンドポイントからの次のパケットが TPKT ヘッダーを持つことが予想されます。TKTP ヘッダーは、各 H.225/H.245 メッセージの前に送られる 4 バイトのヘッダーです。このヘッダーで、この 4 バイトのヘッダーを含むメッセージの長さがわかります。外部のホストのエンドポイントは、172.30.254.203 であり、TPKT 値が 0 であることから、このエンドポイントからの次のパケットには TPKT ヘッダーがあると予測します。

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

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

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

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

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

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

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

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

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

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

 

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

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

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


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


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

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

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

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

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

このクラスマップで特定するトラフィックに対して、ドロップ、接続のドロップ、リセット、マスク、レート制限の設定、接続のロギングなどのアクションを検査ポリシーマップに指定できます。

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

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

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

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

b. (任意)クラスマップに説明を追加するには、次のコマンドを使用します。

hostname(config-cmap)# description string
 

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

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

d. (任意)HTTP 要求メッセージの引数に含まれるテキストを照合するには、次のコマンドを入力します。

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

regex_name には、ステップ 1 で作成した正規表現を指定します。 class regex_class_name には、ステップ 2 で作成した正規表現のクラスマップを指定します。

e. (任意)HTTP 要求メッセージ本文に含まれるテキストを照合するか、または 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 ポート番号)に返送されますが、コマンドの宛先と同じアドレスから応答が戻されるとはかぎりません。これは、フェールオーバー コンフィギュレーションで複数のコール エージェントが使用されており、コマンドを受信したコール エージェントがバックアップ コール エージェントに制御を渡した後、バックアップ コール エージェントが応答を送信した場合に発生する可能性があります。 図 22-11 に、MGCP でどのように NAT が使用されるかを示します。

図 22-11 NAT と MGCP の使用

 

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

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

CreateConnection

ModifyConnection

DeleteConnection

NotificationRequest

Notify

AuditEndpoint

AuditConnection

RestartInProgress

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

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

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

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

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


) MGCP 検査では、MGCP シグナリングと RTP データで異なる IP アドレスを使用することはサポートされていません。一般的かつ推奨される方法は、ループバック IP アドレスや仮想 IP アドレスなどの復元力のある IP アドレスから RTP データを送信することです。ただし、FWSM は、MGCP シグナリングと同じアドレスから RTP データを受信する必要があります。


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

1 つ以上のゲートウェイを管理できるコール エージェントのグループを指定するには、 call-agent コマンドを使用します。コール エージェントのグループの情報は、このグループ内のコール エージェント(ゲートウェイがコマンドを送信する先のコール エージェント以外)の接続を開くために使用され、すべてのコール エージェントが応答を送信できるようになります。同じ group_id を持つコール エージェントは、同じグループに属します。1 つのコール エージェントが複数のグループに属する場合もあります。 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 つのゲートウェイは 1 つのグループにしか所属できません。


) MGCP コール エージェントは AUEP メッセージを送信して、MGCP エンド ポイントが存在するかどうかを確認します。これにより、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 トラフィックの検査を開始します。


 

例 22-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 です。その後、サービス ポリシーは外部インターフェイスに適用されます。

例 22-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 にはキープアライブ メカニズムがないため、Cisco 以外の MGCP ゲートウェイ(コール エージェント)を使用すると、デフォルトのタイムアウト間隔(30 秒)の後で PAT xlate は切断されます。

MGCP 検査の確認とモニタリング

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

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

次に、 show mgcp 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 の設定例

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

図 22-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 アプリケーションは、コントロール チャネルとして、既知のポート 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 クローキングを認識する機能はありません。

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

Cisco IP/TV の場合、FWSM がメッセージの SDP 部分に対して実行する NAT の数は、Content Manager のプログラム リストの数に比例します(プログラム リストごとに少なくとも 6 個の埋め込み IP アドレスを設定できます)。

Apple QuickTime 4 または RealPlayer 用の NAT を設定できます。Viewer および Content Manager が外部ネットワーク上にあり、サーバが内部ネットワーク上にある場合、Cisco IP/TV は、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 トラフィックの検査を開始します。

 


 

例 22-11 に、デフォルト ポート(554 および 8554)上で RTSP インスペクション エンジンの RTSP トラフィックをイネーブルにする手順を示します。その後、サービス ポリシーは外部インターフェイスに適用されます。

例 22-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 検査の概要

IETF で定義されている SIP により、特に 2 者間の音声会議などのコール処理セッションまたは「コール」が使用可能になります。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 を適用します。

PAT を SIP で使用する場合、次の制限事項が適用されます。

FWSM で保護されているネットワークの SIP プロキシにリモート エンドポイントを登録しようとすると、次のような一定の条件下で登録が失敗します。

PAT がリモート エンドポイント用に設定されている。

SIP レジストラ サーバが外部ネットワークにある。

エンドポイントからプロキシ サーバに送信された REGISTER メッセージの接続先フィールドにポートが設定されていない。

SDP 部分の所有者/作成者フィールド(o=)の IP アドレスが接続フィールド(c=)の IP アドレスと異なるパケットを SIP デバイスが送信すると、o= フィールドの IP アドレスが正しく変換されない場合があります。これは、o= フィールドでポート値を提供しない SIP プロトコルの制限によるものです。

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

インスタント メッセージングは、ユーザの間でほぼリアルタイムでメッセージを転送することです。SIP は、Windows Messenger RTC Client バージョン 4.7.0105 を使用する Windows XP のチャット機能のみをサポートします。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 分以上長く設定する必要があります。サブスクリプション期間は 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)メッセージでは、予約済みポート 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 を受信したら、メディア接続を削除します。

図 22-13 BYE メッセージに対するメディア接続のクリア

 

図 22-13 では、BYE メッセージに対する 200 OK を受信しない場合、timeout sip-disconnect が発生したときにメディア接続がクリアされます。

図 22-14 CANCEL メッセージに対するメディア接続のクリア

 

図 22-14 では、CANCEL メッセージに対する 200 OK を受信したら、メディア接続がクリアされます。CANCEL SIP メッセージに対する 200 OK を受信しない場合、timeout sip-disconnect が発生したときにメディア接続がクリアされます。

図 22-15 4xx/5xx/6xx SIP メッセージに対するメディア接続のクリア

 

図 22-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 コマンドで指定した値に設定されます。

図 22-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 が 1 つのコールを表します。

最初のセッションは call-id c3943000-960ca-2e43-228f@10.130.56.44 で、Call Init 状態にあります。これは、このセッションがまだコール設定中であることを示しています。コール セットアップは、コールへの最後の応答が受信されるまでは完了しません。たとえば、発信者はすでに INVITE を送信して、100 Response を受信した可能性がありますが、200 OK はまだ受信していません。したがって、コール セットアップはまだ完了していません。1xx で始まっていない応答メッセージは最後の応答と考えられます。このセッションは、1 秒間アイドル状態になっていました。

2 番めのセッションは Active 状態です。この状態ではコール設定が完了し、エンドポイントがメディアを交換しています。このセッションは、6 秒間アイドル状態になっていました。

SIP の設定例

図 22-17 に、SIP 検査の設定例を示します。

図 22-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 Phones は、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 電話のグローバル IP アドレスよりも IP 電話の数が多い場合に必要です。Skinny アプリケーション検査は、SCCP シグナリング パケットの NAT と PAT をサポートすることで、すべての SCCP シグナリング パケットとメディア パケットが FWSM を通過できるようにします。

Cisco CallManager と Cisco IP Phone 間の通常のトラフィックは SCCP を使用し、特殊な設定なしで SCCP 検査によって処理されます。FWSM は、TFTP サーバの場所を Cisco IP Phone とその他の DHCP クライアントに送信することで、DHCP オプション 150 および 66 もサポートします。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 CallManager サーバへの接続に必要なコンフィギュレーション情報をダウンロードするために、Cisco IP Phone には TFTP サーバへのアクセス権が必要です。

Cisco IP Phone が TFTP サーバと比べてよりセキュリティの低いインターフェイスに配置されている場合、アクセス リストを使用して、保護されている TFTP サーバに UDP ポート 69 で接続する必要があります。TFTP サーバに対してはスタティック アイデンティティ エントリが必要ですが、アイデンティティ スタティック エントリにする必要はありません。NAT を使用する場合、スタティック アイデンティティ エントリは同じ IP アドレスにマッピングされます。PAT を使用する場合は、同じ IP アドレスとポートにマッピングされます。

TFTP サーバおよび Cisco CallManager と比較して Cisco IP Phone の方がセキュリティの高いインターフェイス上にある場合、Cisco IP Phone で接続を開始するためにアクセス リストもスタティック アイデンティティ エントリも必要ありません。

制限事項

次に、SCCP に対する現バージョンの PAT および NAT のサポートに適用される制限を示します。

PAT は、alias コマンドを含むコンフィギュレーションでは動作しません。

外部 NAT または PAT はサポート されていません

内部の Cisco CallManager のアドレスが NAT または PAT 用に別の IP アドレスかポートを設定している場合、FWSM は現在のところ TFTP を経由して転送するファイルの内容に対して NAT または PAT をサポートしていないため、外部の Cisco IP Phone 用の登録は失敗します。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
 


 

例 22-12 に示すように、SCCP インスペクション エンジンをイネーブルにし、デフォルト ポート(2000)の SCCP トラフィックと一致するクラス マップを作成します。その後、サービス ポリシーは外部インターフェイスに適用されます。

例 22-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 コマンドの出力例を示します。2 つのアクティブな Skinny セッションが FWSM に設定されています。最初のセッションは、ローカル アドレス 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
 

この出力は、2 つの内部 Cisco IP Phone 間でコールが確立されていることを示します。最初の電話機と 2 番めの電話機の RTP リスニング ポートは、それぞれ UDP 22948 および 20798 です。

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

hostname# show xlate debug
2 in use, 2 most used
Flags: D - DNS, d - dump, I - identity, i - inside, n - no random,
r - portmap, s - static
NAT from inside:10.0.0.11 to outside:172.18.1.11 flags si idle 0:00:16 timeout 0:05:00
NAT from inside:10.0.0.22 to outside:172.18.1.22 flags si idle 0:00:14 timeout 0:05:00
 

SCCP(Skinny)の設定例

図 22-18 に、SCCP(Skinny)検査の設定例を示します。

図 22-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 バナーの文字をアスタリスクに変更します。復帰(CR)文字および改行(LF)文字は無視されます。

SMTP 検査をイネーブルにする場合、次の規則に従わないと、対話型の SMTP に使用する Telnet セッションが停止することがあります。SMTP コマンドの長さは 4 文字以上にする必要があります。復帰と改行で終了する必要があります。次の応答を発行する前に現在の応答を待機する必要があります。

SMTP サーバは、クライアントの要求に対して、数値の応答コードおよび任意の判読可能文字列を使用して応答します。SMTP アプリケーション検査によって、ユーザが使用できるコマンドとサーバが返すメッセージが制御および削減されます。SMTP 検査は、次の 3 つの主要なタスクを実行します。

SMTP 要求を 7 つの基本的な SMTP コマンドと 8 つの拡張コマンドに制限します。

SMTP コマンド応答シーケンスをモニタします。

監査証跡を生成します。メール アドレスに組み込まれていた無効な文字が置き換えられると、監査レコード 108002 が生成されます。詳細については、RFC 821 を参照してください。

SMTP 検査は、コマンドおよび応答シーケンスをモニタして、次の異常なシグニチャを検出します。

不完全なコマンド。

コマンドの不正な終了(<CR><LR> で終わっていない)。

MAIL コマンドと RCPT コマンドでは、メールの送信者と受信者が指定されます。異常な文字がないか、メール アドレスがスキャンされます。パイプ(|)が削除(空白スペースに変更)され、「<」および「>」については、メール アドレスの定義に使用される場合だけ許可されます(「<」の後には、必ず「>」が使用されている必要があります)。

SMTP サーバによる予期しない移行。

未知のコマンドがあると、FWSM はパケット内のすべての文字を X に変更します。この場合、サーバがクライアントに対してエラー コードを生成します。パケット内が変更されているため、TCP チェックサムは、再計算または調節する必要があります。

TCP ストリームの編集。

コマンドのパイプライン化。


) FWSM は、着信トラフィックでのみ SMTP および Extended SMTP Inspection をサポートします。つまり、FWSM は、低いセキュリティ レベルから高いセキュリティ レベルへのトラフィックの検査をサポートします。


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 トラフィックの検査を開始します。


 

例 22-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 トラフィックの検査を開始します。


 

例 22-14 は、外部インターフェイスから TCP ポート 161 および 162 に送信されたトラフィック上で SNMP アプリケーション検査をイネーブルにします。

例 22-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 および NIS で使用されます。Sun RPC サービスはどのポート上でも実行できます。サーバ上の Sun RPC サービスにアクセスしようとするクライアントは、そのサービスが実行されているポートを知る必要があります。そのためには、予約済みポート 111 でポート マッパー プロセス(通常は rpcbind)に照会します。

クライアントがサービスの Sun RPC プログラム番号を送信すると、ポート マッパー プロセスはサービスのポート番号を応答します。クライアントは、ポート マッパー プロセスによって特定されたポートを指定して、Sun RPC クエリーをサーバに送信します。サーバが応答すると、FWSM はこのパケットを代行受信し、そのポートで TCP と UDP の両方の初期接続を開きます。


) Sun RPC Inspection は、XLATE BYPASS 機能ではサポートされていません。これは、Sun RPC Inspection が XLATES に基づいて機能し、XLATE BYPASS 機能により Sun RPC Inspection が正しく機能できないためです。xlate-bypass コマンドの詳細については、『Catalyst 6500 Series Switch and Cisco 7600 Series Router Firewall Services Module Command Reference』を参照してください。



Sun RPC ペイロード情報の NAT または PAT はサポートされていません。


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

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


) UDP 上で Sun RPC 検査をイネーブルにしたり設定したりするには、別のトラフィック クラスまたは新しいポリシー マップを定義する必要はありません。単に inspect sunrpc コマンドをポリシー マップに追加します。このポリシー マップのトラフィック クラスはデフォルトのトラフィック クラスによって定義されます。例 22-16(P.22-105) に、この設定の例を示します。


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 トラフィックの検査を開始します。


 

例 22-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)#
 

例 22-16 に、Sun RPC over UDP をイネーブルにする例を示します。これを行うには、アクションをデフォルト トラフィック クラスに適用するポリシー マップに、 inspect sunrpc コマンドを追加します。

例 22-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 アプリケーション検査はポート マッパ サービスへのサービス要求に基づいてトラフィックをイネーブルにしたので、これはオープンしたピンホールを消去します。


) FWSM は、アプリケーション層でのフラグメント化 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
 

この出力では、IP アドレスが 192.168.100.2 で内部インターフェイスにある Sun RPC サーバの UDP ポート 111 で、タイムアウト間隔が 30 分に設定されていることが示されています。

Sun RPC サービス用に開いているピンホールを表示するには、 show sunrpc-server active コマンドを入力します。次に、 show sunrpc-server active コマンドの出力例を示します。

hostname# show sunrpc-server active
LOCAL FOREIGN SERVICE TIMEOUT
-----------------------------------------------
1 209.165.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 コマンド ページを参照してください。