口令策略分散在三处
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)。只改其中一个文件,另一条路径上的策略仍然是旧的,这类漏项在评审时很容易被查到。
取证与留档怎么写
把四处输出合并成一张核查表:配置项、当前值、基线值、结论。同时附一条存量账号抽查结果,例如某账号的口令最大有效期与最近修改时间。两份材料合起来既说明策略存在,也说明策略在真实账号上生效,比单独贴配置文件更有说服力。