连续n次失败登录尝试后锁定用户。
编辑/etc/pam.d/password-auth 和/etc/pam.d/system-auth 文件,以符合本地站点策略:
建议严格按照顺序插入
auth required pam_faillock.so preauth audit silent deny=5 unlock_time=900
auth [success=1 default=bad] pam_unix.so
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900
auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=900
特别注意:
你不能随便在 /etc/pam.d/password-auth 和 /etc/pam.d/system-auth 文件中的任何位置插入这些行。PAM配置文件中的条目顺序非常重要,因为它们按照从上到下的顺序执行。
特别地,为了使pam_faillock正常工作,你需要确保它的行在其他认证方法(如pam_unix.so)之前和之后都有适当的位置。具体来说:
auth required pam_faillock.so preauth ...: 应该放在所有其他auth行之前,这样在进行实际认证之前,系统首先检查之前是否有过多的失败尝试。
auth [success=1 default=bad] pam_unix.so: 是实际的认证行,它应该跟在preauth行之后。
auth [default=die] pam_faillock.so authfail ...: 如果认证失败,这一行应该紧跟在pam_unix.so之后,以确保失败的尝试被正确地记录。
auth sufficient pam_faillock.so authsucc ...: 通常放在所有其他auth行之后,以确保成功的认证尝试可以重置失败尝试的计数器。
正确的顺序确保在实际认证前后都正确地处理了失败的尝试。如果顺序不正确,pam_faillock可能不会正常工作,可能会导致用户被错误地锁定或其他预期之外的行为。
所以,建议仔细检查配置文件,并在生产环境中进行更改之前,首先在测试环境中进行测试。
插入实际案例:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
# Begin: Added pam_faillock configurations
auth required pam_faillock.so preauth audit silent deny=5 unlock_time=900
auth [success=1 default=bad] pam_unix.so
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900
auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=900
# End: Added pam_faillock configurations
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
说明:
pam_faillock.so preauth ...: 在进行任何认证之前,此行检查之前的失败尝试是否已经超过了指定的限制(在这里是5次)。如果超过了,用户将被锁定指定的时间(这里是900秒或15分钟)。
pam_unix.so: 这是进行实际的用户名和密码认证。
pam_faillock.so authfail ...: 如果pam_unix.so认证失败,此行将记录失败尝试。
pam_faillock.so authsucc ...: 如果认证成功,此行将重置此用户的失败尝试计数。
这些设置的目的是:如果有5次连续的失败登录尝试,用户将被锁定15分钟。这可以帮助防止暴力破解攻击,同时为真正的用户提供一个解锁时间窗口,使他们在一段时间后可以再次尝试登录。
|