我正在保护我的服务器(使用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
答案 0 :(得分:11)
OUTPUT
命令还应引用--dport
,而不是--sport
。您还希望允许NEW
传出数据包以启动与SMTP服务器的连接。
但是,一般情况下,由于OUTPUT
仅控制您自己系统生成的数据包,因此您可以将OUTPUT
策略设置为ACCEPT
,除非您需要阻止生成传出数据包。
还有两条评论:
1。 Jay D建议"允许所有内容,然后开始阻止特定流量"是不安全的。 从不以这种方式配置iptables
,因为您必须事先知道攻击者可能使用哪些端口并单独阻止它们。如果可以的话,总是使用白名单而不是黑名单。
2。来自战壕的提示:当您调试iptables
时,-I
nsert和{{1}通常会有所帮助在每个链的开头和结尾添加日志消息,然后清除计数器,并运行实验。 (在您的情况下,发出-A
命令。)然后检查计数器和日志,以了解数据包如何通过链迁移以及它们可能被丢弃的位置。