我想我已经要求 iptables 丢弃端口 8091 的所有数据包,但 tcp 连接仍然成功。
$ iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$ iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables -A INPUT -i eth0 -j DROP
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
$ telnet localhost 8091
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
(That means the TCP connection is established, despite the iptables rule)
这是否意味着 iptables 处于非活动状态?我是否必须“应用”规则,或者 iptables 在 Debian 上默认处于停用状态?
答案1
您正在接口 eth0 上设置 iptables 规则,但 telnet 到 localhost,它是接口 lo,因此被您的 iptables 规则忽略。
尝试 telnet 到 eth0 的 ip 地址,看看是否得到相同的结果
答案2
看起来你的配置应该可以工作。我自己复制了它,发现虽然我仍然可以从服务器本身访问端口,但从外部的访问被阻止了。
尝试从另一个位置进行 telnet。