Debian配置pam_faillock实现登录失败锁定
pam_faillock.so简介
pam_faillock.so
是 Linux 系统中用于增强系统安全性的一个 Pluggable Authentication Module (PAM)。PAM 是一种在 Linux 系统中提供认证、授权、密码管理和会话管理的机制。pam_faillock.so
模块专注于防止密码暴力破解攻击,它通过锁定账户来响应连续的登录失败尝试。
当配置为 preauth
时,pam_faillock.so
会在认证过程开始之前检查失败的登录尝试次数。如果用户在指定的时间间隔内(例如 fail_interval
设置的值)达到了配置的失败尝试次数上限,模块将锁定该账户,防止进一步的登录尝试。
当配置为 authfail
时,如果认证失败,pam_faillock.so
将增加失败尝试的计数。这通常与 preauth
配置结合使用,以确保在认证过程中尽早检测到潜在的暴力破解尝试。
当配置authsucc
时,它的作用是在用户成功认证后重置该用户账户的失败尝试计数器。这样可以确保用户的登录失败次数记录是准确的,避免了因用户之前登录失败次数过多而被错误地锁定账户。
pam_faillock.so
还可以在 account
模式下使用,以在账户管理阶段检查账户是否被锁定。如果账户被锁定,模块将不允许用户登录,直到锁定期限过期。
/usr/lib/x86_64-linux-gnu/security
通过faillock.conf配置(官方推荐的做法)
修改 /etc/security/faillock.conf
的配置 pam_faillock 模块
# 失败次数
deny = 10
# 普通用户锁定600秒
unlock_time = 600
# 启用对root用户的失败锁定,锁定180秒
even_deny_root
root_unlock_time = 180
配置PAM在认证阶段调用 pam_faillock 模块,在 /etc/pam.d/common-auth
的顶部添加如下内容
auth required pam_securetty.so
auth required pam_env.so
auth required pam_nologin.so
auth requisite pam_faillock.so preauth
auth [success=1 default=bad] pam_unix.so
auth [default=die] pam_faillock.so authfail
auth sufficient pam_faillock.so authsucc
auth required pam_deny.so
# 以下为针对会话的配置,可选
account required pam_unix.so
password required pam_unix.so shadow
session required pam_selinux.so close
session required pam_loginuid.so
session required pam_unix.so
session required pam_selinux.so open
pam_securetty.so
、pam_env.so
、pam_nologin.so
、pam_unix.so
、pam_deny.so
、pam_unix.so shadow
、pam_selinux.so
和 pam_loginuid.so
,是实现限制登录终端、加载环境变量、检查禁止登录文件、提供传统Unix认证、拒绝登录、处理密码更改、以及设置SELinux和loginuid等功能的。这些模块对于 pam_faillock
功能本身不是必须的,但它们是实现完整认证和会话管理所必需的,所以需要实现登录失败锁定功能就需要这些配置一起实现。
在PAM中直接配置
在 /etc/pam.d/common-auth
的顶部添加如下内容
auth required pam_securetty.so
auth required pam_env.so
auth required pam_nologin.so
auth requisite pam_faillock.so preauth deny=10 unlock_time=600
auth [success=1 default=bad] pam_unix.so
auth [default=die] pam_faillock.so authfail deny=10 unlock_time=600
auth sufficient pam_faillock.so authsucc
auth required pam_deny.so
# 以下为针对会话的配置,可选
account required pam_unix.so
password required pam_unix.so shadow
session required pam_selinux.so close
session required pam_loginuid.so
session required pam_unix.so
session required pam_selinux.so open
参考
pam_faillock(8) — libpam-modules — Debian unstable — Debian Manpages