ipset 未应用于 iptables

ipset 未应用于 iptables

我正在尝试过滤掉一个不断探测我的 SMTP 服务器(CentOS6)的国家,但似乎无法让 ipset 在 iptables 中正常工作。

我从 ipdeny.com 下载了这些国家的 IP 地址,并将列表安装为文本文件。最初,我将所有黑名单 IP 地址放在一个很长的 iptables 链中,但这确实会对 CPU 产生不利影响 - 因此我想使用 ipset。

以下是该 IP 地址文件的摘录:

185.40.4.31
80.82.65.237
2.60.0.0/14

因此,现在我尝试在 ipset 集中使用该列表。我使用“ipset 列表”验证了 ipset 集是否已填充。

Name: blacklist
Type: hash:net
Header: family inet hashsize 2048 maxelem 65536
Size in memory: 108816
References: 1
Members:
....
185.40.4.31
185.40.152.0/22
...

有了这个 ipset,我将其添加到 iptables 中:

iptables -A INPUT -p tcp -m set --set blacklist src -j DROP

但是当我尝试使用 hping3 测试该装置时,软件包仍然可以通过。

hping3 --syn --destport 25 --count 3 -a 185.40.4.31 <server_ip>

当我使用长 iptables 链时,一切都按预期进行。

这是 iptables -L -n 的缩写输出(我删除了 6200 多个 ipdeny 条目中的大部分)

Chain INPUT (policy DROP)
target     prot opt source               destination
DROP       all  --  217.199.240.0/20     0.0.0.0/0
DROP       all  --  217.199.208.0/20     0.0.0.0/0
...
DROP       all  --  2.60.0.0/14          0.0.0.0/0
DROP       all  --  94.102.50.41         0.0.0.0/0
DROP       all  --  80.82.65.237         0.0.0.0/0
DROP       all  --  185.40.4.31          0.0.0.0/0
ACCEPT     all  --  192.168.2.0/24       0.0.0.0/0
ACCEPT     all  --  192.168.1.0/24       0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:!0x17/0x02 state NEW
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:27944 state NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21 state NEW
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 state NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443 state NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:25
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:587
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:993
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:995
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:143
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:27940
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:110
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 8
LOG        all  --  0.0.0.0/0            0.0.0.0/0           LOG flags 0 level 4
DROP       all  --  0.0.0.0/0            0.0.0.0/0
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           match-set blacklist src

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0

答案1

您的规则永远不会生效,因为您已将其添加到链的末尾。紧接在它之前的是一条丢弃所有流量的规则,因此您的规则永远不会生效。在 iptables 中,规则按顺序匹配;这与许多其他防火墙不同。

要解决此问题,请将规则移至链中较早的位置。如果您确实想将这些地址列入黑名单,则应将其尽可能地放在链中较早的位置,例如第一条规则。

相关内容