事件描述:
我注意到在我的 MRTG 面板中 httpd 进程已攀升至 800(我们的最大值),但所有其他参数均正常( CPU、内存、流量)
我立即运行了 nestat 命令 ( netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
) 来查看哪些 IP 生成的连接最多。
单个IP开启了500+个连接。
我们使用iptables禁止该ip,一切恢复正常。
我们使用一个 apache 模块来限制每个 IP 的并发请求数。它已经过测试,所以可以工作,但在这里它什么也没做。不知何故,限制被避免了。
请帮助我了解如何避免该限制。
答案1
这被称为 slowloris 攻击(至少最近如此)。基本上,它通过非常缓慢地向 Apache 发送标头来工作。根据您使用的模块的工作方式,它可能要等到收到整个请求标头后才能起作用,这可能需要很长时间。
针对这种攻击最可靠的解决方法(也是我建议的解决方法)是在 Apache 前面安装某种其他类型的 Web 服务器/代理。Nginx 和 HAProxy 是不错的选择。它们将完全击败这种类型的攻击,并且没有办法避开它们。