长期封禁ip

长期封禁ip

这个问题是关于 iptables 的,我想知道如何才能阻止这些 ip 1 小时而不是只阻止很短的时间.. 因为它们发出了太多的 sql 请求,我用它来阻止但它是不够的,因为无论如何都有 100k 个 ip 攻击,然后对 sql 服务器的请求太多了。

iptables -N SYN-LIMIT
iptables -A SYN-LIMIT -m hashlimit --hashlimit 8/second --hashlimit-mode srcip --hashlimit-name SYN-LIMIT -j RETURN
iptables -A SYN-LIMIT -j DROP
iptables -I INPUT -p tcp --dport 80 --syn -j SYN-LIMIT
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 6 -j REJECT --reject-with tcp-reset

我怎样才能做同样的事情但长时间阻止 IP?(不是手动的!)

答案1

如果您的内核支持(2.6+),您可以使用 SET 来存储长期禁止的 IP。

您需要在服务器上安装 ipset,并通过发出以下命令创建一个集合

ipset create http_abuse hash:ip timeout $TIMEOUT

其中 $TIMEOUT 是 IP 应保持禁止状态的秒数。

然后,用下面的方法替换你的 iptables 规则就可以了

iptables -N SYN-LIMIT
iptables -A SYN-LIMIT -m set --match-set http_abuse src -j DROP
iptables -A SYN-LIMIT -m hashlimit --hashlimit 8/second --hashlimit-mode srcip --hashlimit-name SYN-LIMIT -j RETURN
iptables -A SYN-LIMIT -j SET --add-set http_abuse src
iptables -A SYN-LIMIT -j DROP
iptables -I INPUT -p tcp --dport 80 --syn -j SYN-LIMIT
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 6 -j REJECT --reject-with tcp-reset

您可以在以下位置找到有关 IPset 的更多详细信息IPSet 网站

相关内容