安全性 – IPTables不会立即使用ipset阻止IP

前端之家收集整理的这篇文章主要介绍了安全性 – IPTables不会立即使用ipset阻止IP前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有以下IPTables和IPSet作为阻止攻击IP的规则源,但是当我向IPSet添加攻击IP时,在我的Nginx访问日志中,我仍然看到攻击IP的连续访问.过了一会儿,也许是3~5分钟,知识产权被封锁了.

iptables的

~$sudo iptables -nvL --line-numbers
Chain INPUT (policy ACCEPT 317K packets,230M bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     106K 6004K DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set Blacklist src

Chain FORWARD (policy ACCEPT 0 packets,0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set Blacklist src

Chain OUTPUT (policy ACCEPT 350K packets,58M bytes)
num   pkts bytes target     prot opt in     out     source               destination

IPSET

sudo ipset -L
Name: Blacklist
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536 timeout 60
Size in memory: 13280
References: 2
Members:
xxx.xxx.xxx.xxx(attacker ip) timeout 0

我不知道为什么规则没有立即生效,这让我疯狂就像攻击者在嘲笑我一样.

我使用-I选项将ipset添加到iptables规则,这应该将规则保持在第一个位置.那么也许Chain INPUT(政策接受)可以做到这一点?

请帮帮我,非常感谢.

BTW.

我使用Nginx Djano / uWSGI来部署我的应用程序,并使用shell脚本来分析Nginx日志以将邪恶的ip放入Blacklist ipset.

最佳答案
防火墙规则可能对阻塞流量没有立即影响的原因可能是由于对数据包的状态检查.

防火墙分析到达线路中的每个数据包可能效率低下,因此,出于性能原因,发生的情况是用户创建的规则通常仅适用于建立连接的初始数据包(称为TCP的SYN,SYN ACK,ACK) – 随后,所述连接自动列入白名单(更准确地说,它是原始规则已创建的列入白名单的状态),直到终止(FIN).

这里可能发生的是,由于Nginx擅长的流水线和保持连接,单个连接可用于发出和处理多个独立的HTTP请求.

因此,为了解决问题,您可以在Nginx中禁用流水线操作和保持连接(不是一个好主意,因为它会影响性能),或者删除现有的白名单连接,例如,使用类似于tcpdrop(8) on *BSD的连接 – 肯定也必须有一个Linux等效工具.

但是,如果您只是遇到单个客户端执行过多请求的问题,并因此使您的后端过载,那么适当的操作方法可能是根据IP地址对客户端进行速率限制,并提供帮助标准limit-req directive of nginx.(但是,请注意,您的一些客户可能是操作符级NAT的背后,请注意您应用限制的程度,以确保误报不会成为问题.)

猜你在找的Nginx相关文章