组策略与终端强制
用 GPO 把口令、审计、屏保、更新这些决定可靠地推到每一台机器上,以及环回处理和拆包这两个绕不开的工程问题。
两种模式
| 模式 | 生效时机 | 用途 |
|---|---|---|
| 计算机配置 | 开机时 | 安全基线:审计、屏保、更新、防火墙 |
| 用户配置 | 登录时 | 桌面体验、映射驱动器、软件限制 |
安全基线全部放计算机配置。用户配置可以在用户退出前被改回来,甚至可以在用户会话里被改——放在这里的策略等于没有。
审计日志必须开,而且是基础
一个常见的误区是:「有了 Sysmon / 日志平台,还要开 GPO 审计日志吗?」答案是要,而且它是基础,不是补充。
因为两者记录的根本不是一回事:
| 记录什么 | 典型事件 | |
|---|---|---|
| Sysmon | 进程、网络连接、文件行为 | 进程创建、命令行参数、出站连接 |
| GPO 审计日志 | 身份与权限事件 | 登录成功(4624)、登录失败(4625)、权限变更、账户操作 |
Sysmon 回答「这台机器上发生了什么」,审计日志回答「是谁」触发的、以什么身份触发的。少了后者,日志里只有一串没有归属的进程链——能看到 PowerShell 被启动了,看不到是哪个账号在下班后启动的它。缺一个都不完整:没有审计,溯源停在「有这事」;没有 Sysmon,溯源停在「有这人」。
所以基线里这几项审计必须通过 GPO 打开:登录日志、PowerShell 日志、账户变更、敏感目录的文件访问。USB 相关行为则主要由 Sysmon 侧采集。不建议全量审计——日志量会迅速膨胀,很快撑爆存储;按上面的清单开,就够覆盖绝大多数溯源场景。
环回处理
这是 GPO 最经典的坑:用户策略作用于计算机对象时,默认不生效。
典型症状:域策略里给用户配了软件安装,用户在域控本机上装不上;在服务器上用管理员账号登录,桌面策略也不生效。
# 用户策略:反向(计算机对象也要应用)
Set-GPRegisteredValue -Guid "{42B5FAAE-6536-4842-9C55-3937E6B2B2D7}" `
-Name "Loopback" -Value 1
# 0 = 不合并 1 = 合并 2 = 替换
处理原则:只在确实需要用户策略作用于计算机的 OU 上开环回,并且一律用「替换」而不是「合并」。合并模式下两套策略的胜出关系很难预测。
拆包
一个 GPO 塞进几十条设置会带来两个问题:登录变慢,以及排查时不知道是哪一条导致的。
拆分的合理单位是变更频率:
GPO-Base-Windows 基线设置,几乎不动 → 计算机配置
GPO-Security-Endpoint 审计与日志策略 → 计算机配置
GPO-Update-Servers 服务器更新窗口 → 计算机配置
GPO-WiFi-Split 无线网络 → 用户配置
GPO-Software-Restricted 软件限制(AppLocker/WDAC)→ 计算机配置
一个判断标准:如果一个设置要通过审核(比如密码长度、审计策略),它就该有自己的 GPO——审核时能直接指出「这一条来自哪个 GPO」。
强制执行的两条路径
GPO 推不下去的时候,客户端刷新通常会失败。先看这三个地方:
# 1) 客户端能不能连到域控
Test-ComputerSecureChannel -Verbose
# 2) 手动刷新并看错误
gpupdate /force
# 报错 0x800705dc = 域控不可达
# 报错 0x80070005 = 权限不足(多半是没加 Domain Computers)
# 3) 看策略结果报告
gpresult /r
gpresult /h C:\temp\gpo.html
gpresult /r 是判断「策略到底有没有应用」的唯一可靠手段。客户端的日志里经常同时有成功和失败的记录,看 Resultant Set of Policy 里的 Applied 部分才准。
环回之外的两个常见问题
组策略链接顺序。同级的多个 GPO 会按字母序合并,拒绝优先于允许,最后应用的胜出。所以不要依赖字母序,链接顺序错了很难发现——要用冲突项的话,要么在同一条设置里写清楚,要么拆到不同 OU。
安全组筛选。给 GPO 做安全筛选时,如果筛选的组解析失败(组被删了、域控不可达),结果是该 GPO 不作用于任何机器,而不是作用于全部。安全筛选总是保守失败。