pwquality 管什么
pwquality 是 RHEL 与 Debian 系共用的口令质量模块:长度、字符类别、与旧口令的相似度、字典命中都在 /etc/security/pwquality.conf 里配置,由 PAM 在改密时强制执行。它约束的是「新设置的口令」,对已经存在的弱口令没有任何作用,所以策略配置与存量清理必须分成两件事来做。
基本信息
| 加固项 | 口令复杂度 |
|---|---|
| 适用平台 | Linux(pam_pwquality.so,RHEL/CentOS/Debian/Ubuntu) |
| 风险等级 | 中 |
| 基线 | minlen 不低于 12,minclass 不低于 3 |
| 配置文件 | /etc/security/pwquality.conf |
典型使用场景
- 等保身份鉴别:条款要求启入口令复杂度检查并具备强度约束
- 整改验收:确认策略在新设置口令时确实被拒绝或放行
- 加固统一:多台主机批量下发同一份复杂度基线
- 事件后收紧:口令被撞库命中后提高复杂度要求
- 迁移核对:系统升级或切换认证框架后确认模块仍被引用
基线配置
基线配置
minlen = 12 # 最小长度 12
minclass = 3 # 至少包含 3 类字符
dcredit = -1 # 至少 1 个数字
ucredit = -1 # 至少 1 个大写字母
lcredit = -1 # 至少 1 个小写字母
ocredit = -1 # 至少 1 个特殊字符
retry = 3 # 最多允许重试 3 次验证配置生效
验证配置生效
grep -E 'minlen|minclass|dcredit' /etc/security/pwquality.conf
grep -n pwquality /etc/pam.d/system-auth /etc/pam.d/common-password 2>/dev/null
pwscore 'Abcd1234' # 本地评估口令强度分数(存在该命令时)
passwd testuser # 用弱口令试探,应被拒绝参数读法
| 参数 | 作用 | 注意事项 |
|---|---|---|
| minlen | 口令最小长度 | 长度比复杂度更能有效提升强度 |
| minclass | 至少包含的字符类别数 | 与各 credit 同时配置时取更严的组合 |
| dcredit 等 | 各类字符的最少数量 | 取负值表示至少,取正值表示加分,含义相反 |
| retry | 允许重新输入的次数 | 与失败锁定策略配合控制尝试成本 |
| difok | 与旧口令至少不同的字符数 | 过大会影响改密体验 |
| dictcheck | 是否检查常见弱口令字典 | 系统存在相应字典库时才有意义 |
配置前先理解正负号:credit 类参数取负值表示「至少需要几个」,取正值表示「每有一个加分」,两者含义相反,配错是常见错误。调整 minclass 与各 credit 时取最严组合,建议先用口令评估命令测试几条样例口令,确认预期结果再下发。
复杂度策略只约束新设置的口令:已存在的弱口令不会因为配置了策略而自动变强,必须配合账号核对与改密流程单独处理。报告里把「策略已配置」与「存量口令已整治」分开陈述,避免把配置状态当成整体符合性。
与 PAM 接线的关系
pwquality.conf 只是参数文件,真正生效靠 PAM 认证栈里引用 pam_pwquality.so。不同登录路径引用不同文件,因此配置完成后要确认本地登录与远程登录各自的路径都已包含该模块。习惯用 authselect 或发行版提供的框架管理 PAM,比直接编辑 pam.d 更不容易在升级时丢配置。