Cisco ASA シリーズ CLI コンフィギュレーション ガイド ASA 5505、ASA 5510、ASA 5520、ASA 5540、ASA 5550、ASA 5512-X、ASA 5515-X、ASA 5525-X、ASA 5545-X、ASA 5555-X、ASA 5580、ASA5585-X、および ASA サービス モジュール用ソフトウェア バージョン 9.0
アプリケーション レイヤ プロトコル インスペクションの準備
アプリケーション レイヤ プロトコル インスペクションの準備
発行日;2013/04/17 | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 27MB) | フィードバック

目次

アプリケーション レイヤ プロトコル インスペクションの準備

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

インスペクション エンジンの動作

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

ガイドラインと制限事項

デフォルト設定

アプリケーション レイヤ プロトコル インスペクションの設定

アプリケーション レイヤ プロトコル インスペクションの準備

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

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

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

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

「デフォルト設定」

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

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

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

「インスペクション エンジンの動作」

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

インスペクション エンジンの動作

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

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

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

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

図 46-1 インスペクション エンジンの動作

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ガイドラインと制限事項

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

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

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

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

ルーテッド ファイアウォール モードとトランスペアレント ファイアウォール モードでサポートされています。

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

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

IPv6 のガイドライン

IPv6 は次のインスペクションでサポートされています。

DNS

FTP

HTTP

ICMP

SIP

SMTP

IPSec パススルー

IPv6

NAT64 は次のインスペクションでサポートされています。

DNS

FTP

HTTP

ICMP

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

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

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

検査対象のプロトコルは高度な TCP ステート トラッキングの対象となり、これらの接続の TCP ステートは自動的には複製されません。スタンバイ装置への接続は複製されますが、TCP ステートを再確立するベスト エフォート型の試行が行われます。

デフォルト設定

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

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

 

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

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

CTIQBE

TCP/2748

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

NAT64 なし。

--

--

DCERPC

TCP/135

NAT64 なし。

--

--

DNS over UDP

UDP/53

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

RFC 1123

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

FTP

TCP/21

--

RFC 959

--

GTP

UDP/3386
UDP/2123

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

NAT64 なし。

--

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

H.323 H.225 および RAS

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

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

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

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

NAT64 なし。

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

--

HTTP

TCP/80

--

RFC 2616

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

ICMP

--

--

--

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

ICMP ERROR

--

--

--

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

ILS(LDAP)

TCP/389

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

NAT64 なし。

--

--

Instant Messaging(IM; インスタント メッセージ)

クライアントにより異なる

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

NAT64 なし。

RFC 3860

--

IP オプション

--

NAT64 なし。

RFC 791、RFC 2113

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

MGCP

UDP/2427、2727

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

NAT64 なし。

RFC 2705bis-05

--

MMP

TCP 5443

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

NAT64 なし。

--

--

NetBIOS Name Server over IP

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

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

NAT64 なし。

--

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

PPTP

TCP/1723

NAT64 なし。

RFC 2637

--

RADIUS Accounting

1646

NAT64 なし。

RFC 2865

--

RSH

TCP/514

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

NAT64 なし。

Berkeley UNIX

--

RTSP

TCP/554

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

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

NAT64 なし。

RFC 2326、2327、1889

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

ScanSafe

TCP/80
TCP/413

--

--

これらのポートは、ScanSafe インスペクションの default-inspection-traffic クラスには含まれません。

SIP

TCP/5060
UDP/5060

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

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

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

NAT64 なし。

RFC 2543

--

SKINNY(SCCP)

TCP/2000

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

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

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

NAT64 なし。

--

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

SMTP および ESMTP

TCP/25

NAT64 なし。

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

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

NAT64 なし。

--

v.1 および v.2

Sun RPC over UDP および TCP

UDP/111

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

NAT64 なし。

--

デフォルトのルールには UDP ポート 111 が含まれています。TCP ポート 111 の Sun RPC インスペクションをイネーブルにする場合は、TCP ポート 111 を照合する新しいルールを作成し、Sun RPC インスペクションを実行する必要があります。

TFTP

UDP/69

NAT64 なし。

RFC 1350

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

WAAS

--

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

NAT64 なし。

--

--

XDCMP

UDP/177

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

NAT64 なし。

--

--

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

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

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

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
 

アプリケーション レイヤ プロトコル インスペクションの設定

この機能は、モジュラ ポリシー フレームワークを使用してサービス ポリシーを作成します。サービス ポリシーでは、一貫性と柔軟性を備えた方法で ASA 機能を設定できます。たとえば、サービス ポリシーを使用すると、すべての TCP アプリケーションに適用されるタイムアウト コンフィギュレーションではなく、特定の TCP アプリケーションに固有のタイムアウト コンフィギュレーションを作成できます。詳細については、を参照してください。アプリケーションによっては、インスペクションをイネーブルにすると特別なアクションを実行できるものがあります。詳細については、を参照してください。

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

手順の詳細


ステップ 1 検査するトラフィックを特定するには、通過トラフィック用または管理トラフィック用のレイヤ 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 などを使用してすべてのトラフィックを検査すると、ASA のパフォーマンスに影響が出る場合があります。


標準以外のポートを照合する場合は、標準以外のポート用に新しいクラス マップを作成してください。各インスペクション エンジンの標準ポートについては、「デフォルト設定」を参照してください。必要に応じて同じポリシー内に複数のクラス マップを組み合わせることができるため、照合するトラフィックに応じたクラス マップを作成することができます。ただし、トラフィックがインスペクション コマンドを含むクラス マップと一致し、その後同様にインスペクション コマンドを含む別のクラス マップとも一致した場合、最初に一致したクラスだけが使用されます。たとえば、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:を参照してください。

DNS:を参照してください。

ESMTP:を参照してください。

FTP:を参照してください。

GTP:を参照してください。

H323:を参照してください。

HTTP:を参照してください。

インスタント メッセージ:を参照してください。

IP オプション:を参照してください。

MGCP:を参照してください。

NetBIOS:を参照してください。

RADIUS アカウンティング:を参照してください。

RTSP:を参照してください。

SIP:を参照してください。

Skinny:を参照してください。

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 には、次のいずれかの値を指定します。

 

表 46-2 protocol のキーワード

キーワード
注釈

ctiqbe

--

dcerpc [ map_name ]

に従って DCERPC インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

dns [ map_name ] [ dynamic-filter-snoop ]

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

ボットネット トラフィック フィルタの DNS スヌーピングをイネーブルにするには、 dynamic-filter-snoop キーワードを入力します。詳細については、を参照してください。

esmtp [ map_name ]

に従って ESMTP インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

ftp [ strict [ map_name ]]

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

に従って FTP インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

gtp [ map_name ]

に従って GTP インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

h323 h225 [ map_name ]

に従って H323 インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

h323 ras [ map_name ]

に従って H323 インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

http [ map_name ]

に従って HTTP インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を指定します。

icmp

--

icmp error

--

ils

--

im [ map_name ]

に従ってインスタント メッセージ インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

ip-options [ map_name ]

に従って IP オプション インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

mgcp [ map_name ]

に従って MGCP インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

netbios [ map_name ]

に従って NetBIOS インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

pptp

--

radius-accounting [ map_name ]

radius-accounting キーワードは、管理クラス マップだけで使用できます。管理クラス マップの作成の詳細については、を参照してください。

に従って RADIUS アカウンティング インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

rsh

--

rtsp [ map_name ]

に従って RTSP インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

sip [ map_name ]

に従って SIP インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

skinny [ map_name ]

に従って Skinny インスペクション ポリシー マップを追加した場合は、このコマンドでマップ名を特定します。

snmp [ map_name ]

に従って 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 つだけ適用できます。