windows强制密码历史设为24需同步配置密码最短使用期限≥1天,否则用户可通过快速轮换绕过;linux中remember=5仅是记录条数,还需shadow文件第5列非零且pam模块正确加载才能生效。

历史密码记忆数量不是“记多少次”那么简单,而是决定用户能绕过策略重用旧密码的漏洞窗口。设得太小,等于没设;设得不合理,反而影响运维效率。关键在数值选择、配套限制和实际生效验证。
Windows:强制密码历史必须配最小密码年龄
单独设“强制密码历史=24”,不代表旧密码真不能复用。如果没同步启用“密码最短使用期限”,用户可以连续改10次密码,第11次就又回到最初那个——策略形同虚设。
- 强制密码历史建议设为24(域控制器默认值,也是微软推荐上限)
- 必须同步设置密码最短使用期限=1天,防止快速轮换绕过历史限制
- 搭配密码最长使用期限=60天,让历史记录有实际约束力
Linux:remember参数依赖PAM模块与shadow字段协同
/etc/pam.d/system-auth 中的 remember 值只是“记住几条”,真正生效还要看 /etc/shadow 里对应用户的密码过期字段(第5列)和密码更改日期(第3列)。三者不匹配,history 就不触发。
- 设置 remember=5,表示新密码不能与最近5次相同
- 需确认对应用户 shadow 行第5列(MAX_DAYS)非0,否则密码永不过期,历史机制失去意义
- 修改后用 passwd -a username 查看当前密码状态,验证是否写入历史库
别只盯着数字,先堵住常见绕过路径
历史密码策略再严,也挡不住配置疏漏带来的绕过。以下三项不做,前面所有设置都可能白忙:
- 禁用 Guest 账户——避免攻击者用空密码或默认凭据试探历史策略边界
- 注册表关闭 LM Hash(NoLMHash=1)——防止系统降级存储弱哈希,让旧密码哈希被离线破解
- 设 LmCompatibilityLevel=5——强制 NTLMv2 认证,杜绝明文协商暴露密码变更痕迹
验证是否真生效,别只看策略界面
组策略编辑器里勾选了、保存了,不等于策略已加载。生产环境务必实测+日志交叉验证:
- 用测试账号连续输错密码5次,检查事件查看器中 ID 4740(账户锁定)是否出现
- 改密后立即尝试设回上一个密码,应提示“不能使用最近使用的密码”
- 若服务器加入域,用 gpresult /h report.html 确认该策略未被更高优先级GPO覆盖











