iptables:尝试阻止大多数 IP 地址的端口访问时失败(少数 IP 地址除外)

iptables:尝试阻止大多数 IP 地址的端口访问时失败(少数 IP 地址除外)

我在用Debian 8 linux

我试图阻止大多数 IP 地址对几个端口的输入访问,但一小部分选定的 IP 地址除外。我正在执行以下操作,但它似乎不起作用:

% sudo /sbin/iptables -v -A INPUT -p tcp -m set '!' --match-set allow-list src -m multiport --dports 110,143,993,995 -j DROP

每当尝试从不在 中的 IP 地址访问这些端口中的任何一个时allow-list,该尝试仍然会成功。

这些是前几行allow-list

% sudo /sbin/ipset list allow-list
Name: allow-list
Type: hash:net
Revision: 6
Header: family inet hashsize 16384 maxelem 262144
Size in memory: 687888
References: 2
Members:
125.8.0.0/13
160.94.0.0/15
104.37.68.0/22
205.233.22.0/23
[ ... more CIDR entries ... ]

这是当前的 iptables 配置:

% sudo /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  anywhere             anywhere             ! match-set allow-list src multiport dports pop3,imap2,imaps,pop3s

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

我做错了什么?

预先非常感谢您。

答案1

我现在意识到我做错了什么。以下修复对我有用:

% sudo /sbin/iptables -v -I INPUT -p tcp -m multiport --dports 110,143,993,995                                   -j DROP
% sudo /sbin/iptables -v -I INPUT -p tcp -m multiport --dports 110,143,993,995 -m set --match-set allow-list src -j ALLOW

换句话说,首先允许IP 可以allow-list通过端口列表访问,并且然后删除尝试通过该端口列表访问的所有其他 IP。

另外,我最初省略了-p tcp处理 TCP 端口时需要的选项。

更新: 原来是我-A INPUT上面用错了。我已将其更改为正确的-I INPUT

进一步更新:...并且对于-I,我必须更改规则:在这种情况下DROP需要之前定义。ALLOW

相关内容