我想了解如何完全阻止 HTTP 洪水。我在这里使用了以下代码:
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 --rcheck --seconds 30 --hitcount 50 --name HTTP -j DROP
iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW -m recent --set --name HTTPS
iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW -m recent --rcheck --seconds 30 --hitcount 50 --name HTTPS -j DROP
但是……我想让防火墙永久封锁 30 秒内发送 50 次点击的任何 IP。我不希望它在 30 秒后解除对 IP 的封锁。如果我在启用此脚本的情况下按住网站上的刷新按钮,我只会被封锁 30 秒。我希望它永久封锁任何攻击 IP 地址。
有人能解决这个问题吗?
答案1
你正在寻找一些软件,例如失败2ban。但是,您当前的设置存在一个问题:任何能够伪造 IP 流量的人(互联网的大部分都可以)都可以阻止任何 IP 地址访问您的服务器(包括您自己的 IP 地址!)。
最好调查一下为什么有人不断刷新你的网站会导致问题。也许你需要调整你的数据库查询?也许你需要一些缓存?
最好现在就正确地解决这个问题(通过优化您的网站),这样如果您的网站突然变得流行,您就可以更好地做好准备。