配置 Windows 防火墙日志记录
若要配置 Windows 防火墙以记录丢弃的数据包或成功的连接,可以使用:
- 配置服务提供程序 (CSP) ,使用 Microsoft Intune 等 MDM 解决方案
- 组策略 (GPO)
以下说明提供了有关如何配置设备的详细信息。 选择最适合需要的选项。
- 登录到 Microsoft Intune 管理中心
- 转到 终结点安全>防火墙>创建策略>Windows 10、Windows 11 和 Windows Server>Windows 防火墙>创建
- 输入名称,并选择性地输入说明 >“下一步”
- 在 “配置设置”下,为每个网络位置类型 (“域”、“ 专用”、“ 公共) ”配置:
- 日志文件路径
- 启用日志丢弃的数据包
- 启用日志成功连接
- 日志最大文件大小
- 选择“下一步”“下一>步”
- 将策略分配给一个组,该组包含要配置>下一个>创建的设备或用户作为成员
提示
如果愿意,还可以使用 设置目录策略 来配置 Windows 防火墙日志记录。
网络配置文件 | 设置 |
---|---|
域 | 设置名称: EnableLogDroppedPackets OMA-URI: ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/EnableLogDroppedPackets |
域 | 设置名称: LogFilePath OMA-URI: ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/LogFilePath |
域 | 设置名称: EnableLogSuccessConnections OMA-URI: ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/EnableLogSuccessConnections |
域 | 设置名称: LogMaxFileSize OMA-URI: ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/LogMaxFileSize |
Private | 设置名称: EnableLogDroppedPackets OMA-URI: ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/EnableLogDroppedPackets |
Private | 设置名称: LogFilePath OMA-URI: ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/LogFilePath |
Private | 设置名称: EnableLogSuccessConnections OMA-URI: ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/EnableLogSuccessConnections |
Private | 设置名称: LogMaxFileSize OMA-URI: ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/LogMaxFileSize |
开放 | 设置名称: EnableLogDroppedPackets OMA-URI: ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/EnableLogDroppedPackets |
开放 | 设置名称: LogFilePath OMA-URI: ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/LogFilePath |
开放 | 设置名称: EnableLogSuccessConnections OMA-URI: ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/EnableLogSuccessConnections |
开放 | 设置名称: LogMaxFileSize OMA-URI: ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/LogMaxFileSize |
重要提示
指定的位置必须分配权限,允许 Windows 防火墙服务写入日志文件。
建议
下面是有关配置 Windows 防火墙日志记录的一些建议:
- 将日志记录大小更改为至少 20,480 KB (20 MB) ,以确保日志文件不会过快填满。 最大日志大小为 32,767 KB (32 MB)
- 对于每个配置文件 (域、专用和公用) 将默认日志文件名称从
%windir%\system32\logfiles\firewall\pfirewall.log
更改为:%windir%\system32\logfiles\firewall\pfirewall_Domain.log
%windir%\system32\logfiles\firewall\pfirewall_Private.log
%windir%\system32\logfiles\firewall\pfirewall_Public.log
- 将丢弃的数据包记录为 “是”
- 将成功的连接记录为 “是”
在单个系统上,可以使用以下命令配置日志记录:
netsh advfirewall>set allprofiles logging allowedconnections enable
netsh advfirewall>set allprofiles logging droppedconnections enable
分析方法
有几种方法可以分析 Windows 防火墙日志文件。 例如:
- (WEC) 启用 Windows 事件 转发 (WEF) 。 若要了解详细信息,请参阅 使用 Windows 事件转发来帮助进行入侵检测
- 将日志转发到 SIEM 产品,例如 Azure Sentinel。 若要了解详细信息,请参阅 适用于 Microsoft Sentinel 的 Windows 防火墙连接器
- 将日志转发到 Azure Monitor,并使用 KQL 分析数据。 若要了解详细信息,请参阅 Windows 客户端设备上的 Azure Monitor 代理
提示
如果日志在 SIEM 解决方案中显示缓慢,则可以减小日志文件大小。 请注意,由于日志轮换增加,缩小大小会导致更多的资源使用量。
排查日志文件是否未创建或修改
有时不会创建 Windows 防火墙日志文件,或者事件不会写入日志文件。 可能出现这种情况的一些示例包括:
- 缺少 Windows Defender 防火墙服务 (
mpssvc
) 文件夹或日志文件的权限 - 你想要将日志文件存储在其他文件夹中,并且权限缺失或未自动设置
- 如果防火墙日志记录是通过策略设置配置的,则可能会发生以下情况:
- 默认位置
%windir%\System32\LogFiles\firewall
中的日志文件夹不存在 - 自定义路径中的日志文件夹不存在
- 默认位置
在这两种情况下,都必须手动或通过脚本创建文件夹,并添加 的权限 mpssvc
。
New-Item -ItemType Directory -Path $env:windir\System32\LogFiles\Firewall
验证文件夹和文件上是否 mpssvc
具有 FullControl 。 在提升的 PowerShell 会话中,使用以下命令,确保使用正确的路径:
$LogPath = Join-Path -path $env:windir -ChildPath "System32\LogFiles\Firewall"
(Get-ACL -Path $LogPath).Access | Format-Table IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -AutoSize
输出应显示NT SERVICE\mpssvc
具有 FullControl:
IdentityReference FileSystemRights AccessControlType IsInherited InheritanceFlags
----------------- ---------------- ----------------- ----------- ----------------
NT AUTHORITY\SYSTEM FullControl Allow False ObjectInherit
BUILTIN\Administrators FullControl Allow False ObjectInherit
NT SERVICE\mpssvc FullControl Allow False ObjectInherit
如果没有,请将 的 mpssvc
FullControl 权限添加到文件夹、子文件夹和文件。 请确保使用正确的路径。
$LogPath = Join-Path -path $env:windir -ChildPath "System32\LogFiles\Firewall"
$NewAcl = Get-Acl -Path $LogPath
$identity = "NT SERVICE\mpssvc"
$fileSystemRights = "FullControl"
$inheritanceFlags = "ContainerInherit,ObjectInherit"
$propagationFlags = "None"
$type = "Allow"
$fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $inheritanceFlags, $propagationFlags, $type
$fileSystemAccessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $fileSystemAccessRuleArgumentList
$NewAcl.SetAccessRule($fileSystemAccessRule)
Set-Acl -Path $LogPath -AclObject $NewAcl
重启设备以重启 Windows Defender 防火墙 服务。