最近,我的网站遭受了大量第 7 层 DDoS 攻击。具体来说,索引页上出现了大量 HTTP GET 请求。(~20k r/s),我的服务器位于 OVH,因此它不会使管道过载,但是有没有办法使用 iptables 来检测发出过多请求的 IP,并断开其连接以避免使我的 Web 服务器过载?或者有没有更好的解决方案来过滤这些数据包,同时又不会对合法客户端产生负面影响。
我在 ubuntu 12.04 上使用 apache。
答案1
由于HTTP是TCP,而TCP需要双向通信,所以攻击的源地址实际上就是攻击源。
由于源是已知的并且没有被欺骗,您可以在 iptables 中进行速率限制,以大大减少每个源的请求量。
如果源太多,无法通过这种方式管理负载,则需要找到有关请求的某些内容,以便能够将它们归类为可丢弃,然后让您的 Web 服务器丢弃它们。想法:
- 所有请求都针对同一特定资源吗?
- 不规则的标头(它们没有请求压缩吗?发送 HTTP/1.0?当正常用户发送 cookie 时却不发送)
- 相同或者可预测的用户代理?