运行 SSH 的服务器通常是暴力攻击的软目标。

黑客不断提出创新的软件工具和机器人来自动执行暴力攻击,这进一步增加了入侵的风险。

下面我们通过5个方法,来帮助大家进一步提升安全防范能力。

禁用 SSH 密码身份验证并启用 SSH 密钥身份验证

SSH 的默认身份验证方法是用户名/密码身份验证。但正如我们所看到的,密码身份验证容易受到暴力攻击。为了安全起见,建议实施基于密钥的 SSH 身份验证,其中通过公共和私有 SSH 密钥对进行身份验证。私钥保留在客户端的 PC 上,而公钥则复制到服务器。

SSH密钥认证过程中,服务器会检查客户端PC是否拥有私钥。如果检查成功,则创建 shell 会话或成功执行发送到远程服务器的命令。我们提供了有关如何配置基于 SSH 密钥的身份验证的综合指南。

即使在设置了基于密钥的身份验证后,您的服务器仍然容易受到暴力攻击,原因很简单,密码身份验证仍然处于活动状态。这需要禁用。

因此,请编辑默认的 SSH 配置文件。

$ sudo vim /etc/ssh/sshd_config

将 PasswordAuthentication 参数设置为no如图所示。

PasswordAuthentication no

Linux 中防止 SSH 暴力登录攻击的 5 个方法_SSH安全提升

禁用 SSH 密码身份验证

然后保存文件并重新加载 SSH 以应用更改。

$ sudo systemctl reload ssh

实施 Fail2ban 入侵防御工具

Fail2ban 是用 Python 编写的,是一个开源入侵防御框架,它扫描服务的日志文件以查找身份验证失败,并禁止在指定时间内重复失败密码身份验证检查的 IP。

Fail2ban 持续监控服务器日志文件的入侵尝试和其他恶意活动,在预定义数量的身份验证失败(在大多数情况下,3 次登录尝试失败)后,Fail2ban 会自动阻止远程主机访问服务器,并且主机被保存在“小黑屋(Jail)”里一定的时间。

这样一来,Fail2ban 就显著降低了错误密码身份验证尝试的发生率。

相关的安装和配置方法请见:Linux开源入侵防御IPS(Fail2ban)安装与配置

限制最大 SSH 身份验证尝试次数

保护服务器免受暴力攻击的另一种简单方法是限制 SSH 登录尝试次数。默认情况下,此值设置为 3,但如果有可能将其设置为更高的值,请将其设置为最多 3 次连接尝试。

例如,若要将最大连接尝试次数设置为 3,请将 MaxAuthTries 参数设置为 3,如下所示

MaxAuthTries = 3

再次保存更改并重新加载 SSH 服务。

$ sudo systemctl reload ssh

TCP  Wrappers 限制来自客户端的 SSH 访问

TCP 包装器是一个库,它提供基于主机的访问控制列表 (ACL),该列表根据远程客户端的 IP 地址限制远程客户端对 TCP 服务的访问

远程主机无法访问系统上的服务。TCP 包装器使用 /etc/hosts.allow 和 /etc/hosts.deny 配置文件(按此顺序)来确定是否允许远程客户端访问特定服务。

通常,这些文件被注释掉,并且允许所有主机通过 TCP 包装层。允许访问给定服务的规则位于 /etc/hosts.allow 文件中,优先于 /etc/hosts.deny 文件中的规则。

最佳做法建议阻止所有传入连接。因此,请打开 /etc/hosts.deny 文件。

$ sudo vim /etc/hosts.deny

添加以下行。

ALL: ALL

保存更改并退出文件。

然后访问 /etc/hosts.allow 文件。

$ sudo vim /etc/hosts.allow

配置可通过 SSH 连接到服务器的主机或域,如下所示。在此示例中,我们只允许两个远程主机连接到服务器(173.82.227.89 和 173.82.255.55),并拒绝其余主机。

sshd: 173.82.227.89 173.82.255.55
sshd: ALL: DENY

保存更改并退出配置文件。

要对其进行测试,请尝试从不在您允许访问的主机之列的主机连接到服务器。您应该收到如下所示的权限错误。

$ ssh root@173.82.235.7

kex_exchange_identification: read: Connection reset by peer
Connection reset by 173.82.235.7 port 22
lost connection

实施 SSH 双因素身份验证

双因素身份验证为密码身份验证提供了额外的安全层,从而使您的服务器更加安全,免受暴力攻击。

一个广泛使用的双因素身份验证解决方案是 Google Authenticator 应用程序

关于在 Linux 中安装 Google Authenticator的相关方法,大家可以自行检索,这里就不展开说了。