1. 高级审核策略概述
路径:计算机配置 → 策略 → Windows 设置 → 安全设置 → 高级审核策略配置 → 审核策略
⚠️ 关键设置
启用高级审核策略前,必须在 GPO 中设置:计算机配置 → 策略 → Windows 设置 → 安全设置 → 高级审核策略配置 → 审核策略 → 全局设置 → 配置以下审核策略级别 → 选择 "仅高级审核策略配置"。否则基本审核策略会覆盖高级设置。
1.1 推荐审核配置
| 审核类别 | 子类别 | 成功 | 失败 |
|---|---|---|---|
| 账户登录 | 凭据验证 | ✅ | ✅ |
| 账户管理 | 用户账户管理 | ✅ | ✅ |
| 账户管理 | 安全组管理 | ✅ | ✅ |
| 详细追踪 | 进程创建 | ✅ | ❌ |
| 登录/注销 | 登录 | ✅ | ✅ |
| 登录/注销 | 特殊登录 | ✅ | ❌ |
| 对象访问 | 文件系统 | 按需 | 按需 |
| 对象访问 | 注册表 | 按需 | 按需 |
| 策略变更 | 审核策略变更 | ✅ | ✅ |
| 特权使用 | 敏感特权使用 | ❌ | ✅ |
2. 文件系统审计
文件系统审计需要 两步:① GPO 启用文件系统审核 ② 在文件/文件夹上配置 SACL。
2.1 实战:审计财务文件夹的访问
1
GPO 启用:对象访问 → 文件系统 → 成功+失败
2
在文件服务器上配置文件夹 SACL:
PowerShell - 配置文件审计 SACL
# 获取文件夹当前 ACL
$path = "E:\Finance"
$acl = Get-Acl $path -Audit
# 创建审计规则:审计 Everyone 的读取和写入操作
$auditRule = New-Object System.Security.AccessControl.FileSystemAuditRule(
"Everyone",
"ReadData,WriteData",
"ContainerInherit,ObjectInherit",
"None",
"Success,Failure"
)
# 添加审计规则
$acl.AddAuditRule($auditRule)
Set-Acl -Path $path -AclObject $acl
# 验证审计规则
Get-Acl $path -Audit | Select-Object -ExpandProperty Audit
2.2 查看文件审计日志
PowerShell - 查询文件访问事件
# 事件 ID 4663 = 对象访问尝试
Get-WinEvent -FilterHashtable @{
LogName = Security
ID = 4663
StartTime = (Get-Date).AddHours(-1)
} | Select-Object TimeCreated,
@{N=User;E={$_.Properties[1].Value}},
@{N=Object;E={$_.Properties[6].Value}} -First 20
3. AD 对象审计
PowerShell - 配置 AD 对象审计
# 审计 OU 中用户对象的修改
$ou = "OU=Users,OU=财务部,DC=iehang,DC=cn"
$acl = Get-Acl "AD:\$ou" -Audit
# 审计所有人修改用户对象
$auditRule = New-Object System.DirectoryServices.ActiveDirectoryAuditRule(
"Everyone",
"Write",
"Success,Failure",
"Descendents",
"bf967aba-0de6-11d0-a285-00aa003049e2" # user GUID
)
$acl.AddAuditRule($auditRule)
Set-Acl -AclObject $acl -Path "AD:\$ou"
4. 登录与账户审计
PowerShell - 登录事件分析
# 查看最近的登录失败事件(ID 4625)
Get-WinEvent -FilterHashtable @{
LogName = Security
ID = 4625
} -MaxEvents 20 | Format-List TimeCreated, Message
# 查看特殊登录(管理员登录)事件 ID 4672
Get-WinEvent -FilterHashtable @{
LogName = Security
ID = 4672
} -MaxEvents 10 |
Select-Object TimeCreated,
@{N=Account;E={$_.Properties[1].Value}}
5. 日志集中管理
生产环境建议使用 Windows Event Forwarding (WEF) 或 Splunk/ELK 集中收集日志。
PowerShell - 配置 WEF 订阅
# 在日志收集服务器上创建订阅
wecutil qc /q
# 创建订阅 XML 文件后导入
wecutil cs C:\Temp\SecurityEvents.xml
# 在客户端启用 WEF(通过 GPO)
# 计算机配置 → 管理模板 → Windows 组件 → 事件转发
# 配置"配置目标订阅管理器"
6. 常见问题
Q1:启用审计后安全日志很快就满了
① 增大安全日志大小(建议 1GB+)② 仅审计关键目录和操作 ③ 配置日志覆盖策略 ④ 使用 WEF 集中存储 ⑤ 避免对高频访问的目录启用审计
Q2:进程创建审计产生大量日志怎么办
进程创建审计(事件 4688)确实量大。建议:① 仅在需要取证时启用 ② 配合命令行审计(事件 4688 含 CommandLine)③ 使用日志过滤工具只保留关键进程 ④ 设置日志保留天数