在处理对运行 node.js 等非阻塞框架的应用程序的 DDoS 攻击时,是否有任何固有的优点或缺点?
据我了解,这些攻击通过大量请求使系统资源过载 - 导致它失败。非阻塞框架能够处理比阻塞请求更多的并发请求。这不应该意味着使用非阻塞框架本质上有助于减轻这些类型的攻击吗?
我意识到减轻这些攻击还涉及其他因素,但在所有其他条件相同的情况下,这是一个正确的假设吗?
在处理对运行 node.js 等非阻塞框架的应用程序的 DDoS 攻击时,是否有任何固有的优点或缺点?
据我了解,这些攻击通过大量请求使系统资源过载 - 导致它失败。非阻塞框架能够处理比阻塞请求更多的并发请求。这不应该意味着使用非阻塞框架本质上有助于减轻这些类型的攻击吗?
我意识到减轻这些攻击还涉及其他因素,但在所有其他条件相同的情况下,这是一个正确的假设吗?
与阻塞服务相比,非阻塞服务通常会为用户提供更多的系统资源。在攻击耗尽所有系统资源之前,非阻塞服务将表现得更好,因为合法用户仍然可以在攻击发生时满足请求。也就是说,在系统开始处理合法请求之前,真实用户不必等待攻击者的虚假请求完成。但考虑到对系统资源的更多暴露,DDoS 攻击可能对非阻塞服务更有效。
例如,限制因素是数据库访问。与阻塞服务相比,非阻塞服务发出更多数据库请求的能力更强。因此,虽然非阻塞服务可能仍然接受合法用户请求,但他们将更难完成数据库访问,因为攻击者的请求能够更好地保持数据库处于负载状态。
所以我会说是的——非阻塞更好——但前提是你可以确保下游资源的大小合适。
DDoS 攻击可以针对不同的服务,例如 ddns、web 服务器、数据库 ar 可以产生不同的效果,例如使服务器自身或 cpu 过载,或填满 ram,或尝试将许多文件写入磁盘以填满它(今天更罕见)或只是写更多可以写的数据。
DDoS 的一种非常常见的用途可以解释您的问题,其目标是创建比服务器可以处理的更多的并发连接。Web 服务器的典型默认值是 256(或在许多系统中为 512)并发尝试创建连接。在 linux 系统中,您可以在此处手动更改值,例如 /proc/sys/net/ipv4/tcp_max_syn_backlog。因此,通过建立更多的连接(发送带有同步标志的数据包),它会导致拒绝服务。所以你使用的框架一开始没有任何意义。
此外,非阻塞框架每秒发出比阻塞更多的请求,这在许多情况下有助于攻击者。在某些服务器和/或配置中,这将为每个请求创建一个实例,这将帮助更多的攻击者。
所以你的假设是错误的。
不幸的是,nodejs 对 DDoS 没有帮助,因为它可以像任何其他服务器一样简单地过载,而且事实是非阻塞并没有改变任何东西,实际上可以更快地杀死服务器,因为它会尝试处理更多请求而不排队它们。