当客户端连接到我的服务器时如何强制“昂贵的计算”?

信息安全 网络服务器 http 拒绝服务
2021-08-12 12:23:40

关于应对拒绝服务攻击的Secrets & Lies第 183 页:

一些研究人员提出了强制客户端执行昂贵计算以建立连接的防御措施。这个想法是,如果客户端必须花费计算时间来建立连接,那么它就不能用尽可能多的连接淹没目标。

强制客户端在连接前执行计算似乎是对抗DOS 的一个很好的方法,但是在实践中是否有一些这种方法的例子?

具体来说,如何使用这个想法来保护我的 HTTP 服务器免受 DOS 攻击?

1个回答

我认为这个想法基本上描述了工作量证明概念,因为它用于反垃圾邮件设置或更流行的比特币。

工作量证明用于使请求者/发送者执行一个小的计算来显示它的真实性,遵循垃圾邮件发送者(包括与邮件无关的垃圾邮件)将避免此类系统的想法,因为这会花费他们太多的 CPU 能力来发送他们的垃圾邮件。

我不知道“常规”http流量中的任何实现,但似乎它们肯定存在:

它们的实现:常见的 DoS 攻击基于 TCP 协议(​​HTTP 流量的基础)。攻击通过向服务器发送 SYN 请求而不回答服务器发回的 SYN-ACK 信号来滥用三向握手。正如 DoS 攻击的主要思想一样,服务器只能有这么多未完成的请求,并在某些时候停止将它们发送给 SYN 信号的合法发送者,因此出现离线。通过在 POW 的三向握手中添加一个额外的层,可以避免 TCP DoS,因为所需的额外计算会破坏预期的 DoS 请求流。由于只有合法请求才能到达服务器,HTTP 流量可以自由流动,并且由于 POW 所需的额外计算只需要 0,2-0,3 秒,因此用户不会经历真正的延迟。

此外,这个问题可能包含一些相关信息