windows防火墙默认不记录连接行为,需手动启用日志功能:通过图形界面或powershell命令配置域、专用、公用三类配置文件,勾选记录允许/拒绝连接,并指定日志路径为%systemroot%\system32\logfiles\firewall\pfirewall.log;必须提前创建目录并赋予system完全控制权限,否则日志写入失败且无提示。

Windows系统默认不记录防火墙连接行为,必须手动开启高级安全防火墙的日志记录功能,否则所有允许/拒绝的网络连接操作都无迹可查,无法做事后审计或故障排查。
启用防火墙连接日志记录(图形界面)
打开「控制面板」→「系统和安全」→「Windows Defender 防火墙」→ 左侧点击「高级设置」→ 弹出「高级安全 Windows Defender 防火墙」窗口 → 右键左侧「Windows Defender 防火墙属性」→ 分别对「域配置文件」「专用配置文件」「公用配置文件」执行以下操作:
点击对应配置文件页签 → 在「日志」区域点击「自定义」→ 勾选「记录被丢弃的数据包」和「记录成功的连接」→ 设置日志路径为 【%systemroot%\System32\LogFiles\Firewall\pfirewall.log】 → 点击「确定」保存。
注意:若日志路径目录不存在,系统不会自动创建,需提前用管理员权限新建文件夹并赋权;否则日志写入失败且无任何提示。
启用防火墙连接日志记录(PowerShell命令)
以管理员身份运行 PowerShell:
执行命令一次性为全部配置文件启用日志:
Set-NetFirewallProfile -Profile Domain,Private,Public -LogAllowed True -LogBlocked True -LogFileName "%systemroot%\System32\LogFiles\Firewall\pfirewall.log"
该命令会立即生效,无需重启服务。执行后可用 Get-NetFirewallProfile | Select-Object Profile,LogAllowed,LogBlocked 验证三类配置文件是否均为 True。
确保日志能真正写入的两个关键前提
方法一:确认日志目录存在且权限正确
运行 mkdir "C:\Windows\System32\LogFiles\Firewall"(若报错“已存在”可忽略)→ 再执行 icacls "C:\Windows\System32\LogFiles\Firewall" /grant "NT AUTHORITY\SYSTEM:(OI)(CI)(F)" /t
方法二:手动触发一次日志写入验证
在另一台机器上 ping 本机IP → 立即查看 C:\Windows\System32\LogFiles\Firewall\pfirewall.log 是否新增行;若无内容,说明日志未启用成功或路径权限不足。
日志文件首行必须包含字段:#Fields: date time action protocol src-ip dst-ip src-port dst-port size tcpflags











