web-dev-qa-db-ja.com

fail2banはブルートフォーススパムボットを拒否します

これから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]>

私の懸念は、誤って電子メールアドレスを見逃したユーザーに返送されるべき意図しない間違った電子メールをドロップすることです。

あなたの提案は何ですか?

2

この種のものと見つけるには常にバランスがあります。 1回限りの失敗またはまれな失敗は、おそらく送信者側の間違いです。短時間に複数の障害が発生した場合は、(一時的な)禁止を設定したいことを示している可能性があります。

これが、fail2banに感度を調整するために使用できるパラメーターがある理由です。たとえば、maxretryおよびfindtimeを設定できます。 maxretry設定は、これを超えてfindtime内に許容される失敗した試行の数であり、アドレスは禁止されます。

私はファイルに目を向け、何が起こっているのかを感じ取り、パラメーターを適切に設定しました。

2
user9517

ポストスクリーンを使用することをお勧めします。詳細については、こちらをご覧ください: http://www.postfix.org/POSTSCREEN_README.html

「Postfixpostscreen(8)サーバーはメールサーバーの過負荷に対する追加の保護を提供します。1つのpostscreen(8)プロセスが複数のインバウンドSMTP接続を処理し、どのクライアントがPostfix SMTPサーバープロセスと通信できるかを決定します。スパムボットを遠ざけることにより、postscreen( 8)正当なクライアントが利用できるSMTPサーバープロセスを増やし、サーバーの過負荷状態の開始を遅らせます。」

これにより、巧妙なチェックを行うことで、負荷全体がMTAから離れます。ボットは、あるべき姿が現れるまで、決して成功しません。

セットアップでpostscreenをインストールできない場合は、レート制限付きのポリシーデーモンを使用すると便利な場合があります。

3
Marc Stürmer