ウィルスの大きな感染源の一つとして、メールへウィルスファイルを添付して、開かせるというのが今も変わらず続いている攻撃手法の一つです。また、まだ引っかかる人がいるのか?と思うような出合い系サイトへ誘導する
スパムメールも今だに届きます。
今回は、postfixでメールサーバを構築している人向けにウィルスチェックとスパムチェックを行う方法を紹介します。Clam AntiVirusは、オープンソースで提供されているアンチウイルスソフトウェアです。SpamAssassinは、Apacheのプロジェクトの一つとして開発されているオープンソースのスパムフィルタリングソフトです。この2つとpostfixを連携させてフィルタリングするソフトウェアが amavisd-new です。今回は、このamavisd-newとClam AntiVirus、SpamAssassinを使ってウィルス、スパム対策方法を紹介します。なおpostfixは、事前に設置され運用されているものとします。
e-mail ¦ ↓ postfix <----> amavisd-new <----> SpamAssassin ¦ ↑ ¦ ¦ ↓ ↓ メールボックス Clam AntiVirus
amavisd-newとSpamAssassinを以下のコマンドを実行してインストールします。
amavisd-new は、hostname に FQDN 名が設定されていないと起動しないので、事前に設定しておきます。 $ sudo hostname FQDN 名 $ sudo apt-get -y install amavisd-new spamassassin clamav-daemon
Clam AntiVirusのウィルス定義ファイルを最新にアップデートします。
$ sudo freshclam
ウィルスサンプルファイルをダウンロードしてウィルスが検出される事を確認します。
$ wget http://www.eicar.org/download/eicar.com $ clamscan --infected eicar.com eicar.com: Eicar-Test-Signature FOUND ----------- SCAN SUMMARY ----------- Known viruses: 4714614 Engine version: 0.99 Scanned directories: 0 Scanned files: 1 Infected files: 1 <- ウィルス検出 Data scanned: 0.00 MB Data read: 0.00 MB (ratio 0.00:1) Time: 7.607 sec (0 m 7 s)
clamavユーザをamavisグループに、amavisユーザをclamavグループに加えます。
$ sudo adduser clamav amavis $ sudo adduser amavis clamav
amavisd-newが使用するtmpディレクトリのパーミションを変更し、clamdをclamavユーザ以外が利用できるように設定ファイルを変更します。
$ sudo chmod -R 775 /var/lib/amavis/tmp
グループ権限の移行を許可します。
[/etc/clamav/clamd.conf]
AllowSupplementaryGroups false ↓ AllowSupplementaryGroups true
amavisd-newのフィルタリング設定ファイルの以下の行のコメントを外し有効にします。
[/etc/amavis/conf.d/15-content_filter_mode]
@bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
postfixにamavisd-newをフィルタリングする設定を追記します。
[/etc/postfix/main.cf]
: content_filter = smtp-amavis:[127.0.0.1]:10024
[/etc/postfix/master.cf]
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient} smtp-amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
* master.cf の -o に続くオプションはUbuntuの公式ドキュメントを参照しましたが、環境により適宜設定してください。
設定が全て完了したので、サービスを全てrestartして、システムが再起動しても自動起動されるように設定します。
$ sudo systemctl restart spamassassin.service $ sudo systemctl restart clamav-daemon.service $ sudo systemctl restart postfix.service $ sudo systemctl restart amavis.service $ sudo systemctl enable postfix.service $ sudo systemctl enable spamassassin.service $ sudo systemctl enable clamav-daemon.service $ sudo systemctl enable amavis.service
設定完了後、確認の為、スパムと認識するテスト文字列、以下を含んだメールをroot宛に送信してみます。
$ echo XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X |sendmail root
ウィルス確認は、先ほどダウンロードしたウィルステストファイルeicar.comをroot宛に送信してみます。
$ cat eicar.com |sendmail root
[/var/log/mail.log]
Aug 12 12:35:44 ubuntu amavis[26738]: (26738-01) Blocked SPAM {DiscardedInbound,Quarantined}, [127.0.0.1] <taro@hoge.com> -> <taro@hoge.com>, quarantine: k/spam-knrEs_d-SvQl.gz, Message-ID: <--スパムファイルと認識。
Aug 12 12:49:07 ubuntu amavis[27343]: (27343-01) Blocked INFECTED (Eicar-Test-Signature) {DiscardedInbound,Quarantined}, [127.0.0.1] <taro@hoge.com> -> <root@hoge.com>, quarantine: <--- ウィルスファイルと認識