Cisco ASA 5500 シリーズ コンフィギュレーション ガイド(CLI8.2 を使用)
アプリケーション レイヤ プロトコル検査の準 備
アプリケーション レイヤ プロトコル検査の準備
発行日;2012/02/01 | 英語版ドキュメント(2011/09/19 版) | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 21MB) | フィードバック

目次

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

アプリケーション レイヤ プロトコル検査に関する情報

検査エンジンの動作

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

ガイドラインと制限事項

デフォルト設定

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

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

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

この章には、次の項があります。

「アプリケーション レイヤ プロトコル検査に関する情報」

「ガイドラインと制限事項」

「デフォルト設定」

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

アプリケーション レイヤ プロトコル検査に関する情報

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

「検査エンジンの動作」

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

検査エンジンの動作

図 40-1 に示されているように、適応型セキュリティ アプライアンスは基本動作に 3 種類のデータベースを使用します。

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

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

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

図 40-1 検査エンジンの動作

 

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

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

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

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

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

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

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

7. 適応型セキュリティ アプライアンスは応答パケットを受信し、接続データベースで接続を検索して、確立済みのセッションに属しているのでパケットを転送します。

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

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

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

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

パケットに IP アドレスを埋め込むアプリケーションもあります。この IP アドレスは送信元アドレスと一致する必要があり、通常、適応型セキュリティ アプライアンスを通過するときに変換されます。

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

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

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

 

ガイドラインと制限事項

この項では、この機能のガイドラインと制限事項について説明します。

コンテキスト モードのガイドライン

シングルコンテキスト モードとマルチコンテキスト モードでサポートされています。

ファイアウォール モードのガイドライン

ルーテッド ファイアウォール モードと透過ファイアウォール モードでサポートされています。

フェールオーバーのガイドライン

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

IPv6 のガイドライン

IPv6 は次の検査でサポートされています。

FTP

HTTP

ICMP

SIP

SMTP

IPSec パススルー

その他のガイドラインと制限事項

一部の検査エンジンは、Port Address Translation(PAT; ポート アドレス交換)、Network Address Translation(NAT; ネットワーク アドレス変換)、外部 NAT、または同一セキュリティ インターフェイス間の NAT をサポートしません。NAT サポートの詳細については、「デフォルト設定」を参照してください。

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

デフォルト設定

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

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

 

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

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

CTIQBE

TCP/2748

--

--

--

DNS over UDP

UDP/53

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

RFC 1123

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

FTP

TCP/21

--

RFC 959

--

GTP

UDP/3386
UDP/2123

--

--

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

H.323 H.225 および RAS

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

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

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

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

--

HTTP

TCP/80

--

RFC 2616

ActiveX と Java を除去する場合の Maximum Transmission Unit(MTU; 最大伝送ユニット)制限に注意してください。MTU が小さすぎて Java タグまたは ActiveX タグを 1 つのパケットに納められない場合は、除去の処理は行われません。

ICMP

--

--

--

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

ICMP ERROR

--

--

--

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

ILS(LDAP)

TCP/389

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

--

--

IPSec パススルー

 

 

 

 

MGCP

UDP/2427、2727

--

RFC 2705bis-05

--

NetBIOS Name Server over IP

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

--

--

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

PPTP

TCP/1723

--

RFC 2637

--

RADIUS Accounting

1646

--

RFC 2865

--

RSH

TCP/514

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

Berkeley UNIX

--

RTSP

TCP/554

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

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

RFC 2326、2327、1889

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

SIP

TCP/5060
UDP/5060

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

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

RFC 3261

--

SKINNY(SCCP)

TCP/2000

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

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

--

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

SMTP および ESMTP

TCP/25

--

RFC 821、1123

--

SNMP

UDP/161、162

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

RFC 1155、1157、1212、1213、1215

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

SQL*Net

TCP/1521

--

--

v.1 および v.2

Sun RPC over UDP および TCP

UDP/111

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

--

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

TFTP

UDP/69

--

RFC 1350

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

WAAS

 

 

 

 

XDCMP

UDP/177

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

--

--

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

2.適応型セキュリティ アプライアンスは、これらの標準に準拠していますが、検査対象のパケットには準拠を強制しません。たとえば、各 FTP コマンドは特定の順序である必要がありますが、適応型セキュリティ アプライアンスによってその順序を強制されることはありません。

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

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

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

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

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

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


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

通過トラフィックのデフォルトのレイヤ 3/4 クラスマップの名前は「inspection_default」です。このクラスマップは、特殊な match コマンド( match default-inspection-traffic )を使用して、トラフィックを各アプリケーション プロトコルのデフォルト ポートと照合します。このトラフィック クラスは(検査には通常使用されない match any とともに)、IPv6 をサポートする検査について IPv4 および IPv6 トラフィックの両方を照合します。IPv6 がイネーブルな検査のリストについては、「ガイドラインと制限事項」を参照してください。

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


ヒント トラフィック検査は、アプリケーション トラフィックが発生するポートだけで行うことをお勧めします。match any などを使用してすべてのトラフィックを検査すると、適応型セキュリティ アプライアンスのパフォーマンスに影響が出る場合があります。


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hostname(config-pmap-c)# inspect protocol
 

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

 

表 40-2 protocol のキーワード

キーワード

ctiqbe

--

dcerpc [ map_name ]

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

dns [ map_name ]

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

esmtp [ map_name ]

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

ftp [ strict [ map_name ]]

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

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

gtp [ map_name ]

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

h323 h225 [ map_name ]

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

h323 ras [ map_name ]

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

http [ map_name ]

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

icmp

--

icmp error

--

ils

--

im [ map_name ]

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

mgcp [ map_name ]

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

netbios [ map_name ]

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

pptp

--

radius-accounting [ map_name ]

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

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

rsh

--

rtsp [ map_name ]

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

sip [ map_name ]

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

skinny [ map_name ]

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

snmp [ map_name ]

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

sqlnet

--

sunrpc

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

tftp

--

xdmcp

--

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

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

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