You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于通过PowerShell修改Windows防火墙组策略设置以符合STIG V-17442要求的技术问询

通过PowerShell修改Windows防火墙组策略设置以符合STIG V-17442要求的技术问询

嗨,作为Windows安全领域的新手,你的问题提得非常清晰,先帮你理清几个关键概念和关系,再解决你的核心需求:

一、组策略防火墙设置和本地防火墙设置的关系

你提到的“Firewall Policy Settings”(标准术语是本地组策略对象(LGPO)中的防火墙配置)优先级远高于“Local Firewall Settings”(即Windows Defender防火墙本地设置):

  • 当组策略中配置了防火墙相关选项(比如你要改的“应用本地防火墙规则”),本地防火墙的对应设置会被锁定,GUI里甚至可能无法修改,就算改了也不会生效
  • 简单来说,组策略是“管控规则”,本地设置是“执行层”,组策略说了算,只有当组策略没有配置对应项时,本地设置才会生效

二、用PowerShell修改组策略中的“应用本地防火墙规则”为“否”

你之前用的Set-NetFirewallProfile是修改本地防火墙设置的,而STIG要求的是修改组策略层面的配置,所以没用。这里提供两种可靠的方法:

方法1:直接修改组策略对应的注册表项(适用于所有Windows版本,包括家庭版)

组策略的防火墙配置都存在HKLM:\Software\Policies\Microsoft\WindowsFirewall路径下,对应公开配置文件的“应用本地防火墙规则”项是AllowLocalFirewallRules,DWORD值设为0就是“否”:

# 先确认注册表路径存在,不存在就创建
if (-not (Test-Path "HKLM:\Software\Policies\Microsoft\WindowsFirewall\PublicProfile")) {
    New-Item -Path "HKLM:\Software\Policies\Microsoft\WindowsFirewall\PublicProfile" -Force | Out-Null
}

# 设置"应用本地防火墙规则"为"否"
Set-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\WindowsFirewall\PublicProfile" -Name "AllowLocalFirewallRules" -Value 0 -Type DWord -Force

# 刷新组策略让设置立即生效
gpupdate /force

方法2:使用组策略PowerShell cmdlet(仅适用于Windows专业版/企业版,有组策略编辑器的版本)

如果你用的是专业版或企业版,可以直接通过Set-GPRegistryValue修改本地组策略对象:

# 修改本地组策略中的对应配置
Set-GPRegistryValue -Name "Local Group Policy Object" -Key "HKLM\Software\Policies\Microsoft\WindowsFirewall\PublicProfile" -ValueName "AllowLocalFirewallRules" -Type DWord -Value 0

# 刷新组策略
gpupdate /force

补充说明

执行这些命令需要以管理员身份运行PowerShell,否则会没有权限修改注册表或组策略。另外,修改后你可以通过gpedit.msc验证配置是否生效:进入计算机配置>Windows设置>安全设置>Windows Defender防火墙高级安全>Windows Defender防火墙属性>公开配置文件>自定义>规则合并,查看“应用本地防火墙规则”是否已经设为“否”。

备注:内容来源于stack exchange,提问作者Minh Tran

火山引擎 最新活动