首页/安全/安全加固速查/pwquality 防弱口令进阶参数
口令与认证策略55 条

pwquality 防弱口令进阶参数

在长度与类别之外,difok(新旧差异)、maxrepeat/maxclassrepeat(重复字符)与 gecoscheck(禁止含用户名信息)能挡住一大批可预测口令。

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

挡住可预测的口令

在长度与字符类别这些基础要求之外,pam_pwquality 的进阶参数能拦住一整类可预测口令:difok 要求新口令与旧口令有足够差异,maxrepeat 与 maxclassrepeat 限制重复字符,gecoscheck 检查口令是否包含用户姓名等信息。这些参数针对的正是“用自己的名字加年份”这类最普遍的习惯,比单纯提高长度要求更有效。

基本信息

适用平台Linux(pam_pwquality.so,RHEL/Debian 系通用)
配置文件/etc/security/pwquality.conf 及 pwquality.conf.d 片段
进阶参数difok、maxrepeat、maxclassrepeat、gecoscheck、usercheck、dictcheck
验证工具pwscore、pam_pwquality 的调试输出
风险等级低

典型使用场景

  • 弱口令治理:减少可猜解口令在组织内的比例
  • 合规整改:等保对口令复杂度与定期更换有明确要求
  • 改密场景:结合 difok 避免新旧口令高度相似
  • 域外主机:无目录服务时用本地参数保证口令强度
  • 离线评估:用 pwscore 先验证参数阈值是否合理

推荐参数与验证

推荐参数与验证
# /etc/security/pwquality.conf
# difok = 5            新口令与旧口令至少 5 个字符不同
# maxrepeat = 2        同一字符最多连续出现 2 次
# maxclassrepeat = 4   同一字符类最多连续出现 4 次
# gecoscheck = 1       禁止包含 GECOS 字段片段
# usercheck = 1        禁止包含用户名
# dictcheck = 1        拒绝字典词
echo 'Company@2026' | pwscore         # 离线打分,返回 0-100 与失败原因
sudo pam-auth-update --enable pwquality   # Debian 系启用
sudo authselect select sssd with-pwquality   # RHEL 8+ 以特性方式启用

参数读法

参数作用常见问题
difok新旧口令差异字符数数值过大时用户抱怨难以记住,取 3-5 折中
maxrepeat单字符连续重复上限设为 1 过于严格,2 是常用值
maxclassrepeat同类字符连续上限防止键盘顺序串与重复模式
gecoscheck禁止包含姓名等信息需要在账号中填写准确的 GECOS
dictcheck字典词拦截需依赖 cracklib 字典包,精简系统可能缺失
gecoscheck 检查的是 GECOS 字段(姓名、电话等)片段:用户用自己的姓名当口令是最普遍的弱口令来源,这一项性价比很高。

落地要点

  • 先备份 /etc/pam.d 与 pwquality 配置,再调整参数
  • 参数变更后实测一次:新建或修改口令流程走通,并确认弱口令被拒
  • difok 对 root 改他人密码的场景可能不生效,必要时用 enforce_for_root 加固
  • dictcheck 需字典支持,精简镜像里要确认 cracklib 相关包已安装
  • 把参数与口令策略文档同步更新,避免文件与文档不一致
参数过严会催生用户把口令写在便签上:强度要求要配合培训与密码管理器使用建议,而不是一味加码。

易错点

  • dictcheck 配置了却无字典包:规则静默不生效,核查时误以为已具备字典校验
  • difok 忘开 enforce_for_root:root 帮用户改密时可设置为高度相近的口令
  • 只改配置不做实测:参数组合冲突导致改密流程报错,用户无法自行修改口令
  • 把 gecoscheck 当装饰:账号 GECOS 字段为空时该检查实际上不起作用

数据来源与参考

  • man 5 pwquality.conf:difok/gecoscheck
  • CIS Benchmark:口令策略进阶条目

相关工具

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