我在 DDoS 下。我能做些什么?已经解决了这种“规范问题”,但我想我在问一个可区分的变体,如下所述。但是,如果这篇文章不合适,请告知。
我受到的攻击来自各种不断变化的 ip;在最后几分钟从 66.135.63.82。所有攻击都是针对我在我自己编写的网站上使用的 cgi(它是 gpl'ed http://www.forkosh.com/nutshell.html但除了我之外的任何人都没有真正感兴趣(而且,显然,黑客))。攻击使用看起来很傻的 ?query_string 运行我的 cgi,并且我添加了一个 qvalidate() 函数,到目前为止,该函数似乎可以可靠地识别它们。对于无效查询,我现在 sleep(15) 然后向攻击者发出一个 ~25MB 的页面(只是为了表明我也可能很烦人:)。而且它们似乎确实在等待——而不是每秒多次攻击,它们现在以大约 15 秒的间隔分布。
但从长远来看,这种半修复似乎很愚蠢,最终无效。这浪费了我很多时间,每天检查几次,偶尔调整程序。所以我要问的是——我可以在我的 cgi 中编码什么来更好地处理这些攻击?可以说,攻击在我手中是实时发生的。我有来自 getenv("REMOTE_ADDR") 的 ip。因此,此时我几乎可以做任何我想做的事情(除了发出哔哔声,这是我真正想做的,但不知道如何编码:)。最好的事情是什么?谢谢。
编辑- 感谢您的回复,伙计们。我应该提到我的网站位于共享主机 dreamhost.com 上,因此我无法获得一些建议。我正在等待 isp 的回复。但由于目标是我自己的 cgi,我希望这给了我一个机会来做一些通常不可能的事情。
编辑——@HBruijn 为什么跑题?在这篇文章的最顶部,我提供了一个指向该站点的“规范问题”的链接,也是关于这个相同主题的。然后我继续解释为什么我认为我在问那个(显然是主题)问题的“可区分的变体”。此外,我最初发布了https://softwareengineering.stackexchange.com/questions/316052/how-to-best-deal-with-ddos-attack-against-your-my-site,他们告诉我在这里发布。去搞清楚:)
我会首先使用fail2ban 来查看Web 服务器日志,并且只要它看到一个狡猾的命中,防火墙就会在接下来的一个小时内使用IP 或类似的东西。但是,这依赖于对您的服务器具有 root 访问权限来操作防火墙。
Cloudflare 等第三方服务可以在流量到达您之前对其进行清理。他们的服务范围从免费到昂贵。查看选项,看看是否有任何有用的东西适合您的预算。
您可能还想与您的托管服务提供商交谈,如果您不这样做,他们可能对您的服务器具有 root 访问权限,并且可能有一系列其他 ddos 缓解选项,通过运行服务器和网络,我们通过订阅第三方ddos 服务如 cloudflare。
不要打扰你的代码。它比他们更伤害你(如果他们并行发出请求,你会更快地耗尽内存)。尽可能快地丢弃不良连接。