如何以安全可控的方式执行适当的 DDoS 测试?

信息安全 攻击 ddos 拒绝服务 自动化测试 网络
2021-08-17 11:34:54

在不使整个基础架构崩溃的情况下执行 DDoS 测试的正确且安全的方法是什么?

有哪些不同类型的 DDoS 攻击以及执行此类测试应考虑哪些事项?

此外,您在哪里可以租用“僵尸网络”或类似(云)服务来执行实际测试?

4个回答

如果您以高数据包速率执行负载测试,最安全的方法是将其与网络的其余部分完全隔离。例如,您可以通过不带交换机的直接 10GBps 链路连接两台服务器,并使用基准测试服务器上的另一个 LAN 连接ssh到一台服务器运行测试。

另一种方法是在 AWS 等公共云中短时间预置服务器并在那里运行。您不会冒险影响您的基础架构。这样做没关系,云基础设施具有弹性,所以如果你用数据包淹没你的服务器,它只是在更多流量中的一小部分。当然,最好配置大型、快速的机器,甚至是专用的机器,这样您就可以真正看到您的软件需要多少负载。

关于软件,您可以使用泛型ab,即“Apache Bench”,它是 Apache 软件包的一部分。您可以测试 Web 服务器(来自 httpd 的静态文件)和应用程序服务器(来自 PHP、Ruby、Java 的动态文件)的弹性。您可能会为特定协议寻找其他专业的负载测试软件,其中可能包括 API 和视频流测试。其中有很多取决于您使用的协议(如 REST 等)。

然后继续进行通常的网络堆栈调整以及应用程序调整以获得更多性能(在客户端相同ulimit)。跟踪记录您的结果。此外,尝试使用 AWStats 或商业 Sawmill 等免费软件正确分析日志。避免使用 grep ;-) 分析将向您显示真实结果。另请注意,这对其他 Web 服务器ab有好处,但有时会出现问题。httpd在 AWS 中,您可以使用负载均衡器来显示实时统计信息。使用 Nagios、Zabbix 等记录网络统计信息,以查看网络堆栈的执行情况(例如,断开连接、数据包速率、CPU 使用率等)。

切勿雇用 DDoS 攻击,因为这些是犯罪团伙,您冒着很大的风险,不仅对您自己而且对您的 ISP、您的企业和您的客户都是合法的。

最好的计划是不要这样做。它很少有任何用途,因为 DDoS 会对您不利。这是给定的。现在创建大容量攻击非常容易,甚至不值得尝试比通常的负载测试做更多的事情。

实施 DDoS 缓解会为您提供更好的服务。

但是,如果您必须进行测试,请尝试以下操作:

  • 测试非生产副本
  • 在上线之前运行 OAT/UAT 时,在负载测试中构建一个乘数

从根本上说,分布式拒绝服务的工作方式是通过大量流量淹没公司带宽。实际的攻击可能在来源和风格上有所不同,但它们的目标相同。测试 DDoS 攻击毫无意义,因为无论您拥有多少带宽,它总是有可能被淹没。这完全取决于硬件的物理能力。

现在,这并不是说没有办法缓解 DDoS。您可以从能够检测 DDoS 的各种公司购买服务,并将您的流量发送到清理中心,只让合法流量通过。然而,这些服务仍然受到流入其设备的带宽量的限制。与其他拒绝服务攻击不同,没有针对 DDoS 的软件修复。

不要尝试为您的网络租用 DDoS 服务。这些服务充其量在法律上是有问题的,在最坏的情况下是有组织的犯罪。如果您坚持测试您的网络,其他答案提供了完全合理的方法来解决它。

除了问如何,你应该考虑问为什么

案例 1:您想检查您的服务将如何受到 DDoS 的影响——这可能是一个合理的做法。我会说这些是极端的负载测试。

在这种情况下,您需要测试整个服务的克隆,包括基础设施。您不知道 DMZ 中的服务前端和 LAN 中的后端数据库之间会发生什么故障。它可以是应用程序、途中的防火墙、数据库……正如您可以想象的那样,这不是一项简单的任务,结果可能有趣也可能不有趣。

您不需要D DoS - 多个 DoS 就足够了(您只对负载感兴趣)

案例 2:您想评估自己应对 DDoS 的能力——在这种情况下,测试毫无用处。

如果攻击是基于容量的(而不是像SLOWLORIS这样的攻击),那么当您检测到数据包传入时,为时已晚。有些公司会出售一些能神奇地解决问题但不起作用的蒸汽设备*

你需要在上游阻止这种攻击,所以

  • 您应该与您的 ISP 讨论上游流量黑洞(非常有用,也许可以避免您的应用程序进一步崩溃)
  • 或寻找一些可能有效或无效的基于云的解决方案 - 实际上它们是您唯一的解决方案(您的 ISP 也可能提供这样的解决方案)。

*这个想法是它们将足够快(= 比您的服务处理能力快得多)来决定数据包是否“足够好”或不被接受。除了正确决定的能力之外,当您的网络管道已满时,前提就会中断。