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
場合によってはうまくコンパイルできないことがある.次の例を参考にしてほしい.
以下の設定は,クライアント/サーバとも行う必要がある.
/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
/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
で行う.ウィルスデータベースはほぼ1日に1回更新されている.常時接続環境にあれば,「サーバ用設定」−「cron への登録」−「freshclam」で,/etc/cron.daily/freshclam を作成するとよい{{fn 常時マシンが起動されていなくても,マシンが起動してからしばらくたつと自動的に cron が実行される(anacron).}}.
ウィルスチェックを行うときは,
$ clamscan -r <Directory>
を実行すると,<Directory> 以下のファイル/ディレクトリが再帰的に検査される.
自動的にウィルスチェックを行わせるためには,「サーバ用設定」−「cron への登録」−「clamscan」で,/etc/cron.daily/clamscan を作成するとよい.
毎日 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
自動的にウィルスに感染したファイルを検索させるには,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
freshclam のログは /var/log/freshclam.log にできる.これを lotate する.あまり大きなログではないので,1ヶ月に一回 lotate することにする.
/etc/logrotate.d/freshclam
/var/log/freshclam.log { monthly missingok }
clamscan のログは /var/log/clamscan.log にできる.これを lotate する.これもあまり大きなログではないので,1ヶ月に一回 lotate することにする.
/etc/logrotate.d/clamscan
/var/log/clamscan.log { monthly missingok }
サーバマシンの起動時に 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
を実行すると,ウィルスデータベースが更新される.
$ clamscan
を実行するとウィルス検索ができる.詳しくは
$ clamscan –help
や
$ man clamscan
で確認する.
clamd の起動に失敗する場合は,/var/log/clamd.log などの log ファイルを参考にする.
ソケットファイルが残っていて起動に失敗することがあるので,削除する.
# cd /var/run/clamav # rm -rf clamd