如何阻止TCP和UDP数据包(泛洪攻击)

时间:2013-11-22 15:22:17

标签: c# udp flooding

我有一个程序可以告诉您计算机是否在线。我这样做的方法是在服务器的帮助下,基本上将UDP数据包发送给客户端。客户端然后回应让服务器知道他们在线。如果客户端在接下来的5秒内没有响应,那么我将其标记为脱机。

无论如何我正在测试这项服务,并且从另一台计算机上我向服务器发送了数千个udp数据包。在发送了这么多软件包之后,服务器就没有按预期的那样工作了。

所以我知道是否有人向我发送了大量数据包。问题是如何阻止这些软件包,以便我的服务器仍能正常工作?


编辑可能的解决方案

我想我会按照你们的想法实施以下解决方案吗?

我现在需要2个或更多服务器。如果一个客户端发现服务器没有响应,那么它将与第二个服务器通信。因此攻击者还必须知道有第二台服务器。根据您希望的安全程度,您甚至可以拥有5台服务器。我想如果攻击者知道有5台服务器那么我就浪费了我的时间和金钱吗?洛尔

1 个答案:

答案 0 :(得分:2)

对此的一般解决方案是您购买额外的硬件,这些硬件位于计算机前面,用于查看传入的数据包。

额外硬件的作用取决于您要使用的解决方案,您可以让硬件将请求分发给运行相同软件的许多服务器(这会使您添加的硬件为Load Balancer)。您还可以让硬件检测到来自单个地址的异常大量的数据包,然后硬件可以开始从该地址丢弃数据包而不是将它们转发到服务器(这会使您添加的硬件{{3 }})

除了这两个选项之外还有更多选项,但所有解决方案都围绕减少服务器上的负载(通常将负载转移到另一个专用于承担负载的硬件)。你可能会升级你的软件以更好地适应数据包泛滥,但除非你当前的软件编写得非常糟糕,否则它不会给你带来太多的容量。