我有一台运行 CentOS 5.5 并充当 OpenVZ 主机的服务器。其中一个容器一直在发送垃圾邮件,我需要阻止它连接到出站端口 25 的能力。我查看了http://wiki.openvz.org/Setting_up_an_iptables_firewall但是此设置是为了防止传入流量,并且我还没有找到可以阻止特定 IP 地址连接到出站端口的有效 IPTABLES 规则。
我试过了:
iptables -I OUTPUT --source [CONTAINER_IP] --protocol tcp --destination-port 25 -j DROP
但似乎并没有真正阻止它。任何想法都将不胜感激。
答案1
OUTPUT 表用于发送来自主机的流量。对于虚拟化,我不确定流量是否使用 OUTPUT 链,或者是否从虚拟设备路由通过主机,则可能会改用 FORWARD 链。请尝试在规则中将 OUTPUT 替换为 FORWARD。
答案2
Kyle Smith 的回答是正确的,但需要注意的是:此规则必须放在任何其他 FORWARD 规则之前:
iptables -L
链转发(策略接受)
目标 保护 优化 源 目标
DROP tcp -- [CONTAINER_IP] 任意位置 tcp dpt:smtp
RH-Firewall-1-INPUT 全部 -- 任何地方 任何地方
/etc/sysconfig/iptables
:输入接受 [0:0]
:转发接受 [0:0]
:输出接受 [0:0]
:RH-防火墙-1-输入-[0:0]
/* 阻止容器的传出 25 端口 */
-A FORWARD -p tcp --目标端口 25 -s [CONTAINER_IP] -j DROP
/* 主要配置 */
-A 输入-j RH-防火墙-1-输入
-A 转发 -j RH-防火墙-1-输入