ファイアウォール

Vulnerability ProtectionDeep Securityのファイアウォールは、双方向のステートフルファイアウォールであり、許可されていない送信元からのパケットがホスト上のアプリケーションに到達しないようにします。

基本的な設定

コンピュータでファイアウォール機能を有効にするには、次の手順に従います。

  1. ポリシーまたはコンピュータエディタで、[ファイアウォール]→[一般] の順に選択します。
  2. [オン] を選択し、[保存] をクリックします。

インラインモードとタップモード

ファイアウォールモジュールは、次の2つのモードで動作するVulnerability ProtectionDeep Securityネットワークエンジンを使用します。

タップモードでは、実際のストリームは変更されません。すべての処理は複製されたストリーム上で行われます。タップモードでは、Vulnerability ProtectionDeep Securityはイベントのレコードを提供する以外の保護は提供しません。

インラインモードとタップモードを切り替えるには、ポリシーまたはコンピュータエディタを開き、[設定]→[ネットワークエンジン]→[ネットワークエンジンモード] の順に選択してください。

ファイアウォールルールのプロパティ

パケットの送信元と送信先

ファイアウォールでは、次の条件を使用して、トラフィックの送信元と送信先を判断できます。

IPアドレス

IPアドレスの定義には、次のオプションを使用できます。

MACアドレス

MACアドレスの定義には、次のオプションを使用できます。

ポート

ポートの定義には、次のオプションを使用できます。

トランスポートプロトコル

ルールがインターネットプロトコル (IP) のフレームの種類を対象としている場合、プロトコルフィールドが有効になり、管理者は分析するトランスポートプロトコルの指定を求められます。使用できるプロトコルオプションは次のとおりです。

方向

Vulnerability ProtectionDeep Securityのファイアウォールは双方向のファイアウォールです。したがって、ネットワークからVulnerability ProtectionDeep Securityホストへのトラフィック (受信) とホストからネットワークへのトラフィック (送信) の両方にルールを適用できます。

1つのファイアウォールルールは一方向にのみ適用されます。このため、特定の種類のトラフィックを対象とするファイアウォールルールはペアにしてください。

TCPヘッダフラグ

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つの機能があります。

  1. 明示的に許可されているトラフィックを許可
  2. その他のトラフィックを黙示的に拒否
許可ルールで明示的に許可されていないトラフィックは破棄され、「ポリシーで未許可」のファイアウォールイベントとして記録されます。

一般的に適用される許可ルールは、次のとおりです。

「バイパス」ルールの詳細

バイパスルールはネットワーク負荷の高いプロトコルを対象に設計されています。ネットワーク負荷の高いプロトコルでは、ファイアウォールや侵入防御モジュールによるフィルタリングが必要とされず、望まれてもいないためです。バイパスルールには、次の特徴があります。

バイパスルールの条件と一致するパケットは、次のように処理されます。

バイパスされるトラフィックにはステートフルインスペクションが適用されないので、一方向のトラフィックがバイパスされても、逆方向の応答は自動的にはバイパスされません。したがって、受信トラフィック用と送信トラフィック用のバイパスルールは、必ずペアで作成および適用します。

バイパスルールのイベントは記録されません。この動作は変更できません。
Vulnerability ProtectionDeep Security Managerで、Vulnerability ProtectionDeep Security Agentに保護されているリモートデータベースを使用した場合、Vulnerability ProtectionDeep Security Managerによって侵入防御ルールがデータベースに保存されるときに、侵入防御に関連するアラームが誤って発生する可能性があります。これは、ルール自体の内容が誤って攻撃と認識されることが原因です。この問題を回避するには、Vulnerability ProtectionDeep Security Managerからデータベースホストへのトラフィックに対してバイパスルールを作成します。
バイパスルールを割り当てることで、該当の通信に対してはファイアウォールおよび侵入防御による保護が行われなくなります。通信のパフォーマンスが低下することが業務に与えるリスクと、該当の通信に対して保護が行われなくなるリスクを評価し、通信のパフォーマンスを優先することが必要と判断した場合にご使用ください。
Vulnerability ProtectionDeep Security Managerのトラフィックに関するバイパスルールの初期設定

Deep Security Managerは、Deep Security Agentを実行しているコンピュータが受信TCPトラフィック用にポート4118を許可する優先度4のバイパスルールを自動的に作成します。このルールは優先度4なので、他の拒否ルールよりも先に適用されます。また、バイパスルールなので、トラフィックの障害が発生することはありません。なお、このバイパスルールは内部的に作成されるため、ファイアウォールルールの一覧には明示的に表示されません。

ただし、このルールでは、任意のIPアドレスと任意のMACアドレスからのトラフィックが許可されます。このポートでAgentを強化するには、このポート用に、より厳しいバイパスルールを作成します。新しいカスタムルールを次のように設定すれば、Agentでは初期設定のManagerトラフィックルールよりもカスタムルールが優先されます。

初期設定のルールをカスタムルールに置き換えるには、カスタムルールに上記のパラメータが必要です。ルールのパケット送信元として、実際のManagerのIPアドレスまたはMACアドレスを使用するのが理想です。

「強制的に許可」ルールの詳細

「強制的に許可」オプションでは、拒否処理の対象となるトラフィックの一部を除外します。他の処理との関係を下に示します。強制的に許可ルールは、バイパスルールと同じ効果があります。ただし、バイパスルールとは異なり、この処理によってファイアウォールを通過するトラフィックは侵入防御モジュールによる監視の対象となります。強制的に許可ルールの処理は、基本的なネットワークサービスがDSAコンピュータとの通信を確保するのに便利です。「強制的に許可」ルールのうち、通常有効に設定される初期設定は次の通りです。

複数ノード構成で複数のManagerコンピュータを使用する場合は、これらのコンピュータのIPリストを定義し、このリストをManagerトラフィックのカスタムルールに使用すると便利です。

ファイアウォールルールのシーケンス

コンピュータに届くパケットは、ファイアウォールルール、ファイアウォールステートフル設定条件、および侵入防御ルールの順に処理されます。

受信および送信でファイアウォールルールが適用される順序は次のとおりです。

  1. 優先度4 (最高) のファイアウォールルール
    1. バイパス
    2. ログのみ (ログのみルールは優先度4 (最高) にのみ割り当て可能)
    3. 強制的に許可
    4. 拒否
  2. 優先度3 (高) のファイアウォールルール
    1. バイパス
    2. 強制的に許可
    3. 拒否
  3. 優先度2 (標準) のファイアウォールルール
    1. バイパス
    2. 強制的に許可
    3. 拒否
  4. 優先度1 (低) のファイアウォールルール
    1. バイパス
    2. 強制的に許可
    3. 拒否
  5. 優先度0 (最低) のファイアウォールルール
    1. バイパス
    2. 強制的に許可
    3. 拒否
    4. 許可 (許可ルールは優先度0 (最低) にのみ割り当て可能)
コンピュータに有効な許可ルールがない場合、拒否ルールでブロックされていないかぎり、すべてのトラフィックが許可されます。許可ルールを1つ作成したら、許可ルールの条件を満たしていないかぎり、その他すべてのトラフィックがブロックされます。ただし、1つだけ例外があります。ICMPv6トラフィックは、拒否ルールでブロックされていないかぎり、常に許可されます。

同じ優先度のコンテキスト内では、拒否ルールが許可ルールをオーバーライドし、強制的に許可ルールが拒否ルールをオーバーライドします。ルールの優先度システムを使用すると、優先度の低い強制的に許可ルールを、優先度の高い拒否ルールでオーバーライドできます。

強制的に許可ルールを使用してTCP/UDPポート53の受信DNSクエリをすべて許可するDNSサーバのポリシーの例について考えてみます。この場合、強制的に許可ルールよりも優先度の高い拒否ルールを作成することによって、特定範囲のIPアドレスを指定して、同一の公開サーバへのアクセスを禁止する必要があります。

優先度に基づいたルール設定によって、ルールを適用する順序を設定できます。拒否ルールに最も高い優先度を設定し、同じ優先度の強制的に許可ルールがない場合、拒否ルールに一致するパケットはすべて自動的に破棄されて残りのルールは無視されます。反対に、強制的に許可ルールに最も高い優先度が設定されている場合、強制的に許可ルールに一致する受信パケットは他のルールに対して確認されることなくすべて自動的に許可されます。

ログに関する注意

バイパスルールはイベントを生成しません。この設定は変更できません。

ログのみルールは、対象のパケットが、次のいずれかのルールによって、それ以降に停止されない場合にのみイベントを生成します。

この2つのルールのいずれかがパケットを停止する場合は、ログのみルールではなくこれらのルールによって、イベントが生成されます。以降のルールでパケットを停止しない場合は、ログのみルールがエントリを生成します。

各ファイアウォールルールの関係

Vulnerability ProtectionDeep Securityファイアウォールルールには、ルール処理とルール優先度があります。この2つのプロパティを同時に使用することによって、非常に柔軟で強力なルール設定を作成できます。他のファイアウォールで使用されているルール設定では実行順にルールを定義する必要がありますが、それとは異なり、Vulnerability ProtectionDeep Securityファイアウォールルールは、ルール処理とルール優先度に基づいて決定論的な順序で実行されます。これは、定義された順序や割り当てられた順序とは無関係です。

ルール処理

各ルールには、以下の5つのルール処理のいずれかを設定できます。

  1. バイパス: パケットがバイパスルールに一致した場合は、同じ優先度の他のルールにかかわらずファイアウォールと侵入防御エンジンを通過します。
  2. ログのみ: パケットがログのみルールに一致した場合は、通過してイベントがログ記録されます。
  3. 強制的に許可: パケットが強制的に許可ルールに一致した場合は、同じ優先度の他のルールにかかわらず通過します。
  4. 拒否: パケットが拒否ルールに一致した場合は、破棄されます。
  5. 許可: パケットが許可ルールに一致した場合は、通過します。許可ルールのいずれにも一致していないトラフィックはすべて拒否されます。

許可ルールを実装すると、許可ルールに一致しないその他すべてのトラフィックが拒否されます。

拒否ルールを許可ルールに優先して適用すると、特定の種類のトラフィックをブロックすることができます。


強制的に許可ルールを拒否トラフィックに適用すると、例外のみ通過させることができます。

ルール優先度

拒否および強制的に許可のルール処理を5つの優先度のいずれかで定義できます。これにより、許可されるトラフィックを許可ルールのセットでさらに細かく定義できます。ルールは、最高 (優先度4) から最低 (優先度0) の順に実行されます。特定の優先度内では、ルール処理 (強制的に許可、拒否、許可、ログのみ) に基づいた順序で処理されます。

優先度のコンテキストによって、ユーザは拒否/強制的に許可の組み合わせを使用してトラフィック管理をさらに詳細に定義することが可能になるため、柔軟性に優れた処理を実現できます。同じ優先度のコンテキスト内では、拒否ルールによって許可ルールを無効にし、また、強制的に許可ルールによって拒否ルールを無効にすることもできます。

許可のルール処理は優先度0でのみ動作し、ログのみのルール処理は優先度4でのみ動作します。

ルール処理およびルール優先度を集約する

ルールは、最高 (優先度4) から最低 (優先度0) の順に実行されます。特定の優先度内では、ルール処理に基づいた順序で処理されます。同じ優先度のルールが処理される順序は次のとおりです。

許可のルール処理は優先度0でのみ動作し、ログのみのルール処理は優先度4でのみ動作します。
強制的に許可ルールと拒否ルールが同等の優先度の場合、強制的に許可ルールが拒否ルールよりも優先されるので、強制的に許可ルールと一致するトラフィックが許可されます。

ステートフルフィルタ

コンピュータでステートフル設定が有効になっている場合は、トラフィック履歴のコンテキスト、TCPおよびIPヘッダ値の正当性、およびTCP接続状態の変化の範囲内でパケットが分析されます。UDPやICMPなどのステートレスプロトコルの場合、履歴トラフィック分析に基づいた擬似ステートフル機能が実装されます。

ステートフル設定は、Vulnerability ProtectionDeep Security Managerの [ポリシー]→[共通オブジェクト]→[ファイアウォールステートフル設定] に保存されています。ステートフル設定をコンピュータに適用するには、ポリシーエディタまたはコンピュータエディタで [ファイアウォール]→[一般]→[ファイアウォールステートフル設定] に移動します。

静的ルールで明確に許可されている場合、パケットはステートフルルーチンを通過します。

ステートフルエンジンが有効になると、インタフェースを横断するすべてのトラフィックに適用されます。

UDPの擬似ステートフルインスペクションは、初期設定で「未承諾」のUDPパケットの受信を拒否します。コンピュータでUDPサーバを実行している場合は、強制的に許可ルールをポリシーに設定してサーバへのアクセスを許可する必要があります。たとえば、UDPのステートフルインスペクションがDNSサーバで有効になっている場合は、53番ポートに対するUDPトラフィックを許可する強制的に許可ルールが必要です。

ICMPの擬似ステートフルインスペクションは、初期設定で、未承諾のICMP要求/応答およびエラーパケットの受信を拒否します。未承諾のICMPパケットを許可するには、強制的に許可ルールを明確に定義する必要があります。静的ルールで明確に許可されていなければ、要求/応答やエラータイプではないその他すべてのICMPパケットは破棄されます。

ファイアウォールポリシーをまとめて設計する

一般的に、コンピュータのファイアウォールポリシーを定義するには次の2つの方法があります。

通常、禁止ポリシーを優先して許可ポリシーを使用しないようにします。

許可および拒否ルールで禁止されているトラフィックのサブセットを許可するには、許可および拒否ルールと連動して強制的に許可ルールを使用する必要があります。また、ICMPおよびUDPステートフルが有効になっている際に、未承諾のICMPおよびUDPトラフィックを許可するように強制的に許可ルールを設定する必要があります。

Webサーバ用の単純なファイアウォールポリシーを作成する方法の例を示します。

  1. まず、オプションが有効になっているグローバルなファイアウォールステートフル設定を使用して、TCP、UDP、およびICMPのステートフルインスペクションを有効にします。
  2. ワークステーションからの要求に対するTCPおよびUDPの応答を許可するファイアウォールルールを追加します。そのためには、受信許可ルールを作成し、プロトコルセットを「TCP+UDP」に設定し、[指定フラグ] の下にある [選択以外] チェックボックスと [SYN] チェックボックスをオンにします。この時点で、ワークステーションのユーザからの要求に応答するTCPとUDPのパケットだけがポリシーによって許可されます。たとえば、手順1で有効にしたステートフル分析オプションと連動してこのルールを使用すると、コンピュータのユーザはDNS検索 (UDP経由) やHTTP (TCP) 経由のWeb閲覧ができるようになります。
  3. ワークステーションからの要求にICMP応答を許可するファイアウォールルールを追加します。そのためには、プロトコルを「ICMP」に設定した受信許可ルールを作成し、[任意のフラグ] チェックボックスをオンにします。このコンピュータのユーザは別のワークステーションにpingを送信して応答を受信できますが、他のユーザはこのコンピュータにpingを送信できなくなります。
  4. [指定フラグ] セクションの [SYN] チェックボックスをオンにして、受信TCPトラフィックをポート80およびポート443に対して許可するファイアウォールルールを追加します。外部ユーザがこのコンピュータのWebサーバにアクセスできるようになります。

この時点で、他の受信トラフィックをすべて拒否するコンピュータで、承諾されたTCP、UDP、およびICMP応答とWebサーバへの外部アクセスを許可する基本的なファイアウォールポリシーが設定されます。

拒否および強制的に許可ルールの処理を使用してこのポリシーをさらに詳細に定義する方法の例について、ネットワーク内の他のコンピュータからのトラフィックを制限する方法を考察します。たとえば、内部ユーザに対してはこのコンピュータのWebサーバへのアクセスを許可し、DMZにあるコンピュータからのアクセスは拒否するものとします。この場合、DMZのIP範囲にあるサーバからのアクセスを禁止する拒否ルールを追加することによって設定が可能になります。

  1. 次に、送信元IP 10.0.0.0/24 (DMZ内のコンピュータに割り当てられたIP範囲) を使用して、受信TCPトラフィック用に拒否ルールを追加します。このルールでは、DMZ内にあるコンピュータからこのコンピュータへのトラフィックをすべて拒否します。

ただし、このポリシーをさらに詳細に定義するとDMZ内にあるメールサーバからの受信トラフィックを許可できます。

  1. そのためには、送信元IPアドレス10.0.0.100からの受信TCPトラフィックに強制的に許可ルールを使用します。この強制的に許可ルールは、前の手順で作成した拒否ルールをオーバーライドして、DMZ内にあるコンピュータからのトラフィックを許可します。

重要事項

新しいファイアウォールポリシーのトラブルシューティング時は、まずAgent/Applianceにあるファイアウォールルールのログを確認してください。ファイアウォールルールのログには、拒否されているトラフィックを判断するために必要な情報がすべて含まれており、必要に応じてポリシーをさらに詳細に設定できます。