Windows 篩選平臺(WFP)藉由整合下列基本實體來執行其工作:層、篩選、填充碼,以及 圖說文字。
層
層 是由篩選引擎管理的容器,其函式是將篩選組織成集合。 圖層不是網路堆疊中的模組。 每一層都有一個架構,可定義可新增至其中的篩選條件類型。 如需詳細資訊,請參閱每個篩選層 可用的 篩選條件。
圖層可能包含子層來管理衝突的篩選需求,例如「封鎖 1024 以上的 TCP 埠」和「開啟埠 1080」。 管理篩選衝突的規則取決於 篩選仲裁。
WFP 包含一組 內建子層。 每個圖層都會繼承所有內建子層。 使用者也可以新增自己的子層。
過濾器
篩選 是與傳入或傳出封包相符的規則。 此規則會告知篩選引擎如何使用封包,包括呼叫註標模組以進行深層封包或串流檢查。 例如,篩選可能會指定「封鎖 TCP 埠大於 1024 的流量」或「針對未保護的所有流量呼叫 IDS」。
開機時間篩選條件是一旦 TCP/IP 堆棧驅動程序 (tcpip.sys) 啟動時,就會在開機時間強制執行的篩選。 BFE 啟動時會停用開機時間篩選。 叫用 FwpmFilterAdd0 時,會設定 FWPM_FILTER_FLAG_BOOTTIME 旗標,以標示為開機時間。
運行時間篩選條件是在 BFE 啟動之後強制執行的篩選。 運行時間篩選條件可以是靜態、動態或持續性,視其建立方式而定。 如需不同類型的運行時間篩選及其存留期的詳細資訊,請參閱 物件管理。
墊片
填充碼 是一種核心模式元件,可針對篩選引擎層進行分類,以做出篩選決策。 每個填充碼都會分類成一或多個圖層。 例如,傳輸層模組填充碼會針對輸入傳輸層、輸出傳輸層,以及流程第一個封包的 ALE Connect 和 Receive-Accept 層分類。
當封包、數據流和事件周遊網路堆疊時,填充碼會剖析它們以擷取可分類的條件和值,然後呼叫篩選引擎,以針對指定層中的篩選條件進行評估。 篩選引擎可能會叫用一或多個圖說文字做為分類的一部分。 填充碼會根據篩選引擎所執行的分類結果,執行封包、數據流和事件的實際卸除。
註標
圖說文字 是由驅動程序公開的一組函式,並用於特製化篩選。 它們可用來執行封包的分析與作,例如病毒掃描、家長控制掃描不當內容、封包數據剖析以監視工具。 某些圖說文字,例如網路位址轉換 (NAT) 驅動程式,內建於作系統中。 其他專案,例如 HTTP 家長控制圖說文字或入侵檢測系統 (IDS) 圖說文字,可由獨立軟體供應商 (ISV) 提供。 當對應圖說文字篩選器在指定的圖層上相符時,篩選引擎會叫用圖說文字函式。
圖說文字可以在任何核心模式的 WFP 層註冊。 圖說文字可以傳回動作(「封鎖」、「允許」,以及執行串流檢查時,「延遲」、「需要更多數據」、「卸除連線」,而且可以修改及保護輸入和輸出網路流量。
向篩選引擎註冊圖說文字之後,即可接收要處理的網路流量。 根據層而定,流量可能是封包、數據流或事件。 應用程式或防火牆代理程式藉由新增動作為「Callout」 且圖說文字標識碼為圖說文字標識碼的篩選條件,將流量傳遞至圖說文字。 圖說文字可以指示篩選引擎將 「Block」 或 「Permit」 傳回填充碼。 圖說文字也可以傳回「繼續」,以允許其他篩選處理封包。
一個圖說文字驅動程式可能會公開多個圖說文字。
必須先新增圖說文字(FwpmCalloutAdd0),並註冊(FwpsCalloutRegister),才能使用它。 建立參考圖說文字的篩選條件之前,必須先呼叫 FwpmCalloutAdd0。 需要呼叫 FwpsCalloutRegister,才能在符合圖說文字篩選條件時叫用圖說文字。 根據預設,參考已新增但尚未向篩選引擎註冊的圖說文字的篩選,會被視為「封鎖」篩選條件。 呼叫 FwpmCalloutAdd0 和 FwpsCalloutRegister 的順序並不重要。 每次實作圖說文字的驅動程序啟動時,都必須只新增一次持續性圖說文字(例如重新啟動后)。
分類
分類是將篩選套用至網路流量的程式(封包、數據流或事件),以判斷該流量的「允許」或「封鎖」結果。 針對一個封包、串流或事件,每個層都有一個分類呼叫。
在分類期間,封包、數據流或事件的屬性(例如來源位址)會與在叫用分類的圖層上設定的篩選條件進行比較。 找到相符專案時,會使用 篩選仲裁 演演算法來判斷分類程序的結果。
分類要求是由填充碼觸發。
分類動作可以是:
- 許可證
- 塊
- 標註
- 許可證
- 塊
- 繼續
- 推遲
- 需要更多數據
- 卸除連線
糧食計劃署作業
開機時,一旦 TCP/IP 堆棧驅動程序 (tcpip.sys) 啟動時,內核模式篩選引擎就會透過開機時間篩選條件強制執行系統的安全策略。
一旦基底篩選引擎 (BFE) 以使用者模式啟動,持續性篩選就會新增至平台、停用開機時間篩選,並將通知傳送給使用 FwpmBfeStateSubscribeChanges0 FwpmBfeStateSubscribeChanges0 訂閱的圖說文字驅動程式。 通知會在 BFE 初始化完成之後立即分派。 平臺現在已準備好要註冊圖說文字,以及要新增的運行時間物件。
從開機時間轉換到永續性篩選的轉換可能是數秒,或甚至更長的時間在緩慢的計算機上。 這是不可部分完成的,因此,如果提供者同時具有開機時間和持續性篩選條件,則兩者都沒有作用時永遠不會有視窗。
在 BFE 啟動之後,您可以透過防火牆代理程式或自定義防火牆解決方案來新增運行時間篩選。 BFE 會處理這些篩選,並將其傳送至適當的篩選引擎層,以進行強制執行。 BFE 也接受驗證設定,並將這些設定傳送至 IPsec 金鑰處理模組 (IKE/AuthIP)。 如需詳細資訊,請參閱 IPsec 組態。
您可以隨時透過 BFE 公開的 RPC 介面,在系統中新增、移除或變更篩選和驗證設定。 子層和圖說文字模組也可以新增或移除。
資料流:
- 封包會進入網路堆疊。
- 網路堆疊會尋找並呼叫填充碼。
- 填充碼會在特定層叫用分類程式。
- 在分類期間,會比對篩選,並採取結果動作。 (請參閱 篩選仲裁。
- 如果在分類程序期間比對任何圖說文字篩選條件,則會叫用對應的圖說文字。
- 填充碼會處理最終篩選決策(例如卸除封包)。
輸出數據流遵循類似的模式。
下列主題會進一步說明糧食計劃署的作業。
相關主題