Computer/OpenSource

概要

Clam AntiVirus は各種 UNIX 系のシステム(Linux, Mac OS Xなどを含む)で動作するアンチウイルスソフトである.パターンマッチング方式を採用しており,2008年4月16日の時点で約260,000種類のウイルスに対応している.GPL ライセンスに従って利用することができるオープンソースのソフトウェアである.

インストール

Vine Linux 3.2 では clamav は VinePlus の extras カテゴリに入っているので,apt の設定を確認してインストールする.Vine Linux 4.1 では plus カテゴリに入っているので次の作業は必要ない.

/etc/apt/sources.list の例(末尾に extras を加える)

# (ECCS mirror)
rpm [vine] ftp://ftp.ecc.u-tokyo.ac.jp/VINELINUX/apt/ 3.2/$(ARCH) main devel plus updates extras
rpm-src [vine] ftp://ftp.ecc.u-tokyo.ac.jp/VINELINUX/apt/ 3.2/$(ARCH) main devel plus updates extras

sources.list を更新したあと,apt-get でインストールする.

# apt-get install clamav

なお,clamav パッケージは頻繁にアップデートされているので,ウィルスデータベース同様,更新を怠らないこと.

ソースからのインストール

などからダウンロードする.

インストール方法は通常通り

$ ./configure
$ make 
# make install

でできるが,先に gmp パッケージをインストールしておくと,Digital Signature 対応になる.参考:gmp

トラブル対応

場合によってはうまくコンパイルできないことがある.次の例を参考にしてほしい.

共通設定

以下の設定は,クライアント/サーバとも行う必要がある.

clamd.conf の設定

テスト用設定の解除

/etc/clamd.conf の8行目付近にある「Example」と書かれた行をコメントアウトする.

# Comment or remove the line below.
# Example

ログファイルの設定

ログファイルを出力したければ,次の部分のコメントを解除し,ファイルのパスを指定する.

# Uncomment this option to enable logging.
# LogFile must be writable for the user running daemon.
# A full path is required.
# Default: disabled
LogFile /var/log/clamd.log

ソケットの設定

72行目付近のソケットの設定は,任意で LocalSocket /var/run/clamav/clamd に変更する.

# Path to a local socket file the daemon will listen on.
# Default: disabled
LocalSocket /var/run/clamav/clamd

freshclam.conf の設定

テスト用設定の解除

/etc/freshclam.conf の9行目付近にある「Example」と書かれた行をコメントアウトする.

# Comment or remove the line below.
# Example

サーバの変更

サーバを日本のものに変更しておく.55行目付近の記述を変更する.

# Uncomment the following line and replace XY with your country
# code. See http://www.iana.org/cctld/cctld-whois.htm for the full list.
# Default: There is no default, which results in an error when running freshclam
DatabaseMirror db.jp.clamav.net

クライアント用設定

freshclam

ウィルスデータベースの更新は

# freshclam

で行う.ウィルスデータベースはほぼ1日に1回更新されている.常時接続環境にあれば,「サーバ用設定」−「cron への登録」−「freshclam」で,/etc/cron.daily/freshclam を作成するとよい{{fn 常時マシンが起動されていなくても,マシンが起動してからしばらくたつと自動的に cron が実行される(anacron).}}.

clamscan

ウィルスチェックを行うときは,

$ clamscan -r <Directory>

を実行すると,<Directory> 以下のファイル/ディレクトリが再帰的に検査される.

自動的にウィルスチェックを行わせるためには,「サーバ用設定」−「cron への登録」−「clamscan」で,/etc/cron.daily/clamscan を作成するとよい.

サーバ用設定

cron への登録

freshclam

毎日 freshclam を実行させるために,/etc/cron.daily/freshclam を作成する.

/etc/cron.daily/freshclam

#***/bin/sh
/usr/bin/freshclam –daemon-notify –quiet –log=/var/log/freshclam.log

実行権限を与えておく.

# chmod 755 /etc/cron.daily/freshclam

次に /var/log/freshclam.log を作成する{{fn うまくログが作成されないときは,所有者/グループを clamav にしておくとよいかもしれない.# chown clamav:clamav /var/log/freshclam.log}}.

# touch /var/log/freshclam.log

clamscan

自動的にウィルスに感染したファイルを検索させるには,cron に登録しておくとよい.

/etc/cron.{hourly,daily,weekly,monthly}/clamscan を作成する(個人的には weekly で十分だと思う).

/etc/cron.{hourly,daily,weekly,monthly}/clamscan

#***/bin/sh
#
# clamscan v1.0 2006/05/16 MATSUURA Takashi
#

PATH=/usr/bin

clamscan -r -i –log=/var/log/clamscan.log /home

–log= と /home の部分は自分の管理しているシステムに合わせて変更しておく.検索ディレクトリは,/var や /tmp も加えておくとよい.

実行権限を与えておく.

# chmod 755 /etc/cron.{hourly,daily,weekly,monthly}/clamscan

clamscan の結果は,root 宛にメールが届き,/var/log/clamscan.log にも記録される.

次に /var/log/clamscan.log を作成する.log に記録されたファイル名などが(管理者以外の)他人にわかってしまっては困るので,パーミッションを変えておく.

# touch /var/log/clamscan.log
# chmod 600 /var/log/clamscan.log

logrotate の設定

freshclam

freshclam のログは /var/log/freshclam.log にできる.これを lotate する.あまり大きなログではないので,1ヶ月に一回 lotate することにする.

/etc/logrotate.d/freshclam

/var/log/freshclam.log {
monthly
missingok
}

clamscan

clamscan のログは /var/log/clamscan.log にできる.これを lotate する.これもあまり大きなログではないので,1ヶ月に一回 lotate することにする.

/etc/logrotate.d/clamscan

/var/log/clamscan.log {
monthly
missingok
}

clamd を自動的にスタートさせる設定

サーバマシンの起動時に clamd も起動させるように設定する.

起動スクリプトの作成

clamd を起動するスクリプトを /etc/rc.d/init.d/clamd に作成する.

/etc/rc.d/init.d/clamd

#***/bin/bash
# chkconfig: 345 80 20
# description: Clamd daemon
. /etc/init.d/functions
prog="/usr/sbin/clamd"
prog_base="$(basename ${prog})"
prog_config_file="/etc/clamd.conf"
RETVAL=0

case "$1" in
    start)
	action $"Starting ${prog_base}:" ${prog} -c ${prog_config_file}
	RETVAL=$?
	echo
	;;
    stop)
	echo $"Shutting down ${prog_base}"
	killproc ${prog_base}
	RETVAL=$?
	echo
	;;
    status)
	status $"${prog_base}"
	RETVAL=$?
	echo
	;;
    restart)
	$0 stop
	$0 start
	RETVAL=$?
	;;
    reload)
	pid=`pidofproc ${prog_base}`
	kill -USR2 ${pid}
	RETVAL=$?
	;;
    -)
	echo "Usage: $0 {start>stop>status>restart>reload}"
	exit 1
esac

exit $RETVAL

起動スクリプトの登録

起動スクリプトを作成したら実行権限を与え,サーバマシンを起動するたびに起動されるように設定する.そして,ソケット用に指定した /var/run/clamav を作成し,最後に clamd を起動する.

# chmod 755 /etc/rc.d/init.d/clamd
# chkconfig clamd on
# mkdir /var/run/clamav
# service clamd start

使い方

freshclam

# freshclam

を実行すると,ウィルスデータベースが更新される.

clamscan

$ clamscan

を実行するとウィルス検索ができる.詳しくは

$ clamscan –help

$ man clamscan

で確認する.

エラー対応

clamd

clamd の起動に失敗する場合は,/var/log/clamd.log などの log ファイルを参考にする.

ソケットの削除

ソケットファイルが残っていて起動に失敗することがあるので,削除する.

# cd /var/run/clamav
# rm -rf clamd

参考


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS