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

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

我正在使用启用了出站过滤的 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

但是,我仍然不断收到来自托管 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

相关内容