pam_tally2 与 faillock 的关系
登录失败计数与账户锁定由 PAM 模块实现。较老的发行版使用 pam_tally2,计数写在 /var/log/tallylog,用 pam_tally2 命令查看与清零;较新版本改用 pam_faillock,计数在 /var/run/faillock 下按用户存文件,命令是 faillock。两套机制的数据完全不互通,排查锁定问题时必须先确认本机 PAM 实际引用了哪一套,按资料年份猜测很容易找错对象。
基本信息
| 适用平台 | 全 Linux;具体用哪套取决于发行版版本 |
|---|---|
| 旧机制 | pam_tally2,计数文件 /var/log/tallylog |
| 新机制 | pam_faillock,计数目录 /var/run/faillock |
| 判断方法 | grep -rE 'pam_faillock|pam_tally2' /etc/pam.d/ |
| 解锁操作 | pam_tally2 --reset 或 faillock --reset,需 root |
典型使用场景
- 账户被锁定:确认被哪套机制锁住,按对应命令查看剩余次数
- 应急解锁:运维人员自己输错多次被锁,需要快速清零
- 等保整改:核查登录失败锁定参数是否符合要求
- 升级适配:系统升级后旧模块被替换,原脚本失效需要改写
- 安全事件分析:查看某账户的失败次数与来源,判断是否被爆破
查看与清零
查看与清零
grep -rE 'pam_faillock|pam_tally2' /etc/pam.d/ | head # 先确认本机用哪一套
# 旧机制(pam_tally2)
pam_tally2 --user someuser # 查看该用户失败计数与最近失败信息
pam_tally2 --user someuser --reset # 清零(解锁)
cat /var/log/tallylog | head # 计数文件为二进制,仅确认存在
# 新机制(pam_faillock)
faillock --user someuser # 查看失败记录
faillock --user someuser --reset # 清零
ls /var/run/faillock/ # 按用户存放的计数文件
# 参数配置位置
cat /etc/security/faillock.conf 2>/dev/null | grep -vE '^#|^$'两套机制对照
| 项目 | pam_tally2 | pam_faillock |
|---|---|---|
| 出现版本 | 较老发行版 | 较新发行版 |
| 数据文件 | /var/log/tallylog | /var/run/faillock/ |
| 查看命令 | pam_tally2 --user | faillock --user |
| 清零命令 | pam_tally2 --user --reset | faillock --user --reset |
| 参数位置 | pam.d 行内或模块参数 | /etc/security/faillock.conf |
| 是否互通 | 不互通,独立计数 | 不互通,独立计数 |
同时启用 tally2 与 faillock 没有叠加收益,只会让行为难以排查;确认本机机制后只保留一套配置。
删除计数文件或执行 reset 都会立即解除锁定,属于会削弱安全控制的操作,应留操作记录并确认调用方身份。