核查看的是“生效值”
口令与锁定策略的核查口径很重要:要读的是本机实际生效的值,而不是配置界面里勾选的选项。net accounts 输出的是当前生效结果,涵盖最小长度、有效期、历史记录、锁定阈值与窗口五个关键数字;secedit 导出则给出可逐项比对的文本,便于留档与批量核查。域成员机上这些值通常来自域策略,核查时必须先确认策略来源,否则很容易把“域里已经统一设过”误判为不合规。
基本信息
| 加固项 | 口令与账户锁定策略核查 |
|---|---|
| 适用平台 | Windows 10/11、Windows Server |
| 权限要求 | 本地管理员(导出与读取策略) |
| 常见判定线 | 最小长度 12 位以上、最长有效期不超过 90 天、锁定阈值不超过 10 次 |
| 证据形式 | net accounts 输出与 secedit 导出的文本片段 |
典型使用场景
- 等保与 CIS 测评现场逐项取证
- 批量主机核查时统一采集口径,便于出具汇总表
- 排查反复登录失败却未被锁定的现象
- 域环境确认本地取值与域策略是否一致
- 整改后复测,证明配置确实生效
核查命令
核查命令
# 本机生效结果,五个关键数字一次拿到
net accounts
# 导出安全策略文本,便于逐项比对与留档
secedit /export /cfg C:\evidence\secpol.cfg /areas SECURITYPOLICY
findstr /i "Password Lockout" C:\evidence\secpol.cfg
# 顺带确认密码复杂度与可逆加密设置
secedit /export /cfg C:\evidence\secpol-all.cfg && findstr /i "PasswordComplexity ClearTextPassword" C:\evidence\secpol-all.cfg域环境确认策略来源
域环境确认策略来源
gpresult /h C:\evidence\gpresult.html # 生成策略结果报告,确认哪条 GPO 生效
Get-ADDefaultDomainPasswordPolicy # 域默认口令策略(需 AD 模块)
Get-ADFineGrainedPasswordPolicy -Filter * # 细粒度策略:若存在,按用户或组判定
# 本地策略被域策略覆盖时,以后者为准,说明材料要指向域侧关键值读法
| net accounts 输出项 | 含义 | 判读要点 |
|---|---|---|
| Minimum password length | 口令最小长度 | 偏低说明复杂度要求形同虚设 |
| Maximum password age | 口令最长有效期(天) | Unlimited 视为风险项 |
| Minimum password age | 两次改密最小间隔 | 为 0 时用户可连续改密绕过历史记录 |
| Password history length | 记住的历史口令数量 | 过小则旧口令可立即复用 |
| Lockout threshold | 失败几次锁定 | Never 表示不锁定,风险项 |
| Lockout duration / window | 锁定时长与计数窗口 | 两个值需成套评估,避免形成拒绝服务 |
核查材料建议直接引用原始输出片段加时间戳,而不是转述“已符合要求”。批量核查时统一用同一条命令采集,能保证不同主机之间的数值可横向对比,也方便整改前后做差异比对。
域机器上的本地策略常被域策略覆盖:在成员机上改本地设置通常不会生效,还会造成“改过了为什么还这样”的困惑。判定前先看 gpresult 确认策略来源;若存在细粒度口令策略(Fine-Grained Password Policy),对应账号以细粒度策略为准,不能只看域默认值。