我在 Windows 10 上的 wsl 下运行了一个 Apache Web 服务器。它以前运行正常,没有任何问题。现在我已经有一段时间没有使用它了,当我测试它时,Windows 防火墙阻止了 https 请求。它是防火墙上的“公共配置文件”,用于我的场景。我做了一些故障排除,似乎阻止调用的防火墙规则名为“查询用户”。经过一番谷歌搜索,我了解到这条规则在 Windows 防火墙中不可见,它用于查询用户是否接受连接,但似乎只在某些情况下这样做。
我如何让此规则接受我传入的 https 请求?任何想法都值得赞赏!
我目前不太好的解决方法是将传入连接的公共配置文件设置设为接受,而不是默认的“阻止(默认)”(不要与“阻止所有连接”混淆)。
以下事件显示了被阻止的呼叫。
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-a5ba-3e3b0328c30d}"/>
<EventID>5157</EventID>
<Version>1</Version>
<Level>0</Level>
<Task>12810</Task>
<Opcode>0</Opcode>
<Keywords>0x8010000000000000</Keywords>
<TimeCreated SystemTime="2022-09-21T09:08:01.8655962Z"/>
<EventRecordID>1494306</EventRecordID>
<Correlation/>
<Execution ProcessID="4" ThreadID="12808"/>
<Channel>Security</Channel>
<Computer>JM-SERVER</Computer>
<Security/>
</System>
<EventData>
<Data Name="ProcessID">7088</Data>
<Data Name="Application">\device\harddiskvolume1\users\jeremia\appdata\local\packages\canonicalgrouplimited.ubuntuonwindows_79rhkp1fndgsc\localstate\rootfs\usr\sbin\apache2</Data>
<Data Name="Direction">%%14592</Data>
<Data Name="SourceAddress">83.254.163.182</Data>
<Data Name="SourcePort">54569</Data>
<Data Name="DestAddress">192.168.0.110</Data>
<Data Name="DestPort">443</Data>
<Data Name="Protocol">6</Data>
<Data Name="FilterRTID">1982809</Data>
<Data Name="LayerName">%%14610</Data>
<Data Name="LayerRTID">44</Data>
<Data Name="RemoteUserID">S-1-0-0</Data>
<Data Name="RemoteMachineID">S-1-0-0</Data>
</EventData>
</Event>
以及来自 wfpstate.xml 的相应防火墙过滤器:
<item>
<filterKey>{99ef2f5f-ee43-402c-9ab0-14fd61a04dc9}</filterKey>
<displayData>
<name>Query User</name>
<description>Prompt the User for a decision corresponding this Inbound Traffic</description>
</displayData>
<flags/>
<providerKey>FWPM_PROVIDER_MPSSVC_WF</providerKey>
<providerData>
<data>6246050000000000</data>
<asString>bF......</asString>
</providerData>
<layerKey>FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4</layerKey>
<subLayerKey>FWPM_SUBLAYER_MPSSVC_WF</subLayerKey>
<weight>
<type>FWP_UINT8</type>
<uint8>8</uint8>
</weight>
<filterCondition numItems="1">
<item>
<fieldKey>FWPM_CONDITION_ORIGINAL_PROFILE_ID</fieldKey>
<matchType>FWP_MATCH_EQUAL</matchType>
<conditionValue>
<type>FWP_UINT32</type>
<uint32>1</uint32>
</conditionValue>
</item>
</filterCondition>
<action>
<type>FWP_ACTION_BLOCK</type>
<filterType/>
</action>
<rawContext>0</rawContext>
<reserved/>
<filterId>1982809</filterId>
<effectiveWeight>
<type>FWP_UINT64</type>
<uint64>9223372036854783488</uint64>
</effectiveWeight>
</item>
答案1
经过几天的故障排除,终于解决了这个问题。防火墙无法接受已创建明确允许规则的端口上的流量。希望这能为其他人解决同样的问题。
- 尝试重置防火墙(导出后),但无济于事
- 尝试删除“查询用户”防火墙规则的注册表项,如 Ben N 在此处所建议的那样 -https://superuser.com/questions/1154812/how-to-re-trigger-windows-firewall-has-blocked-message
- 尝试按照 i3v 的建议启用通知 -https://social.technet.microsoft.com/Forums/en-US/2cd7bb33-aa58-4358-9503-640210c5b556/firewall-quotquery-userquot-filters-not-querying-user
- 完成这些步骤后,日志显示“查询用户默认值”,但问题并未得到解决
但最终,通过使用域帐户而非本地管理员帐户重新创建防火墙规则解决了问题。