(根据 Ramhound 的建议重新表述问题 - 原始问题如下)
使用的防火墙:标准 Microsoft Windows 10 防火墙设置:除非明确规则允许,否则所有内容都会被阻止入站和出站
问题:几乎每次 MS 更新时,规则列表都会添加规则。例如:添加了 Cortana 例外。
期望情况:一种方法可以锁定任何人(包括系统本身)对规则设置的修改。只有我明确允许,规则才能被更改。
(原问题)我有 Windows 10 自己的防火墙设置,其中有最少的入站和出站规则。任何不在规则中的内容都会被阻止。
但我注意到,几乎每次安装 Windows 更新时,都会添加不需要的规则(我一注意到就会删除)
有没有什么办法可以完全冻结规则修改,甚至是从系统本身?
我不需要另一个防火墙。微软自己的防火墙就足够了(只是缺少一个可以运行的学习/日志模式)
答案1
我理解你的愿望。Windows 10 创建的规则数量之多简直令人难以置信,你甚至都看不到这些规则。在 WF.msc 中为 Cortana 在每个用户基础上创建的规则只是其中之一。这也是我不认为 Windows 10 比 Windows 7 更安全的原因。过滤平台相同,但服务和后台任务的数量以及防火墙规则的预定义例外比 Windows 7 多得多。因此,在我看来,攻击面比 Windows 7 高得多,在 Windows 7 中,你可以非常严格地配置防火墙,而且几乎没有自动修改。
回到你的问题:修改 Windows 防火墙以防止自动防火墙规则并不复杂。你需要的是打破注册表中的继承和复制权限。取消 MpsSvc 的所有写入权限,并避免将来覆盖系统。你可能还想创建一个新的组,该组有权更改它们,并且也是这些子项的所有者。
以下注册表项存储规则:“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices”及其所有子文件夹。“Static”仅可通过注册表配置,“Configurable”可通过命令行和注册表配置,“FirewallRules”是您可以在 WF.msc 中看到的规则。如果您也拥有 FirewallRules 的权限,则无法再通过 mmc.exe/wf.msc 进行修改。
但是,与所有此类深度调整一样,或多或少也存在重大警告。如果删除子文件夹中 Static 和 Configurable 中针对现代应用程序(如 Cortana、Shell-Experience、AAD Broker 等)的所有 Allow-Rules,您也会破坏开始菜单。因此,当您单击按钮时什么也不会发生,因为新应用程序通过网络/过滤平台进行通信,并且由于您不允许这样做,如果这些规则不存在,它们将什么也不会做。尤其是第一次登录高度依赖于这些事情。但是 Windows 仍然可以正常工作。所有应用程序都显示在任务列表中,桌面仍然可以正常工作,等等,快捷方式(如 Win+R)。但带有 Cortana 的开始菜单却不行。
还有一些我完全不喜欢的东西。例如,MS 确实扭曲了许多仅用于遥测/隐私用途的服务。所以没有其他技术原因。例如 AitAgent。您无法禁用它,因为您无法在 mmc.exe 插件中看到它。甚至在 SystemUtilities 中也看不到它。但在注册表中,您可以看到它的一半。还有许多其他与隐私相关的任务和服务,每次更新都会有新的任务和服务。即使在 LTSB-Enterprise-Versions 中也是如此。在我看来,W10 在技术上是一个非常好的操作系统,但在隐私问题上,它比您想象的要糟糕得多,而且 MS 一直在努力阻止您禁用这些垃圾。他们收集所有数据,如果用户忘记单击“否”,则所有内容都会通过无线方式发送。对于某些调整,您需要以安全模式启动,对于某些调整,您需要使用“TrustedInstaller”或系统的任务,对于其中许多,您甚至不能使用 SystemUtilites,您必须自己修改注册表等等。
不幸的是,未来没有办法真正避免使用 Windows 10,因为新的硅片只支持 Windows 10,而没有 Windows,你就无法在现代公司工作,因为大部分软件供应商都在 Windows 上工作,而很多人并不关心这些事情。
答案2
我们可以做的是:
- 从以下位置下载 SetACL.exehttps://helgeklein.com/download/
- 创建文件firewall.bat,内容如下:
setacl.exe -ot reg -on “HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules” -actn setowner -ownr “n:Administrators”
setacl.exe -ot reg -on “HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules” -actn setprot -op “dacl:p_nc”
setacl.exe -ot reg -on "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules" -actn ace -ace "n:everyone;p:full"
netsh advfirewall 防火墙删除规则名称 = all
netsh advfirewall 防火墙添加规则 dir=in action=allow name="icmpv4" protocol=icmpv4
netsh advfirewall 防火墙添加规则 dir=in action=allow name="icmpv6" protocol=icmpv6
setacl.exe -ot reg -on "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules" -actn ace -ace "n:everyone;p:read"
- 以管理员权限运行firewall.bat
解释:
SetACL.exe 操纵权限防火墙规则注册表项:
- 开始时它将替换所有者为管理员组,禁用权限继承并授予每个人对该密钥的完全控制权。
- 之后防火墙命令执行:清除所有现有规则并添加您自己的规则。
- 最后一部分是设置注册表项的只读访问权限。
只需运行一次这些命令就足够了 - 除非更改注册表项权限,否则任何人都无法更改防火墙规则(包括管理员和防火墙管理本身)。但我很确定某些主要更新将覆盖该注册表权限和规则 - 因此在计算机启动时创建调度程序任务将很有用。