Vulnerability ProtectionDeep Securityのファイアウォールは、双方向のステートフルファイアウォールであり、許可されていない送信元からのパケットがホスト上のアプリケーションに到達しないようにします。
コンピュータでファイアウォール機能を有効にするには、次の手順に従います。
ファイアウォールモジュールは、次の2つのモードで動作するVulnerability ProtectionDeep Securityネットワークエンジンを使用します。
タップモードでは、実際のストリームは変更されません。すべての処理は複製されたストリーム上で行われます。タップモードでは、Vulnerability ProtectionDeep Securityはイベントのレコードを提供する以外の保護は提供しません。
インラインモードとタップモードを切り替えるには、ポリシーまたはコンピュータエディタを開き、[設定]→[ネットワークエンジン]→[ネットワークエンジンモード] の順に選択してください。
ファイアウォールでは、次の条件を使用して、トラフィックの送信元と送信先を判断できます。
IPアドレスの定義には、次のオプションを使用できます。
MACアドレスの定義には、次のオプションを使用できます。
ポートの定義には、次のオプションを使用できます。
ルールがインターネットプロトコル (IP) のフレームの種類を対象としている場合、プロトコルフィールドが有効になり、管理者は分析するトランスポートプロトコルの指定を求められます。使用できるプロトコルオプションは次のとおりです。
Vulnerability ProtectionDeep Securityのファイアウォールは双方向のファイアウォールです。したがって、ネットワークからVulnerability ProtectionDeep Securityホストへのトラフィック (受信) とホストからネットワークへのトラフィック (送信) の両方にルールを適用できます。
TCPトラフィックについては、ルールを適用するTCPフラグを選択できます。すべてのフラグにルールを適用するのでない場合、次のいずれかを選択できます。
これらのフラグは、複数の攻撃に対してさまざまな方法で使用できます。ここでは、その一部についてのみ説明します。
URGフラグは、パケットの緊急性が高く、他のパケットよりも先に処理する必要があることを示します。PSHフラグは、バッファを消去し、すべての情報をアプリケーションに送信するようにTCPスタックを設定します。どちらのフラグも、Xmas検索と呼ばれるポート検索に使用できます。これは通常、URGフラグとPSHフラグが有効になっているFINパケットです。この検索の名前は、フラグのバイト (00101001) で、各ビットがクリスマスツリーのように交互にオンとオフになっていることに由来します。
保護されていないコンピュータがXmas検索に関連するパケットを受信すると、次の処理が実行されます。
| 条件 | 応答 |
|---|---|
| ポートが閉じている | RSTパケットを返す |
| ポートが開いている | 応答なし、開いているポートの存在を公開 |
RST (RESET) フラグは、TCP接続を即座に終了します。上記のように、正常な使用方法の1つに、接続できない、または接続が許可されていない閉じているポートへの接続の終了があります。ただし、RSTフラグは、実行中のセッションを中断することを目的としたRESET攻撃に使用されることもあります。次の図は、ホストBからのパケットに含まれるとホストAが予測していたTCPシーケンス番号を、ホストCが計算し、RSTパケットがホストBから送信されたようにホストAに対して偽装した状況を示しています。最終的な結果は、DoS攻撃になります。
「フレーム」とはイーサネットフレームを指し、フレームで送信されるデータは、使用可能なプロトコルによって指定されます。
インターネットプロトコル (IP)、アドレス解決プロトコル (ARP)、および逆アドレス解決プロトコル (REVARP) が、現在のイーサネットネットワークで使用されている最も一般的なプロトコルですが、リストから [その他] を選択することで、その他の任意のフレームの種類を「フレーム番号」で指定できます。
ファイアウォールルールでは、次の処理が可能です。
許可ルールには、次の2つの機能があります。
一般的に適用される許可ルールは、次のとおりです。
バイパスルールはネットワーク負荷の高いプロトコルを対象に設計されています。ネットワーク負荷の高いプロトコルでは、ファイアウォールや侵入防御モジュールによるフィルタリングが必要とされず、望まれてもいないためです。バイパスルールには、次の特徴があります。
バイパスルールの条件と一致するパケットは、次のように処理されます。
バイパスされるトラフィックにはステートフルインスペクションが適用されないので、一方向のトラフィックがバイパスされても、逆方向の応答は自動的にはバイパスされません。したがって、受信トラフィック用と送信トラフィック用のバイパスルールは、必ずペアで作成および適用します。
Deep Security Managerは、Deep Security Agentを実行しているコンピュータが受信TCPトラフィック用にポート4118を許可する優先度4のバイパスルールを自動的に作成します。このルールは優先度4なので、他の拒否ルールよりも先に適用されます。また、バイパスルールなので、トラフィックの障害が発生することはありません。なお、このバイパスルールは内部的に作成されるため、ファイアウォールルールの一覧には明示的に表示されません。
ただし、このルールでは、任意のIPアドレスと任意のMACアドレスからのトラフィックが許可されます。このポートでAgentを強化するには、このポート用に、より厳しいバイパスルールを作成します。新しいカスタムルールを次のように設定すれば、Agentでは初期設定のManagerトラフィックルールよりもカスタムルールが優先されます。
初期設定のルールをカスタムルールに置き換えるには、カスタムルールに上記のパラメータが必要です。ルールのパケット送信元として、実際のManagerのIPアドレスまたはMACアドレスを使用するのが理想です。
「強制的に許可」オプションでは、拒否処理の対象となるトラフィックの一部を除外します。他の処理との関係を下に示します。強制的に許可ルールは、バイパスルールと同じ効果があります。ただし、バイパスルールとは異なり、この処理によってファイアウォールを通過するトラフィックは侵入防御モジュールによる監視の対象となります。強制的に許可ルールの処理は、基本的なネットワークサービスがDSAコンピュータとの通信を確保するのに便利です。「強制的に許可」ルールのうち、通常有効に設定される初期設定は次の通りです。
コンピュータに届くパケットは、ファイアウォールルール、ファイアウォールステートフル設定条件、および侵入防御ルールの順に処理されます。
受信および送信でファイアウォールルールが適用される順序は次のとおりです。
同じ優先度のコンテキスト内では、拒否ルールが許可ルールをオーバーライドし、強制的に許可ルールが拒否ルールをオーバーライドします。ルールの優先度システムを使用すると、優先度の低い強制的に許可ルールを、優先度の高い拒否ルールでオーバーライドできます。
強制的に許可ルールを使用してTCP/UDPポート53の受信DNSクエリをすべて許可するDNSサーバのポリシーの例について考えてみます。この場合、強制的に許可ルールよりも優先度の高い拒否ルールを作成することによって、特定範囲のIPアドレスを指定して、同一の公開サーバへのアクセスを禁止する必要があります。
優先度に基づいたルール設定によって、ルールを適用する順序を設定できます。拒否ルールに最も高い優先度を設定し、同じ優先度の強制的に許可ルールがない場合、拒否ルールに一致するパケットはすべて自動的に破棄されて残りのルールは無視されます。反対に、強制的に許可ルールに最も高い優先度が設定されている場合、強制的に許可ルールに一致する受信パケットは他のルールに対して確認されることなくすべて自動的に許可されます。
バイパスルールはイベントを生成しません。この設定は変更できません。
ログのみルールは、対象のパケットが、次のいずれかのルールによって、それ以降に停止されない場合にのみイベントを生成します。
この2つのルールのいずれかがパケットを停止する場合は、ログのみルールではなくこれらのルールによって、イベントが生成されます。以降のルールでパケットを停止しない場合は、ログのみルールがエントリを生成します。
Vulnerability ProtectionDeep Securityファイアウォールルールには、ルール処理とルール優先度があります。この2つのプロパティを同時に使用することによって、非常に柔軟で強力なルール設定を作成できます。他のファイアウォールで使用されているルール設定では実行順にルールを定義する必要がありますが、それとは異なり、Vulnerability ProtectionDeep Securityファイアウォールルールは、ルール処理とルール優先度に基づいて決定論的な順序で実行されます。これは、定義された順序や割り当てられた順序とは無関係です。
各ルールには、以下の5つのルール処理のいずれかを設定できます。
許可ルールを実装すると、許可ルールに一致しないその他すべてのトラフィックが拒否されます。
拒否ルールを許可ルールに優先して適用すると、特定の種類のトラフィックをブロックすることができます。
強制的に許可ルールを拒否トラフィックに適用すると、例外のみ通過させることができます。
拒否および強制的に許可のルール処理を5つの優先度のいずれかで定義できます。これにより、許可されるトラフィックを許可ルールのセットでさらに細かく定義できます。ルールは、最高 (優先度4) から最低 (優先度0) の順に実行されます。特定の優先度内では、ルール処理 (強制的に許可、拒否、許可、ログのみ) に基づいた順序で処理されます。
優先度のコンテキストによって、ユーザは拒否/強制的に許可の組み合わせを使用してトラフィック管理をさらに詳細に定義することが可能になるため、柔軟性に優れた処理を実現できます。同じ優先度のコンテキスト内では、拒否ルールによって許可ルールを無効にし、また、強制的に許可ルールによって拒否ルールを無効にすることもできます。
ルールは、最高 (優先度4) から最低 (優先度0) の順に実行されます。特定の優先度内では、ルール処理に基づいた順序で処理されます。同じ優先度のルールが処理される順序は次のとおりです。
コンピュータでステートフル設定が有効になっている場合は、トラフィック履歴のコンテキスト、TCPおよびIPヘッダ値の正当性、およびTCP接続状態の変化の範囲内でパケットが分析されます。UDPやICMPなどのステートレスプロトコルの場合、履歴トラフィック分析に基づいた擬似ステートフル機能が実装されます。
静的ルールで明確に許可されている場合、パケットはステートフルルーチンを通過します。
ステートフルエンジンが有効になると、インタフェースを横断するすべてのトラフィックに適用されます。
UDPの擬似ステートフルインスペクションは、初期設定で「未承諾」のUDPパケットの受信を拒否します。コンピュータでUDPサーバを実行している場合は、強制的に許可ルールをポリシーに設定してサーバへのアクセスを許可する必要があります。たとえば、UDPのステートフルインスペクションがDNSサーバで有効になっている場合は、53番ポートに対するUDPトラフィックを許可する強制的に許可ルールが必要です。
ICMPの擬似ステートフルインスペクションは、初期設定で、未承諾のICMP要求/応答およびエラーパケットの受信を拒否します。未承諾のICMPパケットを許可するには、強制的に許可ルールを明確に定義する必要があります。静的ルールで明確に許可されていなければ、要求/応答やエラータイプではないその他すべてのICMPパケットは破棄されます。
一般的に、コンピュータのファイアウォールポリシーを定義するには次の2つの方法があります。
通常、禁止ポリシーを優先して許可ポリシーを使用しないようにします。
許可および拒否ルールで禁止されているトラフィックのサブセットを許可するには、許可および拒否ルールと連動して強制的に許可ルールを使用する必要があります。また、ICMPおよびUDPステートフルが有効になっている際に、未承諾のICMPおよびUDPトラフィックを許可するように強制的に許可ルールを設定する必要があります。
Webサーバ用の単純なファイアウォールポリシーを作成する方法の例を示します。
この時点で、他の受信トラフィックをすべて拒否するコンピュータで、承諾されたTCP、UDP、およびICMP応答とWebサーバへの外部アクセスを許可する基本的なファイアウォールポリシーが設定されます。
拒否および強制的に許可ルールの処理を使用してこのポリシーをさらに詳細に定義する方法の例について、ネットワーク内の他のコンピュータからのトラフィックを制限する方法を考察します。たとえば、内部ユーザに対してはこのコンピュータのWebサーバへのアクセスを許可し、DMZにあるコンピュータからのアクセスは拒否するものとします。この場合、DMZのIP範囲にあるサーバからのアクセスを禁止する拒否ルールを追加することによって設定が可能になります。
ただし、このポリシーをさらに詳細に定義するとDMZ内にあるメールサーバからの受信トラフィックを許可できます。