如何通过命令提示符获取secpol.msc中高级安全Windows Defender防火墙最新配置
以下方案可准确获取secpol.msc中对应防火墙板块的实时生效配置,解决netsh advfirewall show allprofiles返回旧缓存数据的问题,适配Windows Server 2019 EC2实例的CIS加固核查场景:
方案1:刷新缓存后使用netsh全量查询
先强制刷新本地组策略清除配置缓存,再加verbose参数查询全量详细配置,可返回修改后的最新值:gpupdate /force netsh advfirewall show allprofiles verbose方案2:直接查询注册表获取持久化权威配置
secpol中所有防火墙配置最终落地到注册表存储,直接查询对应注册表路径无缓存延迟,返回值和secpol面板展示值完全一致::: 查询策略类防火墙配置 reg query "HKLM\SOFTWARE\Policies\Microsoft\WindowsFirewall" /s :: 查询运行时防火墙配置 reg query "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy" /s返回结果覆盖CIS Benchmark要求核查的所有配置项:包含各配置文件启用状态、入站出站默认动作、本地规则合并权限、日志配置、授权/拦截规则等。
方案3:使用PowerShell NetSecurity模块读取活动存储配置
该模块直接读取防火墙的实时活动存储,不存在netsh的缓存问题,是微软官方推荐的新一代防火墙配置查询方式:# 强制刷新策略确保配置同步 gpupdate /force | Out-Null # 查询域、专用、公网三个配置文件的核心配置 Get-NetFirewallProfile -PolicyStore ActiveStore # 查询所有生效的防火墙规则 Get-NetFirewallRule -PolicyStore ActiveStore指定
-PolicyStore ActiveStore参数时,返回的是本地secpol配置、组策略配置合并后的最终生效值,和secpol.msc界面中展示的内容完全匹配。
问题根因说明:不带参数的
netsh advfirewall show allprofiles默认读取静态缓存的配置数据,在secpol中手动修改配置后如果未触发策略刷新事件,就会出现返回值和实际配置不一致的情况。做CIS合规核查时优先选择注册表查询或PowerShell方案,结果准确性最高。
内容的提问来源于stack exchange,提问作者Liji Mathew

