アプリケーション レイヤ プロトコル インスペクション
インスペクション エンジンは、ユーザのデータ パケット内に IP アドレッシング情報を埋め込むサービスや、ダイナミックに割り当てられるポート上でセカンダリ チャネルを開くサービスに必要です。これらのプロトコルでは、高速パスでパケットを渡すのではなく、ASA で詳細なパケット インスペクションを行う必要があります。そのため、インスペクション エンジンがスループット全体に影響を与えることがあります。ASA では、デフォルトでいくつかの一般的なインスペクション エンジンがイネーブルになっていますが、ネットワークによっては他のインスペクション エンジンをイネーブルにしなければならない場合があります。
次のトピックで、アプリケーション インスペクションについて詳しく説明します。
アプリケーション プロトコル インスペクションを使用するタイミング
ユーザが接続を確立すると、ASA は ACL と照合してパケットをチェックし、アドレス変換を作成し、高速パスでのセッション用にエントリを作成して、後続のパケットが時間のかかるチェックをバイパスできるようにします。ただし、高速パスは予測可能なポート番号に基づいており、パケット内部のアドレス変換を実行しません。
多くのプロトコルは、セカンダリの TCP ポートまたは UDP ポートを開きます。既知のポートで初期セッションが使用され、動的に割り当てられたポート番号がネゴシエーションされます。
パケットに IP アドレスを埋め込むアプリケーションもあります。この IP アドレスは送信元アドレスと一致する必要があり、通常、ASA を通過するときに変換されます。
これらのアプリケーションを使用する場合は、アプリケーション インスペクションをイネーブルにする必要があります。
IP アドレスを埋め込むサービスに対してアプリケーション インスペクションをイネーブルにすると、ASA は埋め込まれたアドレスを変換し、チェックサムや変換の影響を受けたその他のフィールドを更新します。
ダイナミックに割り当てられたポートを使用するサービスに対してアプリケーション インスペクションをイネーブルにすると、ASA はセッションをモニタしてダイナミックに割り当てられたポートを特定し、所定のセッションの間、それらのポートでのデータ交換を許可します。
インスペクション ポリシー マップ
インスペクション ポリシー マップを使用して、多くのアプリケーション インスペクションで実行される特別なアクションを設定できます。これらのマップはオプションです。インスペクション ポリシー マップをサポートするプロトコルに関しては、マップを設定しなくてもインスペクションをイネーブルにできます。デフォルトのインスペクション アクション以外のことが必要な場合にのみ、これらのマップが必要になります。
インスペクション ポリシー マップは、次に示す要素の 1 つ以上で構成されています。インスペクション ポリシー マップで使用可能な実際のオプションは、アプリケーションに応じて決まります。
-
トラフィック照合基準:アプリケーション トラフィックをそのアプリケーションに固有の基準(URL 文字列など)と照合し、その後アクションをイネーブルにできます。
一部のトラフィック照合基準では、正規表現を使用してパケット内部のテキストを照合します。ポリシー マップを設定する前に、正規表現クラス マップ内で、正規表現を単独またはグループで作成およびテストしておいてください。
-
インスペクション クラス マップ:一部のインスペクション ポリシー マップでは、インスペクション クラス マップを使用して複数のトラフィック照合基準を含めることができます。その後、インスペクション ポリシー マップ内でインスペクション クラス マップを指定し、そのクラス全体でアクションをイネーブルにします。クラス マップを作成することと、インスペクション ポリシー マップ内で直接トラフィック照合を定義することの違いは、より複雑な一致基準を作成できる点と、クラス マップを再使用できる点です。ただし、異なる照合基準に対して異なるアクションを設定することはできません。
-
パラメータ:パラメータは、インスペクション エンジンの動作に影響します。
次のトピックで、詳細に説明します。
使用中のインスペクション ポリシー マップの交換
サービス ポリシーのポリシー マップでインスペクションが有効になっている場合、ポリシー マップの交換は 2 つのステップからなるプロセスです。最初に、インスペクションを削除する必要があります。次に、新しいポリシー マップ名でそれを再度追加します。
たとえば、SIP インスペクションで sip-map1 を sip-map2 と交換するには、次のコマンド シーケンスを使用します。
hostname(config)# policy-map test
hostname(config-pmap)# class sip
hostname(config-pmap-c)# no inspect sip sip-map1
hostname(config-pmap-c)# inspect sip sip-map2
複数のトラフィック クラスの処理方法
インスペクション ポリシー マップには、複数のインスペクション クラス マップや直接照合を指定できます。
1 つのパケットが複数の異なるクラスまたはダイレクト マッチに一致する場合、ASA がアクションを適用する順序は、インスペクション ポリシー マップにアクションが追加された順序ではなく、ASA の内部ルールによって決まります。内部ルールは、アプリケーションのタイプとパケット解析の論理的進捗によって決まり、ユーザが設定することはできません。HTTP トラフィックの場合、Request Method フィールドの解析が Header Host Length フィールドの解析よりも先に行われ、Request Method フィールドに対するアクションは Header Host Length フィールドに対するアクションより先に行われます。たとえば、次の match コマンドは任意の順序で入力できますが、match request method get コマンドが最初に照合されます。
match request header host length gt 100
reset
match request method get
log
アクションがパケットをドロップすると、インスペクション ポリシー マップではそれ以降のアクションは実行されません。たとえば、最初のアクションが接続のリセットである場合、それ以降の照合基準との照合は行われません。最初のアクションがパケットのログへの記録である場合、接続のリセットなどの 2 番目のアクションは実行されます
パケットが、同一の複数の一致基準と照合される場合は、ポリシー マップ内のそれらのコマンドの順序に従って照合されます。たとえば、ヘッダーの長さが 1001 のパケットの場合は、次に示す最初のコマンドと照合されてログに記録され、それから 2 番目のコマンドと照合されてリセットされます。2 つの match コマンドの順序を逆にすると、2 番目の match コマンドとの照合前にパケットのドロップと接続のリセットが行われ、ログには記録されません。
match request header length gt 100
log
match request header length gt 1000
reset
クラス マップは、そのクラス マップ内で重要度が最低の match オプション(重要度は、内部ルールに基づきます)に基づいて、別のクラス マップまたはダイレクト マッチと同じタイプであると判断されます。クラス マップに、別のクラス マップと同じタイプの重要度が最低の match オプションがある場合、それらのクラス マップはポリシー マップに追加された順序で照合されます。各クラス マップの重要度が最低の照合が異なる場合、重要度が高い match オプションを持つクラス マップが最初に照合されます。たとえば、次の 3 つのクラス マップには、match request-cmd(高重要度)と match filename(低重要度)という 2 つのタイプの match コマンドがあります。ftp3 クラス マップには両方のコマンドが含まれていますが、最低重要度のコマンドである match filename に従ってランク付けされています。ftp1 クラス マップには最高重要度のコマンドがあるため、ポリシー マップ内での順序に関係なく最初に照合されます。ftp3 クラス マップは ftp2 クラス マップと同じ重要度としてランク付けされており、match filename コマンドも含まれています。これらのクラス マップの場合、ポリシー マップ内での順序に従い、ftp3 が照合されてから ftp2 が照合されます。
class-map type inspect ftp match-all ftp1
match request-cmd get
class-map type inspect ftp match-all ftp2
match filename regex abc
class-map type inspect ftp match-all ftp3
match request-cmd get
match filename regex abc
policy-map type inspect ftp ftp
class ftp3
log
class ftp2
log
class ftp1
log
アプリケーション インスペクションのガイドライン
フェールオーバー
インスペクションが必要なマルチメディア セッションのステート情報は、ステートフル フェールオーバーのステート リンク経由では渡されません。ステート リンク経由で複製される GTP、および SIP は例外です。
クラスタ
次のインスペクションはクラスタリングではサポートされていません。
-
CTIQBE
-
H323、H225、および RAS
-
IPsec パススルー
-
MGCP
-
MMP
-
RTSP
-
SCCP(Skinny)
-
WAAS
IPv6
IPv6 は次のインスペクションでサポートされています。
-
Diameter
-
DNS over UDP
-
FTP
-
GTP
-
HTTP
-
ICMP
-
IPSec パススルー
-
IPv6
-
M3UA
-
SCCP(Skinny)
-
SCTP
-
SIP
-
SMTP
-
VXLAN
NAT64 は次のインスペクションでサポートされています。
-
DNS over UDP
-
FTP
-
HTTP
-
ICMP
-
SCTP
その他のガイドライン
-
一部のインスペクション エンジンは、PAT、NAT、外部 NAT、または同一セキュリティ インターフェイス間の NAT をサポートしません。NAT サポートの詳細については、デフォルト インスペクションと NAT に関する制限事項を参照してください。
-
すべてのアプリケーション インスペクションについて、ASA はアクティブな同時データ接続の数を 200 接続に制限します。たとえば、FTP クライアントが複数のセカンダリ接続を開く場合、FTP インスペクション エンジンはアクティブな接続を 200 だけ許可して 201 番目の接続からはドロップし、適応型セキュリティ アプライアンスはシステム エラー メッセージを生成します。
-
検査対象のプロトコルは高度な TCP ステート トラッキングの対象となり、これらの接続の TCP ステートは自動的には複製されません。スタンバイ装置への接続は複製されますが、TCP ステートを再確立するベスト エフォート型の試行が行われます。
-
TCP 接続にインスペクションが必要であるとシステムが判断した場合、システムはそれらのインスペクションの前に、パケット上で MSS および選択的確認応答(SACK)オプションを除き、すべての TCP オプションをクリアします。その他のオプションは、接続に適用されている TCP マップで許可されているとしてもクリアされます。
-
ASA(インターフェイス)に送信される TCP/UDP トラフィックはデフォルトで検査されます。ただし、インターフェイスに送信される ICMP トラフィックは、ICMP インスペクションをイネーブルにした場合でも検査されません。したがって、ASA がバックアップ デフォルト ルートを介して到達できる送信元からエコー要求が送信された場合など、特定の状況下では、インターフェイスへの ping(エコー要求)が失敗する可能性があります。
アプリケーション インスペクションのデフォルト
次のトピックで、アプリケーション インスペクションのデフォルトの動作について説明します。
デフォルト インスペクションと NAT に関する制限事項
デフォルトでは、すべてのデフォルト アプリケーション インスペクション トラフィックに一致するポリシーがコンフィギュレーションに含まれ、すべてのインスペクションがすべてのインターフェイスのトラフィックに適用されます(グローバル ポリシー)。デフォルト アプリケーション インスペクション トラフィックには、各プロトコルのデフォルト ポートへのトラフィックが含まれます。適用できるグローバル ポリシーは 1 つだけなので、グローバル ポリシーを変更する(標準以外のポートにインスペクションを適用する場合や、デフォルトでイネーブルになっていないインスペクションを追加する場合など)には、デフォルトのポリシーを編集するか、デフォルトのポリシーをディセーブルにして新しいポリシーを適用する必要があります。
次の表に、サポートされているすべてのインスペクション、デフォルトのクラス マップで使用されるデフォルト ポート、およびデフォルトでオンになっているインスペクション エンジン(太字)を示します。この表には、NAT に関する制限事項も含まれています。この表の見方は次のとおりです。
-
デフォルト ポートに対してデフォルトでイネーブルになっているインスペクション エンジンは太字で表記されています。
-
ASA は、これらの指定された標準に準拠していますが、検査対象のパケットには準拠を強制しません。たとえば、各 FTP コマンドは特定の順序である必要がありますが、ASA によってその順序を強制されることはありません。
アプリケーション |
デフォルト プロトコル、ポート |
NAT に関する制限事項 |
標準 |
注 |
---|---|---|---|---|
CTIQBE |
TCP/2748 |
拡張 PAT はサポートされません。 NAT64 なし。 (クラスタリング)スタティック PAT はサポートされません。 |
— |
— |
DCERPC |
TCP/135 |
NAT64 なし。 |
— |
— |
Diameter |
TCP/3868 TCP/5868(TCP/TLS 用) SCTP/3868 |
NAT/PAT なし。 |
RFC 6733 |
キャリア ライセンスが必要です。 |
DNS over UDP DNS over TCP |
UDP/53 TCP/53 |
NAT サポートは、WINS 経由の名前解決では使用できません。 |
RFC 1123 |
DNS over TCP のインスペクションを実行するには、DNS インスペクション ポリシー マップで DNS/TCP インスペクションを有効にする必要があります。 |
FTP |
TCP/21 |
(クラスタリング)スタティック PAT はサポートされません。 |
RFC 959 |
— |
GTP |
UDP/3386 (GTPv0) UDP/2123(GTPv1+) |
拡張 PAT はサポートされません。 NAT なし。 |
— |
キャリア ライセンスが必要です。 |
H.323 H.225 および RAS |
TCP/1720 UDP/1718 UDP(RAS)1718 ~ 1719 |
(クラスタリング)スタティック PAT なし。 拡張 PAT はサポートされません。 同一セキュリティのインターフェイス上の NAT はサポートされません。 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 |
— |
— |
ASA インターフェイスに送信される ICMP トラフィックは検査されません。 |
ICMP ERROR |
ICMP |
— |
— |
— |
ILS(LDAP) |
TCP/389 |
拡張 PAT はサポートされません。 NAT64 なし。 |
— |
— |
Instant Messaging(IM; インスタント メッセージ) |
クライアントにより異なる |
拡張 PAT はサポートされません。 NAT64 なし。 |
RFC 3860 |
— |
IP オプション |
RSVP |
NAT64 なし |
RFC 791、RFC 2113 |
— |
IPsec Pass Through |
UDP/500 |
PAT はサポートされません。 NAT64 なし。 |
— |
— |
IPv6 |
— |
NAT64 なし。 |
RFC 2460 |
— |
LISP |
— |
NAT および PAT はサポートされません。 |
— |
— |
M3UA |
SCTP/2905 |
埋め込まれたアドレスに対する NAT または PAT はなし。 |
RFC 4666 |
キャリア ライセンスが必要です。 |
MGCP |
UDP/2427、2727 |
拡張 PAT はサポートされません。 NAT64 なし。 (クラスタリング)スタティック PAT はサポートされません。 |
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 なし。 (クラスタリング)スタティック PAT はサポートされません。 |
RFC 2637 |
— |
RADIUS アカウンティング |
UDP/1646 |
NAT64 なし。 |
RFC 2865 |
— |
RSH |
TCP/514 |
PAT はサポートされません。 NAT64 なし。 (クラスタリング)スタティック PAT はサポートされません。 |
Berkeley UNIX |
— |
RTSP |
TCP/554 |
拡張 PAT はサポートされません。 NAT64 なし。 (クラスタリング)スタティック PAT はサポートされません。 |
RFC 2326、2327、1889 |
HTTP クローキングは処理しません。 |
ScanSafe(クラウド Web セキュリティ) |
TCP/80 TCP/443 |
— |
— |
これらのポートは、ScanSafe インスペクションの default-inspection-traffic クラスには含まれません。 |
SCTP |
SCTP |
— |
RFC 4960 |
キャリア ライセンスが必要です。 SCTP トラフィックでスタティック ネットワーク オブジェクト NAT を実行できますが(ダイナミック NAT/PAT なし)、インスペクション エンジンは NAT には使用されません。 |
SIP |
TCP/5060 UDP/5060 |
セキュリティ レベルが同じインターフェイス、または低セキュリティ レベルから高セキュリティ レベルに至るインターフェイス上の NAT/PAT はサポートされません。 拡張 PAT はサポートされません。 NAT64 または NAT46 はなし。 (クラスタリング)スタティック PAT はサポートされません。 |
RFC 2543 |
一定の条件下で、Cisco IP Phone 設定をアップロード済みの TFTP は処理しません。 |
SKINNY(SCCP) |
TCP/2000 |
同一セキュリティのインターフェイス上の NAT はサポートされません。 拡張 PAT はサポートされません。 NAT64、NAT46、または NAT66 はなし。 (クラスタリング)スタティック PAT はサポートされません。 |
— |
一定の条件下で、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 なし。 (クラスタリング)スタティック PAT はサポートされません。 |
— |
v.1 および v.2 |
STUN |
TCP/3478 UDP/3478 |
(WebRTC)スタティック NAT/PAT44 のみ。 (Cisco Spark)スタティック NAT/PAT44 と 64、およびダイナミック NAT/PAT。 |
RFC 5245、5389 |
— |
Sun RPC |
TCP/111 UDP/111 |
拡張 PAT はサポートされません。 NAT64 なし。 |
— |
— |
TFTP |
UDP/69 |
NAT64 なし。 (クラスタリング)スタティック PAT はサポートされません。 |
RFC 1350 |
ペイロード IP アドレスは変換されません。 |
WAAS |
TCP/1- 65535 |
拡張 PAT はサポートされません。 NAT64 なし。 |
— |
— |
XDMCP |
UDP/177 |
拡張 PAT はサポートされません。 NAT64 なし。 (クラスタリング)スタティック PAT はサポートされません。 |
— |
— |
VXLAN |
UDP/4789 |
N/A |
RFC 7348 |
Virtual Extensible Local Area Network。 |
デフォルト ポリシー コンフィギュレーションには、次のコマンドが含まれます。
class-map inspection_default
match default-inspection-traffic
policy-map type inspect dns preset_dns_map
parameters
message-length maximum client auto
message-length maximum 512
dns-guard
protocol-enforcement
nat-rewrite
policy-map global_policy
class inspection_default
inspect dns preset_dns_map
inspect ftp
inspect h323 h225 _default_h323_map
inspect h323 ras _default_h323_map
inspect ip-options _default_ip_options_map
inspect netbios
inspect rsh
inspect rtsp
inspect skinny
inspect esmtp _default_esmtp_map
inspect sqlnet
inspect sunrpc
inspect tftp
inspect sip
inspect xdmcp
デフォルトのインスペクション ポリシー マップ
一部のインスペクション タイプは、非表示のデフォルト ポリシー マップを使用します。たとえば、マップを指定しないで ESMTP インスペクションをイネーブルにした場合、_default_esmtp_map が使用されます。
デフォルトのインスペクションは、各インスペクション タイプについて説明しているセクションで説明されています。これらのデフォルト マップは、show running-config all policy-map コマンドを使用して表示できます。
DNS インスペクションは、明示的に設定されたデフォルト マップ preset_dns_map を使用する唯一のインスペクションです。