faillock 是干什么的
pam_faillock 是 PAM 的登录失败锁定模块:连续多次鉴权失败后把账户(或来源)临时锁住,防止口令爆破。它由 /etc/security/faillock.conf 提供参数,并在 PAM 栈的鉴权与账目阶段被引用。查看与解锁用 faillock 命令。适用于使用 PAM 与 systemd 的主流发行版,包括麒麟与 UOS。
基本信息
| 配置文件 | /etc/security/faillock.conf |
|---|---|
| 引用位置 | /etc/pam.d/ 下的 system-auth 或 password-auth |
| 查看锁定 | faillock --user <用户> |
| 解锁复位 | faillock --user <用户> --reset |
| 关键参数 | deny 与 unlock_time |
典型使用场景
- 等保与安全基线要求登录失败锁定与自动解锁
- 公网暴露的跳板机与 VPN 前置机防口令爆破
- 配合口令复杂度一起加固本机登录入口
- 排查用户被锁:确认是策略生效还是人为锁定
- 应急解锁:误锁管理员账户后快速复位
关键配置项
关键配置项
deny = 5 # 连续失败多少次后锁定
unlock_time = 600 # 锁定时长(秒),0 表示只能管理员复位
audit # 记录失败尝试到系统审计日志
silent # 不向用户提示具体失败次数查看与解锁
查看与解锁
faillock --user someuser # 查看失败计数与锁定状态
faillock --user someuser --reset # 复位计数,立即解锁
grep -r pwquality /etc/pam.d/ | head # 确认 PAM 引用位置
grep faillock /etc/pam.d/system-auth # RPM 系常见引用位置
grep faillock /etc/pam.d/common-auth # DEB 系常见引用位置参数与效果
| 参数 | 含义 | 常见取值 |
|---|---|---|
| deny | 触发锁定的失败次数 | 3 到 5 次 |
| unlock_time | 自动解锁等待秒数 | 600 秒,0 表示只能人工复位 |
| fail_interval | 计数窗口时长 | 900 秒 |
| audit | 把失败记录写入审计 | 按合规要求开启 |
| root 账户 | 同样受策略约束 | 应急通道需提前准备 |
修改 PAM 配置前备份 /etc/pam.d/ 下的相关文件;栈写错会影响全部登录方式(包括 root 控制台),操作时保留一个已登录会话用于回滚。
上线前验证
- 用测试账户连续输错口令,确认达到 deny 后触发锁定
- 执行 faillock 查看失败计数与锁定状态
- 等 unlock_time 到期或手工复位,确认能恢复登录
- 确认审计日志中能查到失败尝试记录