我试图阻止所有 SMTP 出我的网络,而不是来自我的内部邮件服务器地址。
所以我只是想知道是否有任何我遗漏的东西,或者也许我可以改进我的邮件服务器当前的 iptable 规则。
iptables -I FORWARD -p tcp --dport 25 -j DROP
iptables -I FORWARD -p tcp --dport 25 -j LOG --log-prefix "FORWARD-SMTP-DROP: "
iptables -I FORWARD -p tcp -s <SMTP IP HERE> --dport 25 -j ACCEPT
iptables -I FORWARD -p tcp -d <SMTP IP HERE> --dport 25 -j ACCEPT
iptables -I OUTPUT -p tcp -m multiport --dport 25,465,587 -s ! <SMTP IP HERE> -j DROP
iptables -I OUTPUT -p tcp -m multiport --dport 25,465,587 -s ! <SMTP IP HERE> -j LOG --log-prefix "OUTPUT-SMTP-DROP: "
提前致谢 :)
答案1
如果您的 iptables 在 FORWARD 链中的标准策略是DROP
您可以删除第一行。此外(为了提高安全性),您可以将 smtp 流量的传入和传出接口添加到第 3 行和第 4 行。
iptables -I FORWARD -o <OUTGOING IF> -i <INGOING IF> -p tcp -s <SMTP IP HERE> --dport 25 -j ACCEPT
iptables -I FORWARD -o <OUTGOING IF> -i <INGOING IF> -p tcp -d <SMTP IP HERE> --dport 25 -j ACCEPT
只需添加防火墙的正确接口名称即可。原因很简单:IP 地址很容易被欺骗,但当然你不能那么容易地欺骗流量传入或传出的物理接口。除此之外,这些规则对我来说似乎还不错。尝试一下它是否按照您的预期工作,看看是否有任何意外行为。
伟大的达斯·拉维奇
答案2
如果您的 FORWARD 链的默认策略是 ACCEPT:
iptables -I FORWARD -p tcp --dport 25 -o [outgoing iface] -s ! [internal smtp ip] \
-m state --state NEW -j DROP
理想情况下,您的默认策略应设置为 DROP。这只需要您允许您想要的流量,您没有明确允许的所有流量都将被拒绝。
iptables -P FORWARD DROP # set FORWARD policy to DROP
iptables -I FORWARD -o [outgoing iface] -s [internal smtp ip] \
-m state --state NEW,ESTABLISHED -j ACCEPT
您应该始终在规则中包含 TCP 状态-m state --state
,如果您使用 FORWARD 表,则需要使用传入/传出接口选项-i
&定义规则的方向-o
。如果不定义传入或传出接口,这些规则将不明确并且不适用于某个方向。