ClamAV の開発版を利用する。
オープンソースのアンチウイルスソフトウェアである ClamAV が Debian GNU/Linux の stable から削除された。
http://lists.debian.org/debian-security/2009/10/msg00037.html
リポジトリは、かつては SVN だったが現在では git に移行している。
http://www.clamav.net/download/sources
常に開発版の最新のソースコードを利用することにした。
test -d install_clamav || mkdir install_clamav cd install_clamav git clone git://git.clamav.net/git/clamav-devel cd clamav-devel ./configure make sudo make install sudo vim /usr/local/etc/freshclam.conf /usr/local/etc/clamd.conf sudo chmod 700 /usr/local/etc/freshclam.conf sudo cp /usr/local/etc/freshclam.conf /usr/local/etc/freshclam.conf.base sudo cp /usr/local/etc/clamd.conf /usr/local/etc/clamd.conf.base sudo freshclam cd .. test -d /usr/local/src/security/clamav && sudo rm -rf /usr/local/src/security/clamav test -d /usr/local/src/security/clamav-devel && sudo rm -rf /usr/local/src/security/clamav-devel test -d /usr/local/src/security || sudo mkdir -p /usr/local/src/security case $OSTYPE in *darwin*) sudo cp -R clamav-devel /usr/local/src/security sudo chown -R root:wheel /usr/local/src/security/clamav-devel sudo chown root:wheel /usr/local/src/security sudo chown root:wheel /usr/local/src ;; *) sudo cp -a clamav-devel /usr/local/src/security sudo chown -R root:root /usr/local/src/security/clamav-devel sudo chown root:root /usr/local/src/security sudo chown root:root /usr/local/src ;; esac rm -rf clamav-devel/ cd .. rm -rf install_clamav/
あとは cron で定期的にアップグレードとスキャンを実行する。 $EXCLUDEFILE にはスキャン対象外のディレクトリを羅列しておく。
TARGETDIRS="/" LOGFILE=/var/log/clamscan.log EXECDIR=${0%/*} EXCLUDEFILE=$EXECDIR/clamscan_exclude cd /usr/local/src/security/clamav-devel git pull make clean ./configure make make install test -f /usr/local/etc/freshclam.conf.base && cp /usr/local/etc/freshclam.conf.base /usr/local/etc/freshclam.conf test -f /usr/local/etc/clamd.conf.base && cp /usr/local/etc/clamd.conf.base /usr/local/etc/clamd.conf chmod 700 /usr/local/etc/freshclam.conf.base chmod 700 /usr/local/etc/freshclam.conf freshclam if [ -s $EXCLUDEFILE ]; then for i in `cat $EXCLUDEFILE` do if [ $(echo "$i"|grep \/$) ]; then i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d` OPTS="${OPTS} --exclude-dir=$i" else OPTS="${OPTS} --exclude=$i" fi done fi for dir in $TARGETDIRS do echo "clamscan ${dir} ${OPTS} -r -i -l ${LOGFILE}" clamscan ${dir} ${OPTS} -r -i -l ${LOGFILE} done