首页/系统/信创系统运维速查/PAM 口令复杂度(pwquality)
安全加固65 条

PAM 口令复杂度(pwquality)

口令复杂度由 PAM 的 pam_pwquality 模块控制:在 pwquality.conf 配长度、字符类别与重试次数,统一约束改密行为。

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

口令复杂度怎么统管

口令复杂度由 PAM 的 pam_pwquality 模块控制:长度、字符类别数、重复字符限制与重试次数都在 /etc/security/pwquality.conf 中配置。它统一约束所有走 PAM 的改密入口,包括 passwd、登录改密与图形界面,比只改 login.defs 更全面。

基本信息

配置文件/etc/security/pwquality.conf
引用位置PAM 栈中的 system-auth、password-auth 或 common-password
关键参数minlen、minclass、retry、maxrepeat
按类别要求dcredit、ucredit、lcredit、ocredit
生效范围所有经 PAM 的改密操作

典型使用场景

  • 等保整改要求口令具备大小写、数字与符号组合
  • 统一内部改密入口的复杂度要求
  • 禁止包含用户名或字典词的弱口令
  • 限制连续重复字符,避免简单重复口令
  • 为不同机器建立同一份口令策略基线

关键配置项

关键配置项
minlen = 10      # 最小长度
minclass = 4     # 至少包含几类字符(大写、小写、数字、符号)
retry = 3        # 不满足策略时允许重试次数
maxrepeat = 3    # 同一字符最多连续出现次数
# 按类别逐个要求时可用:
# dcredit = -1   ucredit = -1   lcredit = -1   ocredit = -1

引用检查与测试

引用检查与测试
grep -r pwquality /etc/pam.d/ | head      # 确认 PAM 栈是否引用该模块
grep -r pwquality /etc/pam.d/system-auth  # RPM 系常见引用位置
grep -r pwquality /etc/pam.d/common-password   # DEB 系常见引用位置
passwd testuser                           # 用测试账户验证策略是否拦截弱口令
journalctl -t pwquality -n 20 --no-pager 2>/dev/null | tail   # 查看拒绝记录

参数含义

参数含义常见取值
minlen口令最小长度8 到 12
minclass最少字符类别数3 或 4
retry不满足时的重试次数3
maxrepeat同字符最大连续次数3
difok与旧口令的最少差异字符数按合规要求设置
不同发行版由 system-auth、password-auth 或 common-password 引用该模块;改配置前先 grep 确认引用位置,只改配置文件而模块未被引用时策略不会生效。

上线验证动作

  • 用测试账户设弱口令,确认被拒绝
  • 再设一个合规口令,确认能通过
  • 核对 PAM 引用位置与参数生效情况
  • 确认管理账号改密同样受策略约束
  • 把策略基线登记进配置核对清单

易错点

  • 只改 pwquality.conf 就以为生效:PAM 栈未引用该模块时配置毫无作用,先确认引用位置
  • 为个别账户开例外:root 或特权账号绕过复杂度会形成后门式风险,策略应统一适用
  • 参数互相冲突:minclass 与逐类别 credit 同时设置时行为以模块解析结果为准,改完要用测试账户验证
  • 策略过严导致用户写在便利贴上:长度与类别要求要结合运维实际,同时配合失败锁定与审计
  • 只在测试环境验证:各发行版 PAM 引用文件不同,上线前要在目标系统上复核参数是否真的生效

数据来源与参考

  • man 8 pam_pwquality
  • man 5 pwquality.conf
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌