インスペクション ルールについて
インスペクション ルールでは、Context-Based Access Control(CBAC; コンテキストベース アクセス コントロール)インスペクション コマンドを設定します。CBAC では、デバイスを通過するトラフィックを検査して、TCP および UDP セッションの状態情報を検出および管理します。デバイスでは、この状態情報を使用して、許容できるセッションのリターン トラフィックおよび追加のデータ接続を許可するための一時的な穴を作成します。
CBAC では、ファイアウォール インターフェイスでアクセス リストに一時的な穴を作成します。これらの穴は、検査されるトラフィックがファイアウォールを通過して内部ネットワークから出るときに作成されます。リターン トラフィック(通常はブロックされます)と追加のデータ チャネルは、この穴からファイアウォールを通って内部ネットワークに入ることができます。トラフィックは、そのトラフィックがファイアウォールを通って出るときにインスペクションをトリガーした、元のトラフィックと同じセッションの一部となっている場合にだけ、ファイアウォールを通って戻ることができます。
インスペクション ルールは、アクセス ルールのあとに適用されるため、アクセス ルールで拒否したトラフィックは検査されません。トラフィックが検査されるようにするには、入力インターフェイスと出力インターフェイスの両方で、アクセス ルールによってトラフィックが許可される必要があります。アクセス ルールではレイヤ 3(ネットワーク、IP)または 4(トランスポート、TCP または UDP プロトコル)で接続を制御できますが、インスペクション ルールを使用すると、アプリケーション レイヤ プロトコル セッション情報を使用してトラフィックを制御できます。
すべてのプロトコルについて、プロトコルを検査するときに、デバイスによって次の機能が提供されます。
-
トラフィックのリターン パスを自動的に開く(送信元アドレスと宛先アドレスを反転する)ため、リターン トラフィックを許可するアクセス ルールを作成する必要がない。各接続はセッションと見なされ、デバイスはセッション状態情報を保持し、有効なセッションのリターン トラフィックだけを許可します。TCP を使用するプロトコルには明示的なセッション情報が含まれますが、UDP アプリケーションでは、送信元および宛先アドレスと一連の UDP パケットの時間的な近さに基づき、デバイスがセッションと同等のものをモデル化します。
これらの一時的なアクセス リストは動的に作成され、セッションが終了するとき、削除されます。
-
すべての TCP パケットのシーケンス番号を追跡し、想定範囲内にないシーケンス番号を持つパケットをドロップする。
-
タイムアウトとしきい値を使用してセッション状態情報を管理することによって、完全には確立されていないセッションをいつドロップするかの判断に役立てる。セッションがドロップまたはリセットされると、デバイスは、セッションの送信元と宛先の両方に接続をリセットするよう通知して、リソースを解放し、Denial of Service(DoS; サービス拒絶)攻撃の可能性を低減します。
ここでは、インスペクションについて詳しく説明します。
インスペクション ルールのインターフェイスの選択
内部ネットワークを保護するインスペクションをデバイスに設定します。TCP、UDP、またはその他の特定のプロトコルとともに使用します。トラフィックセッションがデバイスの特定の側から(通常は、保護されている内部ネットワークから)開始された場合にだけ、アプリケーションのトラフィックがデバイスを通過できるようにするには、これらのアプリケーションを検査します。
ヒント |
IOS デバイスでは、インスペクションを明示的に設定する必要があり、検査するトラフィックの方向を指定できます。ASA、PIX、および FWSM の各デバイスでは、方向を指定できず、インスペクションを設定する必要があるのはインスペクションのデフォルトを使用しない場合だけです。以降の説明では、方向に関する文は IOS デバイスにだけ適用されます。ASA、PIX、および FWSM では、単純に指定されたインターフェイスにインスペクションを設定します。 |
多くの場合、単一のインターフェイスで一方向にだけインスペクションを設定します。これにより、トラフィックは許容される(有効、既存)セッションに属する場合にだけ内部ネットワークに戻ることができます。これは、インターネット上で発生したトラフィックから内部ネットワークを保護するための一般的な設定です。
1 つ以上のインターフェイスで、双方向のインスペクションを設定することもできます。エクストラネット設定やイントラネット設定などを使用して、ファイアウォールの両側のネットワークを保護する必要がある場合、および DoS 攻撃から保護する場合に、双方向のインスペクションを設定します。たとえば、デバイスが 2 つのパートナー企業のネットワークの間にある場合は、特定のアプリケーションに対してトラフィックを一方向に制限し、他のアプリケーションに対してトラフィックを反対方向に制限することが必要となることがあります。DMZ ゾーン内の Web サーバを保護している場合は、HTTP トラフィックに詳細なインスペクションを設定して、望ましくない特性を持つ接続を識別し、リセットすることが必要となることがあります。
インターネットまたは別の制御対象外ネットワークに接続するネットワークのアウトバウンド インターフェイスにインスペクション ルールを設定する一方で、信頼ネットワーク内ではフィルタリングされない接続を許可することが必要となる場合があります。このため、デバイスでは、保護されていないことによって潜在的な危険性のあるネットワーク上を移動するセッションにだけ、インスペクションのリソースが使用されます。
関連項目
検査するプロトコルの選択
TCP および UDP は汎用的に検査できます。これにより、これらのプロトコルを使用するすべてのアプリケーションがカバーされます。ただし、より特定的なプロトコルを検査することもできます。場合によっては、特定のプロトコルの検査によって、汎用的な TCP/UDP インスペクションよりも優れたサービスが提供されることがあります。TCP および UDP のインスペクションでは、アプリケーション固有のコマンドが認識されないため、あるアプリケーションのすべてのリターン パケットが許可されないことがあります。特に、リターン パケットのポート番号が前の既存パケットとは異なる場合は、その可能性が高くなります。
次に例を示します。
-
一部のプロトコルでは、詳細なインスペクションを設定できる。詳細なインスペクションでは、トラフィック ストリームに対して、より具体的なルールを設定できます。たとえば、要求および応答のコンテンツ タイプが一致しない HTTP 接続をドロップできます。詳細なインスペクションと設定オプションについては、インスペクションのプロトコルおよびマップの設定を参照してください。
-
FTP など、リターン チャネルをネゴシエーションするプロトコルは、明示的に検査する必要がある。FTP トラフィックの単純な汎用 TCP インスペクションを使用する場合は、ネゴシエーションされたチャネルは開かれず、接続が失敗します。FTP を許可する場合は、FTP 用の明示的なインスペクション ルールを作成してください。
また、マルチメディア プロトコルもリターン チャネルをネゴシエーションするため、明示的に検査する必要があります。これらのプロトコルには、H.323、Real Time Streaming Protocol(RTSP; リアルタイム ストリーミング プロトコル)、およびその他のアプリケーション固有のプロトコルが含まれます。一部のアプリケーションでは汎用 TCP チャネルも使用するため、汎用 TCP インスペクションも設定する必要があります。汎用的な TCP インスペクション ルールは、テーブル内でより明示的なインスペクション ルールよりも下にある必要があります(つまり、TCP または UDP を指定するルールは、すべて、インスペクション ルール テーブルの最後にある必要があります)。
関連項目
インスペクション ルールのアクセス ルール要件について
アクセス ルールは、インスペクション ルールよりも前に適用されます。このため、検査するトラフィックがアクセス ルールで禁止されないようにする必要があります。次の注意事項に従ってください。
-
検査したトラフィックがファイアウォールを通過してネットワークから出ることを許可する。
検査されるトラフィックは、保護ネットワークから出るトラフィックを評価する、すべてのアクセス ルールで許可される必要があります。たとえば、Telnet が検査される場合、Telnet トラフィックは、ネットワークから出るトラフィックに適用されるすべてのアクセス ルールで許可される必要があります。
-
検査されるリターン トラフィックがファイアウォールを通過してネットワークに入ることを拒否する。
アクセス リストに一時的な穴を作成する場合、アクセス リストでは、検査されるリターン トラフィックを拒否する必要があります。これは、インスペクション エンジンによって、このトラフィックのアクセス リストに一時的な穴が開けられるためです(通常、ネットワークに入るトラフィックはブロックされるようにします)。
-
ネットワークでの必要性に応じて、検査できないトラフィック、または検査する必要のないトラフィックを許可または拒否する。
たとえば、ICMP トラフィックを検査しないで、一部の ICMP トラフィックを許可する場合は、両方向のトラフィックが許可されるようにアクセス ルールを設定します。少なくとも、(ping コマンドに対する)echo reply、(トレース ルートに対する)time-exceeded、(パス MTU ディスカバリに対する)packet-too-big、(トレース ルートに対する)traceroute、および(ホストが見つからないことを通知する)unreachable の ICMP メッセージ タイプを許可することを検討します。
-
保護ネットワーク上のアドレスと一致する送信元アドレスからのすべてのネットワーク トラフィックを拒否するアクセス ルール エントリを追加する。
この方法は、保護されていないネットワークからのトラフィックが、保護ネットワーク上のデバイスの識別情報を偽って使用することを防ぐため、アンチ スプーフィング保護と呼ばれます。
-
送信元アドレスが 255.255.255.255 のブロードキャスト メッセージを拒否するエントリを追加する。
このエントリは、ブロードキャスト攻撃を防ぐのに役立ちます。
関連項目
IOS デバイスでの Denial of Service(DoS; サービス拒絶)攻撃を防ぐためのインスペクションの使用
(注) |
バージョン 4.17 以降、Cisco Security Manager は引き続き PIX、FWSM、および IPS の機能をサポートしていますが、拡張機能はサポートしていません。 |
アプリケーション層でパケットを検査すること、および TCP セッション情報と UDP セッション情報を保持することによって、デバイスは、SYN フラッディングなどの特定のタイプのネットワーク攻撃を検出および回避できます。SYN フラッド攻撃は、ネットワーク攻撃者がサーバに膨大な数の接続要求をフラッドし、接続を完了しないことによって発生します。これにより、ハーフオープン接続が大量に発生してサーバが処理しきれなくなり、有効な要求へのサービスが拒否されます。ネットワーク デバイスへのアクセスを拒否するネットワーク攻撃を、Denial-of-Service(DoS; サービス拒絶)攻撃と呼びます。
インスペクションは、他の方法で DoS 攻撃から保護するのに役立ちます。インスペクションは、TCP 接続のパケット シーケンス番号を参照し、それらが想定範囲内にあるかどうかを確認して、すべての疑わしいパケットをドロップします。また、ハーフオープン接続をドロップするインスペクション設定をすることもできます。このことを行うには、ファイアウォール処理とメモリ リソースの維持が必要です。これ以外に、インスペクションでは、新しい接続で頻繁に発生するエラーを検出してアラート メッセージを発行できます。
IOS デバイスでは、複数のインスペクション設定パラメータを設定して、SYN フラッディングとハーフオープン接続からの保護を微調整できます。IOS デバイスのインスペクション ルールの設定を参照してください。
ポリシーを設定します。各設定の詳細については、インスペクションは、フラグメント化された IP パケットに関連する特定の DoS 攻撃からも保護できます。ファイアウォールは攻撃者が特定のホストに実際に接続することを防ぎますが、攻撃者はそのホストによって提供されるサービスを中断させることがあります。このことは、多くの非初期 IP フラグメントを送信するか、または、フラグメント化されたパケットの最初のフラグメントをフィルタする ACL を持つルータを経由して、完全にフラグメント化されたパケットを送信することによって行われます。ターゲット ホストでは不完全なパケットを再構成しようとし、これにより、これらのフラグメントによって、ターゲット ホスト上のリソースが占有されます。フラグメント インスペクションを微調整するには、フラグメントプロトコルのインスペクションルールを設定し、許可するフラグメントの最大数とタイムアウト値を設定します。