是较旧的标准,广泛用于CentOS 7及更早版本、Ubuntu 16.04等系统,它通过读取 /var/log/secure 或 /var/log/faillog 文件来统计失败次数,由于其依赖日志文件解析,性能在高频登录尝试下可能受限,且配置相对复杂。
<pam_faillock
是较新的替代方案,主要用于CentOS 8、RHEL 8、Fedora及较新的Ubuntu版本,它直接在PAM栈中处理计数,不依赖日志文件解析,因此响应速度更快,安全性更高,配置命令也更为直观,通常通过 faillock 命令进行管理。
配置场景示例
在CentOS 7系统中,管理员通常编辑 /etc/pam.d/system-auth 文件,添加如下配置:
auth required pam_tally2.so deny=5 unlock_time=300
这表示允许5次失败尝试,锁定时间为300秒(5分钟),而在CentOS 8系统中,配置则写入 /etc/pam.d/system-auth 或 /etc/pam.d/password-auth:
auth required pam_faillock.so preauth silent deny=5 unlock_time=300
如何手动解除Linux账号锁定
当合法用户因忘记密码或误操作导致账号被锁定时,快速解除锁定是运维人员的首要任务,不同模块对应的解锁命令截然不同,混淆使用可能导致操作无效。
使用 pam_tally2 解锁
对于使用 pam_tally2 的系统,解锁命令如下:
sudo pam_tally2 --user=username --reset
该命令会清零指定用户的失败计数,立即恢复其登录权限,若要查看所有用户的锁定状态,可使用
pam_tally2 –user=all。
使用 pam_faillock 解锁
对于使用 pam_faillock 的系统,解锁命令为:
sudo faillock --user username --reset
此命令同样会重置失败计数。faillock 还提供了更丰富的查询选项,faillock –user username 可查看该用户的详细失败记录。
自动化解锁脚本示例
为提高效率,管理员可编写Shell脚本自动检测并解锁特定用户,以下是一个简单示例:
#!/bin/bash
USER=$1
if [ -z "$USER" ]; then
echo "Usage: $0 "
exit 1
fi
# 检查是否使用 pam_faillock
if faillock --user $USER 2>/dev/null | grep -q "denied"; then
faillock --user $USER --reset
echo "User $USER has been unlocked."
else
echo "User $USER is not locked or uses different module."
fi
Linux账号锁定策略的最佳实践
仅仅配置锁定机制并不足以保障系统安全,合理的策略配置、监控告警以及定期审计是构建纵深防御体系的关键。
合理设置锁定阈值与时间
锁定阈值(deny)和解锁时间(unlock_time)的设置需平衡安全性与用户体验。
- 阈值设置:建议设置为3-5次,过低(如1-2次)易导致合法用户因输入错误而被频繁锁定,增加运维负担;过高(如10次以上)则可能让暴力破解工具在锁定前完成部分字典攻击。
- 解锁时间
:建议设置为15-30分钟,短期锁定(如5分钟)可能不足以阻止自动化脚本的重试,而长期锁定(如24小时)则可能影响业务连续性,对于关键服务器,可考虑永久锁定并触发告警。
监控与告警机制
账号锁定事件应纳入系统监控体系,通过配置日志轮转和实时告警,管理员可及时发现异常登录行为。
日志分析路径
在RHEL/CentOS系统中,相关日志通常位于 /var/log/secure,可使用以下命令实时监测锁定事件:
tail -f /var/log/secure | grep "pam_tally2|pam_faillock"
结合Prometheus和Grafana等工具,可将这些日志指标可视化,设置阈值告警,如“单用户5分钟内失败次数超过5次”。
定期审计与合规检查
定期审查账号锁定策略是否符合安全基线,检查是否所有服务(SSH、Sudo、Su)均启用了锁定机制,以及是否有异常账户被频繁锁定。
FAQ:Linux账号锁定常见问题解答
Linux账号锁定后,SSH登录会直接断开吗?
是的,当账号被锁定时,SSH服务在身份验证阶段会直接拒绝连接,返回“Permission denied”或类似错误,客户端不会进入密码输入界面,而是立即断开连接,这有助于防止攻击者通过SSH暴力破解获取系统权限。
如何防止账号锁定被用于拒绝服务攻击?
账号锁定机制可能被恶意利用,通过频繁尝试锁定合法用户账号,导致其无法登录,形成拒绝服务(DoS),为防止此类攻击,建议:
- 实施IP级别的访问控制,如使用Fail2Ban或iptables限制单IP的登录尝试频率。
- 启用双因素认证(2FA),即使密码被破解,攻击者仍需第二重验证。
- 定期审查锁定日志,识别并封禁异常IP。
Linux账号锁定会影响sudo命令吗?
通常不会,账号锁定主要影响PAM认证模块中的“auth”阶段,而sudo命令默认使用用户的密码进行验证,若用户账号未被锁定,sudo仍可正常工作,但若配置了sudo的PAM模块也启用了锁定策略,则可能受到影响,建议检查 /etc/pam.d/sudo 文件,确认是否包含 pam_tally2.so 或 pam_faillock.so 指令。
如何查看当前所有被锁定的用户?
对于使用 pam_tally2 的系统,运行 pam_tally2 –user=all 可查看每个用户的失败次数,对于使用 pam_faillock 的系统,运行 faillock –user all 可查看类似信息,若输出为空,表示无用户被锁定。
账号锁定后,密码重置是否有效?
账号锁定与密码重置是两个独立的操作,锁定状态仅限制登录尝试次数,不影响密码本身,管理员可通过 passwd username 命令重置密码,但需先使用解锁命令(如 faillock –user username –reset)解除锁定,否则用户仍无法登录,建议先解锁,再重置密码,最后通知用户新密码。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/462831.html



