如果有人恶意破解你的服务器,下面的操作可以起到一定的作用,连续登录失败锁定账户一段时间,让攻击者的成本增加,从而降低服务器被恶意破解的风险。
参考博客 https://blog.csdn.net/hjxloveqsx/article/details/129004832
https://www.cnblogs.com/dadonggg/p/7977099.html
一、备份文件
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak # 服务器端
cp /etc/pam.d/sshd /etc/pam.d/sshd.bak # ssh远程连接登录
二、检查是否有pam_tally2.so
find /usr/lib* -iname "pam_faillock.so" # centos8.2 只有这个
find /usr/lib* -iname "pam_tally2.so
三、参数解释
auth required pam_tally2.so onerr=fail deny=3 unlock_time=120 even_deny_root root_unlock_time=60
auth required pam_tally2.so onerr=fail deny=3 unlock_time=60 no_magic_root
onerr=fail #表示连续错误
deny=n #表示连续登录失败次数超过n次后拒绝访问
unlock_time=120 #表示连续登录失败后锁定的时间(秒数)为120秒
no_magic_root #表示连root用户也在限制范围内
even_deny_root #root用户失败登录次数超过deny=n次后拒绝访问
root_unlock_time=60 #与even_deny_root相对应的选项,如果配置该选项,则root用户在登录失败次数超出限制后被锁定指定时间为60秒
如果不想限制 root 帐户,可以把 even_deny_root root_unlock_time这两个参数去掉
四、连续登录失败处理(ssh远程连接登录)
多开几个ssh,防止配置文件错误,将自己关在服务器外面了
新建一个普通用户 lanren312
ssh登陆成功日志
1.编辑 /etc/pam.d/sshd
在首行#%PAM-1.0下增加
auth required pam_tally2.so onerr=fail deny=3 unlock_time=120 even_deny_root root_unlock_time=60
这是编辑完立即生效的,操作前多开几个ssh,防止配置文件错误,将自己关在服务器外面了。
2. 测试普通用户锁定,解锁
普通用户故意输错密码超过三次,第四次输入正确密码进不了系统,账号锁定了。
并且是以最后一次登录为锁定起始时间,所以你只能等120秒再登录。
如果到时间解锁后第一次输入密码错误,则账号再次锁定。
pam_tally2 #查看所有用户登录失败次数
pam_tally2 --user root #指定查看登录失败的用户次数
pam_tally2 -r -u lanren312 #解锁指定用户
pam_tally2 --reset #解锁所有用户
tail -f /var/log/secure #查看登录日志
3. 测试root用户锁定,解锁
root用户故意输错密码被锁定,锁定时间是60秒。
4.解锁所有用户
root用户才能操作,并且记得要多开几个ssh,否则root用户就只能等60秒后才能操作。
五、连续登录失败处理(服务器端)
1.编辑 /etc/pam.d/system-auth
在首行#%PAM-1.0下增加
auth required pam_tally2.so onerr=fail deny=3 unlock_time=120
服务器端建议去掉even_deny_root root_unlock_time这两个参数去掉。
root用户输入密码多次错误都不会被锁定,但只要输入正确就登录服务器了。
普通用户输入密码错误超过3次则会锁定120秒。
锁定、解锁和ssh远程连接登录一样。