这是关于在将机器加入域之前在机器上工作的问题,虽然我很想依赖 GPO,但目前这不是一个选择。
在我工作的环境中,防火墙策略是使用来自 Total Endpoint Solution 的第 3 方防火墙应用程序,因此我必须禁用默认的 Windows 防火墙以防止冲突。我使用在想象过程结束时运行的脚本或在未重新映像的系统上手动运行的脚本来执行此操作。有一段时间,我能够使用以下方法来管理它:
netsh advfirewall set allprofiles state off
但是,由于某种原因,它停止了工作。所以,我发现我需要清除本地安全策略(手动):
Local Security Policy MSC > Windows Firewall with Advanced Security
Right-Click Windows Firewall with Advanced Security - Local Group Policy Object
Clear Policy
这是我用来避免手动执行的脚本:
secedit /configure /db reset /cfg securityprofile
这两个步骤的组合工作了大约一个月,然后,没有明显的原因,它停止工作。
我开始测试注册表黑客来实现我所需要的,它给了我好坏参半的结果。我有两组需要更改配置文件的密钥;对于本地配置文件:
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile]
"EnableFirewall"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\PrivateProfile]
"EnableFirewall"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\PublicProfile]
"EnableFirewall"=dword:00000000
对于域配置文件:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\DomainProfile]
"EnableFirewall"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\PublicProfile]
"EnableFirewall"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile]
"EnableFirewall"=dword:00000000
我遇到的问题是本地配置文件在防火墙打开的情况下不断重新生成原始设置。我试过了:
- a)应用两个注册表黑客
- b) 重启
- 结果在新成像的机器上)没有运气
用于测试的旧机器上的结果)很好
a) 应用本地策略注册表黑客
- b) 重启
- 结果在新成像的机器上)没有运气
用于测试的旧机器上的结果)很好
a) 使用 secedit 清除本地安全策略
- b)应用两个注册表黑客
- c) 重启
- 结果在新成像的机器上)没有运气
用于测试的旧机器上的结果)很好
a) 使用 secedit 清除本地安全策略
- b)应用本地策略注册表黑客
- c) 重启
- 结果在新成像的机器上)没有运气
- 用于测试的旧机器上的结果)很好
我的目标是通过脚本/自动化禁用 Windows 防火墙。有什么想法吗?
注意:这是在将机器加入域之前。如果我从 MSC 手动清除本地安全策略,那么注册表黑客将起作用。 netsh
仍然无法工作,我不想手动清除每台成像机器的策略。
我想先说一下,我强烈敦促任何禁用 Windows 防火墙的人花时间了解它的工作原理以及如何通过 GPO 操作它,而不是直接将其关闭。没有理由关闭基于主机的防火墙。Microsoft 制作了出色的工具来管理防火墙规则,您应该使用它们。
这篇 TechNet 文章概述了禁用 Windows 防火墙的正确方法。不要像其他人告诉您的那样关闭服务,这会使您的服务器进入不受支持的配置,并在各种难以排除故障的情况下导致不稳定。
从 TechNet 文章中,netsh 语法是
其中配置文件的有效值为:AllProfiles、CurrentProfile、DomainProfile、PrivateProfile 或 PublicProfile。
您似乎已经尝试过这个确切的命令,但它不起作用。您还推送了此命令操作的注册表项。基于它过去可以工作而现在不能工作的事实,并且这些机器在您执行此操作时未加入域,因此只有一个结论:
您的图像中有一些东西可以覆盖这一点。故事结局。由于我们没有您的图像可供查看,因此我们实际上无法为您提供特定的修复,除了“您做得对,如果它不起作用,则说明您的图像中的某些内容配置错误”
老实说,如果您必须
secedit /configure /db reset /cfg securityprofile
在图像上运行所有其他内容,那么您最好按照您想要的方式制作一个新图像。Errr,整理你的 GPO,并在那里禁用它。或者,至少,在堆栈顶部(最高优先级)创建一个新 GPO 并禁用防火墙。然后回去整理您的其他 GPO。本地安全策略被 GPO 覆盖,您写入的注册表的第一个区域专门用于 GPO 处理。
简短的回答......组策略。长答案...组策略。(对不起!)
发现了问题。在安装我的映像后,MDT 在其任务序列的末尾应用了本地组策略,这禁止访问对本地安全策略的任何更改,即使是管理员(通过命令提示符命令、注册表等)也是如此。这很奇怪,因为它是 MDT 附带的默认策略。无论如何,删除此任务序列允许我使用 netseh 关闭防火墙:
作为说明;我同意每个人的观点,即您不应禁用防火墙服务,也不应关闭防火墙。