使用 iptables 阻止端口 25(仅限出站)

使用 iptables 阻止端口 25(仅限出站)

我最近开始使用以下规则阻止 OpenVZ 7 节点上的端口 25:

iptables -I FORWARD -p tcp --dport 25 -j DROP

这工作正常,但似乎同时阻止入站和出站,但我只想阻止出站。这可能吗?

如果这有什么意义的话,我使用以下命令再次为特定 IP 地址打开端口 25:

iptables -I FORWARD 1 -d 192.168.0.1 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -I FORWARD 1 -s 192.168.0.1 -p tcp -m tcp --dport 25 -j ACCEPT

答案1

我删除了原来的答案,因为它没有帮助,因为我读得太快并且没有注意到我们正在处理容器化。以下注释可以忽略(除非您想了解如何记录 iptables 活动)。

考虑到容器中接口的名称,您可能会更幸运:

iptables -A FORWARD -o docker0 -p tcp --dport 25 -j DROP

docker0如果您的接口名称在哪里。如前所述,来自容器的流量通过 FORWARD 链(再次 - 容器化),因此 OUTPUT 和 INPUT 链在这里没有价值。

答案2

我很高兴地说,我已经完全正常工作了,感谢 Kahn,这是适合运行 OpenVZ 7 的其他人的解决方案:

运行以下命令:

iptables -A FORWARD -o br0 -p tcp --dport 25 -j DROP

这将删除 br0 上的出站端口 25(虚拟机继承的接口)

然后,如果需要打开特定 IP 地址,请运行:

iptables -I FORWARD 1 -s 192.168.0.1 -p tcp -m tcp --dport 25 -j ACCEPT

答案3

在 Ubuntu 22.04 容器 ( FROM ubuntu:jammy) 上,我必须使用以下命令

  • 添加--cap-add=NET_ADMINdocker run命令中。

  • sudo iptables-legacy -A OUTPUT -o eth0 -p tcp --dport 25 -j DROP

如果没有iptables-legacy,我得到的是unknown option "--dport" 没有-A OUTPUT它仍然允许出站端口

相关内容