阻止 IPv6 上的 SSH 暴力攻击

阻止 IPv6 上的 SSH 暴力攻击

我最近不得不使用一些具有 IPv6 连接的服务器,我惊讶地发现fail2ban 不支持 IPv6,denyhosts 也不支持。在谷歌上搜索我发现人们普遍推荐:

  • 通过 IPv6 停用 ssh 登录(对我来说不是解决方案)
  • 在服务器上仅使用私钥/公钥身份验证,而不使用密码身份验证(可行,但大量攻击可能会消耗服务器大量的处理能力,或者甚至可能通过 DDoS 攻击使其不可用)
  • 使用ip6tables阻止来自同一IP的连续攻击
  • 使用支持 IPv6 的 sshguard

根据我目前收集到的信息,IPv6 中的禁止地址与 IPv4 中的地址有些不同,因为 ISP 不会为用户提供单个地址 (/128),而是为用户提供整个子网(我目前有一个 /48)。因此,禁止单个 IPv6 地址将无法有效抵御攻击。我对 ip6tables 和 sshguard 阻止子网进行攻击检测的主题进行了多次搜索,但我没有找到任何信息。

有谁知道 sshguard 是否禁止 IPv6 攻击的子网?
有谁知道如何进行 ip6tables 配置以禁止 IPv6 攻击的子网?
或者有人知道比我已经发现的更好的减轻攻击的方法吗?

PS:我在系统上使用CentOS 7。

答案1

为了攻击服务器,攻击者必须首先知道其 IP 地址。使用 IPv6,您将有如此多的地址可供选择,以至于通过扫描 IP 范围来找到正确的地址是不可行的。

这意味着您只需为接口分配两个不同的 IPv6 地址即可。您让站点的域名始终指向相同的 IP 地址,并且让 sshd 仅侦听新分配的 IP 地址。

更改后,知道您站点的域名和 IP 地址将不会让攻击者能够访问您的 sshd。

使用 ssh 连接时,您当然需要使用辅助主机名。该主机名的熵可能比 IPv6 地址大得多。如果您使用 63 个字母数字字符,那么有人猜测 ssh 的主机名是不可思议的。

如果有人发现 sshd 使用的 IPv6 地址,您只需将 sshd 移动到新的 IPv6 地址并更新 AAAA 记录即可。然后他们必须从头开始。

如果您担心合法的 ssh 用户可能会泄露主机名和/或 IP 地址,那么您可以为每个用户创建一个不同的主机名以使用 ssh 进行访问。最初,我会将所有这些 CNAME 命名为一个主机名,这样就只有一个 AAAA 记录需要更新。

答案2

好消息是失败2禁止最近发布了对 IPv6 的支持。

对于 Debian IPv6 服务器,我建议遵循本教程

对于 CentOS IPv6 服务器,我建议下载它这里然后执行以下命令并相应地替换版本号:

tar xvfj fail2ban-0.11.0.tar.bz2
cd fail2ban-0.11.0
python setup.py install

确保 sshd 的监狱已启用/etc/fail2ban/jail.local, 例如:

[sshd]
enabled=1

相关内容