我正在使用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
我做错了什么?
非常感谢您提前。
我现在意识到我做错了什么。以下修复适用于我:
换句话说,首先允许IP
allow-list
通过端口列表访问,然后丢弃所有其他尝试通过该端口列表访问的IP。另外,我最初忽略了
-p tcp
处理 TCP 端口时需要的选项。更新:最初,我在
-A INPUT
上面错误地使用了。我已将其更改为正确的-I INPUT
.进一步更新:...和
-I
,我不得不更改规则:在这种情况下DROP
需要在之前定义。ALLOW