通过请求数量来阻止 DDoS 的 *简单* 方法

通过请求数量来阻止 DDoS 的 *简单* 方法

我有 3 台 Varnish 3.0.2 服务器,以 Apache 2 作为后端,通过 HAproxy 单独服务器进行负载平衡。

我需要找到一个非常简单的程序(我不太擅长系统管理员),如果某个 IP 在 Y 秒内发出了超过 X 个请求,该程序就会阻止来自该 IP 的请求。

这样的事能用简单的解决方案实现吗?现在我必须用 iptables 手动阻止所有请求。

答案1

你可以用 iptables 做这样的事情:

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW -m recent --set --name HTTP
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 80 --rttl --name HTTP -j DROP

第一个命令将连接(可能是合法的)标记为 HTTP,第二个命令在满足以下要求时阻止该连接:在过去 60 秒内尝试超过 80 次。

但是,所有使用被阻止 IP 地址的人都将被拒绝,而不仅仅是使用 NAT 的 IP 地址的可能的 DDOSer。而且您需要在一段时间后找到某种方法重新启用访问权限。

您也可以尝试 failtoban。

希望能帮助到你

相关内容