12

我正在保护我的服务器(使用 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
4

1 回答 1

11

OUTPUT命令也应该参考,而--dport不是--sport。您还需要允许NEW传出数据包以启动与 SMTP 服务器的连接。

但是,一般来说,由于OUTPUT只控制您自己的系统生成的那些数据包,您可以将OUTPUT策略设置为,ACCEPT除非您需要阻止生成传出数据包。


还有两条评论:

1. Jay D 的建议“允许一切,然后开始阻止特定流量”是不安全的。 切勿以这种方式进行配置iptables,因为您必须事先知道攻击者可能使用哪些端口并单独阻止它们。如果可以,请始终使用白名单而不是黑名单。

2. A hint from the trenches: when you're debugging iptables, it's often helpful to -Insert and -Append log messages at the beginning and end of each chain, then clear the counters, and run an experiment. (In your case, issue the mail command.) Then check the counters and logs to understand how the packet(s) migrated through the chains and where they may have been dropped.

于 2012-05-20T04:25:19.237 回答