如何通过脚本或通过自动化closuresWindows 7防火墙?

这是关于在将机器join域之前在机器上工作,尽pipe我很乐意依靠GPO,但这不是一个选项。

在我工作的环境中,防火墙策略是使用Total Endpoint Solution中的第三方防火墙应用程序,所以我必须禁用默认的Windows防火墙以防止冲突。 我使用脚本在一个想象过程的末尾执行此操作,或者在没有重新映像的系统上手动执行此操作。 有一段时间,我能够使用以下方式进行pipe理:

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 

两个步骤的组合工作了大约一个月,然后,没有明显的原因,它停止工作。

我开始testing一个registry黑客来达到我所需要的,这给了我不一样的结果。 我有两套configuration文件,我需要改变; 本地configuration文件:

 [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 

对于域configuration文件:

 [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 

我遇到的问题是本地configuration文件不断重新生成防火墙的原始设置。 我试过了:

  • a)应用这两个registry黑客
  • b)重新启动
  • 新成像的机器上的结果)没有运气
  • 用于testing的旧机器上的结果)很好

  • a)申请本地政策registry黑客

  • b)重新启动
  • 新成像的机器上的结果)没有运气
  • 用于testing的旧机器上的结果)很好

  • a)使用secedit清除本地安全策略

  • b)应用这两个registry黑客
  • c)重新启动
  • 新成像的机器上的结果)没有运气
  • 用于testing的旧机器上的结果)很好

  • a)使用secedit清除本地安全策略

  • b)申请本地政策registry黑客
  • c)重新启动
  • 新成像的机器上的结果)没有运气
  • 用于testing的旧机器上的结果)很好

我的目标是通过脚本/自动化来禁用Windows防火墙。 有什么想法吗?

注意:这是在将机器join域之前。 如果我手动清除MSC中的本地安全策略,那么registry黑客会工作。 netsh仍然无法工作,我不想手动清除每台成像机器的策略。

Errr,整理你的GPO,并在那里禁用它。 或者,至less在堆栈顶部创build一个新的GPO(最高优先级)并禁用防火墙。 然后回去整理你的其他GPO。 本地安全策略将被GPO覆盖,并且您要写入的registry的第一个区域专门用于GPO处理。

简短的回答…组策略。 长答案…组策略。 (抱歉!)

我想说,我强烈build议任何禁用Windows防火墙的人花点时间了解它是如何工作的,以及如何通过GPO操纵它,而不是彻底closures它。 没有理由closures基于主机的防火墙。 微软使用优秀的工具来pipe理防火墙规则,你应该使用它们。


本TechNet文章概述了禁用Windows防火墙的正确方法。 不要像其他人告诉你的那样closures服务,这会使服务器进入不受支持的configuration,并在各种难以排除故障的情况下造成不稳定。

从TechNet文章中,netsh语法是

netsh advfirewall设置 configuration文件 状态closures

其中configuration文件的有效值为:AllProfiles,CurrentProfile,DomainProfile,PrivateProfile或PublicProfile。

看来你已经尝试了这个确切的命令,它不工作。 您还推送了此命令操作的registry项。 基于它曾经工作过,现在没有的事实,并且这些机器在你这样做的时候没有join域,所以只有一个结论:

你的形象中有一些东西是压倒性的。 故事结局。 由于我们没有自己的形象来看待,所以我们绝对没有办法给你一个特定的解决方法,除了“你做得对,如果不行,图像中的东西被错误configuration”

老实说,如果你不得不在你的映像上运行secedit /configure /db reset /cfg securityprofile以及所有这些其他的东西,你可能会更好地按照你想要的方式制作一个新的映像。

发现问题。 MDT在安装我的映像后,在任务序列结束时应用了本地组策略,即使pipe理员(通过命令提示符命令,registry等等)也禁止访问对本地安全策略的任何更改。 这很奇怪,因为这是MDT的默认策略。 无论如何,删除这个任务序列允许我使用netsehclosures防火墙:

 netsh advfirewall set allprofiles state off 

作为一个说明; 我同意所有人的意见,你不应该禁用你的防火墙服务,你不应该closures你的防火墙。