如何通过iptables允许邮件?

时间:2012-05-20 04:15:06

标签: iptables

我正在保护我的服务器(使用iptables)以便只打开http和ssh端口,这很好,虽然我在某些应用程序中使用mail命令(服务器:CentOS 6.2)但它没有现在感谢iptables阻止一切。

我允许哪些端口访问?

邮件使用:echo "{{message}}" | mail -s "{{subject}}" me@mail.com

我已经尝试过标准邮件端口25,但我没有成功。 这是当前的设置:

iptables --flush

iptables -P INPUT DROP
iptables -P OUTPUT DROP

# incoming ssh
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 

# outgoing ssh 
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 

#HTTP
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT 

# mail (does not work)
iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

(编辑)答案:工作iptables规则:

iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

1 个答案:

答案 0 :(得分:11)

OUTPUT命令还应引用--dport,而不是--sport。您还希望允许NEW传出数据包以启动与SMTP服务器的连接。

但是,一般情况下,由于OUTPUT仅控制您自己系统生成的数据包,因此您可以将OUTPUT策略设置为ACCEPT,除非您需要阻止生成传出数据包。


还有两条评论:

1。 Jay D建议"允许所有内容,然后开始阻止特定流量"是不安全的。 从不以这种方式配置iptables,因为您必须事先知道攻击者可能使用哪些端口并单独阻止它们。如果可以的话,总是使用白名单而不是黑名单。

2。来自战壕的提示:当您调试iptables时,-I nsert和{{1}通常会有所帮助在每个链的开头和结尾添加日志消息,然后清除计数器,并运行实验。 (在您的情况下,发出-A命令。)然后检查计数器和日志,以了解数据包如何通过链迁移以及它们可能被丢弃的位置。