2026-04-10 19:22
省流:faillock --user <username> --reset
linux登录密码多次错误后现在会有一个锁定倒计时机制防止暴力破解。误触发的情况下需要通过省流部分的工具解锁。下面是介绍。
这个功能并非从一开始就存在于所有发行版中。它的引入和普及与 PAM 模块的发展和安全需求的提升密切相关。
pam_tally 或 pam_tally2
这样的PAM模块来实现类似功能。这些模块的功能相对基础。pam_faillock
模块大约在 RHEL 6
时代开始作为主要推荐方案引入(2010年左右),并在后续版本中逐渐取代
pam_tally2。pam_faillock
的引入稍晚。在 Ubuntu 16.04 LTS 和 Debian
9 中,它已经可用,但可能不是默认配置。从 Ubuntu 20.04
LTS 和 Debian 10 开
始,它变得更加普遍和默认。pam_faillock 功能。总结:目前主流的、功能更强大的“登录失败锁定”功能,主要通过
pam_faillock 模块提供
,在2010年代中后期成为各大主流发行版的标准或推荐配置。
这个功能的核心由两个部分协同工作:
pam_faillock
模块:这是实现“失败计数和锁定”逻辑的具体PAM模块。它负责:
所以,答案是:由 PAM 框架下的
pam_faillock 模块提供。
管理失败锁定功能主要有以下几种方式:
faillock
命令:这是最直接、最常用的管理工具,专门用于管理
pam_faillock 模块的记录。
faillock:显示所有用户的失败记录。faillock --user <用户名>:显示指定用户的失败记录和锁定状态。faillock --user <用户名> --reset:重置指定用户的失败计数,立即解锁账户。
(最常用)faillock --reset:重置所有用户的失败计数。pam_tally2 命令:如果你使用的是旧的
pam_tally2
模块(在一些老系统或特定配置中),则需要使用这个命令。
pam_tally2 --user <用户名>:查看状态。pam_tally2 --user <用户名> --reset:重置计数。/etc/pam.d/system-auth、/etc/pam.d/password-auth(RHEL系)或
/etc/pam.d/common-auth(Debian/Ubuntu系)。在这里可以配置
pam_faillock 的行为参 数,例如:
deny=3:失败几次后锁定。unlock_time=600:锁定多少秒后自动解锁(如600秒=10分钟)。fail_interval=900:统计失败尝试的时间窗口(秒)。/etc/security/faillock.conf:这是更现代的配置方式(RHEL
7+/Ubuntu 20.04+)。你可以在这个文件中集中配置所有
pam_faillock 的参数,它比直接编辑PAM文件更清晰
、更易于管理。faillock 又是什么?faillock 有两层含义,容易混淆:
faillock
命令:如上所述,是用于查询和重置用户登录失败锁定的命令行工具。faillock 数据库/目录:这是
pam_faillock 模块存储失败记录数据的地方。默认路 径通常是:
/var/run/faillock/(临时性,重启可能丢失)/var/lib/faillock/(持久化存储,更常见)你可以把 faillock
理解为一套完整的“登录失败防护机制”,它包括了: *
后台模块:pam_faillock *
配置文件:/etc/security/faillock.conf *
管理工具:faillock 命令 *
数据存储:/var/lib/faillock/ 目录
一个典型的 /etc/security/faillock.conf
配置可能如下:
# 尝试3次后锁定
deny = 3
# 锁定10分钟(600秒)
unlock_time = 600
# 在15分钟(900秒)内统计失败次数
fail_interval = 900
# 锁定root账户(增强安全)
even_deny_root
root_unlock_time = 1200在 /etc/pam.d/system-auth
中,对应的PAM配置行通常类似这样:
auth required pam_faillock.so preauth silent deny=3 unlock_time=600
auth [default=die] pam_faillock.so authfail
account required pam_faillock.so
| 项目 | 说明 |
|---|---|
| 功能起源 | 2010年代随 pam_faillock
模块普及,逐渐取代 pam_tally2。 |
| 提供组件 | PAM 框架 +
pam_faillock 模块。 |
| 管理工具 | 1. faillock
命令(主流)2. pam_tally2 命令(旧系统)3. 配置文件: /etc/security/faillock.conf 和 PAM 文件。 |
faillock
是什么 |
一个整体方案,包括模块、命令、配置和数据库,用于管理登录 失败锁定。 |
因此,当你在现代Linux系统上遇到账户因多次登录失败被锁定时,最常用的解锁命令就是
sudo faillock --user username --reset。
PAM(Pluggable Authentication Modules,可插拔认证模块) 是 Linux 系统中用于集中管理身份验证的框架。它允许系统管理员在不修改应用程序代码的情况下,灵活配置和改变认证方式。
/etc/pam.d/
├── login
├── sshd
├── su
└── system-auth
| 年份 | 版本 | 重要改进 |
|---|---|---|
| 1998 | 0.56 | 首个 Linux 稳定版 |
| 2000 | 1.0 | API 稳定,广泛采用 |
| 2003 | 1.1 | 更好的线程安全 |
| 2010 | 1.2 | 64位支持,审计集成 |
| 2015 | 1.3 | FIDO/U2F 支持 |
| 2021 | 1.5 | 改进的配置语法 |
应用程序 → 硬编码认证逻辑
应用程序 → PAM API → pam.conf → 认证模块
↓
堆叠控制
(required/sufficient/optional)
应用程序 → PAM API → /etc/pam.d/ → 多种模块
↓
SSSD/LDAP/Kerberos/OTP/生物识别
# /etc/pam.d/sshd 示例
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
account required pam_nologin.so
account include password-auth
password include password-auth
session required pam_selinux.so close
session required pam_loginuid.so
session optional pam_keyinit.so force revoke
session include password-auth
session include postloginPAM 的成功在于其 简单而强大 的设计理念:通过配置文件将应用程序与认证机制解耦,这种 设计使其能够适应 25 年来的技术变迁,依然是现代 Linux 安全基础设施的核心组件。