请不要回复“这是不可能的”,因为这是浪费时间。我正在开发云设备,我有充分的理由保护这一层免受 DDoS 攻击,而且很少有公司这样做,所以请不要告诉我我没有这个理由,因为许多公司都希望购买此解决方案,而且我认为使用普通 Linux 实现它没有问题
由于缺乏 CPU 和 RAM 等资源,我的 Linux 内核在 10,000 个连接时崩溃并出现 oops。我想知道如何安全地限制它,以便当有人尝试从各个主机打开 100,000 个连接时,它不会在 netfilter 连接跟踪表或其他地方创建 tcp/ip 连接?
网卡为 1GBps,缓冲区已满,因此可以处理大量连接,但我希望同时只处理 5,000 个连接,其余连接将被丢弃,除非有空闲的连接槽。在内核级别,这样不会污染 netfilter 或任何东西,并且会尽快丢弃。有以下因素:
- HAProxy 连接数限制为 5,000
- Linux 在打开 10,000 个连接时崩溃
- 我想承受每分钟 100,000 个开放连接,所以也许 netfilter 可以处理,但没有 HAProxy。
- 现有连接继续运行
这是为了让机器在抵御 DDoS 攻击时不会出错,并且一旦攻击发生,服务就能自动恢复,继续以低速率正常运行。
这是关于服务器实例的物理层,而不是交换机。假设交换机向我传递了我能处理的这么多流量,上游提供商并不总是能够调整或保护这一点。
答案1
我不同意你无能为力的说法。你可以做很多事情,而且根据攻击的规模和你拥有的硬件规模,你有很大机会保卫自己。
对于 SYN 洪水,可以谷歌搜索一下。你可能需要全新的 Linux 内核,因为最近有很多改进。选择 3.6 并启用 syn cookies。你还可以调整其他几个可调参数。一定要先阅读它,因为随机调整东西从来都不是一个好主意,而且会导致问题。
如果是 HTTP 洪水(如今很常见),您可能需要考虑使用 Varnish。您可能能够通过某种模式识别攻击请求并在 vcl_recv 中将其终止。您可以部署防护模块来终止这些连接,因为提供错误页面是徒劳的。请注意:这不是快速修复,需要您付出大量努力。
祝你好运。
答案2
没有真正的方法可以减轻受到攻击的主机的 DDOS 攻击。
当流量到达您的主机时,它已经通过了您的本地网络堆栈并消耗了本地资源。无论多少黑客手段或手段都无法改变这一点。
您需要与上游提供商合作,首先阻止流量到达您的机器。如果他们不提供该服务,您可以从他们那里购买,或者您可以找到提供该服务的提供商。
答案3
您遭受了哪种 DDoS 攻击?如果是 Syn Flood,您可以启用 Syn Cookies。
答案4
我赞同对 DDoS 上游进行管理的要求,但作为中间措施,您可能需要在您自己的路由器或交换机上采用某种形式的连接监管或调整,这些路由器或交换机在相关服务器之前大约一跳。从崩溃中恢复的最佳方法是首先不要崩溃。路由器/防火墙/交换机实际上并没有终止数据包,并且(希望)设计为以更高的速率运行。