linux-faillock与账户锁定

xeonds

2026-04-10 19:22

省流:faillock --user <username> --reset


linux登录密码多次错误后现在会有一个锁定倒计时机制防止暴力破解。误触发的情况下需要通过省流部分的工具解锁。下面是介绍。

1. 功能何时加入?

这个功能并非从一开始就存在于所有发行版中。它的引入和普及与 PAM 模块的发展和安全需求的提升密切相关。

总结:目前主流的、功能更强大的“登录失败锁定”功能,主要通过 pam_faillock 模块提供 ,在2010年代中后期成为各大主流发行版的标准或推荐配置。

2. 由哪个组件提供?

这个功能的核心由两个部分协同工作:

  1. PAM可插拔认证模块。它是Linux系统身份验证的框架。所有登录行为(控制台、SSH、图形界面等)都通过PAM进行认证。
  2. pam_faillock 模块:这是实现“失败计数和锁定”逻辑的具体PAM模块。它负责:

所以,答案是:由 PAM 框架下的 pam_faillock 模块提供。

3. 功能有哪些管理工具?

管理失败锁定功能主要有以下几种方式:

  1. faillock 命令:这是最直接、最常用的管理工具,专门用于管理 pam_faillock 模块的记录。
  2. pam_tally2 命令:如果你使用的是旧的 pam_tally2 模块(在一些老系统或特定配置中),则需要使用这个命令。
  3. 直接编辑配置文件

4. faillock 又是什么?

faillock 有两层含义,容易混淆:

  1. faillock 命令:如上所述,是用于查询和重置用户登录失败锁定的命令行工具。
  2. faillock 数据库/目录:这是 pam_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?

PAM(Pluggable Authentication Modules,可插拔认证模块) 是 Linux 系统中用于集中管理身份验证的框架。它允许系统管理员在不修改应用程序代码的情况下,灵活配置和改变认证方式。

核心特性:

  1. 模块化设计 - 将认证逻辑从应用程序中分离
  2. 配置驱动 - 通过配置文件定义认证流程
  3. 灵活性 - 支持多种认证方式(密码、指纹、智能卡等)
  4. 堆叠能力 - 可以组合多个认证模块

配置文件结构:

/etc/pam.d/
├── login
├── sshd
├── su
└── system-auth

模块类型:


PAM 发展史

1. 前 PAM 时代(1990年代初期)

2. 诞生(1995-1996)

3. 移植到 Linux(1997-1998)

4. 标准化与普及(1999-2003)

5. 功能扩展(2004-2010)

6. 现代发展(2011至今)


重要里程碑版本

年份 版本 重要改进
1998 0.56 首个 Linux 稳定版
2000 1.0 API 稳定,广泛采用
2003 1.1 更好的线程安全
2010 1.2 64位支持,审计集成
2015 1.3 FIDO/U2F 支持
2021 1.5 改进的配置语法

技术架构演进

初始架构:

应用程序 → 硬编码认证逻辑

PAM 架构:

应用程序 → PAM API → pam.conf → 认证模块
                    ↓
                堆叠控制
                (required/sufficient/optional)

现代架构:

应用程序 → PAM API → /etc/pam.d/ → 多种模块
                              ↓
                    SSSD/LDAP/Kerberos/OTP/生物识别

影响与意义

对 Linux 生态的影响:

  1. 统一认证:标准化了 Linux 系统的认证接口
  2. 企业集成:便于与 AD、LDAP 等企业目录服务集成
  3. 安全增强:支持多因素认证、审计跟踪
  4. 创新加速:新认证技术可以快速部署

采用情况:


当前趋势

  1. 无密码认证:WebAuthn、FIDO2 支持
  2. 云原生集成:Kubernetes、容器认证
  3. 零信任架构:持续身份验证
  4. AI/ML 集成:行为生物识别
  5. 量子安全:后量子密码学准备

示例配置

# /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      postlogin

PAM 的成功在于其 简单而强大 的设计理念:通过配置文件将应用程序与认证机制解耦,这种 设计使其能够适应 25 年来的技术变迁,依然是现代 Linux 安全基础设施的核心组件。