目录
方法2:将 SSHD 的默认端口 从 22更改为另一个端口,如 5522
方法4:安装 fail2ban 并启用对使用 SSH多次失败登录的自动检测,以便阻止重复尝试
问题描述
当您通过 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。
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
fail2ban-client unban 192.168.56.1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。