これからpostfixfail2banルールを変更するのが賢明でしょうか:
failregex = ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<Host>\]: 554 5\.7\.1 .*$
^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<Host>\]: 450 4\.7\.1 Client Host rejected: cannot find your hostname, (\[\S*\]); from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$
^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<Host>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$
^%(__prefix_line)sNOQUEUE: reject: EHLO from \S+\[<Host>\]: 504 5\.5\.2 <\S+>: Helo command rejected: need fully-qualified hostname;
^%(__prefix_line)sNOQUEUE: reject: VRFY from \S+\[<Host>\]: 550 5\.1\.1 .*$
^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<Host>\]: 450 4\.1\.8 <\S*>: Sender address rejected: Domain not found; from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$
^%(__prefix_line)simproper command pipelining after \S+ from [^[]*\[<Host>\]:?$
次の行を追加します。
^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<Host>\]: 550 5\.1\.1 .*$
私はこのような攻撃を防ごうとしているので:
Jan 27 09:42:02 Host1 postfix/smtpd[3416]: NOQUEUE: reject: RCPT from unknown[109.107.106.180]: 550 5.1.1 <[email protected]>: Recipient address rejected: User unkn
own in virtual alias table; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[109.107.106.180]>
Jan 27 09:42:03 Host1 postfix/smtpd[3416]: NOQUEUE: reject: RCPT from unknown[109.107.106.180]: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown
in virtual alias table; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[109.107.106.180]>
Jan 27 09:55:32 Host1 postfix/smtpd[4914]: NOQUEUE: reject: RCPT from unknown[109.107.106.180]: 550 5.1.1 <[email protected]>: Recipient address rejected: User unk
nown in virtual alias table; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[109.107.106.180]>
Jan 27 09:55:32 Host1 postfix/smtpd[4914]: NOQUEUE: reject: RCPT from unknown[109.107.106.180]: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown
in virtual alias table; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[109.107.106.180]>
私の懸念は、誤って電子メールアドレスを見逃したユーザーに返送されるべき意図しない間違った電子メールをドロップすることです。
あなたの提案は何ですか?
この種のものと見つけるには常にバランスがあります。 1回限りの失敗またはまれな失敗は、おそらく送信者側の間違いです。短時間に複数の障害が発生した場合は、(一時的な)禁止を設定したいことを示している可能性があります。
これが、fail2banに感度を調整するために使用できるパラメーターがある理由です。たとえば、maxretryおよびfindtimeを設定できます。 maxretry設定は、これを超えてfindtime内に許容される失敗した試行の数であり、アドレスは禁止されます。
私はファイルに目を向け、何が起こっているのかを感じ取り、パラメーターを適切に設定しました。
ポストスクリーンを使用することをお勧めします。詳細については、こちらをご覧ください: http://www.postfix.org/POSTSCREEN_README.html
「Postfixpostscreen(8)サーバーはメールサーバーの過負荷に対する追加の保護を提供します。1つのpostscreen(8)プロセスが複数のインバウンドSMTP接続を処理し、どのクライアントがPostfix SMTPサーバープロセスと通信できるかを決定します。スパムボットを遠ざけることにより、postscreen( 8)正当なクライアントが利用できるSMTPサーバープロセスを増やし、サーバーの過負荷状態の開始を遅らせます。」
これにより、巧妙なチェックを行うことで、負荷全体がMTAから離れます。ボットは、あるべき姿が現れるまで、決して成功しません。
セットアップでpostscreenをインストールできない場合は、レート制限付きのポリシーデーモンを使用すると便利な場合があります。