PSLブログ

ヨシナシゴトヲツヅリマス

スパム対策(1) smtpd_recipient_restrictionsを設定する

そんな偉そうなことではないが、自社サーバはさくらのVPSにVirtualminを入れて、マルチドメイン環境をつくって運用しているが、そこに自動的に入ったPostfixDovecotについては、入れたままの状態で使ってきたが、ここにきて、BACKSCATTERERTRUNCATEなどに頻繁にリストに載るようになってしまい、なにかしらの対策を迫られるようになった。

 さて、何をしたらよいか。まず、自社サーバは第三者中継はすべてできないようには設定済である。第三者中継のチェックはrbl.jpのチェッカーでできる。

Third Party Relay Check RBL.JP第三者中継チェック RBL.JP

果たして、「全てのテストが行われました, no relays accepted.」の結果が得られ、中継はされないことが確認できた。

私はBACKSCATTERというものをそもそも知らなかった。直訳すると、後方へのばらまき、という意味であるが、調べると、要するに、スパムを送りたいアドレスをエンベロープアドレスに偽装して、踏み台にしたいサーバに、宛先がないアドレスでメールを送りつけることで、リターンメールがばらまかれるという仕組みのようだ。結果として、自サーバから何者かが怪しいメールを大量に送りつけ、リターンメールが大量に発送される。

そこで、まずは、maillogを見るためのツールを探したところ、pflogsummというのがあった。

centossrv.com

yum -y install postfix-pflogsumm
cat > pflogsumm_report ※/root内に生成する
--------------------------------------------------------------
#!/bin/bash

MAILLOG=`mktemp`
for log in `ls /var/log/maillog-*|sort`
do
cat $log >> $MAILLOG
done
cat /var/log/maillog >> $MAILLOG
REPORT=`mktemp`
pflogsumm --problems_first --verbose_msg_detail --mailq -d yesterday $MAILLOG > $REPORT
cat $REPORT | mail -s "`head -1 $REPORT` in `uname -n`" 自分のメールアドレス
rm -f $MAILLOG $REPORT
--------------------------------------------------------------

chmod 700 pflogsumm_report
./pflogsumm_report

 メールが届いた!

怪しいサイトのホスト名やメールアドレスがオンパレードなので、gmailでは警告フラグが立っていたが、手動で外した。

とりあえず、毎日前日1日分の統計を取るため、cron.dailyに移動した。

mv pflogsumm_report /etc/cron.daily/

可能性としては、backscatter攻撃をされているか、このサーバに乗っているアカウントのどれかのパスワードが破られて、メールを送られてしまっているかだが、まずは、送信者を拒否できないか方法を探した。

www.slideshare.net

これによると、smtpd_recipient_restrictionsの設定例が載っていた。

 smtpd_recipient_restrictions =
    permit_mynetworks,
    reject_unauth_destination,
    reject_rbl_client bl.spamcop.net,
    reject_rbl_client sbl.spamhaus.org,
    reject_rbl_client all.rbl.jp,
    check_policy_service unix:private/policy-spf

まずはBLに乗っているホストからの接続全拒否がすぐできて効果がありそうだ。サーバに接続してきているいくつかのIPアドレスMXToolboxで調べたところ、いずれも複数のリストに載っていた。

91.195.103.**

    BACKSCATTERER
    BLOCKLIST.DE
    INTERSERVER
    UCEPROTECTL1
    UCEPROTECTL2

5.188.11.**

    BLOCKLIST.DE
    INTERSERVER
    UCEPROTECTL2

120.203.25.**

    BACKSCATTERER
    BARRACUDA
    BLOCKLIST.DE
    CBL
 INTERSERVER
    UCEPROTECTL1
 など20個以上

 それを踏まえて、以下のような設定とした。

/etc/postfix/main.cf

smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_unauth_destination,
        reject_rbl_client bl.spamcop.net,
        reject_rbl_client sbl.spamhaus.org,
        reject_rbl_client all.rbl.jp,
        reject_rbl_client list.dsbl.org,
        reject_rbl_client cn-kr.blackholes.us,
        reject_rbl_client brazil.blackholes.us,
        reject_rbl_client russia.blackholes.us,  *1
        reject_rbl_client bl.blocklist.de,
        reject_rbl_client rbl.interserver.net,
        reject_rbl_client dnsbl-1.uceprotect.net,
        reject_rbl_client dnsbl-2.uceprotect.net,
        reject_rbl_client dnsbl-3.uceprotect.net,
        reject_unknown_client,
        check_policy_service unix:private/policy-spf
smtpd_sender_restrictions =
        reject_unknown_sender_domain

Webminの画面で修正、その後Reload Configurationボタンを押してreload

上記の設定は、昨日の23時過ぎに行ったが、未明に届いた8/9分のレポートには、少なくない接続がブロックされていた。今日は24時間ブロックする設定で運用することになるので、明日どのくらいブロックされるかあらためて確認したい。

maillogを見ていて、以前に設置したシステムのリターンメールをプログラムで受け取る処理のプログラムがpermission deniedになっているのをみつけた。途中のディレクトリのパーミッションが落ちているのが原因だった。

もう1点、cn-kr.blackholes.usを使ってブロックされたメールの応答メッセージに「THIS RBL HAS LONG BEEN DEPRICATED---DELETE IT FROM YOUR CONFIG」とあった。*.blackholes.usは以下のサイトに例として乗っていたのをそのまま使ったのだが、古いのかもしれない古いので使ってはいけない

Postfixのセキュリティ対策 ─暗号化通信とメールの不正中継の対策 

当面はpflogsummのログを確認していくこつになりそうだ。

それから、postfixdovecot、vsftpdなどに対して、fail2banの導入を検討したい。

*1:2017/8/15追記
*.blackholes.usのブラックリストを使用してブロックしたメールは、maillog上で「THIS RBL HAS LONG BEEN DEPRICATED---DELETE IT FROM YOUR CONFIG」となる。これは、かつてlistedとなったホストがそのまま残っていて、現在はdelistedの状態なのにブロックしてしまう問題が生じてしまうということであるので、絶対使ってはいけないこの設定で数日運用した結果、本来受信するべきメールをブロックしてしまった。