Postfixのセキュリティ強化
はじめに
Redhat Enterprise LinuxやCentOSのデフォルトSMTPサーバであるPostfixのセキュリティ設定を調べたのでメモ
想定するPostfixの役割
- 外部からのSMTPを受け取りローカル保存
- 内部からのSMTPを受け取ってインターネット上に配送
設定
MTA情報の隠蔽
/etc/postfix/main.cf
# デフォルト値
smtpd_banner = $myhostname ESMTP $mail_name
# 特定のミドルウェアバージョンや種類を狙った攻撃を防ぐため、特定できない固定値を入れる
smtpd_banner = ESMTP MTA
内部ユーザの隠蔽
/etc/postfix/main.cf
# デフォルト値
disable_vrfy_command = no
# SMTPのEXPN,VRFYコマンド(ユーザの存在確認)コマンドを無効にし、内部ユーザの情報を隠蔽する
disable_vrfy_command = yes
HELO コマンドを必須にする
/etc/postfix/main.cf
# デフォルト値
smtpd_helo_required = no
# スクリプト化された迷惑メール等はSMTPのHELOコマンドを使用しないケースがあるため、それらのメールを拒否するために設定
smtpd_helo_required = yes
HELOコマンド受信時のホスト名による受信制限
/etc/postfix/main.cf
# デフォルト値
smtpd_helo_restrictions =
# 相手のホスト名が DNS に登録されていない、FQDNが解決できない、ホスト名の文法が不正の場合に拒否
smtpd_helo_restrictions = permit_mynetworks, reject_unknown_hostname, reject_non_fqdn_hostname, reject_invalid_hostname, permit
送信者ドメインによる受信制限
/etc/postfix/main.cf
# デフォルト値
smtpd_sender_restrictions =
# ドメインが解決できない、FQDNが解決できない場合に拒否
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain, reject_non_fqdn_sender
おわりに
Postfixのセキュリティ設定をまとめました。
まとめてみると、情報が外部に見えないようにするとか、必要最低限の操作しか許さないとか、どんなミドルウェアでもやるべきことは一緒なんだなーと思いました。