首页/安全/安全加固速查/pam_pwhistory 口令历史与重用限制
口令与认证策略55 条

pam_pwhistory 口令历史与重用限制

禁止重复使用最近 N 次口令,配合 pwquality 防止“改来改去就那几个”的合规空转;历史记录存 /etc/security/opasswd。

安全加固速查安全更新于 2026-10-13

口令历史约束什么

强制口令复杂度却不限制复用,结果往往是用户在几个口令之间来回切换,合规检查通过了,实际强度没有提升。pam_pwhistory 记录最近若干次口令的哈希,改密时比对历史,禁止重复使用,把「改密」真正变成换新口令。

基本信息

适用平台Linux(pam_pwhistory.so,配置文件通常为 system-auth 或 common-password)
关键参数remember(保留条数)、use_authtok、enforce_for_root
记录文件/etc/security/opasswd
基线remember 建议 5 及以上

典型使用场景

  • 口令策略整改:复杂度与历史一起约束,才算完整
  • 合规检查:口令复用限制是等保与 CIS 的常见条目
  • 特权账号加严:对管理账号使用更长的历史与更强的复杂度要求
  • 策略变更验证:确认历史记录确实阻止了重复口令

配置(以 system-auth 为例)

配置(以 system-auth 为例)
# 在密码栈中加入历史约束,用 use_authtok 复用已校验的口令
# password requisite pam_pwhistory.so use_authtok remember=5 enforce_for_root
# RHEL 8 及以上可以用 authselect 统一管理:
authselect enable-feature with-pwhistory 2>/dev/null || true
# 查看当前生效的 PAM 配置
ls -l /etc/pam.d/system-auth /etc/pam.d/password-auth 2>/dev/null

验证

验证
# 历史记录文件应存在且权限严格
ls -l /etc/security/opasswd
# 实际操作验证:连续两次改成同一口令应被拒绝
# passwd testuser

配置项读法

项含义注意点
remember保留多少次历史口令值过大影响用户体验,5 至 24 常见
use_authtok复用前序模块给定的口令缺少该参数会要求重复输入
enforce_for_root对 root 同样生效普通用户与 root 策略一致性
opasswd历史哈希存放位置属敏感文件,权限应为 600
opasswd 里存的是旧口令哈希:权限应为 600 且属主为 root,并纳入文件权限核查范围,备份与复制时按敏感文件处理。
remember 只约束 PAM 改密路径:管理员直接编辑 shadow 或批量下发口令会绕过历史记录,流程上要明确改密只能走标准通道。
历史条数与复杂度要一起看:只把 remember 调大而复杂度很弱,用户仍会用相似口令,实际强度提升有限,两项参数应配套调整。
改完策略要抽查几台机器确认生效:不同发行版把 PAM 配置分散在多个文件中,只在模板上改动而未覆盖实际加载的文件是常见疏漏。

易错点

  • 只加复杂度不限制复用:用户在两三个口令间轮换,实际强度没有提升
  • 漏掉 use_authtok:改密时被要求重复输入,体验差且容易被绕过
  • opasswd 权限过宽:旧口令哈希可读,等于把攻击面主动扩大
  • 改 PAM 不保留已登录会话:配置写错会影响所有账号改密,需先验证再全量

数据来源与参考

  • man 8 pam_pwhistory
  • CIS Benchmark:口令历史条目
  • 等保 2.0:口令复用限制

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌