ad中实施细颗粒度密码策略需先确保域功能级别≥2008、安装rsat并赋权;再为特权账号创建高安全pso(如长度≥14、复杂度启用、有效期≤90天等),绑定至全局安全组而非ou或嵌套组;最后通过get-aduserresultantpasswordpolicy等验证生效。
要在ad环境中用细颗粒度策略防弱口令入侵,核心是绕过默认域策略的“一刀切”限制,为高风险账户(如管理员、服务账号)单独部署更严格的密码规则,并确保策略真正生效。关键不在设置多复杂,而在优先级、绑定对象类型和验证方式是否正确。
确认前提条件并准备环境
细颗粒度策略(FGPP)不是所有AD版本都支持:
- 域功能级别必须 ≥ Windows Server 2008(建议升至 2012 R2 或更高);可通过“Active Directory域和信任关系”右键域名 → “提升域功能级别”检查并升级
- 确保已安装RSAT工具(含ADAC或ADSI Edit),PowerShell需导入ActiveDirectory模块
- 操作账户至少具备Domain Admins权限;若委托给普通管理员,需额外赋予对CN=Password Settings Container,CN=System容器的写权限
创建高安全等级的PSO策略
不推荐直接绑用户,应面向安全组统一管理。以特权账号为例,策略应显著高于默认要求:
-
最小长度设为14位以上(如
msDS-MinimumPasswordLength: 14) -
强制启用复杂度(
msDS-PasswordComplexityEnabled: TRUE) -
密码最长有效期压缩至60–90天(如
msDS-MaximumPasswordAge: 7776000秒 = 90天) -
密码历史记录不少于24个(
msDS-PasswordHistoryLength: 24),防止循环复用 -
禁用可还原加密(
msDS-PasswordReversibleEncryptionEnabled: FALSE) - 优先级设为较低数值(如
Precedence: 5),确保覆盖其他PSO
精准绑定到全局安全组(非OU或嵌套组)
FGPP只接受两类主体:用户对象、全局安全组(GroupType & 0x80000000)。常见失效原因就是绑错了对象:
- 新建一个专用安全组(如
SG-Privileged-Users),成员仅包含需强管控的账户 - 在ADAC中进入System → Password Settings Container,右键新建策略后点击“添加”,选择该组
- 若用PowerShell:
Add-ADFineGrainedPasswordPolicySubject -Identity "PSO-Privileged" -Subjects "SG-Privileged-Users" - 切勿绑定通讯组、本地组、OU或嵌套在其他组内的成员——AD不递归解析
验证是否真实生效
策略不会实时刷新,需主动确认用户实际加载的是哪个PSO:
- 命令行查结果:
Get-ADUserResultantPasswordPolicy -Identity "username"(返回空表示未匹配任何PSO) - 检查用户属性中的
msDS-PSOApplied值,应显示你创建的PSO完整DN - 让目标用户注销重登录,或运行
klist purge清除票据后尝试改密,观察是否强制执行新长度/复杂度 - 若仍走默认策略,重点排查:组成员身份是否实时同步、是否存在更低precedence值的PSO意外覆盖、目标用户是否同时属于多个PSO绑定组










