私はpostfixに基づいてメールサーバーを実行しています。このような接続障害がたくさんあります:
Transcript of session follows.
Out: 220 hostname.tld ESMTP Postfix
In: .
Out: 502 5.5.2 Error: command not recognized
In:
Out: 500 5.5.2 Error: bad syntax
Session aborted, reason: lost connection
これらの接続はさまざまなIPから送信されますが、ほとんどの場合、IPごとに数十分から数百回の試行が行われます。
これらの接続の原因は何ですか?これが「ドアをノックしている」ウイルス、ワーム、またはボットネットである場合、なぜホストごとにこれほど多くの回数が発生するのでしょうか。または、単一のドットを送信して何らかの機能テストを行い、サーバーが間違った方法で反応しますか?繰り返しますが、複数回の試行は意味がありません。そして、それはどのDoSスケールからも遠く離れています。
たぶんあなたの何人かはそこで何が起こっているのか知っていますか?
ドットは、SMTPプロトコルで電子メールのメッセージを終了するために使用されます。空の行(CR、LF)の後に、単一のドットが続き、CRとLFを含む改行が続きます。しかし、これは明らかにここでは当てはまりません。
これらのSMTPクライアントが単なるボットネットなのか、正当な送信者なのかを確認するには、IPのPTRを確認し、両方ともログに記録します。 PTRがプロバイダーからの一般的なものである場合、192-0-2-1.broadband.customers.example.com
のようなもの。次に、それを本当に無視し、fail2banを使用してそれらをブロックできます。
HELOはPTRと一致する必要がありますが、少なくともベストプラクティスです。しかし、それらが類似していない場合は、おそらくボットネットです。
他のケースでは、誰かがサーバーでスキャンを実行し、TLSプロトコルと暗号をプローブしている可能性があります。
このような要求の後にクライアントを禁止するには、fail2banを使用できます。これは、不正な要求が多すぎるとIPを一時的にブロックします。
filter.d/postfix-syntax.conf
[INCLUDES]
before = common.conf
[Definition]
failregex = reject: RCPT from (.*)\[<Host>\]: 502 5.5.2
reject: RCPT from (.*)\[<Host>\]: 500 5.5.2
ignoreregex =
そしてこれをあなたのjail.conf
に追加してください:
[postfix-syntax]
enabled = true
port = smtp,ssmtp,submission
filter = postfix-syntax
logpath = /var/log/mail.log
maxretry = 10
メールサーバーをインターネットに公開している場合は、ほとんどの接続がスパムボットやその他の不正な送信者からのものであると予想してください。
Fail2banのエラーの拒否を一致させることを検討します。正当な送信者が生成してエラーが発生することはめったになく、禁止された場合は後で再試行します。私はスパマーの疑いに対していくつかの厄介なことをします、そして正当な送信者が配達の遅れ以外の問題を抱えてから何年も経ちました。
送信者の正当性を確認するために、いくつかのテストを使用します。
zen.spamhaus.org
にリストされていません。 (動的IPの幅広い選択が含まれます。)PTR
があります。正当なメールにPTR
レコードがないことはめったになく、IPアドレスのrDNS
はほとんどの場合通過します。DKIMを使用して検証したいのですが、送信者の多くがDNSで公開鍵を適切に公開していません。
接続がまだ開いているときにこれらのテストを実行できない場合は、送信者がスプーフィングされていないことを確認できない限り、メッセージをバウンスしないでください。 (私はFBI、国連、銀行などからのすべてのお金の申し出に感謝します、しかしそれらはまだ配達されていません。)