要监控windows防火墙状态变更日志,需启用审核策略并查看事件id 2003、4960–4965等结构化事件,结合powershell比对规则快照,识别启停服务、策略导入、规则增删等操作;基础连接日志(pfirewall.log)不记录此类变更。
要监控 windows 防火墙状态变更日志,关键不是看“防火墙开了没”,而是捕获谁、在何时、以何种方式修改了防火墙配置——比如启停服务、导入策略、增删规则等动作。这类操作不会写进基础连接日志(pfirewall.log),而必须依赖系统级审计机制和结构化事件日志。
启用安全审核策略是前提
Windows 默认不记录防火墙管理行为。需先开启对应审核子类别,否则事件查看器中查不到任何变更痕迹。打开命令提示符(管理员),运行以下命令:
- auditpol.exe /set /category:"Policy Change" /subcategory:"MPSSVC rule-level policy change" /success:enable /failure:enable
- auditpol.exe /set /category:"Policy Change" /subcategory:"Filtering Platform policy change" /success:enable /failure:enable
- auditpol.exe /set /category:"System" /subcategory:"IPsec Driver" /success:enable /failure:enable
执行后建议重启或运行 gpupdate /force 刷新策略。
在事件查看器中定位状态变更事件
路径:事件查看器 → 应用程序和服务日志 → Microsoft → Windows → Windows Defender Firewall with Advanced Security → Firewall
重点关注三类事件:
- 事件ID 2003:防火墙服务启停、策略导入/导出、规则批量应用等全局状态变更
- 事件ID 4960–4965:与 WFP(Windows Filtering Platform)策略加载、驱动初始化相关,反映底层生效状态
- 事件ID 5156/5157:虽属连接决策,但若伴随规则名称字段突变(如出现“临时规则”“未知规则”),可反向推断规则已被动态添加或覆盖
右键日志 → “筛选当前日志”,输入 ID 列表(如 2003,4960,4961),再按“用户”“时间”“计算机名”进一步缩小范围。
结合 PowerShell 追踪规则级变更
NetSecurity 模块能实时比对规则快照。以下命令可快速发现差异:
# 获取当前全部启用的入站规则(含名称、启用状态、配置文件) $now = Get-NetFirewallRule -Direction Inbound -Enabled True | Select-Object Name, Profile, DisplayName # 对比上次保存的 baseline.json(需提前导出) $base = Get-Content .\baseline.json | ConvertFrom-Json Compare-Object $base $now -Property Name, Profile, DisplayName
建议每日定时任务导出一次快照,并用哈希校验(如 Get-FileHash)判断规则集是否被整体替换。
识别高风险变更模式
日常监控中需警惕以下信号:
- 同一用户短时间内触发多个 2003 事件(可能脚本批量操作)
- 规则名称含随机字符串或无意义前缀(如 “Rule_8a3f”“temp_allow_443”)
- 公用配置文件下突然开放 3389、22、1433 等敏感端口且无对应业务需求
- 事件中“进程ID”指向非 system 或 svchost.exe 的可疑路径(如 powershell.exe、cmd.exe 调用 netsh advfirewall)
这些往往指向未授权配置修改,应立即冻结账户并回溯操作源头。











