web-dev-qa-db-ja.com

iptablesを介したメールを許可するにはどうすればよいですか?

一部のアプリケーションでmailコマンド(サーバー:CentOS 6.2)を使用しているのに、httpポートとsshポートのみが開いているように、サーバーを(iptablesで)保護しています。 iptablesがすべてをブロックしているおかげです。

どのポートへのアクセスを許可しますか?

メールの使用法:echo "{{message}}" | mail -s "{{subject}}" [email protected]

標準のメールポート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
12
Andrew

OUTPUTコマンドは、--dportではなく--sportも参照する必要があります。 SMTPサーバーへの接続を開始するために、NEW送信パケットを許可することもできます。

ただし、一般に、OUTPUTは独自のシステムが生成するパケットのみを制御するため、を防ぐ必要がない限り、OUTPUTポリシーをACCEPTに設定できます。生成発信パケットの。


さらに2つのコメント:

1。「すべてを許可してから特定のトラフィックのブロックを開始する」というJayDの提案は安全ではありません。 Neveriptablesをこのように構成します。これは、攻撃者が使用する可能性のあるポートを事前に把握し、それらをすべて個別にブロックする必要があるためです。 常に可能であれば、ブラックリストの代わりにホワイトリストを使用してください。

2。塹壕からのヒント:iptablesをデバッグするときは、ログメッセージの最初と最後に-Insertと-Appendを付けると役立つことがよくあります。各チェーン、次にカウンターをクリアし、実験を実行します。 (この場合、mailコマンドを発行します。)次に、カウンタとログをチェックして、パケットがチェーンを介してどのように移行され、どこでドロップされたかを理解します。

11
Adam Liss