Postfixの基本設定を少し追加したらメールサーバへの不正アクセスチャレンジが激減しました。まさに灯台もと暗しで今更ながらですが情報を念のため共有します。
1.検知
きっかけは、こちらの投稿で追加したPostFixのログとさらにこちらでLogwatchのログに出力するようにしたfail2Banの情報。日々届くメールでPostfixの不正アクセス状況をチェックしていたのですがいつもなぜだかFail2banが検知するより短時間に不正アクセスが続いていました。fail2banではこんなログがでていました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
2017-03-12 00:09:18,934 fail2ban.filter [12340]: INFO [postfix-sasl] Found 27.38.29.211 2017-03-12 00:09:20,736 fail2ban.filter [12340]: INFO [postfix-sasl] Found 27.38.29.211 2017-03-12 00:09:23,988 fail2ban.filter [12340]: INFO [postfix-sasl] Found 27.38.29.211 2017-03-12 00:09:24,002 fail2ban.filter [12340]: INFO [postfix-sasl] Found 27.38.29.211 2017-03-12 00:09:24,645 fail2ban.actions [12340]: NOTICE [postfix-sasl] Ban 27.38.29.211 2017-03-12 00:09:24,736 fail2ban.filter [12340]: INFO [postfix-sasl] Found 27.38.29.211 2017-03-12 00:09:24,914 fail2ban.filter [12340]: INFO [postfix-sasl] Found 27.38.29.211 2017-03-12 00:09:26,683 fail2ban.filter [12340]: INFO [postfix-sasl] Found 27.38.29.211 2017-03-12 00:09:26,745 fail2ban.filter [12340]: INFO [postfix-sasl] Found 27.38.29.211 2017-03-12 00:09:26,870 fail2ban.actions [12340]: NOTICE [postfix-sasl] 27.38.29.211 already banned 2017-03-12 00:09:27,090 fail2ban.filter [12340]: INFO [postfix-sasl] Found 27.38.29.211 2017-03-12 00:09:27,916 fail2ban.filter [12340]: INFO [postfix-sasl] Found 27.38.29.211 2017-03-12 00:09:27,951 fail2ban.filter [12340]: INFO [postfix-sasl] Found 27.38.29.211 2017-03-12 00:09:29,522 fail2ban.filter [12340]: INFO [postfix-sasl] Found 27.38.29.211 2017-03-12 00:09:29,874 fail2ban.actions [12340]: NOTICE [postfix-sasl] 27.38.29.211 already banned |
1秒間に4回も不正アクセスができているようでFail2ban でBanしていますがアクセス自体はBanする前にできているようですがalready bannedのエラーが出ています。エラーが続いたらブロックできないかとちょっと調査してみました。
2.エラーリミット設定
調査したところ「postfix スパムに踏み台にされて防いだ後2」の記事がまさに求めていた情報でした。これを参考に設定してみます。Postfixの設定ファイル「/etc/postfix/main.cf」に設定を追加します。
元々追加していた設定がこれです。
1 2 3 |
smtpd_soft_error_limit = 3 smtpd_hard_error_limit = 10 smtpd_error_sleep_time = 60s |
意味はsmtpd_soft_error_limitの設定回数(3)だけエラーを一定時間内(?)にだしたら60sアカウントを停止します。どうもこれでは動作していないようでした。
追加したのが次の設定。
1 2 3 |
smtpd_client_connection_rate_limit = 3 smtpd_client_connection_count_limit = 10 anvil_rate_time_unit = 60s |
意味はsmtpd_client_connection_rate_limit の数だけ一定時間内(anvil_rate_time_unit=60s)に接続して来たら接続MAXでブロックするです。このanvil_rate_time_unitの設定が観測する一定時間内のことでした。これがなかったので3回のエラーでアカウント停止していませんでした。やってしまいました。
2017/3/17 smtpd_client_connection_count_limit = 10を追加しました。1サーバあたりの同時接続数を10に制限します。
設定が終わったら、Postfixをリロードして設定を反映させます。
1 |
# systemctl reload postfix |
3.効果
その後、Logwatchのログにはalready bannedのエラーは出てきません。不正アクセスも単発しかなくなりました。こんなのです。
1 2 |
RCPT 454 4.7.1 <uakh.fpxe@msa.hinet.net>: Relay access denied; from=<z2007tw@yahoo.com.tw> to=<uakh.fpxe@msa.hinet.net> proto=SMTP helo=<153.126.184.38> (total: 1) |
基本の設定をきちんと行うことは大切ですね。今後もまずは基本機能で出来る設定を忘れずに実施しようと思います。
4.続編
その後、状況観察を続けたところsmtpポートに対するDDOS攻撃では対処できませんでした。こちらの記事で更なる追加対策を公開しています。