gpt4 book ai didi

windows - 使用适用于服务运行的所有应用程序的 Windows 防火墙 API 创建规则

转载 作者:可可西里 更新时间:2023-11-01 11:48:22 31 4
gpt4 key购买 nike

我正在尝试为 Windows 服务设置防火墙规则以拒绝所有入站和出站 TCP 和 UDP 连接,但使用 Windows 服务强化 API 的主机和端口白名单除外,遵循 VBScript 示例 here .

现在,此服务可能会产生新进程(因为它是持续集成构建和测试代理),因此仅设置 NewOutboundRule.ApplicationName = "%systemDrive%\WINDOWS\system32\svchost.exe 是不够的" 如上面的示例脚本所示 - 我需要一个规则来应用于服务运行的所有应用程序。

但是,如果我尝试设置新的入站规则,其中未在 INetFw 上指定据称可选的 ApplicationName 属性接口(interface),添加新规则的调用失败(在上面脚本中的 wshRules.Add NewOutboundRule 行)。其他都是正确的,就好像我指定了ApplicationName,调用成功。

是否有某种方法可以创建适用于 ApplicationName 所有可能值的规则,或者有其他替代方法吗?

最佳答案

经过一些实验,事实证明 WSH 规则是这样工作的:对 INetFwServiceRestriction::RestrictService 的调用(使用 restrictService=TRUE)只需要包含调用以启动服务的主要可执行文件的名称。如果该进程使用任何其他可执行文件生成一个新进程,则默认情况下该新进程会阻止所有入站和出站网络连接。即使已通过 INetFwServiceRestriction::Rules 为主可执行文件添加了异常(exception)情况也是如此。

因此,如果服务运行的辅助可执行文件需要网络访问权限,则还需要为这些可执行文件添加明确的 INetFwRule 异常(exception)。这是有道理的 - 对 RestrictService 的调用会阻止所有内容,然后可以添加包含应用程序名称的异常白名单。

关于windows - 使用适用于服务运行的所有应用程序的 Windows 防火墙 API 创建规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37809938/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com