配置 Windows 防火墙日志记录

若要配置 Windows 防火墙以记录丢弃的数据包或成功的连接,可以使用:

  • 配置服务提供程序 (CSP) ,使用 Microsoft Intune 等 MDM 解决方案
  • 组策略 (GPO)

以下说明提供了有关如何配置设备的详细信息。 选择最适合需要的选项。

  1. 登录到 Microsoft Intune 管理中心
  2. 转到 终结点安全>防火墙>创建策略>Windows 10、Windows 11 和 Windows Server>Windows 防火墙>创建
  3. 输入名称,并选择性地输入说明 >“下一步”
  4. “配置设置”下,为每个网络位置类型 (“域”、“ 专用”、“ 公共) ”配置:
    • 日志文件路径
    • 启用日志丢弃的数据包
    • 启用日志成功连接
    • 日志最大文件大小
  5. 选择“下一步”“下一>步”
  6. 将策略分配给一个组,该组包含要配置>下一个>创建的设备或用户作为成员

提示

如果愿意,还可以使用 设置目录策略 来配置 Windows 防火墙日志记录。

或者,可以通过防火墙 CSP 使用自定义策略配置设备。

网络配置文件 设置
设置名称: 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 防火墙日志文件。 例如:

提示

如果日志在 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

如果没有,请将 的 mpssvcFullControl 权限添加到文件夹、子文件夹和文件。 请确保使用正确的路径。

$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 防火墙 服务。