ウィルス対策(Clam Antivirus)

Clam AntivirusはGPLライセンスに従って利用することができるオープンソースのソフトウェアであり、LinuxやBSD、Mac OS Xなど各種UNIX系のシステムで動作するアンチウイルスソフト。しかしyumではなかなか最新版にアップデートされないのでwgetでソースからインストールすることにする。
■古いバージョンのclamavがある場合はアンインストールしておく

アンインストール用にバックアップしてあったモジュールを展開。
[root@server1 ~]# tar zxvf clamav-0.97.1_self.tar.gz
clamav-0.97.1のディレクトリへ移動
[root@server1 ~]# cd clamav-0.97.1
clamav-0.97.1のアンインストール
[root@server1 clamav-0.97.1]# make uninstall
clamav-0.97.1のファイルとディレクトリーを削除
[root@server1 clamav-0.97.1]# cd
[root@server1 ~]# rm -f clamav-0.97.1_self.tar.gz
[root@server1 ~]# rm -rf clamav-0.97.1
古いバージョンのディレクトリーの削除
[root@server1 ~]# rm -rf /usr/local/clamav

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

clamavはインストールする前に
「clamav」という名前のユーザとグループを作成しておく必要がある。
[root@server1 ~]# groupadd clamav
[root@server1 ~]# useradd -g clamav -s /bin/false clamav

■最新版のClamAVをダウンロード (最新版は公式サイトで確認できる

[root@server11 ~]# wget http://downloads.sourceforge.net/clamav/clamav-0.97.2.tar.gz
--2011-09-19 18:44:56--  http://downloads.sourceforge.net/clamav/clamav-0.97.2.tar.gz
downloads.sourceforge.net をDNSに問いあわせています... 216.34.181.59
downloads.sourceforge.net|216.34.181.59|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 301 Moved Permanently
場所: http://downloads.sourceforge.net/project/clamav/clamav/0.97.2/clamav-0.97.2.tar.gz [続く]
--2011-09-19 18:44:56--  http://downloads.sourceforge.net/project/clamav/clamav/0.97.2/clamav-0.97.2.tar.gz
downloads.sourceforge.net:80 への接続を再利用します。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: http://jaist.dl.sourceforge.net/project/clamav/clamav/0.97.2/clamav-0.97.2.tar.gz [続く]
--2011-09-19 18:44:57--  http://jaist.dl.sourceforge.net/project/clamav/clamav/0.97.2/clamav-0.97.2.tar.gz
jaist.dl.sourceforge.net をDNSに問いあわせています... 2001:200:141:feed::feed, 150.65.7.130
jaist.dl.sourceforge.net|2001:200:141:feed::feed|:80 に接続しています... 失敗しました: 接続を拒否されました.
jaist.dl.sourceforge.net|150.65.7.130|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 44703953 (43M) [application/x-gzip]
`clamav-0.97.2.tar.gz' に保存中
100%[=========================================================================>] 44,703,953  15.3M/s 時間 2.8s
2011-09-19 18:45:00 (15.3 MB/s) - `clamav-0.97.2.tar.gz' へ保存完了 [44703953/44703953]
clamav-0.97.2を展開
[root@server1 ~]# tar zxvf clamav-0.97.2.tar.gz
ダウンロードしたファイルを削除
[root@server1 ~]# rm -f clamav-0.97.2.tar.gz
clamav-0.97.2ディレクトリーへ移動
[root@server1 ~]# cd clamav-0.97.2
Makefileを自動作成するためのツール「configure」を実行。
[root@server1 clamav-0.97.2]# ./configure --prefix=/usr/local/clamav
途中、zlib-devel パッケージがインストールされてないようでエラーになった。
zlib-devel パッケージをインストール。
[root@server1 ~]# yum install zlib-devel
再度「configure」を実行。
[root@server1 clamav-0.97.2]# ./configure --prefix=/usr/local/clamav
makeを実行し、clamavをインストール
[root@server1 clamav-0.97.2]# make
[root@server1 clamav-0.97.2]# make install

■アンインストール用にバックアップしておく

[root@server1 clamav-0.97.2]# cd
[root@server1 ~]# tar cvf clamav-0.97.2_self.tar ./clamav-0.97.2
[root@server1 ~]# gzip clamav-0.97.2_self.tar

■設定ファイル変更
インストールが正常に完了したらまず、二つの設定ファイル
/usr/local/clamav/etc/freshclam.conf
/usr/local/clamav/etc/clamd.conf
をエディタで開きExampleと書かれた行をコメントアウトし、保存。

[root@server1 ~]# vi /usr/local/clamav/etc/freshclam.conf
# Comment or remove the line below.
Example
↓
#Example
[root@server1 ~]# vi /usr/local/clamav/etc/clamd.conf
# Comment or remove the line below.
Example
↓
#Example

■「freshclam」を使用してVirusDBをアップデート

[root@server1 ~]# /usr/local/clamav/bin/freshclam
ClamAV update process started at Mon Sep 19 19:24:31 2011
main.cvd is up to date (version: 53, sigs: 846214, f-level: 53, builder: sven)
WARNING: getfile: daily-13357.cdiff not found on remote server (IP: 219.106.242.51)
WARNING: getpatch: Can't download daily-13357.cdiff from database.clamav.net
WARNING: getfile: daily-13357.cdiff not found on remote server (IP: 203.212.42.128)
WARNING: getpatch: Can't download daily-13357.cdiff from database.clamav.net
WARNING: getfile: daily-13357.cdiff not found on remote server (IP: 27.96.54.66)
WARNING: getpatch: Can't download daily-13357.cdiff from database.clamav.net
WARNING: Incremental update failed, trying to download daily.cvd
Downloading daily.cvd [100%]
daily.cvd updated (version: 13636, sigs: 193983, f-level: 60, builder: arnaud)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 144, sigs: 41, f-level: 60, builder: edwin)
Database updated (1040238 signatures) from database.clamav.net (IP: 120.29.176.126)

■ウィルススキャン確認(/etc/passwdをスキャンしてみる)

[root@server1 ~]# /usr/local/clamav/bin/clamscan --infected --remove --recursive /etc/passwd
----------- SCAN SUMMARY -----------
Known viruses: 1038820
Engine version: 0.97.2
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 8.935 sec (0 m 8 s)
version: 0.97.2でスキャンされてることを確認

■Clam AntiVirusの定期自動実行設定

毎日自動的にウィルス定義ファイル最新化して、全てのファイルのウィルススキャンを行うスプリクトの作成
[root@server1 ~]# vi clamscan
#!/bin/bash
PATH=/usr/bin:/bin
# excludelist
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
CLAMSCANTMP=`mktemp`
/usr/local/clamav/bin/freshclam > /dev/null
/usr/local/clamav/bin/clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP

■Clam AntiVirus定期自動実行スクリプトに実行権限付加

[root@server1 ~]# chmod 700 clamscan

■cron編集

[root@server1 ~]# crontab -e
00 03 * * * /root/clamscan ← 追加(毎日3:00にClam AntiVirusの定期自動実行)

■スキャン除外設定

/backupディレクトリと/sysディレクトリをスキャン対象外にするように設定
[root@server1 ~]# echo "/backup/" >> clamscan.exclude
[root@server1 ~]# echo "/sys/" >> clamscan.exclude