身份鉴别——Linux配置登录失败处理功能

对于一台服务器而言,有两种登录方式:本地登录和远程登录,登录失败处理功能的配置也从这两个方面来配置 。由于系(例如Red HatLinux和)和系(例如)在配置上稍有不同,所以分开来说 。
【身份鉴别——Linux配置登录失败处理功能】RHEL(Red HatLinux) 配置
红帽的登录失败处理功能主要由/etc/pam.d/-auth和/etc/pam.d/-auth来实现 。其中,/etc/pam.d/-auth控制本地登录失败处理,/etc/pam.d/-auh控制远程登录失败处理 。
首先配置/etc/pam.d/-auth,在第一个auth行插入一行如下:
authrequiredpam_tally2.so deny=3 lock_time=20 unlock_time=60 even_deny_root root_unlock_time=60
完成后如下:
[root@Oracle ~]# cat /etc/pam.d/system-auth#%PAM-1.0# This file is auto-generated.# User changes will be destroyed the next time authconfig is run.authrequiredpam_tally2.so deny=3 lock_time=20 unlock_time=60 even_deny_root root_unlock_time=60 authrequiredpam_env.soauthrequiredpam_faildelay.so delay=2000000authsufficientpam_unix.so nullok try_first_passauthrequisitepam_succeed_if.so uid >= 1000 quiet_successauthrequiredpam_deny.soaccountrequiredpam_unix.soaccountsufficientpam_localuser.soaccountsufficientpam_succeed_if.so uid < 1000 quietaccountrequiredpam_permit.sopasswordrequisitepam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=passwordsufficientpam_unix.so sha512 shadow nullok try_first_pass use_authtokpasswordrequiredpam_deny.sosessionoptionalpam_keyinit.so revokesessionrequiredpam_limits.so-sessionoptionalpam_systemd.sosession[success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uidsessionrequiredpam_unix.so
参数解释:
deny:触发登录失败锁定功能的次数;
:锁定时间,单位为秒;
:触发登录失败处理功能后锁定的时长,单位为秒;
:启用对root账户的登录失败处理;
:root账户触发登录失败锁定后锁定的时长,单位为秒 。
测试 本地登录:

身份鉴别——Linux配置登录失败处理功能

文章插图
可以看到,在输入错误一次密码后,系统返回了账户被临时封锁,剩余时间8秒,然后我输入了正确的密码,登录还是失败了 。root账户在登录失败3次后也被锁定了 。
远程登录:
但是当我们使用SSH远程登录的时候,却没有收到登录失败的锁定提示,说明上面的配置对于远程登录是无效的 。
我们将相同的配置再添加到/etc/pam.d/-auth中:
[root@Oracle ~]# cat /etc/pam.d/password-auth#%PAM-1.0# This file is auto-generated.# User changes will be destroyed the next time authconfig is run.authrequiredpam_tally2.so deny=3 lock_time=20 unlock_time=60 even_deny_root root_unlock_time=60authrequiredpam_env.soauthrequiredpam_faildelay.so delay=2000000authsufficientpam_unix.so nullok try_first_passauthrequisitepam_succeed_if.so uid >= 1000 quiet_successauthrequiredpam_deny.soaccountrequiredpam_unix.soaccountsufficientpam_localuser.soaccountsufficientpam_succeed_if.so uid < 1000 quietaccountrequiredpam_permit.sopasswordrequisitepam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=passwordsufficientpam_unix.so sha512 shadow nullok try_first_pass use_authtokpasswordrequiredpam_deny.sosessionoptionalpam_keyinit.so revokesessionrequiredpam_limits.so-sessionoptionalpam_systemd.sosession[success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uidsessionrequiredpam_unix.so
此时我们再使用SSH进行远程登录测试:
我们使用命令查看一下账户的锁定状态,发现账户已经被锁定了:
[root@Oracle ~]# pam_tally2 --user shenjiLoginFailures Latest failureFromshenji803/02/22 08:39:09192.168.0.102[root@Oracle ~]#dateWed Mar2 08:39:13 EST 2022