首页/安全/安全加固速查/口令策略生效状态核查

口令策略生效状态核查

策略分布在 login.defs 与 PAM 两处:有效期看 login.defs,复杂度看 pwquality,锁定看 faillock,缺一即减配。

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

口令策略分散在三处

Linux 的口令策略不是一个文件能说清的:有效期与最小长度在 login.defs,复杂度在 pwquality,失败锁定在 faillock,而三者是否真正生效又取决于 PAM 的接线。只改其中一处,剩下的缺口依然存在。核查的目标是把这几处凑齐并确认对新口令确实有约束,缺一即视为策略不完整。

基本信息

加固项口令策略完整性
适用平台Linux(RHEL/CentOS/Debian/Ubuntu,PAM)
风险等级高
检查位置login.defs、pwquality.conf、faillock.conf 与 pam.d 下的认证栈
判读三处均有配置,且存量账号符合有效期要求

典型使用场景

  • 等保身份鉴别:条款要求口令复杂度、有效期与失败处理的组合配置
  • 整改验收:确认策略不只是写在文件里,而是通过 PAM 真正生效
  • 存量账号清理:策略只约束新口令,老账号需要单独核查与套用
  • 迁移核对:系统升级或切换认证框架后确认策略仍被引用
  • 批量核查:多台主机各取一份输出,找出配置漂移的机器

核查命令

核查命令
grep -E 'PASS_MAX_DAYS|PASS_MIN_LEN|PASS_MIN_DAYS|PASS_WARN_AGE' /etc/login.defs
grep -vE '^#|^$' /etc/security/pwquality.conf | head -20
grep -vE '^#|^$' /etc/security/faillock.conf | head -20
grep -rE 'pam_pwquality|pam_faillock|pam_tally2' /etc/pam.d/ 2>/dev/null | head -20
chage -l <账号> | head -8          # 抽查存量账号的实际有效期

三处配置的分工

位置管什么核查要点
login.defs口令有效期与最小长度对新建账号生效,存量账号需 chage 单独套用
pwquality.conf复杂度:长度、字符类别、重复限制minlen 与 minclass 是核心项
faillock.conf失败次数与锁定时间需确认 PAM 已接线,否则参数不生效
pam.d 认证栈决定以上模块是否被调用不同登录路径可能走不同文件,需分别确认
策略只对新设置的口令生效:存量账号的口令有效期由账号字段控制,必须用 chage 抽查确认,必要时批量套用新策略。核查报告里把「策略已配置」与「存量账号已覆盖」分开写,避免把配置状态当成整体符合性。
不同登录路径走不同的 PAM 文件:本地登录、su 与 SSH 可能分别引用 system-auth 与 password-auth(Debian 系为 common-auth 与 common-password)。只改其中一个文件,另一条路径上的策略仍然是旧的,这类漏项在评审时很容易被查到。

取证与留档怎么写

把四处输出合并成一张核查表:配置项、当前值、基线值、结论。同时附一条存量账号抽查结果,例如某账号的口令最大有效期与最近修改时间。两份材料合起来既说明策略存在,也说明策略在真实账号上生效,比单独贴配置文件更有说服力。

易错点

  • 只查配置文件不查 PAM 接线:参数存在但没有被调用,策略实际不生效
  • 只改一个 PAM 文件:不同登录路径引用不同文件,另一条路径会留下缺口
  • 忽略存量账号:login.defs 的改动不改历史账号的有效期,需用 chage 逐项核对
  • 把参数正负号理解反:pwquality 中的 credit 类参数取负值表示「至少需要」,含义与直觉相反,配置前先验证
  • 核查输出不写时间与主机:策略核查是过程性证据,缺少时间与主机信息会影响复评

数据来源与参考

  • 等保 2.0:身份鉴别
  • CIS Linux Benchmark:口令策略

相关工具

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