在工作中为了防止恶意访问者暴力破解openssh口令。所我们需要设置登录系统失败锁定用户策略。
我的环境是Centos7
服务器1:192.168.239.142
服务器2:192.168.239.145
一、pam_tally2模块
编辑192.168.239.142的 /etc/pam.d/sshd 在第二行添加红框内容
# vi /etc/pam.d/sshd
#%PAM-1.0
auth required pam_tally2.so onerr=fail deny=3 unlock_time=300 even_deny_root root_unlock_time=300
失败3次,锁定300秒
- onerr=fail 表示定义了当出现错误时的缺省返回值;
- even_deny_root 表示也限制root用户;
- deny 表示设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
- unlock_time 表示设定普通用户锁定后,多少时间后解锁,单位是秒;
- root_unlock_time 表示设定root用户锁定后,多少时间后自动解锁否则手动,单位是秒;
接下来测试用192.168.239.142
root账号ssh连接192.168.239.145 root账号
由此可见 第三次及时输入正确的也不允许登录
接下来使用这个命令解锁就可以正常登录了
查看用户登录失败的次数
如果锁定的时间较长的话,需要手动解锁,清空计数
二、pam_faillock 模块
适用于CentOS 8、Redhat中,pam_faillock PAM模块允许系统管理员锁定在指定次数内登录尝试失败的用户账户。限制用户登录尝试的次数主要是作为一个安全措施,旨在防止可能针对获取用户的账户密码的暴力破解
通过 pam_faillock模块,将登录尝试失败的数据储存在 /var/run/faillock 目录下每位用户的独立文件中
配置
添加以下命令行到 /etc/pam.d/system-auth文件和/etc/pam.d/password-auth文件中的对应区段:
auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600
auth sufficient pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so authfail audit deny=3
account required pam_faillock.so
注意:
auth required pam_faillock.so preauth silent audit deny=3 必须在最前面。
适用于root在pam_faillock 条目里添加 even_deny_root 选项
查看每个用户的尝试失败次数
# faillock
解锁一个用户的账户
# faillock --user lt --reset
faillock有下面几个命令可供使用
#使用以下命令查看失败计数
faillock --user username
#重置失败计数
faillock --user username --reset
#设置保存失败记录的目录
faillock --dir /var/run/faillock
参考链接 :
Centos7密码登录失败锁定设置
https://www.linuxprobe.com/centos-sshd.html