用于阻止并发连接的 IPTables 脚本

IPTables Script to block Concurrent Connections

我们正在使用 Suse Linux Enterprise Server 12。我们需要阻止每秒访问我们的 Web 服务器 50 次以上的并发 IP 地址,并阻止该 IP 地址 10 分钟。它还应该区分攻击者和真正的流量并永远阻止攻击者的 IP。我们目前已阻止使用 iptables ,以下是规则。

iptables -I INPUT -p tcp --dport 443 -i eth0 -m state --state NEW -m recent --set   
iptables -I INPUT -p tcp --dport 443 -i eth0 -m state --state NEW -m recent --update --seconds 1 --hitcount 50 -j DROP

它只会阻止超过 50 个连接的 IP 地址,但不会将 IP 地址列入黑名单。如果我们有一个脚本可以匹配上面提到的所有场景,请告诉我们。请帮助。

我对此进行了测试,效果非常好。如果检测到该行为,IP 将被保留 10 分钟并记录下来。您可以通过查看这些文件来验证它的操作。 /proc/net/xt_recent/NICE、/proc/net/xt_recent/NAUGHTY。如果你想永久列入黑名单,你需要构建一个脚本来解析错误 IP 的日志并将它们提交到一个文件中,该文件在启动时加载到 iptables 中。这个概念已经很清楚了,所以我不需要包括它。

#flush and clear
iptables -F -t nat
iptables -F 
iptables -X

#this is where naughty kids go
iptables -N GETCAUGHT

#you got added to the naughty list 
iptables -A GETCAUGHT -m recent --name NAUGHTY --set                   #everyone here is bad
iptables -A GETCAUGHT -j LOG --log-prefix "iwasbad: " --log-level 4    #and it goes on your permanent record

#if you are on the NAUGHTY list you get a lump of coal                                
iptables -A INPUT -i eth0 -m recent --name NAUGHTY --rcheck --seconds 600 -j DROP       #check everyone at the door

#though everyone starts out on the NICE list
iptables -A INPUT -i eth0 -p tcp --dport 443 -m conntrack --ctstate NEW -m recent --name NICE --set     #you seem nice

#but if you GETCAUGHT doing this you are naughty 
iptables -A INPUT -i eth0 -p tcp --dport 443 -m conntrack --ctstate NEW -m recent --name NICE --seconds 1 --hitcount 50 --update -j GETCAUGHT    #that wasn't nice