11.Clam AntiVirusによるウィルスメール対策

 メールに添付されるウィルスを、メールサーバ側である程度駆除できるよう、対策を行う。
 対策には、Clam AntiVirusというフリーのLinux向けアンチウィルスソフトを利用する。

  1. インストール
  2. 設定ファイルの変更
  3. clamdの起動
  4. ウィルス定義ファイルを最新の状態に更新
  5. ウィルスチェックの動作確認
  6. 送受信されるメールに対してウィルスチェックを行う設定
  7. 動作確認
  8. ClamAntiVirusのアップデート

11-1 インストール

 Clam AntiVirusはRed Hat Linuxのパッケージとして用意されているので、yumで簡単にインストールできる。

  1. リポジトリをインストール

    # 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

  2. リポジトリファイルの修正
    基本パッケージとの競合を避けるため、デフォルトでは無効にしておく。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
    
  3. Clam AntiVirusをインストール

    # yum -y --enablerepo=rpmforge install clamd

11-2 設定ファイルの変更

 インストールが終わったら、設定ファイルの変更を行う。

/etc/clamd.confファイルの変更

 clamdの設定ファイル /etc/clamd.conf をviで開き、次のように修正する。

LocalSocket /var/run/clamav/clamd.socket
#TCPSocket 3310 ←コメントアウト
#TCPAddr 127.0.0.1 ←コメントアウト
#User clamav ←コメントアウト(root権限で実行させる)

 また、必要に応じて以下の修正を行う。

/etc/freshclam.confファイルの変更

 メールサーバがプロキシを使ってインターネットに接続する場合は、freshclamの設定ファイル /etc/freshclam.conf をviで開き、次のように修正する。

HTTPProxyServer proxy.andokomuten.jp ←コメントを解除し、修正
HTTPProxyPort 8080 ←コメントを解除し、修正
#HTTPProxyUsername myusername
#HTTPProxyPassword mypass

11-3 clamdの起動

 clamdをデーモンモード(常駐)で動作するよう、設定を行い、起動する。

# chkconfig clamd on
# /etc/rc.d/init.d/clamd start

11-4 ウィルス定義ファイルを最新の状態に更新

 ウィルス定義ファイルを最新の状態に更新できるかどうか、確認する。

# 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回、自動的に更新される。

11-5 ウィルスチェックの動作確認

 ウィルスチェックが行えるかどうか、確認する。例えば /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によってウィルスが検出された場合、ウィルスは自動的に削除される。

11-6 送受信されるメールに対してウィルスチェックを行う設定

 メールサーバを通じて送受信されるメールに対してウィルスチェックが行われるよう、設定を行う。

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以外の文字が含まれていると判断されたメールの送信者に通知するかどうか

その他の設定

 また、必要に応じて、以下の修正を行う。

Postfixの設定

 Postfixの設定ファイルをviで開き、それぞれ次のように修正する。

  1. /etc/postfix/main.cf:最終行に追加

    # amavisd-new
    content_filter=smtp-amavis:[127.0.0.1]:10024

  2. /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=1000
    

amavisd-newの起動

 amavisd-newをデーモンモード(常駐)で動作するよう、設定を行い、起動する。

# chkconfig amavisd on
# /etc/rc.d/init.d/amavisd start

 また、Postfixも設定を変更しているので、再起動する。

# /etc/rc.d/init.d/postfix restart

11-7 動作確認

amavisd-newの動作確認

 Outlook Expressから自分宛にメールを送信してみて、SMTPサーバ上でウィルスチェックが行われているかを確認する。受信したメールのヘッダ部分に以下の行があれば、チェックされていることが分かる。

X-Virus-Scanned: amavisd-new at andokomuten.jp

ウィルス付きメールチェック確認

 テスト用の無害なウィルスを自分宛に送信してみて、SMTPサーバ上でウィルスが検出されるかどうか確認する。
 次のファイルをwgetでダウンロードし、自分宛に送信(sendmail -i 宛先ユーザ名 <添付ファイル名)する。Outlook Expressを使ってテストしようとすると、ダウンロードしたファイルがアンチウィルスソフトで駆除されてしまうため、テストできない。サーバ上で行った方がよい。

 送信したら、サーバ上のログファイル「/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

 ウィルスが添付されているメールはサーバ上で自動的に削除されるため、メールは受信できないはずである。

11-8 ClamAntiVirusのアップデート

しばらく運用していると、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も一緒にアップデートすること。


[ Back ]