首页/系统/信创系统运维速查/口令历史(禁止重复使用)配置
安全加固65 条

口令历史(禁止重复使用)配置

等保要求口令不得重复使用:pam_pwhistory 记录历史口令哈希并限制重复次数;配置进 PAM 口令栈,改完用 passwd 实测生效。

信创系统运维速查系统更新于 2026-10-13

口令历史是做什么的

等保与安全基线通常要求口令不得重复使用,实现方式是 PAM 的 pam_pwhistory 模块:它把用户用过的口令哈希记录到 /etc/security/opasswd,改密时比对新口令与最近若干次的历史口令,命中则拒绝。配置要写进口令栈(RPM 系是 /etc/pam.d/system-auth 与 password-auth,deb 系对应 common-password),改完必须用实际账号连续改密验证生效。

基本信息

模块pam_pwhistory.so,负责口令复用控制
关键参数remember=N,限制历史口令数量
记录文件/etc/security/opasswd(root 可读)
职责边界复用控制归 pwhistory,复杂度控制归 pwquality
生效方式改配置后立即生效,用 passwd 实测验证

典型使用场景

  • 等保测评要求口令不复用,需要在口令栈中启用历史记录
  • 安全整改项落地:把 remember 参数按单位策略设置为固定值
  • 排查「改密总提示重复」:确认历史记录数量与参数是否与策略一致
  • 配合复杂度策略一起下发,形成完整口令管理要求
  • 交接与审计:核对 opasswd 文件权限与内容规模是否符合预期
  • 批量终端基线配置,把 PAM 改动纳入标准化脚本

配置与验证

配置与验证
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak    # 改动前备份
# 在 password 栈中加入(示例 remember=5):
# password    requisite     pam_pwhistory.so remember=5
# password    sufficient    pam_unix.so sha512 shadow try_first_pass use_authtok
# 验证:连续给测试账号改密,重复旧口令应被拒绝
passwd testuser                       # 第一次改密
passwd testuser                       # 再改,输入与上次相同的口令
sudo ls -l /etc/security/opasswd      # 确认历史文件权限非普通用户可读
grep -n pwhistory /etc/pam.d/system-auth   # 确认配置已写入正确位置

PAM 口令栈读法

字段含义本例取值
模块接口所属处理阶段password
控制位失败时的处理方式requisite 必须通过
模块名加载的 PAM 模块pam_pwhistory.so
参数模块行为调整remember=5 记录最近 5 次
顺序同一栈上的先后关系历史检查在口令写入之前
机制从启用那一刻开始记录:存量用户此前用过的口令不会进入历史链条,需要先完成一次改密,后续的重复检查才真正有效。
PAM 配置错误可能导致全系统无法登录,包括本地与远程。改动前备份原文件,保留一个已登录的 root 会话,改完立即用另一个终端验证登录与改密是否正常。

易错点

  • 直接编辑 PAM 文件且不备份,配置语法错误后所有账号无法登录,只能进救援模式恢复
  • 以为启用后立刻对存量口令生效,实际要从下一次改密才开始积累历史
  • 把复杂度和复用两件事混在一个模块上,只配其一导致策略看起来齐全实际不达标
  • 不验证实际效果就结束整改,测评时用测试账号一试即发现未生效

数据来源与参考

  • man 8 pam_pwhistory
  • 红帽 PAM 指南
  • 等保 2.0 身份鉴别要求
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌