ClamAVをsquidで利用する
ウェブのプロキシサーバを通してアクセスする時に、できれば安全にしたい、ということで、ウイルスチェッカーを導入することにした。
利用しているサーバはDebian lennyでsquid3なので、ClamAVを統合することにして、squidclamavで二つの間をつなぐことに。
aptitude install clamav clamav-freshclam clamav-daemon
aptitude install libcurl4-openssl-dev
clamav-dataではなくclamav-freshclamをとりあえず選択したが、-dataの方がよかったかもしれない。とはいえ、どちらでも正常に動けばたいして変わりはない、はず。下のほうはsquidclamavのmakeに必要な依存ライブラリ。
squildclamavの.tar.gz (現時点では4.0) をダウンロードして、適当に/usr/local/srcなどで展開、./configure; make; make install する。この時点で、
/usr/local/bin/squidclamav (実行バイナリ)
/etc/squidclamav.conf.dist (設定ファイルの雛形)
がインストールされているはず。
ここまで終われば後は設定。
ClamAVをどうやってつなぐかによるが、今回はunix socketを選択したので、
dpkg-reconfigure clamav-base
を実行してtcpでなくてunixを選択しておく。squidの設定変更は、
http_access deny to_localhost
url_rewrite_program /usr/local/bin/squidclamav
url_rewrite_children 15
url_rewrite_access deny localhost
あたり。clamav.confは特には変えないが、LocalSocketの値は後で必要。squidclamav.confは、~.distからコピーして適宜書き換える。とりあえずはこんな感じ。
$ grep -v ^# squidclamav.conf
squid_ip 127.0.0.1
squid_port 3128
logfile /var/log/squidclamav.log
redirect http://<domain>/clwarn.cgi
debug 0
force 1
stat 1
maxredir 15
clamd_local /var/run/clamav/clamd.ctl
timeout 60
useragent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
trust_cache 0content ^.*\/.*$
ここでのredirectの設定先は、エラーをクライアントに返すときのCGIなので、適当に何でもいいかもしれないが、一応ソースのclwarn.cgiをコピーしておいた。(+Apacheの設定も必要)
あとは必要ならlogrotate.dの下にsquidclamav.logのためのエントリを追加とかはあるけれど、大体これで動く。はず。
日本語化に関しては、単純にclwarn.cgiだけの話なので、どうせ検出メッセージを見てなにかすることはあるまいと思って放置。