在工作中为了防止恶意访问者暴力破解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秒

CENTOS8SSH连续失败3次锁定源IP centos锁定用户_ubuntu

  • 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账号

CENTOS8SSH连续失败3次锁定源IP centos锁定用户_ubuntu_02


由此可见 第三次及时输入正确的也不允许登录

接下来使用这个命令解锁就可以正常登录了

CENTOS8SSH连续失败3次锁定源IP centos锁定用户_centos_03


查看用户登录失败的次数

CENTOS8SSH连续失败3次锁定源IP centos锁定用户_暴力破解_04


如果锁定的时间较长的话,需要手动解锁,清空计数

CENTOS8SSH连续失败3次锁定源IP centos锁定用户_centos_05

二、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