it-swarm-ja.com

postfixサーバーをスパムするサーバーを禁止するfail2ban設定の例?

私は自宅に小さなメールサーバーを持っていて、非常に制限されたフィルタリングルールを持っています。 logwatchを使用すると、制限付きフィルタリングルールによって80〜90%の接続が拒否されていることがわかりました。ほとんどの拒否はrbl_clientから生じます。

サーバーにスパムを送信しているIPをフィルタリングする方法を示すfail2ban構成ファイルの例を必死に探しています。禁止が長期間(つまり1か月)続くことを望みます。

また、手動で設定されたファイアウォールルールを使用してブロックしたメールサーバーでSYNフラッドを試みました。 fail2banはこれらも検出できますか?

2
chmike

すべてのRBLスパマーがログを埋めるのにうんざりしているので、Postfixを設定してそれらを禁止しました。

やった後、たくさんあったので負荷が落ちました!

禁止リストをクリーンアップする何らかの方法を実装する必要があることに注意してください。

毎週fail2banを再起動する予定です。

これらのルールを確認してください: http://www.fail2ban.org/wiki/index.php/Postfix

それらを/etc/fail2ban/filter.d/postfix.confに追加します(これはDebianシステムにあります!)

これを読むのも良いでしょう(fail2banを検索してください): http://workaround.org/ispmail/squeeze/sysadmin-niceties (そこからのいくつかの抜粋)。

要するに:

  1. Jail.confセット:

    [postfix]
    enabled  = true
    
  2. Dovecotを使用している場合(上記のリンクから):/ etc/fail2ban/filter.d/dovecot-pop3imap.confを作成し、それに追加します。

    [Definition]
    failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \   (auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<Host>\S*),.*
    ignoreregex =
    
  3. Jail.confまたはjail.localにセクションを追加します。

    [dovecot-pop3imap]
    enabled = true
    port = pop3,pop3s,imap,imaps
    filter = dovecot-pop3imap
    logpath = /var/log/mail.log
    
  4. Fail2banを再起動し、postfixとcourierのチェーンが追加されている場合はiptables-nvLを確認します。注意:これはDebianベースのシステム用です。 RHなどのファイルパスを確認してください。

5
Anton Valqk

より良い方法は、Postfixを使用してブロックリストを使用してIPをフィルタリングすることです。

ブロックリストの使用を拒否するには、 http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions を参照してください。

本当に必要な場合は、f2b-postfix-rbl( postfix-rbl.conf )のようなFail2Banフィルターを使用して、ブロックリスト/ブラックリストに登録されたIPエントリのメールログをフィルター処理できます。次に、iptablesに新しいエントリを挿入し、指定された禁止時間の間ブロックされます。

前述のように、スクリプト/ボット/メーラーは最初の失敗の後に先に進み、別のIPから別の日に再試行するため、これはおそらくあまり効果がありません。 また、上記のようにMTAを使用してフィルタリングできるため、冗長です。

これは、ブラックリストに登録されたIPをブロックするために接尾辞の下に追加できるいくつかのブロックリストのサンプルです。

/etc/main.cf:

smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    reject_unlisted_recipient,
    reject_invalid_hostname,
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
    reject_unknown_sender_domain,
    reject_unauth_pipelining,
    check_client_access hash:/etc/postfix/blacklist,
#Some DNS BL's - high availability:
    reject_rbl_client zen.spamhaus.org,
    reject_rbl_client bl.spamcop.net,
    reject_rbl_client dul.dnsbl.sorbs.net,
#Some country-wide IP blocks:
    #reject_rbl_client cn.countries.nerd.dk,
    #reject_rbl_client tw.countries.nerd.dk,
    #reject_rbl_client lr.countries.nerd.dk,
    #reject_rbl_client ng.countries.nerd.dk,
    #reject_rbl_client ro.countries.nerd.dk,
    #reject_rbl_client ua.countries.nerd.dk,
    #reject_rbl_client kr.countries.nerd.dk,
    #finalize and throw at postgrey if passes above:
    #check_policy_service inet:[::1]:10023,
    permit

Fail2ban処理ブロックリストを主張する場合は、必ず/etc/failban/jail.localで有効にしてください。

[postfix-rbl]

enabled  = true
port     = smtp,465,submission
filter   = postfix-rbl
logpath  = /var/log/mail.log

新しいバージョンでrbl "mode"を使用するには、フィルター行を次のように置き換えます。

filter    = postfix[mode=rbl]

以前のバージョンでは、「postifx-rbl」フィルターを介してpostfixログの拒否を取得するために「5545.7.1」を検出するように変更する必要がありました。新しいバージョンのフィルターは、新しいrbl "mode"バージョンでこれをスキャンしているようです change

SYNフラッドに関して-- これを参照

3
bshea