Fedora Core 6 ClamAV



前書き (執筆:2007/09/19)

ソースファイルからウィルス検知ソフト「Clam AntiVirus」をインストールする方法を記載しています。

インストール

動作に必要なファイルを事前にインストール

# yum -y install zlib-devel
# yum -y install gmp-devel

clamavのユーザー登録

# useradd -s /sbin/nologin clamav -m -d /usr/local/share/clamav -k /dev/null

Clam AntiVirusの最新ソースファイルを入手
最新版は SourceForge で公開されています。

# wget http://nchc.dl.sourceforge.net/sourceforge/clamav/clamav-0.91.2.tar.gz

入手したファイルを解凍

# tar zxvf clamav-0.91.2.tar.gz

解凍したディレクトリに移動

# cd clamav-0.91.2

コンパイル・インストール

# ./configure
# make
# make install

動作設定

ウィルスデータベース更新設定ファイルを修正

# vi /usr/local/etc/freshclam.conf


# Comment or remove the line below.
Example
  ↓
# Comment or remove the line below.
#Example

コメントアウトする

# Path to the log file (make sure it has proper permissions)
# Default: disabled
#UpdateLogFile /var/log/freshclam.log
  ↓
# Path to the log file (make sure it has proper permissions)
# Default: disabled
#UpdateLogFile /var/log/freshclam.log
UpdateLogFile /var/log/freshclam.log

ログを /var/log/freshclam.log へ記録する

# Uncomment the following line and replace XY with your country
# code. See http://www.iana.org/cctld/cctld-whois.htm for the full list.
#DatabaseMirror db.XY.clamav.net
  ↓
# Uncomment the following line and replace XY with your country
# code. See http://www.iana.org/cctld/cctld-whois.htm for the full list.
#DatabaseMirror db.XY.clamav.net
DatabaseMirror db.jp.clamav.net

ウィルスデータベースの入手先を日本のミラーに設定

ログファイルを作成

# touch /var/log/freshclam.log

作成したログファイルの初秋者を変更

# chown clamav:clamav /var/log/freshclam.log

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

# freshclam


ClamAV update process started at Wed Sep 19 10:10:23 2007
Downloading main-44.cdiff [100%]
main.cvd updated (version: 44, sigs: 133163, f-level: 20, builder: sven)
  ・
  ・
  ・
Downloading daily.cvd [100%]
daily.inc updated (version: 4334, sigs: 21086, f-level: 21, builder: ccordes)
Database updated (154249 signatures) from database.clamav.net (IP: 219.117.246.122)

ログローテーションの設定ファイル作成

# vi /etc/logrotate.d/freshclam


/var/log/freshclam.log {
        missingok
        notifempty
        create 644 clamav clamav
}

動作確認

動作検証用のウィルスデータをダウンロード

# wget http://www.eicar.org/download/eicar.com


--10:14:03--  http://www.eicar.org/download/eicar.com
www.eicar.org をDNSに問いあわせています... 88.198.38.136
www.eicar.org|88.198.38.136|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 68 [application/x-msdos-program]
Saving to: `eicar.com'

100%[================================================>] 68          --.-K/s   in 0s

10:14:05 (3.82 MB/s) - `eicar.com' を保存しました [68/68]


下記のようにファイルができます。

# ls
eicar.com


今、ダウンロードしたウィルスのディレクトリをスキャン
動作スイッチは検知したファイルを削除する(--remove)を指定しています。

# clamscan --infected --remove --recursive .
./eicar.com: Eicar-Test-Signature FOUND
./eicar.com: Removed

----------- SCAN SUMMARY -----------
Known viruses: 154249
Engine version: 0.91.2
Scanned directories: 1
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Time: 1.410 sec (0 m 1 s)


先ほどまであった eicar.com のファイルがウィルスとして検知され削除されています。

#ls
#

自動処理の設定

自動処理させるためにスクリプトを作成。

# vi clamav.sh


下記の内容を入力します。

#!/bin/sh
PATH=/bin:/usr/local/bin

# excludelist
excludelist=/root/clamscan.exclude

# make excludelist
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

# update virus databases & ClamAV
freshclam > /dev/null 2>&1

# scan virus
CLAMSCANTMP=`mktemp`
clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1

# virus detect message send
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP

上記のスクリプトは、自動でウィルスデータベースの更新を行った後、全ファイルをスキャンする内容になっています。
また検知したVirusを削除する指定(clamscan --recursive --remove)にしているので誤検知によるファイル削除を防ぐ場合は --remove を取り除きます。
その代わり通知メールで検知ファイルの記載があった場合、早急に対応が必要。
スキャン対象外設定(ファイル)

echo "/backup/backup.tar.bz2" >> clamscan.exclude

スキャン対象外設定(ディレクトリ)
※ディレクトリを除外指定にする場合は末尾に「/」を必ず付加する必要があります。

echo "/proc/" >> clamscan.exclude


cron.dailyへ登録
/etc/cron.daily/のディレクトリに上記で作ったスクリプトを移動させて定時処理させます。

# mv clamav.sh /etc/cron.daily/

毎日自動的にウィルス定義ファイルの最新化後、全ファイルのウィルススキャンが行われ、ウィルスを検知した場合のみroot宛にメールが送られてくるようになる。
※Clam AntiVirusインストールディレクトリにテスト用ウィルスがあるので、インストール後最初の全体スキャンでは必ずウィルス検知メールがくる

clamav-updateインストール

自動でアップデートさせるため、clam-updateをインストールします。
Clam-updateの最新ソースファイルを入手
最新版は SourceForge で公開されています。

# wget http://osdn.dl.sourceforge.jp/clamav-update/26300/clamav-update-2.2.3.tar.gz


入手したソースファイルを解凍

# tar zxvf clamav-update-2.2.3.tar.gz


解凍したディレクトリへ移動

# cd clamav-update-2.2.3


インストール用スクリプトが用意されているので実行

# ./install.sh


clamav-update動作設定

ウィルスデータベースの更新設定を修正します。

# vi /usr/local/etc/freshclam.conf


# By default when started freshclam drops privileges and switches to the
# "clamav" user. This directive allows you to change the database owner.
# Default: clamav (may depend on installation options)
#DatabaseOwner clamav
  ↓
# By default when started freshclam drops privileges and switches to the
# "clamav" user. This directive allows you to change the database owner.
# Default: clamav (may depend on installation options)
#DatabaseOwner clamav
DatabaseOwner root

ウィルスデータベースの所有者をrootに変更

# Run command when freshclam reports outdated version.
# In the command string %v will be replaced by the new version number.
# Default: disabled
#OnOutdatedExecute command
  ↓
# Run command when freshclam reports outdated version.
# In the command string %v will be replaced by the new version number.
# Default: disabled
#OnOutdatedExecute command
OnOutdatedExecute /usr/local/bin/clamav-update.pl --config /usr/local/etc/clamav-update.conf

Clam AntiVirusのアップデート検知時にclam-updateを実行

以上で設定は終了です。



Last-modified: 2015-04-23 (木) 15:24:53 (1004d)