这里可能最重要的是,在缓解方面,如今区分 DoS 和 DDoS 攻击几乎没有用。不再有来自单个固定 IP 源的真实世界拒绝服务攻击。
唯一明显的例外是攻击者生成特制数据包以利用具有 DoS 潜力的漏洞(例如,数据包处理代码中某处的null指针取消引用;这是此类漏洞的示例)。但是阻止运行漏洞利用的源 IP 地址并不是缓解这种情况的好方法。修补易受攻击的系统是。
理论上,处理简单的 DoS 攻击比处理分布式攻击更容易。但是,由于这些太容易缓解,它们现在大多已灭绝,而且您所询问的工具 (Fail2Ban) 并不能帮助抵御已灭绝的攻击,它是在考虑实际应用程序的情况下编写的。
考虑到这一点,仅当同时满足两个条件时,阻止 IP 地址(使用 Fail2Ban 或手动)才有意义:
- 正在进行的 DDoS 攻击只影响服务器本身的性能(或它后面的任何东西,如 Web 应用程序后面的数据库服务器),而不影响它前面的网络传输;
- 可以通过某种方式验证所有参与攻击的源IP地址都没有被欺骗。例如,DDoS 攻击针对基于握手的网络服务(您可以在其中与客户端协商一些秘密并验证客户端是否确实收到了秘密),并成功通过基本握手。我可以举出另一个例子,但上面的描述几乎总结了最常见的情况。
对于典型的 HTTPS 服务器,您可以使用 IP 范围阻塞来对抗,例如TCP 连接泛洪、SSL/TLS 握手泛洪、POST 泛洪、Slowloris等(除了简单泛洪之外,很难对第 7 层攻击进行分类),这在大多数情况下都满足这两个要求。
请注意,虽然,例如,足够大的 POST 洪水实际上可能会影响服务器前面的网络传输,但 IP 阻塞仍然可以帮助您,因为它可以防止建立底层 TCP 连接,而恶意机器人不会随后能够向您的服务器发送大型 POST 正文。这有效地将剩余的恶意传入流量限制为在大多数情况下易于处理的低速率 SYN 泛洪。
此外,基于 HTTP 的洪水对您的网络传输造成的主要影响是由于您的服务器在响应中生成的出站流量(在今天的 HTTP 中可能是入站流量的 11-12 倍),并且阻塞了由于上述原因,HTTP 泛洪的 IP 源也消除了这种情况。
同时,IP 阻塞对于ICMP 泛洪、SYN 泛洪、UDP 泛洪等至少不满足要求 2 的攻击大多无用;以及针对在大多数情况下在入站流量方面非常强大以至于它们不满足要求#1 的放大攻击。
请注意,无法验证 SYN 洪水中的源 IP 地址这一事实并不一定意味着它是被欺骗的。但是,阻止可能被欺骗的 IP 地址范围可能会导致合法用户无法访问您的服务。事实上,攻击者的意图可能是诱使您开始自动(例如通过上述 Fail2Ban 工具)阻止基于数据包的洪水的源 IP 地址,而流量中只有少数来源,然后欺骗重要的IP 地址范围,例如您所在国家/地区最大的 ISP 的 IP 范围,甚至全球约 40 亿个地址的 IPv4 地址范围,以每秒 100 Mbit 的任意泛洪速率,都可以在大约一个小时内枚举——我实际上已经在我的生活中看到过几次。