共用方式為


隔離行為

網路管理員面臨的其中一個安全性挑戰是在網路變更之後正確設定裝置。

網路變更可能會經常發生。 在變更之後重新分類網路,並在裝置上套用正確安全策略所需的作業是非必要的,而且可能需要相當長的CPU時間。 作業的這項需求特別適用於屬於網域的裝置。 在網路重新分類期間套用安全策略的延遲可能會因為弱點而遭到利用。

為了對抗潛在的惡意探索,Windows 防火牆會隔離介面,直到系統成功重新分類網路,而 Windows 篩選平臺 (WFP) 已針對更新的介面設定套用正確的篩選。 在隔離期間,會封鎖所有沒有例外狀況的新輸入連線。

本文件說明隔離功能,並說明為何應用程式流量可能遭到隔離封鎖。

隔離篩選

隔離功能會建立可分成三個類別的篩選條件:

  • 隔離預設輸入區塊篩選
  • 隔離預設例外狀況篩選
  • 介面不四分位篩選

這些篩選條件會加入子層中, FWPM_SUBLAYER_MPSSVC_QUARANTINE 而這些層級如下:

  1. FWPM_LAYER_ALE_AUTH_CONNECT_V4
  2. FWPM_LAYER_ALE_AUTH_CONNECT_V6
  3. FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4
  4. FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6

注意

原則設定所新增的任何防火牆規則,並不會影響隔離子層中的篩選。 來自防火牆規則的篩選條件會新增到 FWPM_SUBLAYER_MPSSVC_WF 子層中。 換句話說,您無法新增自己的例外狀況篩選,以防止隔離篩選條件評估封包。

如需 WFP 層次和子層的詳細資訊,請參閱 WFP 作業

隔離預設輸入區塊篩選

隔離預設輸入區塊篩選器會封鎖任何新的非回傳輸入連線,除非隔離子層中的另一個篩選器未明確允許封包。

隔離預設例外狀況篩選

當介面處於隔離狀態時,隔離預設例外狀況篩選會允許新的輸入連線,因為它們符合例外狀況篩選條件。 例外狀況篩選的其中一個範例是隔離預設的輸入回送例外狀況篩選。 當介面處於隔離狀態時,此例外狀況篩選器會允許所有回送封包。

介面不四分位篩選

如果介面已成功分類,介面取消四分位篩選會允許所有非回溯封包。

隔離流程

下列事件描述隔離的一般流程:

  1. 目前的網路介面有一些變更
  2. 介面取消四分位篩選器不允許新的輸入連線。 介面現在處於隔離狀態
  3. 隔離預設例外狀況篩選器允許所有非回送輸入連線,或由隔離預設輸入區塊篩選器卸除
  4. 適用於舊介面狀態的 WFP 篩選已移除
  5. 系統會新增適用於新介面狀態的 WFP 篩選,其中包括此介面的非四分位篩選。 這些篩選條件會更新以符合介面的目前狀態
  6. 介面現在已結束隔離狀態,因為介面非四邊形篩選允許任何新的非回送封包

隔離診斷

有兩種方法可識別隔離預設輸入區塊篩選中的封包卸除。

假設網路連線問題可重現,您可以在系統管理命令提示字元中執行下列命令來收集診斷追蹤:

Netsh wfp cap start
<Reproduce network connectivity issue>
Netsh wfp cap stop

這些命令會產生 wfpdiag.cab。 .cab 內有一個 wfpdiag.xml,其中包含在該重現期間存在的卸除 netEvents 和篩選。

在 wfpdiag.xml 內,搜尋 netEvents 類型 FWPM_NET_EVENT_TYPE_CLASSIFY_DROP 為 的 netEvent 。 若要尋找相關的置放事件,請搜尋目的地 IP 位址、套件 SID 或應用程式識別碼名稱相符的置放事件。

應用程式識別碼名稱中的字元會以句號分隔:

 <asString>         \\.d.e.v.i.c.e.\\.h.a.r.d.d.i.s.k.v.o.l.u.m.e.1.\\.w.i.n.d.o.w.s.\\.s.y.s.t.e.m.3.2.\\.s.v.c.h.o.s.t...e.x.e... </asString>

netEvent包含有關已卸除封包的詳細資訊,包括其功能的相關信息、卸除封包的篩選,以及更多資訊。

如果卸除該封包的篩選條件是隔離預設輸入區塊篩選,則卸除 netEvent 包含 filterOriginQuarantine Default

下列程式代碼是的範例 netEvent ,其 為 filterOriginQuarantine Default

<netEvent>
    <header>
        <timeStamp>2020-10-07T01:03:56.281Z</timeStamp>
        <flags numItems="9">
            <item>FWPM_NET_EVENT_FLAG_IP_PROTOCOL_SET</item>
            <item>FWPM_NET_EVENT_FLAG_LOCAL_ADDR_SET</item>
            <item>FWPM_NET_EVENT_FLAG_REMOTE_ADDR_SET</item>
            <item>FWPM_NET_EVENT_FLAG_LOCAL_PORT_SET</item>
            <item>FWPM_NET_EVENT_FLAG_REMOTE_PORT_SET</item>
            <item>FWPM_NET_EVENT_FLAG_APP_ID_SET</item>
            <item>FWPM_NET_EVENT_FLAG_USER_ID_SET</item>
            <item>FWPM_NET_EVENT_FLAG_IP_VERSION_SET</item>
            <item>FWPM_NET_EVENT_FLAG_PACKAGE_ID_SET</item>
        </flags>
        <ipVersion>FWP_IP_VERSION_V4</ipVersion>
        <ipProtocol>17</ipProtocol>
        <localAddrV4>255.255.255.255</localAddrV4>
        <remoteAddrV4>10.195.33.252</remoteAddrV4>
        <localPort>21</localPort>
        <remotePort>61706</remotePort>
        <scopeId>0</scopeId>
        <appId>
            <data>5c00640065006d00330032005c0073007600630068006f00730074002e006500780065000000</data>
            <asString>\.d.e.v.i.c.e.\.h.a.r.d.d.i.s.k.v.o.l.u.m.e.1.\.w.i.n.d.o.w.s.\.s.y.s.t.e.m.3.2.\.s.v.c.h.o.s.t...e.x.e...</asString>
        </appId>
        <userId>S-1-5-19</userId>
        <addressFamily>FWP_AF_INET</addressFamily>
        <packageSid>S-1-0-0</packageSid>
        <enterpriseId/>
        <policyFlags>0</policyFlags>
        <effectiveName/>
    </header>
    <type>FWPM_NET_EVENT_TYPE_CLASSIFY_DROP</type>
    <classifyDrop>
        <filterId>66241</filterId>
        <layerId>44</layerId>
        <reauthReason>0</reauthReason>
        <originalProfile>0</originalProfile>
        <currentProfile>0</currentProfile>
        <msFwpDirection>MS_FWP_DIRECTION_OUT</msFwpDirection>
        <isLoopback>false</isLoopback>
        <vSwitchId/>
        <vSwitchSourcePort>0</vSwitchSourcePort>
        <vSwitchDestinationPort>0</vSwitchDestinationPort>
    </classifyDrop>
    <internalFields>
        <internalFlags numItems="1">
            <item>FWPM_NET_EVENT_INTERNAL_FLAG_FILTER_ORIGIN_SET</item>
        </internalFlags>
        <capabilities/>
        <fqbnVersion>0</fqbnVersion>
        <fqbnName/>
        <terminatingFiltersInfo numItems="3">
            <item>
                <filterId>66241</filterId>
                <subLayer>FWPP_SUBLAYER_INTERNAL_FIREWALL_QUARANTINE</subLayer>
                <actionType>FWP_ACTION_BLOCK</actionType>
            </item>
            <item>
                <filterId>74045</filterId>
                <subLayer>FWPP_SUBLAYER_INTERNAL_FIREWALL_WSH</subLayer>
                <actionType>FWP_ACTION_BLOCK</actionType>
            </item>
            <item>
                <filterId>73602</filterId>
                <subLayer>FWPP_SUBLAYER_INTERNAL_FIREWALL_WF</subLayer>
                <actionType>FWP_ACTION_BLOCK</actionType>
            </item>
        </terminatingFiltersInfo>
        <filterOrigin>Quarantine Default</filterOrigin>
         <interfaceIndex>5</interfaceIndex>
    </internalFields>
</netEvent>

或者,如果已啟用篩選平台連線失敗稽核,卸除事件會記錄在 Windows 事件檢視器 中。

若要啟用篩選平台連線稽核,請在系統管理命令提示字元中執行下列命令:

Auditpol /set /category:"System" /SubCategory:"Filtering Platform Connection" /success:enable /failure:enable

範例卸除稽核,使用 filterOrigin 作為 Quarantine Default

隔離預設值。

一旦將卸除的篩選來源識別為隔離預設輸入區塊篩選之後,應該進一步調查介面。 若要尋找相關的介面,請在下列 PowerShell 命令中使用 InterfaceIndex 或 事件稽核中的值 netEvent ,以產生介面的詳細資訊:

Get-NetIPInterface -InterfaceIndex <Interface Index>
Get-NetIPInterface -InterfaceIndex 5

在介面名稱的協助下,可以搜尋事件查看器來尋找任何介面相關的變更。

若要啟用更多網路稽核事件,請參閱 啟用 IPsec 和 Windows 防火牆稽核事件

從隔離預設輸入區塊篩選卸除封包通常是暫時性的,而且不會表示介面上的網路變更。