There were 3577 failed login attempts since the last successful login.

广告位

当您通过 shell 登录到您的 Linux(Ubuntu/Centos/Redhat/RHEL)时,您会收到这样的警告
There were xxx failed login attempts since the last successful login.
那么你的系统可能正在遭受密码暴力破解的风险。

问题描述

当您通过 shell 登录到您的 Linux(Ubuntu/Centos/Redhat/RHEL)时,您会收到一条警告,出现如下提示:

There were xxx failed login attempts since the last successful login.
# 其中 xxx 可能是数十次、数百次或数千次失败的登录尝试
There were xxx failed login attempts since the last successful login.

如果你的操作系统不显示上面的提醒,这可能是由于您的服务器提供商修改了 CentOS 的 MOTD 规则 以阻止显示该信息,也可能是因为它们默认使用基于密钥的身份验证(更多信息见下文),或者可能是因为它使用不同的 Linux 发行版,根本不显示此信息。

对于任何接入到互联网的操作系统来说,这是相当正常的现象,互联网上有数十万个流氓机器人定期扫描并尝试访问服务器。如果您定期更新 SSHD 程序并且您只使用安全密码(例如:超过 20 个随机生成的字符),那么您不需要任何进一步的保护。但是,下面我们将介绍一些方法,您可以使用这些方法进一步防止未经授权的登录。

解决方案

有多种方法可以保护您的 Linux 系统免受未经授权的登录尝试,你可以进行以下的这些操作:

方法1:切换到使用 SSH 密钥,禁止通过密码登录。

方法2:将 SSHD 的默认端口 从 22更改为另一个端口,如 5522。虽然这比传统的安全加固方式有一定难度,但它可以再一定程度上抵御一些简单的密码暴力破解脚本。但是高级的攻击方式会扫描系统所有开放端口,并很方便地找到修改后的 SSHD 端口。

方法3:手动禁用登陆失败的IP地址

查看登陆失败的IP地址
[root@johnhao ~]# grep "Failed password for invalid user" /var/log/secure | awk '{print $13}' | sort | uniq -c | sort -nr
  14861 167.71.52.192
   4119 221.4.210.112
   4119 220.174.25.172
   3916 110.185.107.27
   2760 182.150.48.140
   2745 183.134.217.152
   1921 223.99.195.182
    976 104.248.255.6
    387 46.101.200.235
     40 186.4.161.148
     30 159.89.14.76

通过下面的命令将这些登陆失败的 IP 加入服务器访问限制名单

[root@johnhao ~]# cat /var/log/secure |  grep "Failed password for invalid user" | awk '{print $13}' | sort | uniq -c | sort -n | tail -10 |awk '{print "sshd:"$2":deny"}' >> /etc/hosts.allow

[root@johnhao ~]# tail -20 /etc/hosts.allow
#
# hosts.allow   This file contains access rules which are used to
#               allow or deny connections to network services that
#               either use the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#
sshd:186.4.161.148:deny
sshd:46.101.200.235:deny
sshd:104.248.255.6:deny
sshd:223.99.195.182:deny
sshd:183.134.217.152:deny
sshd:182.150.48.140:deny
sshd:110.185.107.27:deny
sshd:220.174.25.172:deny
sshd:221.4.210.112:deny
sshd:167.71.52.192:deny

方法4:安装 fail2ban 并启用对使用 SSH多次失败登录的自动检测,以便阻止重复尝试。如果在 CentOS 8 或 CentOS 7 上使用 firewalld,请参见下文。

在 CentOS 7/8 上使用 firewalld 安装和配置 fail2ban

注意事项:fail2ban内置在 Plesk/cPanel 中的,它会配置它使用 iptables 而不是 firewalld。如果使用 Plesk/cPanel,请改用本指南启用它

dnf install epel-release
dnf install fail2ban
echo '
[sshd] 
enabled = true
' > /etc/fail2ban/jail.local
systemctl restart fail2ban

要查看fail2ban状态,可以使用具有不同详细程度的各种选项:

systemctl status fail2ban
fail2ban-client status
fail2ban-client status sshd

如果IP被禁止,通过下面的方式取消禁止 IP:

fail2ban-client unban 192.168.56.1

关于作者: juanhao.z

为您推荐

广告位

Leave a Reply

Your email address will not be published. Required fields are marked *

1条评论