ClamAVの検知率を上げる

ClamAV

運営しているメールサーバで送受信毎にメールのマルウエアをスキャンしているのだが、セキュリティソフトのClamAVとClamAVの標準シグネチャデータベース(マルウエアのパターンデータ)を使っていると殆ど検知しない。実際にいろんなデータで試してみると多くがスッカスカの素通り。もともとClamAVは検知率は高くない方だがこれは酷い。

そこでClamAVオフィシャルのシグネチャではなくサードパーティのシグネチャを利用するようにして検知率を多少なりとも上げたい。
なお、AV-TESTの上位製品に肩を並べる程には劇的に検知率が上がるわけではないので過剰な期待はしないこと。ClamAVの標準シグネチャデータベースだけを使う場合で1割以下の検知率だとするとSanesecurityあたりを追加すると9割(以上)くらい検知する。1割から9割に向上なら優秀そうだけど1割の取りこぼしは結構大きい。有名処のセキュリティソフトだともう一段二段上。Sanesecurityは新しいマルウエアへの対応はまあまあ早め。

ClamAVで使えるシグネチャを配布しているサードパーティの有名処は以下。

FreeBSDの場合はClamAVをports/pkgでインストールしているならこれらサードパーティのシグネチャを簡単に扱えるsecurity/clamav-unofficial-sigsが使える。
FreeBSD以外ならGitHubからclamav-unofficial-sigsを取ってくるか使ってるOS/ディストリビューション用のパッケージを拾ってくるなど。

インストール
# cd /usr/ports/security/clamav-unofficial-sigs
# make install clean

設定ファイルは/usr/local/etc/clamav-unofficial-sigsにある。

これで1つの設定項目を除いて動く状態にはなっているがMalwarePatrolとSecuriteInfoのシグネチャを使いたい場合はそれぞれのサイトでサインアップして識別番号(コード)を貰う必要がある。無料版と有料版がある。
SecuriteInfoのコードはSecuriteInfoのウェブサイトにログインし[Setup]タブを開くと7つのリンクが並んでいて(上下の段に分かれて同じリンクがある)、そのリンクのhttp://www.securiteinfo.com/get/signatures/の後に続く128文字。

設定ファイルは基本的にはmaster.confは触らない。os.confはFreeBSDのports/pkgでインストールしたならFreeBSD用の設定になっているので触る必要はない。触るのはuser.conf。master.confの中に触りたい項目があればuser.confにそれを書くという方法でいける。

以下4項目はuser.conf

MalwarePatrolのコードを取得しているなら次のような1行を有効にする。(コードを入力し行頭の#を取る)
malwarepatrol_receipt_code="a0000000000"
SecuriteInfoのコードを取得しているなら次のような1行を有効にする。(コードを入力し行頭の#を取る)
securiteinfo_authorisation_signature="128文字"
導入直後は動作確認のためのログが欲しい。そこで次の1行をどこかに挿入。
logging_enabled="yes"
そして絶対に変更を忘れてはダメなのは次の1行。
user_configuration_complete="yes"

/etc/crontabに次の1行を追加。
32	*	*	*	*	clamav	[ -x /usr/local/bin/clamav-unofficial-sigs.sh ] && /usr/local/bin/bash /usr/local/bin/clamav-unofficial-sigs.sh > /dev/null

少なくとも1回以上手動でまたはcronでclamav-unofficial-sigs.shを走らせてから確認を実施。

bashなどのshellで実行
# clamscan --debug 2>&1 /dev/null | grep "loaded"
あとは実際にマルウエア入りのメールが届けば/var/log/clamav/clamd.logに記録される。
Tue Jul 19 18:00:32 2016 -> fd[10]: Sanesecurity.Foxhole.Zip_fs296.UNOFFICIAL FOUND
Tue Jul 19 19:00:38 2016 -> fd[10]: Sanesecurity.Spam.12404.Ml.UNOFFICIAL FOUND

上の例ではSanesecurityのシグネチャで検知されている。