几个星期以来,我一直受到懒猴的袭击(在一年中最糟糕的时期 [黑色星期五/网络星期一])。
这是一次高级 DDoS 攻击,我收到大量缓慢的 HTTP 请求,这些请求会在服务器日志中生成 408 错误代码(“-” 408 156 “-” “-”)。有数千个、可能数万个甚至数十万个不同的 IP。我只是不明白这是怎么可能的。我也不知道为什么我会成为攻击目标,我只有一个小网站。一周前,我以为我的主机提供商出了问题,因为突然间网站的连接变得非常慢,延迟时间为 5 秒,第二天是 8-10 秒,第三天是 15 秒;此时,我搜索了我的整个日志,发现了数十万行 408 错误代码。
我已经添加了 mod_antiloris,但它只拒绝创建 10/20+ 连接的相同 IP,而此处攻击中的 IP 最多只创建 3-4 个连接。
Mod_reqtimeout 已启用:RequestReadTimeout header=20-40,minrate=500 body=10,minrate=500(我有一个 SSL 证书)。它似乎什么也没做。
我已将 apache2.conf 超时时间从 300 设置为 60。我没有看到任何区别。
唯一能缓解攻击的方法是增加 mpm_prefork.conf 中的 MaxRequestWorkers 数量。然而,攻击只需要增加其容量即可;当然,这就是正在发生的事情:低 HTTP 请求的数量正在缓慢增加,试图再次达到我的服务器的极限。
我尝试禁用 KeepAlive:没有什么不同。
我尝试过 mod_qos,但它需要启用 mpm_worker(而不是 mpm_prefork)。据我所知,mpm_worker 会导致 php 不稳定。另外,我还没有尝试过 mod_security,它似乎更复杂。
我尝试将网站置于 Cloudflare 之后,但攻击仍在继续。似乎缓慢的请求直接发送到服务器 IP。
网上有人说在 Apache 前面使用 Nginx 反向代理可以吗?
答案1
我尝试将网站置于 CloudFlare 之后,但攻击仍在继续。似乎缓慢的请求直接发送到服务器 IP 地址。
推荐的解决方案是不允许直接访问您的网络服务器,并且只接受通过 CloudFlare CDN 发送的流量。
https://developers.cloudflare.com/fundamentals/setup/allow-cloudflare-ip-addresses/
基本上这意味着:配置基于主机的防火墙、实际防火墙、安全组甚至只是您的 Web 服务器,以禁止除属于 CloudFlare 的访问之外的所有访问。他们在此处发布其 IP 范围:https://www.cloudflare.com/ips/
答案2
在 Apache 前面使用 Nginx 作为反向代理可能会有所帮助,因为 Nginx 的架构通常更擅长处理这些类型的攻击。值得一试。您已经尝试过 mod_antiloris,但请考虑进一步优化其设置以适应较低的连接速率。调整配置以阻止连接较少的连接,如果攻击变得无法控制,请考虑更改为具有更好 DDoS 保护的托管服务提供商,,,