オープンソースのアンチウィルスソフトウェアであるClamAVをインストールしてみました。

インストール

ClamAV用のユーザおよびグループを作成します。

# groupadd clamav
# useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

続いてClamAVのビルドをします。

% wget http://freshmeat.net/redir/clamav/29355/url\_tgz/clamav-0.94.tar.gz
% tar zxvf clamav-0.94.tar.gz
% cd clamav-0.94
% ./configure --sysconfdir=/etc
% make
% su -
# make install
# ldconfig

make時にzlibが古いといわれたら、zlibをアップデートしてからビルドしなおしてください。

% wget http://www.zlib.net/zlib-1.2.3.tar.gz
% tar zxvf zlib-1.2.3.tar.gz
% cd zlib-1.2.3
% ./configure --shared
% make
% su -
# make install
# ldconfig

ClamAVのconfigure時に–enable-checkオプションをつけると、ユニットテストを行うことができます。 ユニットテストを行うには、別途check パッケージが必要です。 インストールされていない場合はこちらよりソースをダウンロードしてインストールしてください。

% tar zxvf check-0.9.5.tar.gz
% cd check-0.9.5
% ./configure
% make
% su
# make install

–enable-checkのオプションを付けてClamAVのconfigureおよびmakeを行った後、以下のようにしてユニットテストを行うことができます。

% make check
...
Running suite(s): cl\_api
 cli
 jsnorm
 str
 regex
 disasm
 unique
 matchers
100%: Checks: 205, Failures: 0, Errors: 0
PASS: check\_clamav
PASS: check\_clamd.sh
PASS: check\_freshclam.sh
PASS: check\_sigtool.sh
PASS: check\_clamscan.sh
Running valgrind
Valgrind tests successful
PASS: valgrind\_tests.sh
==================
All 6 tests passed
==================

テストもパスしました。

ウィルススキャンを実行してみる

インストールが終了したら設定ファイルの編集をします。 とりあえず細かい設定は抜きにして、ClamAVを動作させるだけの設定にするには以下のように/etc/clamd.confを設定します(clamd.confの場所は、configure オプションの–sysconfdirで設定したディレクトリになります)。

# Comment or remove the line below
#Exapmle  (コメントアウトする)

早速スキャンを実行してみます。

% clamscan
LibClamAV Warning: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
LibClamAV Warning: \*\*\*  The virus database is older than 7 days!  \*\*\*
LibClamAV Warning: \*\*\*   Please update it as soon as possible.    \*\*\*
LibClamAV Warning: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
/tmp/clamtest/test.pdf: OK
/tmp/clamtest/test.doc: OK
...
----------- SCAN SUMMARY -----------
Known viruses: 407205
Engine version: 0.94
Scanned directories: 1
Scanned files: 50
Infected files: 0
Data scanned: 202.91 MB
Time: 23.895 sec (0 m 23 s)

ウィルスのデータベースが古いといわれましたが、とりあえずスキャンはできました(ウィルスがちゃんと検出できたかどうかは別ですが…)。 デフォルトの設定ではカレントディレクトリのみスキャンの対象になるようです。設定を変えれば再帰的にディレクトリを辿ってスキャンを実行することもできます。 ウィルスのデータベースを更新する 先ほどウィルスのデータベースが古いという警告が出たので、データベースを更新してみます。 今回も動作させることが目的なので、設定ファイル/etc/freshclam.confを上記clamd.confと同様に編集します。

# Comment or remove the line below
#Exapmle  (コメントアウトする)

編集したら以下のように実行します

# freshclam
ClamAV update process started at Fri Sep 12 15:42:47 2008
nonblock\_connect: connect timing out (30 secs)
Can't connect to port 80 of host database.clamav.net (IP: 203.178.137.175)
Trying host database.clamav.net (203.212.42.128)...
Downloading main-48.cdiff \[100%\]
main.cld updated (version: 48, sigs: 399264, f-level: 35, builder: sven)
WARNING: getfile: daily-8139.cdiff not found on remote server (IP: 203.212.42.128)
WARNING: getpatch: Can't download daily-8139.cdiff from database.clamav.net
nonblock\_connect: connect timing out (30 secs)
Can't connect to port 80 of host database.clamav.net (IP: 203.178.137.175)
Trying host database.clamav.net (203.212.42.128)...
WARNING: getfile: daily-8139.cdiff not found on remote server (IP: 203.212.42.128)
WARNING: getpatch: Can't download daily-8139.cdiff from database.clamav.net
nonblock\_connect: connect timing out (30 secs)
Can't connect to port 80 of host database.clamav.net (IP: 203.178.137.175)
Trying host database.clamav.net (203.212.42.128)...
WARNING: getfile: daily-8139.cdiff not found on remote server (IP: 203.212.42.128)
WARNING: getpatch: Can't download daily-8139.cdiff from database.clamav.net
WARNING: Incremental update failed, trying to download daily.cvd
Trying host database.clamav.net (203.178.137.175)...
nonblock\_connect: connect timing out (30 secs)
Can't connect to port 80 of host database.clamav.net (IP: 203.178.137.175)
Trying host database.clamav.net (211.10.155.48)...
Downloading daily.cvd \[100%\]
daily.cvd updated (version: 8223, sigs: 22944, f-level: 35, builder: aeriana)
Database updated (422208 signatures) from database.clamav.net (IP: 211.10.155.48)

何回かコネクションにに失敗しましたが、とりあえず成功したようです。 以後は成功した場所から取ってくるようです。

定期的にウィルスのデータベースを更新する

まずはログファイルの設定を行います。以下のようにログファイルを作成します。

# touch /var/log/freshclam.log
# chmod 600 /var/log/freshclam.log
# chown clamav /var/log/freshclam.log

/etc/freshclam.confのUpdateLogFileの部分を編集します。

UpdateLogFile /var/log/freshclam.log

つづいてfreshclamの設定を行います。更新の方法としては、

  1. コマンドラインから必要に応じて実行
  2. デーモンでバックグランドで行う

の2通りあります。 1の場合はrootかclamavユーザーでcrontabの設定を行います

N \* \* \* \* /usr/local/bin/freshclam --quiet

Nのところは、0-59の適当な数値を入れます(マニュアルでは、3-57で10の倍数でない数値が推奨されています)。 2の場合は以下のようにしてデーモンを起動します。

# freshclam -d

以上で設定完了です。 あとは環境に合わせて/etc/clamd.confと/etc/freshclam.confの設定をしてください。