ウイルスソフトClam AntiVirusの導入

更新:2005-2-11

オープンソースのウイルス検知ソフトの「Clam AntiVirus」をシステムに導入する。Clam AntiVirusは、UNIX系のシステムで動作するアンチウイルスソフトである。シグネチャによるパターンマッチング方式を採用していて、約29,000種類以上のウイルス、ワームおよびトロイの木馬に対応している。Windows版は、GUIが用意されているが、Linuxで利用する場合は、コマンド操作で行う。
サポートしている圧縮ファイル形式は、zip、RAR(2.0)、tar、gzip、bzip2、MS OLE2、MS Cabinet Files、MS CHM(Compiled HTML)、MS SZDD compression format、UPX(すべて)、FSG(1.3,1.31,1.33,2.0)、Petite(2.x) である。

clamavユーザとグループの作成

まず、行うことは、clamavユーザとグループの作成である。サービスの実行権限は、clamavユーザになる。

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

インストール

Clam AntiVirus から最新安定版の clamav-0.80.tar.gz をダウンロードして解凍する。

	$tar zxvf clamav-0.80.tar.gz
	$cd clamav-0.80
	$./configure	-- 「--datadir=/var/lib/clamav」のように付加すればデータベースのパスを変更できる
	$make
	$su
	#make install
/usr/local以下に次のファイルがインストールされる。(解説類と設定ファイルとにパスやファイル名の相違などがあるので注意)

ウイルス定義ファイルの更新

日々のウイルスを検査するには、言うまでもなくウイルス定義ファイルを更新しなければならない。ウイルス定義ファイルは、 /usr/local/share/clamav/ディレクトリに生成されるmain.cvdおよびdilry.cvdである。main.cvdはほとんどのウィルス定義を格納するファイルであり、daily.cvdは最近追加されたウイルス定義を格納するファイルである。daily.cvdに収録されたウイルス定義は、しばらく後にmain.cvdに移動される。これらウイルス定義ファイルのダウンロードを行うには、freshclamコマンドを用いる。ダウンロードするにはrootの権限が必要である。

	#freshclam

これを一定時刻に自動的にダウンロードするように設定し、そのダウンロードの記録をログに残すようにする。 まず、ログファイルを作成する。freshclamはclamavユーザ権限で動作するため、ログファイルなどにclamav権限でアクセスできるようにする。(syslog経由で/var/log/messageに残すこともfreshclam.confの設定で可)

	#touch /var/log/clavam-updat.log
	#chown clamav.clamav /var/log/clam-update.log
	#chmod 644 /var/log/clavam-update.log

設定ファイルの編集

設定ファイル/usr/local/etc/freshclam.confを編集する。

	#Example		----コメントを付けることで設定ファイルが有効になる
	DatabaseDirectory /usr/local/share/clamav
	UpdateLogFile     /var/log/clam-update.log
	DatabaseOwner	clamav
	DNAdatabaseInfo current.cvd.clamav.net	--データベースおよびclamaAVのバージョン情報の通知。ログに表示する。
	DatabaseMirror db.jp.clamav.net	--日本のミラーサイトを利用するために、xxをjpに置き換える。
	DatabaseMirror	database.calamav.net	--データベースのダウンロードを補完する。必ず有効にしておく。
	MaxAttempts	3	---データベースサイトが応答がない場合、ダウンロートを試みる最大回数(初期値= 3)	
	Checks 12		---2時間毎のダウンロード 24/2(初期値=12)	
ウイルス・データベースは2時間毎の更新が推奨されている。その更新の記録を指定ログに出力する。また、clamAVのバージョンアップがあった場合それを知らせてもらう。ダウンロードサイトは、自動的に最寄りのサイトが選択されるようになっているが、日本のサイトを指定する。1つのホスト名に対して複数のIPアドレスを設定するラウンド・ロビンを用いている。「host db.jp.clamav.net」で3件のダウンロードサイトが表示された(2005年1月現在)。

cronに登録 - デーモンとして起動

この設定を自動的に処理するためには、cronを利用する。記述は、左から、「分」、「時」,「日」、「月」、「曜日」そして「実行ユーザ」、「実行コマンド」である。ファイルは/var/spool/cron/rootである。

	#crontab -e	----viで設定ファイルを開く
	------------------------------------------------
	MAILTO=root
	
	24 */2 * * * /usr/local/bin/freshclam > /dev/null 2>&1
	------------------------------------------------
	#crontab -l	----設定の確認を行う	
詳細については、「man 5 crontab」で。

これで2時間おきに24分にfreshclamを実行し、エラーの場合のみroot宛にメールが送信される。24分というのは、 データベースサイトへの集中を緩和するために、区切りのよい0、10、20、...の分は登録しないことが推奨されているからである。設定を破棄したい場合は、「crontab -r」を実行する。

なお、freshclamのサービスをデーモンとして(Webサーバやメールサーバのように)起動したい場合には、「-d」オプションをつけ、設定ファイルを指定して起動する。

	#freshclam -d --config-file=/usr/local/etc/freshclam.conf

システムの再起動後もfreshclamのサービスを起動するには、/etc/rc.d/rclocal に上記を追記しておけばよい。また、バージョンアップの際には、設定後、一度fresclamデーモンを再起動させる。そうしないと、定義ファイルのダウンロードの度に、バージョンアップを即す警告が常時出ることになる。

なお、最新のウイルス定義ファイルは、以下のデータベースから調べることができる。
  ■http://news.gmane.org/gmane.comp.security.virus.clamav.virusdb

次にログのローテーションを設定する。ログの肥大化を防ぐためである。/etc/logrotate.confファイルでログローテーションの全般的な設定がなされている。 したがって、ログローテーション用のclam-updateには、全般設定以外の変更や追加を設定すればいいことになる。 1週間毎にログを更新し、4週間分を保存する。空ファイルならば、ローテーションしない。エラーがあってもエラーメッセージ(メールなど)を出さない。ローテーション後には、ファイルの所有者・グループを変更する。

	#touch /etc/logrotate.d/clamv     -- 設定ファイルclamvの作成
	------------------------------------
	 "/var/log/clam-update.log"
	 {
	    rotate 4
	    weekly
	    missingok
	    notifempty
	    create 0640 clamav clamav
	 }

ウイルススキャン

ウイルスの検査を行うには、clamscanコマンドを実行する。clamscanはコマンドとして動作し、実行されるたびにウイルスデータベースを読み込む。

	$clamscan ファイル名

Sylpheed とMozilla Thunderbird で受信したメールをウイルススキャンしてみた。「-r」でディレクトリを再帰的にスキャンする。0.80からmboxオプションは廃止された。

	$clamscan -r Mail/inbox -r .thunderbird/default.sxm/Mail
	Mail/inbox//.sylpheed_cache: OK
	Mail/inbox//.sylpheed_mark: Ok
	Mail/inbox//17: Worm.Bagle.Z FOUND -- メール17にWin32/Bagle.worm.Z発見
	Mail/inbox//.new-cache: OK
	Mail/inbox//16: OK
	Mail/inbox//12: OK
	
	---------SCAN SUMMARY --------------
	Known viruses: 21635
	Scanned directories: 4
	Scanned files: 6
	Infected files: 1 -- ウイルス1件
	Data scanned: 0.11 MB
	I/O buffer size: 131072 bytes
	Time: 1.425 sec (0 m 1 s)
システムのメールボックスをスキャンするには、
	#clamscan -r /var/spool/mail/

ウイルススキャンを行うファイルが多い場合には、「--bell 」でウイルス発見時にベルを鳴らす、「-i」でウイルス感染ファイルのみを表示させてスキャンを実行する。ウイルスを隔離するディレクトリを作成し、そこへ移動させるには、「--move=ディレクトリのパス」である。そして、ウイルスに感染したファイルが表示された場合は、確認後「--remove」で削除する。スキャンの結果をファイルに出力するには、「-l ファイル名」である。

	$clamscan -r --bell -i --move=ディレクトリのパス ~/
	$clamscan --remove ウイルス感染ファイル

アンチウイルスソフトの動作テスト用を確認するためには、「EICAR」(European Institute for Computer Antivirus Research)というにせ物ウイルスがある。EICARは、アンチウイルスソフトでスキャンするとウイルスとして検出されるが、もちろんほかのファイルに感染したり、システムに害を及ぼすような動作はしない。
  ■The Anti-Virus test file
上記のサイトから eicar.com、eicar.com.txt、eicar.com.zipおよびeicarcom2.zip をダウンロードして、ウイルスチェックを行う。

なお、現在データベースに登録されているウイルス定義ファイルを参照するには、sigtool コマンドを用いる。

	$sigtool --list-sig | less

KDEデスクトップでclamAVを使用するGUIユーティリティ -clamaktion -

ユーザが使用するウイルススキャン用のGUIユーティリティ clamaktion-utility (KDE-3.1以上)というのがある。右クリックしホップアップメニューに「ウイルススキャン」の項目が現れ、スキャンを実行するというものである。 ソースファイルを解凍した後、インストール前に、clamaktionの実行ファイルおよびclamaktion.desktopファイルを編集する。

	clamaktionの編集箇所:
	CLAMSCAN=/usr/local/bin/clamscan ----calmscan のパスを指定
	QUARANTINE_DIR=$HOME/TMP/quarantine ----このままでもよいが、TMPをClamScanと識別できるように変更。
	LOGFILE=$HOME/TMP/clamscan_log ----上と合わせる。
	CONFIGURED=no → yesに変更
	
	clamaktion.desktopの編集箇所:
	Name[jp]=ウイルススキャン	 ---メニューの表示を記述する。

編集が終わったならば、ユーザ権限で./installを実行する。これでディレクトリやファイルを右クリックすると、「ウイルススキャン」の項目が現れる。スキャンを実行すると、その結果は自動的に端末が起動し表示する。rootも必要ならば、root権限で./installを実行する。


[Clam AntiVirus 参考サイト] その他、オープンソースのアンチウイルスソフトには以下のものがある。
inserted by FC2 system