web-dev-qa-db-ja.com

SMTPとDNSが許可されていても、Sendmailはiptablesでは機能しません

Php mail()関数を使用するためだけにsendmailをUbuntu10.04にインストールしました。 iptablesが実行されていない限り、これは正常に機能します(これをテストするためにsendmail [email protected]を使用しています)。

SMTPとDNSを許可したと思います(iptablesルールをテストするために使用しているスクリプトは以下のとおりです。私のバージョンではホストネームサーバーの実際のIPです)が、役に立ちません!

iptables --flush

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Postgres
iptables -A INPUT -p tcp --dport 5432 -j ACCEPT

# Webmin
iptables -A INPUT -p tcp --dport 10000 -j ACCEPT

# Ping
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

# sendmail
iptables -A INPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

# DNS
iptables -A INPUT -p udp --sport 53 -s <nameserver1> -j ACCEPT
iptables -A INPUT -p udp --sport 53 -s <nameserver2> -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -s <nameserver1> -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -s <nameserver2> -j ACCEPT

iptables -A OUTPUT -p udp --dport 53 -d <nameserver1> -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -d <nameserver2> -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -d <nameserver1> -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -d <nameserver2> -j ACCEPT


iptables -A INPUT -j DROP

# Add loopback
iptables -I INPUT 1 -i lo -j ACCEPT
4
tom

現在あなたが持っている:

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

これにより:

  • sendmailへのパケット、
  • ポート25からのパケット。ただし、すでに確立されている接続のみ(したがって、外部からの接続のみ)。

送信メールの場合、外の世界に接続できるようにするには、sendmailが必要です。

したがって、次のようなものも必要になります。

iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

オープンリレーにならないように注意してください。

8
Pierre Carrier

メールを送信するためにリレー(スマートホスト)に接続し、受信メールを必要としないことを前提としています。そうでない場合は、やるべきことがもっとあります。自動化されたシステムでは、電子メールサービスが適切に構成されていない傾向があり、その結果、メールがドロップされたり、スパムバケットに送信されたりする可能性があります。

Conntrackを使用して、確立された接続を処理することをお勧めします。これにより、残りのルールの新しい接続についてのみ心配する必要があるため、残りのルールが簡素化されます。

iptable -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptable -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Pingエントリの前のルールは適切に見えます。

ルールは発信トラフィックをカバーする必要があります

iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

ICMPルールが不完全なようです

iptables -A INPUT -p icmp --icmp-type 3/4 -j ACCEPT 
iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT 
iptables -A OUTPUT -p icmp --icmp-type 3/4 -j ACCEPT 
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT 
iptables -A OUTPUT -p icmp --icmp-type 11 -j ACCEPT 
3
BillThor