我在公司网络中有一台机器,其中设置了超过 17,000 个出站和入站防火墙过滤器。我可以使用 netsh 命令查看它们
netsh wfp show filters dir=OUT file=OutBoundFilters.xml
我有数千条这样的“InternetClientServer出站默认规则”过滤规则
<item>
<filterKey>{3c45917d-eff9-4895-b36f-bec4efccbf95}</filterKey>
<displayData>
<name>InternetClientServer Outbound Default Rule</name>
<description>InternetClientServer Outbound Default Rule</description>
</displayData>
<flags/>
<providerKey>{4b153735-1049-4480-aab4-d1b9bdc03710}</providerKey>
<providerData>
<data>3303000000000000</data>
<asString>3.......</asString>
</providerData>
<layerKey>FWPM_LAYER_ALE_AUTH_CONNECT_V4</layerKey>
<subLayerKey>{b3cdd441-af90-41ba-a745-7c6008ff2300}</subLayerKey>
<weight>
<type>FWP_EMPTY</type>
</weight>
<filterCondition numItems="5">
<item>
<fieldKey>FWPM_CONDITION_ALE_PACKAGE_ID</fieldKey>
<matchType>FWP_MATCH_NOT_EQUAL</matchType>
<conditionValue>
<type>FWP_SID</type>
<sid>S-1-0-0</sid>
</conditionValue>
</item>
<item>
<fieldKey>FWPM_CONDITION_IP_REMOTE_ADDRESS</fieldKey>
<matchType>FWP_MATCH_RANGE</matchType>
<conditionValue>
<type>FWP_RANGE_TYPE</type>
<rangeValue>
<valueLow>
<type>FWP_UINT32</type>
<uint32>10.10.55.127</uint32>
</valueLow>
<valueHigh>
<type>FWP_UINT32</type>
<uint32>10.10.56.0</uint32>
</valueHigh>
</rangeValue>
</conditionValue>
</item>
<item>
<fieldKey>FWPM_CONDITION_ORIGINAL_PROFILE_ID</fieldKey>
<matchType>FWP_MATCH_EQUAL</matchType>
<conditionValue>
<type>FWP_UINT32</type>
<uint32>3</uint32>
</conditionValue>
</item>
<item>
<fieldKey>FWPM_CONDITION_CURRENT_PROFILE_ID</fieldKey>
<matchType>FWP_MATCH_EQUAL</matchType>
<conditionValue>
<type>FWP_UINT32</type>
<uint32>3</uint32>
</conditionValue>
</item>
<item>
<fieldKey>FWPM_CONDITION_ALE_USER_ID</fieldKey>
<matchType>FWP_MATCH_EQUAL</matchType>
<conditionValue>
<type>FWP_SECURITY_DESCRIPTOR_TYPE</type>
<sd>O:LSD:(A;;CC;;;S-1-15-3-2)(A;;CC;;;WD)(A;;CC;;;AN)</sd>
</conditionValue>
</item>
</filterCondition>
<action>
<type>FWP_ACTION_PERMIT</type>
<filterType/>
</action>
<rawContext>0</rawContext>
<reserved/>
<filterId>391334</filterId>
<effectiveWeight>
<type>FWP_UINT64</type>
<uint64>225180806002261888</uint64>
</effectiveWeight>
</item>
这些规则适用于 Windows 防火墙中的基础过滤引擎。MMC UI 中没有太多防火墙规则,所以我有点搞不清楚这数千个过滤器来自哪里,以及哪条规则负责它们。
现在我想摆脱一些规则,或者至少找出它们的来源。我找到了注册表项
计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BFE\Parameters\Policy\Persistent\Filter
存在一些 guid,但我无法将过滤规则与某些特定注册表项关联。规则最终存储在哪里?注册表、文件还是通过组策略推送到注册表?我通过检查内核中的 CPU 消耗发现了这个问题,其中大量的 CPU 被花在
https://docs.microsoft.com/en-us/windows/win32/fwp/ale-re-authorization
CPU 占用率高的原因在于防火墙规则太多。我该如何进一步追踪呢?我曾尝试在启动时登录防火墙服务,因为防火墙服务消耗的内存更多,但我没有发现谁将数据输入防火墙服务。实际数据似乎以紧凑格式存储,不会显示在 CPU 分析中,这是一个令人讨厌的问题。
答案1
在注册表中。
防火墙规则存储在 Software\Policies\Microsoft\WindowsFirewall\FirewallRules 项下。该项下的每个值都是一条防火墙规则 -https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-gpfas/2efe0b76-7b4a-41ff-9050-1023f8196d16
答案2
我相信您可以在这里找到(许多)防火墙规则:
HKLM\SYSTEM\CurrentControlSet\Services\BFE\Parameters\Policy\Persistent\Filter