为什么走受支持接口
PAM 决定认证与口令策略如何生效。RHEL 8 及以后用 authselect 管理,RHEL 7 用 authconfig,Debian 系用 pam-auth-update。通过这些受支持的接口启用 faillock(登录失败锁定)、pwhistory(口令历史)、pwquality(口令强度)等特性,好处是软件包升级或系统重建时配置不会被覆盖。直接手改 /etc/pam.d 下的文件虽然立即生效,但升级时容易被替换或产生冲突,后续维护成本很高。
基本信息
| 适用平台 | RHEL/CentOS/Rocky(authselect、authconfig);Debian/Ubuntu(pam-auth-update) |
|---|---|
| 权限要求 | root |
| 常用特性 | with-faillock、with-pwhistory、with-mkhomedir |
| 加固项 | PAM 配置受支持管理 |
| 风险等级 | 中 |
典型使用场景
- 启用登录失败锁定:把 faillock 作为 authselect 特性启用
- 口令历史限制:避免用户反复使用最近用过的口令
- 域账号集成:切换 sssd profile 以对接目录服务
- 合规整改:等保要求有登录失败处理与身份鉴别机制
- 系统升级前准备:把手工改动归并到受支持配置,避免升级冲突
authselect 与等价接口
authselect 与等价接口
sudo authselect list # 查看可用 profile 与特性
sudo authselect current # 查看当前启用项
sudo authselect select sssd with-faillock with-mkhomedir with-pwhistory
sudo authselect apply-changes # 部分版本需显式应用
sudo faillock --user alice # 查看某账号的失败计数
# RHEL 7 老版本示例(参数以本机手册为准):
# authconfig --enablefaillock --faillockargs='deny=5 unlock_time=900' --update
# Debian 系等价:pam-auth-update --enable pwquality接口与配置文件对照
| 发行版 | 管理接口 | 受影响文件 |
|---|---|---|
| RHEL 8+ / Rocky 8+ | authselect | /etc/authselect 下 profile 的渲染结果 |
| RHEL 7 / CentOS 7 | authconfig | /etc/pam.d/system-auth、password-auth |
| Debian / Ubuntu | pam-auth-update | /etc/pam.d/common-auth 等公共片段 |
| 容器与精简系统 | 可能不含相同工具 | 需按基础镜像实际情况确认 |
变更 PAM 前先备份:cp -a /etc/pam.d /root/pam.d.bak,并把变更记入配置管理,出问题时能快速回到上一个可用状态。
落地要点
- authselect select 会重置非受管的手工改动,切换前先比对手改内容并归并
- 误配 PAM 可能导致全部账号(含 root)无法登录:保留一个已登录会话直到验证完成
- faillock 参数结合运维习惯设置,deny 与 unlock_time 过严会造成频繁误锁
- 域账号与本机账号的策略来源可能不同,验收要分别测试
- 把 PAM 相关变更纳入变更单,注明影响范围与回滚方式
在远程会话里改 PAM 属于高风险操作:会话一旦断开可能无法再登录,需配合带外控制台并保留一个已打开的会话。