我目前习惯使用 fail2ban 之类的工具,通过禁止 IPv4 地址来阻止不必要的流量进入我的服务器:如果每个 IP 的不良日志条目太多,则禁止该 IP。
然而,当世界完成向 IPv6 的迁移时,禁止单个地址可能不再起作用,因为“正常”的僵尸网络计算机或攻击者拥有相当多的 IPv6 地址?
如果我想屏蔽 IPv6 用户,最好的方法是什么?使用特定的 IP 掩码还是其他?
当 IPv6 内部出现多个单独命中时,如何进行“升级启发式”然后禁止整个块?
对我来说,减轻威胁更为重要。如果一些可怜的正版用户属于同一个 IP 被屏蔽的区块,那么清除该网络屏蔽就是这些人和他们的 ISP 之间的问题。
答案1
当 /64 大小的子网用于攻击时,按 /128 禁止的做法并不适用。最终,表中会有 2^64 个条目,这可能会导致拒绝服务。
最终用户将始终获得 /56 的全球地址分配政策。企业将始终获得 /48 的全球地址
看:https://www.rfc-editor.org/rfc/rfc6177 /128 永远不应分配给服务器/用户,分配给另一个实体(服务器/vps 客户)的最低分配应为 /64。分配给站点的最低分配应为 /56。分配 /128 从根本上讲是不正确的,应视为配置错误。
因此,我建议按 /64 进行临时禁止,考虑到典型的最终用户只能访问 2^8 /64,它不应在禁止表中引入太多条目。
答案2
您的问题的任何答案都会涉及一些猜测。IPv6 部署仍然很少,我们根本还不知道威胁情景究竟会是什么样子。
大量的 IPv6 地址将会对您必须考虑的威胁情景带来多种变化。
首先,对于 IPv4 来说,攻击者完全有可能在所有 37 亿个可路由 IPv4 地址上扫描某些易受攻击服务的默认端口号。对于 IPv6,这种无针对性的攻击是不可行的。您仍然看到的那些攻击必须更有针对性。这是否意味着我们必须在处理攻击方面做出很大改变还有待观察。
根据日志消息禁止 IP 的主要目的是减少日志中的噪音,并在一定程度上减少系统负载。它不应作为防止漏洞的保护措施。知道弱点的攻击者会在禁止之前进入系统,因此为了防止这种情况,您必须修补漏洞 - 就像您一直必须做的那样。
禁止单个 IPv6 地址可能足以减少日志中的噪音。但这并不是必然的。攻击者可能会在每次连接时使用他们可用范围内的新 IP 地址,这并非不可能。如果攻击者的行为如此,禁止单个 IPv6 地址不仅无效,而且您甚至可能无意中将所有内存用于防火墙规则,从而对自己造成 DoS 攻击。
您无法知道每个攻击者可用的前缀长度。阻止太短的前缀会导致 DoS 攻击,因为合法用户也会被覆盖。阻止太长的前缀将无效。特别是密码暴力破解尝试可能会使用大量客户端 IPv6 地址。
为了有效阻止攻击者在每次请求时切换 IPv6 地址并为了降低内存使用率,您必须阻止范围,并且由于事先不知道前缀长度,您必须动态调整前缀长度。
现在已经有可能提出启发式方法。但它们的效果如何我们还不知道。
一种启发式方法是针对每个前缀长度定义一个阈值,即阻止该长度前缀所需的 IP 数量。如果较长的前缀不够用,则应仅在特定长度下应用阻止。换句话说,您需要在两个部分中分别阻止足够多的 IP,才能真正启动阻止。
例如,有人可能会决定,为了阻止 /48,组成 /48 的两个 /49 中必须各有 100 个被阻止的 IP。前缀越长,阻止所需的 IP 数量就越少,但在每种情况下,它们都必须分布在两个半部分。
答案3
您应该坚持禁止单个地址。
尚未定义将向最终用户提供多少个地址。一些 ISP 可能会提供整个子网,而其他 ISP 则只提供一个地址。