メールに添付されるウィルスを、メールサーバ側である程度駆除できるよう、対策を行う。
対策には、Clam AntiVirusというフリーのLinux向けアンチウィルスソフトを利用する。
Clam AntiVirusはRed Hat Linuxのパッケージとして用意されているので、yumで簡単にインストールできる。
- リポジトリをインストール
# wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.i386.rpm
# rpm -ivh rpmforge-release-0.3.6-1.el4.rf.i386.rpm- リポジトリファイルの修正
基本パッケージとの競合を避けるため、デフォルトでは無効にしておく。viで/etc/yum.repos.d/rpmforge.repoを開き、以下を修正する。# Name: RPMforge RPM Repository for Red Hat Enterprise 4 - dag # URL: http://rpmforge.net/ [rpmforge] name = Red Hat Enterprise $releasever - RPMforge.net - dag #baseurl = http://apt.sw.be/redhat/el4/en/$basearch/dag mirrorlist = http://apt.sw.be/redhat/el4/en/mirrors-rpmforge #mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge enabled = 0 ←1を0に修正する protect = 0 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag gpgcheck = 1- Clam AntiVirusをインストール
# yum -y --enablerepo=rpmforge install clamd
インストールが終わったら、設定ファイルの変更を行う。
/etc/clamd.confファイルの変更
clamdの設定ファイル /etc/clamd.conf をviで開き、次のように修正する。
LocalSocket /var/run/clamav/clamd.socket
#TCPSocket 3310 ←コメントアウト
#TCPAddr 127.0.0.1 ←コメントアウト
#User clamav ←コメントアウト(root権限で実行させる)
また、必要に応じて以下の修正を行う。
- 暗号化されたZIPファイルをウィルスと判定しないようにする
#ArchiveBlockEncrypted no
- 大きな添付ファイルが付いたメールをウィルスと判定しないようにする(※0.94では無くなってた)
#ArchiveBlockMax no
/etc/freshclam.confファイルの変更
メールサーバがプロキシを使ってインターネットに接続する場合は、freshclamの設定ファイル /etc/freshclam.conf をviで開き、次のように修正する。
HTTPProxyServer proxy.andokomuten.jp ←コメントを解除し、修正
HTTPProxyPort 8080 ←コメントを解除し、修正
#HTTPProxyUsername myusername
#HTTPProxyPassword mypass
clamdをデーモンモード(常駐)で動作するよう、設定を行い、起動する。
# chkconfig clamd on
# /etc/rc.d/init.d/clamd start
ウィルス定義ファイルを最新の状態に更新できるかどうか、確認する。
# freshclam
ClamAV update process started at Mon Dec 19 16:30:21 2005
Connecting via 192.168.10.248
main.cvd is up to date (version: 34, sigs: 39625, f-level: 5, builder: tkojm)
Connecting via 192.168.10.248
Downloading daily.cvd [*]
daily.cvd updated (version: 1212, sigs: 1843, f-level: 6, builder: arnaud)
Database updated (41468 signatures) from db.jp.clamav.netなお、/etc/cron.daily/内を見ると、freshclamファイルが追加されている。つまり、1日1回、自動的に更新される。
ウィルスチェックが行えるかどうか、確認する。例えば /home/以下をウィルスチェックするには、次のように実行する。
# clamscan /home
----------- SCAN SUMMARY -----------
Known viruses: 41468
Engine version: 0.94
Scanned directories: 2
Scanned files: 6
Infected files: 0 ←ここが0なら、ウィルスは検出されなかったことになる
Data scanned: 0.00 MB
Time: 2.474 sec (0 m 2 s)※Clam AntiVirusによってウィルスが検出された場合、ウィルスは自動的に削除される。
メールサーバを通じて送受信されるメールに対してウィルスチェックが行われるよう、設定を行う。
amavisd-newのインストール
amavisd-newは、MTAとウィルススキャンプログラムとの橋渡しを行うソフトである。yumでインストールする。
# yum -y --enablerepo=rpmforge install amavisd-new
amavisd-newの設定
ClamAVとPostfixがamavisd-newを経由して連携するよう、amavisd-newの設定ファイル /etc/amavisd.conf を次のように修正する。
$mydomain = 'andokomuten.jp'; ←修正 $myhostname = 'smtp.andokomuten.jp'; ←コメントを解除し、修正 $final_spam_destiny = D_PASS; ←コメントアウトを解除し、修正※ $warnvirussender = 0; ←$final_〜の下辺りに、この4行を追加※ $warnspamsender = 0; $warnbannedsender = 0; $warnbadhsender = 0; # ### http://www.clamav.net/ ←以下のコメントアウトを解除し、修正 ['ClamAV-clamd', \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.socket"], qr/\bOK$/, qr/\bFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],$final_***の意味は次の通り。
- $final_virus_destiny
- ウィルスと判断されたメールを最終的にどうするか
- $final_banned_destiny
- 禁止されたメールを最終的にどうするか
- $final_spam_destiny
- スパムと判断されたメールを最終的にどうするか
- $final_bad_header_destiny
- メールヘッダにASCII以外の文字が含まれていると判断されたメールを最終的にどうするか
これに設定する値の意味は次の通り。
- D_DISCARD
- 削除する。メールは配送されず、送信者にも通知しない
- D_BOUNCE
- 受信者には配送せず、配送されなかったことを送信者に通知する。例外的に通知しないものもある
- D_REJECT
- 受信者には配送せず、配送されなかったことを送信者に通知する
- D_PASS
- 配送する
つまり、上記設定はスパムと判断されたメールでもそのまま受け取るという意味である。正常なメールでもスパムと判断する可能性があるので、ここではそのまま受け取ることにする。スパム対策は次のページで行う。
また、$final_***の下に追加したパラメータは、D_PASSで受け取ったメールを送信者に警告するかどうかの設定である。有効にするなら「1」を、無効にするなら「0」を設定する。
- $warnvirussender
- ウィルス送信者に通知するかどうか
- $warnspamsender
- スパム送信者に通知するかどうか
- $warnbannedsender
- 禁止メール送信者に通知するかどうか
- $warnbadhsender
- メールヘッダにASCII以外の文字が含まれていると判断されたメールの送信者に通知するかどうか
その他の設定
また、必要に応じて、以下の修正を行う。
- ウィルス検知メールを管理者宛に通知しないようにする
#$virus_admin = "virusalert\@$mydomain"; ←コメントアウト
Postfixの設定
Postfixの設定ファイルをviで開き、それぞれ次のように修正する。
- /etc/postfix/main.cf:最終行に追加
# amavisd-new
content_filter=smtp-amavis:[127.0.0.1]:10024- /etc/postfix/master.cf:最終行に追加
# # amavist-new # smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000amavisd-newの起動
amavisd-newをデーモンモード(常駐)で動作するよう、設定を行い、起動する。
# chkconfig amavisd on
# /etc/rc.d/init.d/amavisd startまた、Postfixも設定を変更しているので、再起動する。
# /etc/rc.d/init.d/postfix restart
amavisd-newの動作確認
Outlook Expressから自分宛にメールを送信してみて、SMTPサーバ上でウィルスチェックが行われているかを確認する。受信したメールのヘッダ部分に以下の行があれば、チェックされていることが分かる。
X-Virus-Scanned: amavisd-new at andokomuten.jp
ウィルス付きメールチェック確認
テスト用の無害なウィルスを自分宛に送信してみて、SMTPサーバ上でウィルスが検出されるかどうか確認する。
次のファイルをwgetでダウンロードし、自分宛に送信(sendmail -i 宛先ユーザ名 <添付ファイル名)する。Outlook Expressを使ってテストしようとすると、ダウンロードしたファイルがアンチウィルスソフトで駆除されてしまうため、テストできない。サーバ上で行った方がよい。
- http://www.eicar.org/download/eicar.com
- http://www.eicar.org/download/eicar.com.txt
- http://www.eicar.org/download/eicar.com.zip
- http://www.eicar.org/download/eicarcom2.zip
送信したら、サーバ上のログファイル「/var/log/maillog」に、ウィルス検出メッセージが出力されていることを確認する。
Dec 24 16:53:12 smtp amavis[14846]: (14846-02) Blocked INFECTED (Eicar-Test-Signature), LOCAL [192.168.10.101] [192.168.10.101] <?@[192.168.10.101]> -> <dokozono.syacho@andokomuten.jp>, quarantine: virus-KnNb-ZMErqEx, Message-ID: <002801c6085f$617cc500$72a112ac@andokomuten.jp>, mail_id: KnNb-ZMErqEx, Hits: -, 4144 ms
ウィルスが添付されているメールはサーバ上で自動的に削除されるため、メールは受信できないはずである。
しばらく運用していると、ClamAVのバージョンが古いというメッセージがログなどに出てくる。これは、ClamAntiVirusやamavisd-newをrpmforgeから取得してインストールしたため、通常のyumによるアップデートを行っても、これらはアップデートされないためである。
よって、バージョンが古いというメッセージが出たら、次のようにアップデートすればよい。# yum -y --enablerepo=rpmforge update clamd
# yum -y --enablerepo=rpmforge update amavisd-new
アップデートされると、新しいバージョンの設定ファイルがそれぞれ作成される。
[root@mail ~]# ls /etc/clam* /etc/amavisd* -al -rw-r----- 1 root amavis 32719 12月 14 11:32 /etc/amavisd.conf ←現在の設定ファイル -rw-r----- 1 root amavis 30009 2月 22 2007 /etc/amavisd.conf.rpmnew ←新しい設定ファイル -rw-r----- 1 root amavis 29968 2月 21 2007 /etc/amavisd.conf.rpmsave -rw-r--r-- 1 root root 9181 12月 14 11:06 /etc/clamd.conf ←現在の設定ファイル -rw-r--r-- 1 root root 9192 2月 21 2007 /etc/clamd.conf.rpmnew ←新しい設定ファイル -rw-r--r-- 1 root root 9192 2月 20 2007 /etc/clamd.conf.rpmsave新しい設定ファイルに現在の設定を記述し、ファイル名を変更し、clamdとamavisdを再起動する。また、メールサーバも再起動する。
# mv /etc/clamd.conf /etc/clamd.conf.old
# mv /etc/clamd.conf.rpmnew /etc/clamd.conf
# vi /etc/clamd.conf
・・・clamd.confファイルを編集し、保存・・・
# mv /etc/amavisd.conf /etc/amavisd.conf.old
# mv /etc/amavisd.conf.rpmnew /etc/amavisd.conf
# vi /etc/amavisd.conf
・・・amavisd.confファイルを編集し、保存・・・
# /etc/rc.d/init.d/clamd restart
# /etc/rc.d/init.d/amavisd restart
# /etc/rc.d/init.d/postfix restartアップデートしたら、念のため、ウィルス定義ファイルを更新しておこう。
# freshclam
※SpamAssassinも導入している場合、SpamAssassinも一緒にアップデートすること。