次の方法で共有


WFP 操作

Windows フィルター プラットフォーム (WFP) は、次の基本的なエンティティを統合することによって、そのタスクを実行します。レイヤーフィルターshim、および 吹き出し

レイヤー は、フィルター をセットに整理する機能を持つフィルター エンジンによって管理されるコンテナーです。 レイヤーは、ネットワーク スタック内のモジュールではありません。 各レイヤーには、追加できるフィルターの種類を定義するスキーマがあります。 詳細については、「フィルター処理の各レイヤー で使用できるフィルター条件」を参照してください。

レイヤーには、"1024 より上の TCP ポートをブロックする" や "ポート 1080 を開く" など、競合するフィルター要件を管理するためのサブレイヤーが含まれている場合があります。 フィルター処理の競合を管理するための規則は、フィルター判定によって決定されます。

WFP には、組み込みのサブレイヤーのセットが含まれています。 すべてのレイヤーは、すべての組み込みサブレイヤーを継承します。 ユーザーは、独自のサブレイヤーを追加することもできます。

フィルター エンジン レイヤーの一覧については、「フィルターレイヤー識別子のリファレンス」セクションを参照してください。

フィルター

フィルター は、受信パケットまたは送信パケットと照合されるルールです。 このルールは、パケットを処理する処理 (ディープ パケットまたはストリーム検査のためにコールアウト モジュールを呼び出すなど) をフィルター エンジンに指示します。 たとえば、フィルターでは、"1024 より大きい TCP ポートを持つトラフィックをブロックする" または "セキュリティで保護されていないすべてのトラフィックに対して IDS への呼び出し" を指定できます。

ブート時フィルターは、TCP/IP スタック ドライバー (tcpip.sys) が起動するとすぐに、ブート時に適用されるフィルターです。 BFE の起動時にブート時フィルターが無効になります。 FwpmFilterAdd0が呼び出されたときに、FWPM_FILTER_FLAG_BOOTTIME フラグを設定することで、フィルターがブート時としてマークされます。

実行時フィルターは、BFE の開始後に適用されるフィルターです。 実行時フィルターは、作成方法に応じて静的、動的、または永続的にすることができます。 さまざまな種類のランタイム フィルターとその有効期間の詳細については、「オブジェクト管理の」を参照してください。

シム

shim は、フィルター エンジン レイヤーに対して分類することでフィルター処理の決定を行うカーネル モード コンポーネントです。 各 shim は、1 つ以上のレイヤーに対して分類します。 たとえば、トランスポート層モジュール shim は、フローの最初のパケットの受信トランスポート層、送信トランスポート層、ALE Connect および Receive-Accept 層に対して分類します。

パケット、ストリーム、およびイベントがネットワーク スタックを通過すると、shim はそれらを解析して分類可能な条件と値を抽出し、フィルター エンジンを呼び出して、特定のレイヤー内のフィルターに対して評価します。 フィルター エンジンは、分類の一部として 1 つ以上の吹き出しを呼び出すことができます。 shim は、フィルター エンジンによって実行された分類の結果に基づいて、パケット、ストリーム、およびイベントの実際のドロップを行います。

吹き出し

吹き出し は、ドライバーによって公開され、特殊なフィルター処理に使用される一連の関数です。 ウイルス スキャン、保護者による不適切なコンテンツのスキャン、監視ツール用のパケット データ解析など、パケットの分析と操作を実行するために使用されます。 ネットワーク アドレス変換 (NAT) ドライバーなどの一部の吹き出しは、オペレーティング システムに組み込まれています。 HTTP 保護者による制御の吹き出しや侵入検出システム (IDS) コールアウトなどの他のコールアウトは、独立系ソフトウェア ベンダー (ISV) から提供できます。 吹き出し関数は、特定のレイヤーで対応する吹き出しフィルターが一致すると、フィルター エンジンによって呼び出されます。

吹き出しは、カーネル モードの WFP レイヤーのいずれかで登録できます。 吹き出しはアクション ("ブロック"、"許可"、およびストリーム検査の実行時に "遅延"、"他のデータが必要"、"接続の切断") を返し、受信および送信のネットワーク トラフィックを変更してセキュリティで保護できます。

吹き出しがフィルター エンジンに登録されると、処理するネットワーク トラフィックを受信できます。 トラフィックは、レイヤーに応じてパケット、ストリーム、またはイベントである場合があります。 アプリケーションまたはファイアウォール エージェントは、アクションが "Callout" で吹き出し ID がその吹き出しの識別子であるフィルターを追加することで、トラフィックを吹き出しに渡します。 吹き出しは、shim に "ブロック" または "許可" を返すようにフィルター エンジンに指示できます。 吹き出しは、"Continue" を返して、他のフィルターがパケットを処理できるようにすることもできます。

1 つの引き出し線ドライバーによって複数の吹き出しが公開される場合があります。

吹き出しを使用するには、(FwpmCalloutAdd0を使用して) 追加し、(FwpsCalloutRegisterで) 登録する必要があります。 コールアウトを参照するフィルターを作成する前に、FwpmCalloutAdd0 する呼び出しが必要です。 吹き出しフィルターが一致したときに WFP がコールアウトを呼び出すには、FwpsCalloutRegister の呼び出しが必要です。 既定では、追加されたが、フィルター エンジンにまだ登録されていない吹き出しを参照するフィルターは、"ブロック" フィルターとして扱われます。 FwpmCalloutAdd0 と FwpsCalloutRegister 呼び出す順序は関係ありません。 永続的なコールアウトは 1 回だけ追加する必要があり、コールアウトを実装するドライバーが起動するたびに登録する必要があります (再起動後など)。

分類

分類は、ネットワーク トラフィック (パケット、ストリーム、またはイベント) にフィルターを適用して、そのトラフィックの "許可" または "ブロック" の結果を決定するプロセスです。 1 つのパケット、ストリーム、またはイベントに対して、レイヤーごとに 1 つの分類呼び出しがあります。

分類中、パケット、ストリーム、またはイベントのプロパティ (ソース アドレスなど) は、分類が呼び出されるレイヤーのフィルターに設定されたフィルター条件と比較されます。 一致が見つかると、フィルター判定 アルゴリズムを使用して分類プロセスの結果が決定されます。

分類要求は shim によってトリガーされます。

分類アクションは、次のいずれかになります。

  • 許す
  • ブロック
  • コールアウト
    • 許す
    • ブロック
    • 続ける
    • 据え置く
    • より多くのデータが必要
    • 接続を削除する

WFP 操作

起動時に、TCP/IP スタック ドライバー (tcpip.sys) が起動するとすぐに、カーネル モード フィルター エンジンは、ブート時フィルターを使用してシステムのセキュリティ ポリシーを適用します。

基本フィルター エンジン (BFE) がユーザー モードで起動すると、永続的なフィルターがプラットフォームに追加され、ブート時フィルターが無効になり、FwpmBfeStateSubscribeChanges0を使用してサブスクライブしたコールアウト ドライバーに通知が送信されます。 通知は、BFE の初期化が完了した直後にディスパッチされます。 これで、プラットフォームでコールアウトを登録し、ランタイム オブジェクトを追加する準備ができました。

ブート時間から永続的なフィルターへの切り替えは、数秒、または低速のコンピューターではさらに長くなる可能性があります。 これはアトミックであるため、プロバイダーにブート時間と永続的なフィルターの両方がある場合、どちらも有効でないときにウィンドウは表示されません。

BFE の開始後、ランタイム フィルターはファイアウォール エージェントまたはカスタム ファイアウォール ソリューションによって追加できます。 BFE はこれらのフィルターを処理し、適用のために適切なフィルター エンジン レイヤーに送信します。 BFE は認証設定も受け入れ、これらの設定を IPsec キー モジュール (IKE/AuthIP) に送信します。 詳細については、「IPsec 構成」を参照してください。

フィルターと認証設定はいつでも、BFE によって公開される RPC インターフェイスを介してシステム内で追加、削除、または変更できます。 サブレイヤーと吹き出しモジュールも同様に追加または削除できます。

データ フロー:

  1. パケットがネットワーク スタックに入ってくる。
  2. ネットワーク スタックは shim を検索して呼び出します。
  3. shim は、特定のレイヤーで分類プロセスを呼び出します。
  4. 分類中にフィルターが一致し、結果のアクションが実行されます。 (フィルター判定 参照)。
  5. 分類プロセス中に吹き出しフィルターが一致すると、対応する吹き出しが呼び出されます。
  6. shim は、最終的なフィルター処理の決定 (パケットのドロップなど) に作用します。

送信データ フローも同様のパターンに従います。

次のトピックでは、WFP の動作について詳しく説明します。

オブジェクト モデルの

オブジェクト管理の