Windows 7 防火墙出站允许 CryptSvc 规则不匹配

the*_*age 5 windows-7 svchost windows-firewall

我正在使用启用了出站过滤的 Windows 7 防火墙。Windows 防火墙不为新的出站连接提示提供 UI,它只是阻止它们。Windows 防火墙控制使用一种变通方法解决了这个问题 - 它启用对数据包/连接丢弃故障的审核日志记录,监视安全日志中的新条目,并根据需要显示提示。

我花了一些时间为需要建立出站连接的所有系统服务和应用程序制定出站允许规则列表。Windows 防火墙能够以 svchost.exe 中的特定服务为目标,从而实现非常精细的控制。我只遇到过两件事不起作用 - 网络发现和加密服务。

我启用了以下规则:

netsh advfirewall firewall add rule name="Windows Cryptographic Services"
  program="%SystemRoot%\System32\svchost.exe" service=CryptSvc 
  protocol=tcp remoteport=80,443 dir=out action=allow
Run Code Online (Sandbox Code Playgroud)

但是,我仍然不断收到来自托管 CryptSvc 的 svchost.exe 的块,试图建立出站 http 连接以验证证书等。我什sc config CryptSvc type=own至曾经将服务隔离到它自己的容器中,以确认确实是 CryptSvc 发出了这些请求。即便如此,规则仍然不匹配。还有许多其他规则具有相同的结构,只是目标服务不同,一切正常。

到目前为止,我找不到令人满意的解决方法。允许 CryptSvc 的“一切”仍然不会使其匹配。范围至少需要是“所有服务”才能匹配,这太宽泛了。我可以在 WFC 中为 svchost.exe 添加忽略规则,但这又太宽泛了,我不喜欢。我更喜欢系统的解决方案。

编辑:尝试编辑我的防火墙规则会弹出警告框:

Windows 服务受到仅允许预期行为的规则的限制。指定主机进程的规则(例如 svchost.exe)可能无法按预期工作,因为它们可能与 Windows 服务强化规则发生冲突。

您确定要创建引用此流程的规则吗?

可能是这种“强化”干扰了防火墙识别原始服务的机制。

小智 1

很久以前,但仍然是一个有效的问题。由于问题仍然存在,这是我的解决方案

  1. 打开 CMD 窗口并获取 cryptsvc 服务的 SID: sc showsid cryptsvc
  2. 为某些程序创建高级出站防火墙规则(任意)
  3. 编辑此规则的属性:程序和服务、程序全部、应用程序包使用最后一个选项应用以下应用程序 SID 并将 CMD 窗口中的 SID 粘贴到此处
  4. 端口和协议 TCP 80、443改为允许 TCP ALL