网络管理员面临的一个安全挑战是在网络更改后正确配置设备。
网络更改可能会频繁发生。 更改后重新分类网络并在设备上应用正确的安全策略所需的作是非琐碎的,可能需要大量的 CPU 时间。 对于属于域的设备,作的此要求尤其如此。 网络重新分类期间应用安全策略的延迟可能会利用漏洞。
为了应对潜在的攻击,Windows 防火墙会隔离接口,直到系统成功重新分类网络,Windows 筛选平台 (WFP) 为更新的接口配置应用了正确的筛选器。 在隔离期间,将阻止所有无例外的新入站连接。
本文档介绍了隔离功能,并解释了隔离区可能会阻止应用程序流量的原因。
隔离筛选器
隔离功能可创建可拆分为三个类别的筛选器:
- 隔离默认入站阻止筛选器
- 隔离默认异常筛选器
- 接口非隔离筛选器
这些筛选器添加到子层中 FWPM_SUBLAYER_MPSSVC_QUARANTINE
,这些层包括:
FWPM_LAYER_ALE_AUTH_CONNECT_V4
FWPM_LAYER_ALE_AUTH_CONNECT_V6
FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4
FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6
注意
策略设置添加的任何防火墙规则都不会影响隔离子层中的筛选器。 防火墙规则中的筛选器添加到子层中 FWPM_SUBLAYER_MPSSVC_WF
。 换句话说,无法添加自己的异常筛选器来防止隔离筛选器评估数据包。
有关 WFP 层和子图层的详细信息,请参阅 WFP作。
隔离默认入站阻止筛选器
隔离默认入站块筛选器会阻止任何新的非回退入站连接,除非隔离子层中的另一个筛选器未显式允许数据包。
隔离默认异常筛选器
当接口处于隔离状态时,隔离默认异常筛选器允许新的入站连接,因为它们满足异常筛选器的条件。 异常筛选器的一个示例是隔离默认入站环回异常筛选器。 当接口处于隔离状态时,此异常筛选器允许所有环回数据包。
接口 unquarantine 筛选器
如果接口成功分类,则接口 unquarantine 筛选器允许所有非回退数据包。
隔离流
以下事件描述了隔离的常规流:
- 当前网络接口存在一些更改
- 接口非隔离筛选器不允许新的入站连接。 接口现在处于隔离状态
- 隔离默认异常筛选器允许所有非回退入站连接,或由隔离默认入站阻止筛选器删除
- 已删除适用于旧接口状态的 WFP 筛选器
- 添加了适用于新接口状态的 WFP 筛选器,其中包括此接口的未隔离筛选器。 更新这些筛选器以匹配接口的当前状态
- 接口现已退出隔离状态,因为接口 unquarantine 筛选器允许任何新的非回退数据包
隔离诊断
有两种方法可以识别隔离默认入站块筛选器中的数据包丢弃。
鉴于网络连接问题可重现,可以通过在管理命令提示符中运行以下命令来收集诊断跟踪:
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 或应用程序 ID 名称匹配的删除事件。
应用程序 ID 名称中的字符由句点分隔:
<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
包含 filterOrigin
为 Quarantine Default
。
以下代码是一个示例 netEvent
,将 filterOrigin
用作 Quarantine 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
。
将删除的筛选器源标识为隔离默认入站块筛选器后,应进一步调查接口。 若要查找相关接口,请使用 InterfaceIndex
以下 PowerShell 命令中的 或 事件审核中的 值 netEvent
来生成有关接口的详细信息:
Get-NetIPInterface -InterfaceIndex <Interface Index>
Get-NetIPInterface -InterfaceIndex 5
借助接口名称,可以在事件查看器中搜索任何与接口相关的更改。
若要启用更多网络审核事件,请参阅 启用 IPsec 和 Windows 防火墙审核事件。
来自隔离默认入站块筛选器的数据包丢弃通常是暂时的,除了接口上的网络更改之外,不会表示其他任何内容。