ClamAV インストローリングサンダー

フリーのウィルスチェックツールClamAV
インストール。sendmail との連携を
面白くもなく、可笑しくもなく解説!
(やった手順まんまなので、だいぶ回り道をしています。)
利用バージョン:clamav-0.80rc3


ホームページ
http://www.clamav.net/
から落とす。


●Thinklessなインストール
ソ−スで以下を実施。

# ./configure
checking for clamav in /etc/passwd... no
configure: error: User clamav (and/or group clamav) doesn't exist. Please read the documentation !

アカウントが無いと駄目。ということで、


useradd clamav (アカウント作る)
groupadd clamav (グループを作る)

# ./configure
# make
# make install

ひとまず完了。ソフト単体でのスキャンは以下の様に行う。
/usr/local/bin/clamscan [file名]
んー。遅いなあ。
(単体スキャンはその度にDBを読むから遅いという記述がどこかに・・)


これだけでは、利用用途が狭過ぎるので、
sendmail との連携を考える。(メールのウィルススキャン)


●スキャンのサービス化
/usr/local/etc/clamd.conf を編集 (以下はオリジナルとのdiff)

# diff clamd.conf clamd.conf.ORG
8c8< #Example

    • -

> Example
15d14< LogFile /var/log/clamav/clamd.log
35c34< LogTime

    • -

> #LogTime
59d57< PidFile /var/run/clamd.pid
68d65< DatabaseDirectory /var/lib/clamav
75c72< LocalSocket /var/run/clamav/clamd.sock

    • -

> LocalSocket /tmp/clamd
77d73<
134d129< User clamav
191c186< ScanMail

    • -

> #ScanMail

mkdir /var/log/clamav
chown clamav:clamav /var/log/clamav

  • ウィルスDBでイィレクトリを作成

mkdir /var/lib/clamav
chown clamav:clamav /var/lib/clamav/

cd /var/run
mkdir clamav
chown clamav:clamav clamav


この状態で /usr/local/sbin/clamd しても
ウィルスDBが無いので、以下更新を先にする。


●脱兎更新
/usr/local/etc/freshclam.conf 編集 (以下はオリジナルとのdiff)

# diff freshclam.conf freshclam.conf.ORG
9c9< #Example

    • -

> Example
14c14< DatabaseDirectory /var/lib/clamav

    • -

> #DatabaseDirectory /var/lib/clamav
18c18< UpdateLogFile /var/log/clamav/freshclam.log

    • -

> #UpdateLogFile /var/log/freshclam.log
26c26< LogSyslog

    • -

> #LogSyslog
36d35< PidFile /var/run/freshclam.pid
42d40< DatabaseOwner clamav
54d51< DatabaseMirror db.jp.clamav.net
#

これで、以下ウィルス更新を実施。

# /usr/local/bin/freshclam
ClamAV update process started at Mon Oct 4 00:41:13 2004
SECURITY WARNING: NO SUPPORT FOR DIGITAL SIGNATURES
Downloading main.cvd [*]
main.cvd updated (version: 27, sigs: 23982, f-level: 2, builder: tomek)
Downloading daily.cvd [*]
daily.cvd updated (version: 511, sigs: 706, f-level: 2, builder: ccordes)
Database updated (24688 signatures) from db.jp.clamav.net (219.106.255.66).

(証明書のWARNINGは現在調べ中。ダウンロード自体はできるので、
今回は立ち上げ優先で。どこかに載っていたと思うのだけど・・)


ここで初めて以下でclamd サービス起動

/usr/local/sbin/clamd



sendmail の再コンパイル
clamav が通常のコンパイルでは駄目な事が判明。(clamav-milterが入らない)
./configure --enable-milter
をするも、libmilter が無いと怒られ通らない。


調べると、先にsendmail 側を対応させて上げないと駄目らしい。

devtools/Site/site.config.m4 に以下を追加

APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER')

でもって

./Build clean
./Build -c
./Buold install

以下MILTERが組み込まれていることを確認

# /usr/lib/sendmail -d0 < /dev/null | fgrep MILTER
Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7

  • libmilter インストール

sendmailソース配下の libmilter ディレクトリで以下を実施

./Build
./Build install



clamavコンパイル/インストール
./configure --enable-milter は通るものの、
make にて失敗する。
SO_BINDTODEVICE の宣言エラー。
群青色の脳細胞をフルスロットルしたところ託宣が。
「無視しちゃえ」
ということで、該当の分岐をコメントアウトにてスキップ。
コンパイル/インストール完了。
(していいのか大きく不明。)

# diff ./clamav-milter/clamav-milter.c ./clamav-milter/clamav-milter.c.ORG
1131c1131< /*if(setsockopt(broadcastSock, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr)) < 0) {

    • -

> if(setsockopt(broadcastSock, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr)) < 0) {
1134c1134< }*/

    • -

> }
#



sendmail.cf 更新 (socketを入れる)
sendmail.mc を変更してcfを再作成
/etc/mail/sendmail.cf にコピーする。

# diff sendmail.mc sendmail.mc.ORG
23,24d22< INPUT_MAIL_FILTER(`clmilter', `S=local:/var/run/clamav/clmilter.sock, F=, T=S:4m;R:4m')dnl< define(`confINPUT_MAIL_FILTERS', `clmilter')



● イヨイヨサービス起動

/usr/local/sbin/clamd
/usr/local/sbin/clamav-milter -lo \
--config-file=/usr/local/etc/clamd.conf \
/var/run/clamav/clmilter.sock
/etc/rc2.d/S88sendmail start

後は謹製のウィルス付きボムを送り込んでリジェクトすれば成功。


サービスとするには、稼働チェック、ウィルス脱兎の自動更新等
組み込む必要があるが、それは、好きずきにやってください。

  • 参考にさせて頂いたページは以下の通りです。

http://www.tanu.org/~sakane/doc/public/howto-clamav.html
http://www.src.co.jp/linux/spamass-milter.html