clamav 0.98.4

最終検証日

2014/08/06

コンパイル

注釈

基本的には管理者ユーザ(rootなど)で実施していることを前提としています

#------------------------------------------------------------
# clamav-0.98.4
#------------------------------------------------------------
BASE=/opt/brew
export CPPFLAGS="-I${BASE}/include"
export LDFLAGS="-Wl,-L${BASE}/lib,-R${BASE}/lib"

# ソースダウンロード先
comp_dir=/usr/local/src
# パッケージ名
pack_name=clamav
# バージョン
version=-0.98.4
# ソースのファイル形式
ext=.tar.gz
# 解凍コマンド
tar_cmd="tar zxf"
# インストール先ディレクトリ
ins_dir=/opt/${pack_name}/${version##-}
# ダウンロード元パッケージ
dl_uri="http://downloads.sourceforge.net/project/clamav/clamav/0.98.4/clamav-0.98.4.tar.gz?r=http%3A%2F%2Fwww.clamav.net%2Flang%2Fen%2Fdownload%2Fsources%2F&ts=1406514155&use_mirror=jaist"
# コンパイル時の並列数
proc_num=`cat /proc/cpuinfo | grep processor | wc -l`

cd ${comp_dir}
rm -rf ${pack_name}${version}
wget -c ${dl_uri} -O ${pack_name}${version}${ext}
${tar_cmd} ${pack_name}${version}${ext}
cd ${pack_name}${version}
./configure \
    --prefix=${ins_dir} \
    --with-openssl=${BASE} \
    --with-xml=${BASE} \
    --with-zlib=${BASE} \
    && nice -n 15 make -j${proc_num}\
    && make install

# ウィルス定義ファイルの保存先ディレクトリの作成
mkdir -p ${ins_dir}/share/clamav

# デーモンとして動作させるときのユーザ作成
id clamav || useradd -r clamav

# ウィルス定義DB保存先の権限変更
chown clamav.clamav /opt/clamav/0.98.4/share/clamav/

Pathの設定

for type in $(ls -1 ${ins_dir})
do
    for src in $(find ${ins_dir}/${type} -xtype f)
    do
        parent=`dirname ${src#*/${type}/}`
        filename=`basename ${src}`
        mkdir -p /opt/brew/$type/$parent
        echo "ln -fs ${src} ${BASE}/${type}/${parent}/${filename}"
        ln -fs ${src} ${BASE}/${type}/${parent}/${filename}
    done
done

grep -q ${BASE}/bin ~/.bashrc \
  || echo "export PATH=${BASE}/bin:${BASE}/sbin:"'${PATH}' >> ~/.bashrc \
  ;  source ~/.bashrc

主なconfigureオプション

--prefix=[DIR]
インストール先ディレクトリの指定
--with-openssl=[DIR]
opensslのインストール先ディレクトリの指定
--with-zlib=[DIR]
zlibのインストール先ディレクトリの指定

設定ファイル

デーモン系

設定ファイルの作成

# {PREFIX}/etc 配下にサンプルファイルがあります
# そのサンプルファイルをコピーして作成します
cd ${ins_dir}/etc
cp clamd.conf.sample clamd.conf

最低限の設定

設定ファイルにはサンプルの場合、サンプルと区別するための文言がありますので消去します。 その他ローカル接続の際、ソケットファイルを用いて動作させるように設定します。

# diff -u clamd.conf.sample clamd.conf
--- clamd.conf.sample   2014-07-29 20:18:50.386998155 +0900
+++ clamd.conf  2014-07-29 22:34:47.522986997 +0900
@@ -5,7 +5,7 @@


 # Comment or remove the line below.
-Example
+# Example

 # Uncomment this option to enable logging.
 # LogFile must be writable for the user running daemon.
@@ -82,7 +82,7 @@

 # Path to a local socket file the daemon will listen on.
 # Default: disabled (must be specified by a user)
-#LocalSocket /tmp/clamd.socket
+LocalSocket /tmp/clamd

 # Sets the group ownership on the unix socket.
 # Default: disabled (the primary group of the user running clamd)

ウィルス更新系

設定ファイルの作成

# {PREFIX}/etc 配下にサンプルファイルがあります
# そのサンプルファイルをコピーして作成します
cd ${ins_dir}/etc
cp freshclam.conf.sample freshclam.conf

最低限の設定

設定ファイルにはサンプルの場合、サンプルと区別するための文言がありますので消去します。

# diff -u freshclam.conf.sample freshclam.conf
--- freshclam.conf.sample       2014-07-29 20:18:50.396998166 +0900
+++ freshclam.conf      2014-07-29 22:34:56.523986647 +0900
@@ -5,7 +5,7 @@


 # Comment or remove the line below.
-Example
+# Example

 # Path to the database directory.
 # WARNING: It must match clamd.conf's directive!

簡単な動作確認

# ウィルス定義更新
freshclam

# ウィルススキャン
clamscan --infected --remove --recursive

# ダミーウィルスのダウンロード
wget http://www.eicar.org/download/eicar.com
wget http://www.eicar.org/download/eicar.com.txt
wget http://www.eicar.org/download/eicar_com.zip
wget http://www.eicar.org/download/eicarcom2.zip

# もう一度スキャン
/opt/brew/bin/clamscan --infected --remove --recursive