我正在我的 Ubuntu Web 服务器上配置 Fail2Ban 以防止它成为 DoS / DDoS 的受害者。我不想使用 Cloudflare,因为我必须路由我的 DNS 并使用他们的 SSl 证书。
目前,我在网上找到了一个脚本,它每秒检查超过 1 个 HTTPHEAD
请求,或者每秒检查超过 1 个请求xmlrpc.php
。我不认为这是足够的保护,因为这些不是人们可以用来执行 DDoS 攻击的唯一类型的请求。
我正在考虑限制给定 IP 在短窗口中可以发出的GET
/POST
请求的数量,但我不确定应该如何设置限制,因为加载大量 Javascript、CSS 或图像的大页面会产生GET
在很短的时间内收到很多请求。我应该查看限制GET
/POST
请求,还是应该查看其他内容?为什么?
仅通过检查每秒的请求率很难看出好人或坏人的区别。在做出最终决定之前,您需要在您的环境中运行脚本,以查看每 5 分钟(示例)来自单个 IP 地址的请求数对于您的网站来说是“正常的”。
一旦您计算出正常速率,应该可以使用您的脚本计算 GET 和/或 POST(取决于您的日志文件分析)。
虽然可以在日志文件中找到其他可疑活动进行过滤,例如扫描脚本或可执行文件等(“希望”在配置良好的 Web 服务器中导致错误的 GET/POST ;-))
我在自己的系统上使用了这个外部的 fail-2-ban-link 。
一个好的设置是在 1 秒内检查多个连接。我认为 1 秒内 100 个连接是非常可疑的,应该被阻止。
当您使用 Apache 时,我建议您同时使用 mod_evasive 和 fail2ban。
使用mod_evasive。
使用fail2ban。