You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows 10 防火墙出站规则配置问题:无法允许svchost.exe托管的Windows更新及传递优化服务联网

Windows 10 防火墙出站规则配置问题:无法允许svchost.exe托管的Windows更新及传递优化服务联网

大家好,我最近在配置Windows防火墙出站规则时卡壳了,想请各位帮忙看看问题出在哪。

我的核心需求

我想搭建一套严格的出站防火墙策略:

  • 默认阻止所有出站流量,仅通过明确创建的规则放行
  • 允许所有程序连接DNS(53端口)、DHCP这类基础网络服务端口
  • 仅允许指定程序(比如浏览器)正常联网
  • 仅允许两个系统服务联网:Windows Update服务Delivery Optimization Service

环境基础信息

  • 系统版本:Windows 10 x64 22H2,已安装所有最新更新补丁
  • 目标服务的运行形式:两个服务都是以.dll文件形式托管在svchost.exe中,且每个svchost.exe实例仅运行一个服务(没有多服务共享一个svchost进程的情况)
  • 服务权限:这两个服务都已设置为“不受限制”状态,拥有独立的S-1-5-80-xxx格式的服务SID,理论上可以被防火墙规则精准识别

我已经完成的配置操作

  1. 将防火墙的三个配置文件(公开、私有、域)全部设置为「阻止所有出站连接,仅允许规则明确放行」
  2. 创建了两条出站允许规则,分别对应Windows Update(服务短名wuauserv)和Delivery Optimization Service(服务短名DoSvc),规则覆盖所有三个配置文件
  3. 通过PowerShell命令Set-NetConnectionProfile将当前网络标记为私有网络

遇到的问题现象

  • 浏览器等指定程序可以正常联网(DNS解析、HTTP/HTTPS访问都没问题),但Windows Update完全无法连接到服务器,重启服务后依然无效
  • 查看防火墙日志和安全审计日志,发现是默认的阻止规则在生效:wuauserv对应的svchost.exe发起的TCP 443端口连接被拒绝
  • 我用ProcessExplorer和SystemInformer工具确认过:被阻止的svchost进程确实属于wuauserv服务,且进程的安全令牌里包含对应的服务SID,按道理规则应该匹配,但就是没生效

尝试过的无效方案

  • 试过网上一个针对类似问题的配置方案,调整后依然无法解决问题
  • 临时禁用所有服务相关规则,改成直接允许svchost.exe整体出站,此时Windows Update可以正常更新,但这个方案不符合我的安全需求——因为svchost还托管了很多我不想放行的其他服务

补充验证的细节信息

我用PowerShell查看了规则的服务过滤配置,结果如下:

PS C:\Windows\system32> Get-NetFirewallRule -DisplayName 'Windows Update Service (tcp) - by service SID' | Get-NetFirewallServiceFilter
Service : Any

PS C:\Windows\system32> Get-NetFirewallRule -DisplayName 'Windows Update Service (tcp) - by service name' | Get-NetFirewallServiceFilter
Service : wuauserv

PS C:\Windows\system32> Get-NetFirewallRule -DisplayName 'Delivery Optimization Service (tcp) - by service SID' | Get-NetFirewallServiceFilter
Service : Any

PS C:\Windows\system32> Get-NetFirewallRule -DisplayName 'Delivery Optimization Service (tcp) - by service name' | Get-NetFirewallServiceFilter
Service : DoSvc

另外我启用了WFP连接审计(执行命令:auditpol.exe /set /subcategory:"{0CCE9226-69AE-11D9-BED3-505054503030}" /success:enable /failure:enable),导出日志后明确看到wuauserv的svchost进程被阻止:

"Index","TimeGenerated","EventID","Decision","Direction","Proto","SrcAddr","SrcPort","DstAddr","DstPort","Operation","ProcId","ProcPath","ProcCmdLine","SvcName","SvcDisplay"
...
"209643","2023-12-10 10:32:51 PM","5157","Block","Out","TCP","192.168.0.249","63342","20.114.59.183","443","Connect","7472","C:\Windows\system32\svchost.exe","C:\Windows\system32\svchost.exe -k netsvcs -p -s wuauserv","wuauserv","Windows Update"
...

Windows防火墙日志里也有大量对应的DROP记录,示例如下:

2023-12-11 21:30:04 DROP TCP 192.168.0.249 40.127.240.158 59536 443 0 - 0 0 0 - - - SEND
...

我的疑问

到底是哪里配置出错了?怎么才能正确实现「仅允许指定svchost托管的服务出站」的目标?

麻烦大家帮忙分析下,谢谢!

备注:内容来源于stack exchange,提问作者shadowpool

火山引擎 最新活动