IPTables 不会立即使用 ipset 阻止 IP

IPTables do not block IP with ipset immediately

我有以下 IPTablesIPSet 作为阻止攻击 IP 的规则源,但是当我将攻击 IP 添加到 IPSet 时,在我的 nginx 访问日志中,我仍然看到攻击 IP 的连续访问。过了一会儿,大概3~5分钟,IP就被屏蔽了。

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(policy Accept) 可以解决问题?

请帮帮我,非常感谢。

顺便说一句。

我使用Nginx+Djano/uWSGI来部署我的应用程序,我使用shell脚本来分析nginx日志以将邪恶的ip设置为Blacklist ipset

你看过这个post吗:https://serverfault.com/questions/523021/why-is-iptables-not-blocking-an-ip-address

此 post 显示使用 -A INPUT -p tcp --dport 80 -j LOG --log-prefix "HTTP: "

删除此人的 ip

我个人 运行 没有深入研究这个问题,所以请告诉我这是否有帮助,祝你好运。

防火墙规则可能不会立即影响阻止流量的原因可能是由于 stateful 数据包检查。

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

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

所以,为了解决这个问题,您可以在 nginx 中禁用流水线和保持活动状态(这不是一个好主意,因为它会影响性能),或者 删除现有的白名单连接,例如,使用tcpdrop(8) on *BSD之类的东西——当然也必须有一个Linux等效工具。

但是,如果您只是遇到单个客户端执行过多请求的问题,从而导致后端超载,那么适当的做法可能是 rate-limit 基于 IP 地址的客户端,在标准 limit-req directive of nginx 的帮助下。 (但是请注意,您的一些客户可能在运营商级 NAT 之后,因此请注意您应用限制的程度,以确保误报不会成为问题。)