オープンソースのウィルス対策ソフトである Clam AntiVirus をCentOSにインストールする

サーバー上でのウィルス対策ツールは、サーバーの負荷などを考えると絶対に入れた方がいいとも言い切れないが、無いよりはマシかもという保険的な対策として導入してみた。

EPEL リポジトリ導入

# rpm -Uvh  http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Clam AntiVirus 導入

# yum -y --enablerepo=epel install clamd

以下のコマンドで root 権限でのみ動作するように変更する。

# vim /etc/clamd.conf

エディタで開かれた先で、以下のように変更する。

User clamav
↓
#User clamav

Clam AntiVirusを起動する

# /etc/rc.d/init.d/clamd start

clamdを自動起動に設定する

# chkconfig clamd on

ウィルス定義ファイル更新機能の有効化する

# vim /etc/freshclam.conf

エディタで開かれた先に、Exampleの文字を探す。コメントアウトされていなかったら#を先頭に追記する。

#Example

最新のウィルス定義ファイルに更新する

# freshclam

ウィルススキャンテストをする

# clamscan --infected --remove --recursive

以下のような結果がでる。

----------- SCAN SUMMARY -----------
Known viruses: 3979535
Engine version: 0.98.7
Scanned directories: 2
Scanned files: 7
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 12.344 sec (0 m 12 s)

ウィルススキャンの定期自動実行設定をする

このままだと、手動コマンドで実行しないかぎりウィルススキャンしてくれないので、cronで定期的に実施させ、その結果をrootにメールで送信するように設定する。

# vim /etc/cron.daily/virusscan

開かれた画面で、以下のコマンドをコピペする。
※エディタのバグなのか、長文をコピペすると先頭や語尾が切れたりする場合があるので保存する前によく注意しよう。

#!/bin/bash

PATH=/usr/bin:/bin

# clamd update
yum -y update clamd > /dev/null 2>&1

# excludeopt setup
excludelist=/root/clamscan.exclude
if [ -s $excludelist ]; then
    for i in `cat $excludelist`
    do
        if [ $(echo "$i"|grep \/$) ]; then
            i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
            excludeopt="${excludeopt} --exclude-dir=^$i" 
        else
            excludeopt="${excludeopt} --exclude=^$i" 
        fi
    done
fi

# virus scan
CLAMSCANTMP=`mktemp`
clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \

# report mail send
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP

最後に、cron.dailyに設置したvirusscanの実行権限を付与する。

# chmod +x /etc/cron.daily/virusscan