18 November 2009

(FreeBSD) レンタルサーバにClam AVを導入

root権限を持っていないFreeBSDのレンタルサーバ ( 今回は、さくらのレンタルサーバを対象とする ) でClam AntiVirusをインストールする方法のメモ。

インストール方法は、Clam AntiVirusの公式ホームページに書かれている通り。

 Installing on shell account

ただし、現在入手可能なソースコード ClamAV 0.95.3 を FreeBSD 上でコンパイルする場合、エラーが発生する。 公式ダウンロードサイトに掲載されているパッチを当てる必要がある。

公式サイトよりソースコードとパッチをダウンロードして展開。パッチを当てる


[user@~] mkdir ~/working/clam

[user@~] cd ~/working/clam

[user@clam] wget http://downloads.sourceforge.net/project/clamav/clamav/0.95.3/clamav-0.95.3.tar.gz

[user@clam] tar xvf clamav-0.95.3.tar.gz

[user@clam] wget http://wiki.clamav.net/pub/Main/UpgradeNotes0953/patch-0.95.3-bug1737.diff

[user@clam] cp patch-0.95.3-bug1737.diff ./clamav-0.95.3

[user@clam] cd ./clamav-0.95.3

[user@clamav-0.95.3] patch -p1 patch-0.95.3-bug1737.diff

■ ソースコードのビルドとインストール


[user@clamav-0.95.3] mkdir ~/clamav ← インストール用ディレクトリを作成

[user@clamav-0.95.3] ./configure --prefix=/home/user/clamav --disable-clamav

[user@clamav-0.95.3] make

[user@clamav-0.95.3] make install

■ もし、パッチを導入せずにビルドすると…


[user@clamav-0.95.3] make

~ 途中省略 ~

In file included from matcher.h:28,
from others.h:21,
from matcher-bm.c:29:
others.h: In function 'cli_getpagesize':
others.h:363: error: '_SC_PAGESIZE' undeclared (first use in this function)
others.h:363: error: (Each undeclared identifier is reported only once
others.h:363: error: for each function it appears in.)
*** Error code 1

Stop in /home/user/working/clam/clamav-0.95.3/libclamav.
*** Error code 1

Stop in /home/user/working/clam/clamav-0.95.3/libclamav.
*** Error code 1

Stop in /home/user/working/clam/clamav-0.95.3/libclamav.
*** Error code 1

Stop in /home/user/working/clam/clamav-0.95.3.
*** Error code 1

Stop in /home/user/working/clam/clamav-0.95.3.

というように、途中でビルドが中断される。このあたりについては、『 clamav-0.95.3へのバージョンアップの備忘録 その後 09/11/03 』 に詳しく書かれており、パッチを当てるのではなく、ソースコードを微修正して乗り切るという手法を提示されている。

■ Clam AntiVirus を利用する

まず、『 ~/clamav/etc/freshclam.conf 』ファイルを編集し、ファイル先頭の " Example " の行をコメントアウトする。


[user@clamav-0.95.3] cd ~/test

[user@test] ~/clamav/bin/fleshclam ← パターンのアップデート

[user@test] ~/clamav/bin/clamscan --verbose

Scanning /home/user/working/test_virus/BadTrans.exe.txt
/home/user/working/test_virus/BadTrans.exe.txt: Worm.BadTrans.B1 FOUND
Scanning /home/user/working/test_virus/eicar.com.txt
/home/user/working/test_virus/eicar.com.txt: Eicar-Test-Signature FOUND
Scanning /home/user/working/test_virus/Generic.CBM.exe.txt
/home/user/working/test_virus/Generic.CBM.exe.txt: W32.Elkern.C FOUND
Scanning /home/user/working/test_virus/Sobig.I.exe.txt
/home/user/working/test_virus/Sobig.I.exe.txt: Worm.Sobig.F-1 FOUND

----------- SCAN SUMMARY -----------
Known viruses: 652426
Engine version: 0.95.3
Scanned directories: 1
Scanned files: 4
Infected files: 4
Data scanned: 0.18 MB
Data read: 0.18 MB (ratio 1.00:1)
Time: 4.261 sec (0 m 4 s)

テスト用に古いウイルスファイルをスキャンしてみたが、ちゃんと検出されている。

ウイルスファイルを収集されていない一般の方は、テスト用のサンプルファイルがトレンドマイクロから配布されているので、それを使えばよいと思う。