2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

SquidClamAVでウィルススキャン!

SquidClamAV (ただし、ここはダウンロードサイトのみのようなのでほとんど情報がないので日本語サイトのつもりで、このネタを書きました)は、Squidのための専用ClamAV antivirusリダイレクタです。SquidClamAVは、regex正規表現ライブラリを使ったリダイレクタと、その他正規表現ライブラリを使ってclamavに基づくウィルスチェッカーを走らせスキャニングすることができます。
このSquidClamAVは、インストールするのが簡単であり、重いSquidアクセスがあっても軽量に働いています。APG(AntiVirus Proxy Gateway、以降APGと言う)は、近年注目されていますが、単独動作とSquidからキックされるものの二種類が有ります。単独動作のAPGは、ポートフォワード的な動作のため、実際にブラウザからブラウジングするときに多少ストレスを感じますが、SquidからキックするSquidClamAVのようなAPGでは、あたかもSquidの一プロセスで動くような感じとなり、ほとんどストレス無くブラウジングが出来るのが特徴です。その代わり、SquidClamAVは、Squid側のsquid.confの設定が少しややこしくなります。しかし、使ってみて体感的には、すごく軽いです。

セットアップ環境)
マシン:Celeron 700MHz
OS:Debian GNU/Linux 4.0 etch
Kernel:2.6.18
squid バージョン:
||/ Name Version Description
+++-==============-==============
ii squid 2.6.5-6 Internet Object Cache (WWW proxy cache)


1.SquidClamAV本体のインスコの前に

1)バイナリパッケージのインスコ
まずは、clamavウィルスチェッカーのセットアップは必須なので、clamav Debianパッケージをインスコする。また、ClamAVのソースからインスコする場合は、 ここ のしょっぱなを参照すると良いでしょう。
michi:~# apt-get update
Get:1 http://ftp.dti.ad.jp stable Release.gpg [378B]
Get:2 http://ftp.dti.ad.jp stable Release [58.2kB]
Get:3 http://www.ring.gr.jp stable Release.gpg [378B]
Ign http://ftp.dti.ad.jp stable/main Packages/DiffIndex
Hit http://www.ring.gr.jp stable Release
Ign http://ftp.dti.ad.jp stable/main Sources/DiffIndex
Get:4 http://ftp.dti.ad.jp stable/main Packages [5629kB]
Ign http://www.ring.gr.jp stable/main Packages/DiffIndex
Ign http://www.ring.gr.jp stable/main Sources/DiffIndex
Hit http://www.ring.gr.jp stable/main Packages
Hit http://www.ring.gr.jp stable/main Sources
Get:5 http://security.debian.org stable/updates Release.gpg [189B]
Get:6 http://security.debian.org stable/updates Release [22.5kB]
Ign http://security.debian.org stable/updates Release
Ign http://security.debian.org stable/updates/main Packages/DiffIndex
Get:7 http://security.debian.org stable/updates/main Packages [146kB]
Get:8 http://ftp.dti.ad.jp stable/main Sources [1653kB]
Fetched 7509kB in 11s (659kB/s)
Reading package lists… Done
W: GPG error: http://security.debian.org stable/updates Release:
The following signatures were invalid: BADSIG A70DAF536070D3A1
Debian Archive Automatic Signing Key (4.0/etch) <ftpmaster@debian.org>
W: You may want to run apt-get update to correct these problems

michi:~# apt-get install clamav clamav-daemon libclamav-dev
Reading package lists… Done
Building dependency tree… Done
The following extra packages will be installed:
clamav-base clamav-freshclam comerr-dev libbz2-dev libclamav2 libcurl3-dev
libcurl3-openssl-dev libgmp3-dev libgmp3c2 libgmpxx4 libidn11-dev libkadm55
libkrb5-dev libssl-dev pkg-config zlib1g-dev
Suggested packages:
unrar lha clamav-docs daemon doc-base libcurl3-dbg libgmp3-doc libmpfr-dev
krb5-doc libgnome-dev
Recommended packages:
arj unzoo
The following NEW packages will be installed:
clamav clamav-base clamav-daemon clamav-freshclam comerr-dev libbz2-dev
libclamav-dev libclamav2 libcurl3-dev libcurl3-openssl-dev libgmp3-dev
libgmp3c2 libgmpxx4 libidn11-dev libkadm55 libkrb5-dev libssl-dev pkg-config
zlib1g-dev
0 upgraded, 19 newly installed, 0 to remove and 12 not upgraded.
Need to get 17.2MB of archives.
After unpacking 28.3MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
WARNING: The following packages cannot be authenticated!
libclamav2 clamav-base clamav-freshclam clamav clamav-daemon libkadm55
libkrb5-dev libcurl3-openssl-dev libcurl3-dev libclamav-dev
Install these packages without verification [y/N]? y
Get:1 http://www.ring.gr.jp stable/main libgmp3c2 2:4.2.1+dfsg-4 [430kB]
Get:2 http://security.debian.org stable/updates/main libclamav2 0.90.1-3etch4 [366k]
Get:3 http://www.ring.gr.jp stable/main libbz2-dev 1.0.3-6 [31.9kB]
Get:4 http://www.ring.gr.jp stable/main zlib1g-dev 1:1.2.3-13 [406kB]
Get:5 http://www.ring.gr.jp stable/main libssl-dev 0.9.8c-4 [2087kB]
Get:6 http://security.debian.org stable/updates/main clamav-base 0.90.1-3etch4 [201B]
Get:7 http://www.ring.gr.jp stable/main pkg-config 0.21-1 [67.5kB]
Get:8 http://www.ring.gr.jp stable/main libidn11-dev 0.6.5-1 [544kB]
Get:9 http://www.ring.gr.jp stable/main comerr-dev 2.1-1.39+1.40-WIP-2006.11.14+dfs-2 [46.3kB]
Get:10 http://security.debian.org stable/updates/main clamav-freshclam 0.90.1-3etch[9300kB]
Get:11 http://www.ring.gr.jp stable/main libgmpxx4 2:4.2.1+dfsg-4 [217kB]
Get:12 http://www.ring.gr.jp stable/main libgmp3-dev 2:4.2.1+dfsg-4 [511kB]
Get:13 http://security.debian.org stable/updates/main clamav 0.90.1-3etch4 [854kB]
Get:14 http://security.debian.org stable/updates/main clamav-daemon 0.90.1-3etch4 [75kB]
Get:15 http://security.debian.org stable/updates/main libkadm55 1.4.4-7etch2 [174kB]
Get:16 http://security.debian.org stable/updates/main libkrb5-dev 1.4.4-7etch2 [680kB]
Get:17 http://security.debian.org stable/updates/main libcurl3-openssl-dev 7.15.5-1etch1 [765kB]
Get:18 http://security.debian.org stable/updates/main libcurl3-dev 7.15.5-1etch1 [22.2kB]
Get:19 http://security.debian.org stable/updates/main libclamav-dev 0.90.1-3etch4 [368kB]
Fetched 17.2MB in 35s (486kB/s)
Preconfiguring packages …
Selecting previously deselected package libgmp3c2.
(Reading database … 30301 files and directories currently installed.)
Unpacking libgmp3c2 (from …/libgmp3c2_2%3a4.2.1+dfsg-4_i386.deb) …
Selecting previously deselected package libclamav2.
Unpacking libclamav2 (from …/libclamav2_0.90.1-3etch4_i386.deb) …
Selecting previously deselected package clamav-base.
Unpacking clamav-base (from …/clamav-base_0.90.1-3etch4_all.deb) …
Selecting previously deselected package clamav-freshclam.
Unpacking clamav-freshclam (from …/clamav-freshclam_0.90.1-3etch4_i386.deb) …
Selecting previously deselected package clamav.
Unpacking clamav (from …/clamav_0.90.1-3etch4_i386.deb) …
Selecting previously deselected package clamav-daemon.
Unpacking clamav-daemon (from …/clamav-daemon_0.90.1-3etch4_i386.deb) …
Selecting previously deselected package libbz2-dev.
Unpacking libbz2-dev (from …/libbz2-dev_1.0.3-6_i386.deb) …
Selecting previously deselected package zlib1g-dev.
Unpacking zlib1g-dev (from …/zlib1g-dev_1%3a1.2.3-13_i386.deb) …
Selecting previously deselected package libssl-dev.
Unpacking libssl-dev (from …/libssl-dev_0.9.8c-4_i386.deb) …
Selecting previously deselected package pkg-config.
Unpacking pkg-config (from …/pkg-config_0.21-1_i386.deb) …
Selecting previously deselected package libidn11-dev.
Unpacking libidn11-dev (from …/libidn11-dev_0.6.5-1_i386.deb) …
Selecting previously deselected package libkadm55.
Unpacking libkadm55 (from …/libkadm55_1.4.4-7etch2_i386.deb) …
Selecting previously deselected package comerr-dev.
Unpacking comerr-dev (from …/comerr-dev_2.1-1.39+1.40-WIP-2006.11.14+dfsg-2_i386.deb) …
Selecting previously deselected package libkrb5-dev.
Unpacking libkrb5-dev (from …/libkrb5-dev_1.4.4-7etch2_i386.deb) …
Selecting previously deselected package libcurl3-openssl-dev.
Unpacking libcurl3-openssl-dev (from …/libcurl3-openssl-dev_7.15.5-1etch1_i386.deb) …
Selecting previously deselected package libcurl3-dev.
Unpacking libcurl3-dev (from …/libcurl3-dev_7.15.5-1etch1_all.deb) …
Selecting previously deselected package libgmpxx4.
Unpacking libgmpxx4 (from …/libgmpxx4_2%3a4.2.1+dfsg-4_i386.deb) …
Selecting previously deselected package libgmp3-dev.
Unpacking libgmp3-dev (from …/libgmp3-dev_2%3a4.2.1+dfsg-4_i386.deb) …
Selecting previously deselected package libclamav-dev.
Unpacking libclamav-dev (from …/libclamav-dev_0.90.1-3etch4_i386.deb) …
Setting up libgmp3c2 (4.2.1+dfsg-4) …

Setting up libclamav2 (0.90.1-3etch4) …

Setting up clamav-base (0.90.1-3etch4) …
Adding system user `clamav’ (UID 108) …
Adding new group `clamav’ (GID 107) …
Adding new user `clamav’ (UID 108) with group `clamav’ …
Not creating home directory `/var/lib/clamav’.
/etc/mail/aliases: 15 aliases, longest 16 bytes, 176 bytes total

Setting up clamav-freshclam (0.90.1-3etch4) …
Starting ClamAV virus database updater: freshclam.

Setting up clamav (0.90.1-3etch4) …
Setting up clamav-daemon (0.90.1-3etch4) …
Starting ClamAV daemon: clamd Running as user clamav (UID 108, GID 107).

Setting up libbz2-dev (1.0.3-6) …

Setting up zlib1g-dev (1.2.3-13) …
Setting up libssl-dev (0.9.8c-4) …
Setting up pkg-config (0.21-1) …
Setting up libidn11-dev (0.6.5-1) …

Setting up libkadm55 (1.4.4-7etch2) …

Setting up comerr-dev (2.1-1.39+1.40-WIP-2006.11.14+dfsg-2) …

Setting up libkrb5-dev (1.4.4-7etch2) …
Setting up libcurl3-openssl-dev (7.15.5-1etch1) …

Setting up libcurl3-dev (7.15.5-1etch1) …
Setting up libgmpxx4 (4.2.1+dfsg-4) …

Setting up libgmp3-dev (4.2.1+dfsg-4) …
Setting up libclamav-dev (0.90.1-3etch4) …

2)動作確認
動いてるかどうかの、clamavのプロセス確認。
michi:~# ps -ef
省略
clamav 23947 1 6 16:42 ? 00:00:06 /usr/bin/freshclam -d –quiet
clamav 24202 1 80 16:42 ? 00:01:26 /usr/sbin/clamd
省略

freshclam(clamavアップデータ)の起動確認。
michi:~# tail /var/log/clamav/freshclam.log
————————————–
————————————–
freshclam daemon 0.90.1 (OS: linux-gnu, ARCH: i386, CPU: i486)
ClamAV update process started at Sun Aug 19 16:49:38 2007
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.90.1 Recommended version: 0.91.1
DON’T PANIC! Read http://www.clamav.net/support/faq
main.inc is up to date (version: 44, sigs: 133163, f-level: 20, builder: sven)
daily.cvd is up to date (version: 3992, sigs: 14556, f-level: 20, builder: ccordes)
————————————–


2.SquidClamAVのインスコ

michi:~# cd /usr/local/src/

1)ソースのダウンロード
squidclamavの ダウンロードサイト 。2007年8月現在では、 squidclamav-3.0.tar.gz が最新であった。
michi:/usr/local/src# wget http://www.samse.fr/GPL/squidclamav/squidclamav-3.0.tar.gz
–16:55:12– http://www.samse.fr/GPL/squidclamav/squidclamav-3.0.tar.gz
=> `squidclamav-3.0.tar.gz’
Resolving www.samse.fr… 195.101.77.166
Connecting to www.samse.fr|195.101.77.166|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 128,954 (126K) [application/x-gzip]

100%[====================================================>] 128,954 81.64K/s

16:55:15 (81.55 KB/s) – `squidclamav-3.0.tar.gz’ saved [128954/128954]

2)ソースの展開
michi:/usr/local/src/squidclamav# tar zxvf squidclamav-3.0.tar.gz
michi:/usr/local/src# cd squidclamav

3)Makefileを作成する
michi:/usr/local/src/squidclamav# ./configure

checking for a BSD-compatible install… /usr/bin/install -c
checking whether build environment is sane… yes
checking for gawk… no
checking for mawk… mawk
checking whether make sets $(MAKE)… yes
checking for gcc… gcc
checking for C compiler default output file name… a.out
checking whether the C compiler works… yes
checking whether we are cross compiling… no
checking for suffix of executables…
checking for suffix of object files… o
checking whether we are using the GNU C compiler… yes
checking whether gcc accepts -g… yes
checking for gcc option to accept ANSI C… none needed
checking for style of include used by make… GNU
checking dependency style of gcc… gcc3
checking for a BSD-compatible install… /usr/bin/install -c
checking for main in -lcurl… yes
checking how to run the C preprocessor… gcc -E
checking for egrep… grep -E
checking for ANSI C header files… yes
checking for sys/types.h… yes
checking for sys/stat.h… yes
checking for stdlib.h… yes
checking for string.h… yes
checking for memory.h… yes
checking for strings.h… yes
checking for inttypes.h… yes
checking for stdint.h… yes
checking for unistd.h… yes
checking arpa/inet.h usability… yes
checking arpa/inet.h presence… yes
checking for arpa/inet.h… yes
checking fcntl.h usability… yes
checking fcntl.h presence… yes
checking for fcntl.h… yes
checking netdb.h usability… yes
checking netdb.h presence… yes
checking for netdb.h… yes
checking netinet/in.h usability… yes
checking netinet/in.h presence… yes
checking for netinet/in.h… yes
checking for stdlib.h… (cached) yes
checking for string.h… (cached) yes
checking sys/socket.h usability… yes
checking sys/socket.h presence… yes
checking for sys/socket.h… yes
checking sys/timeb.h usability… yes
checking sys/timeb.h presence… yes
checking for sys/timeb.h… yes
checking for unistd.h… (cached) yes
checking for size_t… yes
checking for stdlib.h… (cached) yes
checking for GNU libc compatible malloc… yes
checking for function prototypes… yes
checking whether setvbuf arguments are reversed… no
checking return type of signal handlers… void
checking for ftime… yes
checking for gethostbyname… yes
checking for memset… yes
checking for regcomp… yes
checking for socket… yes
checking for strdup… yes
checking for strspn… yes
checking for strstr… yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands

3)コンパイルする
michi:/usr/local/src/squidclamav# make clean
michi:/usr/local/src/squidclamav# make

make all-am
make[1]: Entering directory `/usr/local/src/squidclamav’
if gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -MT config.o -MD -MP -MF “.deps/config.Tpo”
-c -o config.o config.c; \
then mv -f “.deps/config.Tpo” “.deps/config.Po”; else rm -f “.deps/config.Tpo”; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -MT lists.o -MD -MP -MF “.deps/lists.Tpo” -c -o lists.o lists.c; \
then mv -f “.deps/lists.Tpo” “.deps/lists.Po”; else rm -f “.deps/lists.Tpo”; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -MT log.o -MD -MP -MF “.deps/log.Tpo” -c -o log.o log.c; \
then mv -f “.deps/log.Tpo” “.deps/log.Po”; else rm -f “.deps/log.Tpo”; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -MT main.o -MD -MP -MF “.deps/main.Tpo” -c -o main.o main.c; \
then mv -f “.deps/main.Tpo” “.deps/main.Po”; else rm -f “.deps/main.Tpo”; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -MT squidclamav.o -MD -MP -MF “.deps/squidclamav.Tpo” -c -o squidclamav.o squidclamav.c; \
then mv -f “.deps/squidclamav.Tpo” “.deps/squidclamav.Po”; else rm -f “.deps/squidclamav.Tpo”; exit 1; fi
gcc -g -O2 -o squidclamav config.o lists.o log.o main.o squidclamav.o -lcurl
make[1]: Leaving directory `/usr/local/src/squidclamav’

4)リンクする
michi:/usr/local/src/squidclamav# make install
make[1]: Entering directory `/usr/local/src/squidclamav’
test -z “/usr/local/bin” || mkdir -p — “/usr/local/bin”
/usr/bin/install -c ‘squidclamav’ ‘/usr/local/bin/squidclamav’
make[1]: Nothing to be done for `install-data-am’.
make[1]: Leaving directory `/usr/local/src/squidclamav’


3.SquidClamAVの設定

1)squid.confの編集
michi:/usr/local/src/squidclamav# vi /etc/squid/squid.conf

visible_hostname michi.hogehoge.com

http_port 3128

redirect_program /usr/local/bin/squidclamav

redirect_children 15

acl all src 0.0.0.0/0.0.0.0

acl to_localhost dst 127.0.0.0/8

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255

acl SSL_ports port 443 563

acl Safe_ports port 80 21 443 563 70 210 1025-65535

acl CONNECT method CONNECT

acl mitynet src 192.168.255.0/255.255.255.0

http_access allow localhost

http_access allow mitynet

http_access deny to_localhost

url_rewrite_access deny localhost

http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access deny all

icp_access deny all

forwarded_for off

濃い青文字が、squidclamavで必要な設定です。ここが旨く設定できてないとsquidclamavは思うように動かないので注意してください。

注:squid.confには、他のリダイレクターを併記しないこと。起動しなくなるので注意。

2)ClamAVのclamd.confの設定確認

michi:/usr/local/src/squidclamav# more /etc/clamav/clamd.conf
LogFile /var/log/clamav/clamav.log

LogFileMaxSize 0

LogTime yes

LogSyslog yes

PidFile /var/run/clamav/clamd.pid

TemporaryDirectory /var/tmp

DatabaseDirectory /var/lib/clamav

LocalSocket /var/run/clamav/clamd.ctl

FixStaleSocket yes

TCPSocket 3310

TCPAddr 127.0.0.1

MaxConnectionQueueLength 30

MaxThreads 50

ReadTimeout 300

User clamav

AllowSupplementaryGroups yes

ScanPE yes

ScanELF yes

DetectBrokenExecutables yes
ScanOLE2 yes

ScanMail yes

ScanArchive yes

ArchiveMaxCompressionRatio 300

ArchiveBlockEncrypted no

ArchiveBlockMax no

特に青の濃い文字のTCP Socketの項目をちゃんと書いておいてください。さらに、clamdを実行したときにSocketのパスにちゃんとTCP Socketが出来ていることを確認してください。

3)squidclamav.confの作成
michi:/usr/local/src/squidclamav# cp squidclamav.conf.dist /etc/squidclamav.conf

■ Squidclamav Patterns(正規表現の表記方法):
squidclamav.confファイルの中の系列の構文フォーム:

regex|regexi pattern
または、
abort|aborti pattern
または、
content|contenti pattern
または、
redirect cgi_url_redirection

GNU Regex libary(正規表現ライブラリ)の使用で完全なregexマッチングを利用可能にします。
それは、またパターンバッファをもサポートします。

以下は、case insensitive extension(大文字・小文字を区別しない)で .exe、.com、および.zipファイルのClamAvアンチウィルス対象ファイルに対してチェックしたいと宣言している。ここに宣言してるものは、これらの拡張子を含んでるラインです:

regexi ^.*\.exe$
regexi ^.*\.com$
regexi ^.*\.zip$

イメージファイルとHTMLファイルをチェックしたくないならば、コンフィグファイルに以下のラインを含んでいるべきです:

aborti ^.*\..gif$
aborti ^.*\..png$
aborti ^.*\..jpg$
abort ^.*\..html$
abort ^.*\..htm$

もしあなたがディレクトリ・リストまたはデフォルトindex.htmlをチェックしたくないならば、以下のラインを追加してください:

abort ^.*\/$

あなたは、すべての『application/*』ファイルのための、例えば内容タイプに基づくウイルススキャンをしたいかもしれません、そんな場合は、content命令に続けて以下のラインを書いてください:

content ^application\/.*$

■ squidclamav.confの編集と設定
michi:/usr/local/src/squidclamav# vi /etc/squidclamav.conf
proxy http://127.0.0.1:3128/←SquidClamAVを設定したProxyホストとProxyPortを設定する。

logfile /var/log/squidclamav.log

redirect http://proxy.xxxxxxxx.com/cgi-bin/clwarn.cgi       ← 自分がカスタマイズしたリダイレクト先を設定する。ここでは、squidclamavに付属の clwarn.cgi と言うPerlスクリプトへリダイレクトするように設定した。

# squidguard /usr/local/squidGuard/bin/squidGuard          ← 他のマッチングリダイレクタ(SquidGuard)と併用する事が出来る。その場合は、SquidGuardのコンフィグファイルに記述することによってSquidClamAVがチューニングされます。但し、SquidGuard以外のリダイレクタには対応してないようだ。

debug 0

force 1

stat 1

clamd_local /var/run/clamav/clamd.ctl       ← ClamAVの local socketのパス。

clamd_ip 127.0.0.1        ← TCP socketを使うためのclamdが動いているホストのIPアドレス。
clamd_port 3310         ← さらに、そのPort番号。
timeout 60
abort ^.*\.gz$
abort ^.*\.bz2$
abort ^.*\.pdf$
abort ^.*\.js$
abort ^.*\.html$
abort ^.*\.css$
abort ^.*\.xml$
abort ^.*\.xsl$
abort ^.*\.js$
abort ^.*\.ico$
aborti ^.*\.gif$
aborti ^.*\.png$
aborti ^.*\.jpg$
aborti ^.*\.swf$
content ^.*application\/.*$

4)logファイルの作成
michi:/usr/local/src/squidclamav# touch /var/log/squidclamav.log
michi:/usr/local/src/squidclamav# chown proxy.proxy /var/log/squidclamav.log


4.動作確認
1)squidの再起動
michi:/usr/local/src/squidclamav# /etc/init.d/squid restart

2)プロセスの確認
squidclamavの起動状態を確認する。
michi:/usr/local/src/squidclamav# ps -ef
省略
clamav 24202 1 3 16:47 ? 00:03:02 /usr/sbin/clamd
clamav 24471 1 0 16:54 ? 00:00:00 /usr/bin/freshclam -d –quiet
root 26598 1 0 18:05 ? 00:00:00 /usr/sbin/squid -D -sYC
proxy 26600 26598 0 18:05 ? 00:00:00 (squid) -D -sYC
proxy 26601 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26602 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26607 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26608 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26609 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26610 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26611 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26612 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26613 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26614 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26615 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26616 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26617 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26618 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26619 26600 0 18:05 ? 00:00:00 (squidclamav)
proxy 26620 26600 0 18:05 ? 00:00:00 (unlinkd)
root 26623 23509 0 18:08 pts/0 00:00:00 ps -ef

3)logの確認
起動時にエラーが無いか確認する。
michi:/usr/local/src/squidclamav# tail /var/log/squidclamav.log
Sun Aug 19 18:05:06 2007 [26610] LOG SquidClamav (PID 26610) started
Sun Aug 19 18:05:06 2007 [26612] LOG SquidClamav (PID 26612) started
Sun Aug 19 18:05:06 2007 [26613] LOG SquidClamav (PID 26613) started
Sun Aug 19 18:05:06 2007 [26611] LOG SquidClamav (PID 26611) started
Sun Aug 19 18:05:06 2007 [26614] LOG SquidClamav (PID 26614) started
Sun Aug 19 18:05:06 2007 [26615] LOG SquidClamav (PID 26615) started
Sun Aug 19 18:05:06 2007 [26617] LOG SquidClamav (PID 26617) started
Sun Aug 19 18:05:06 2007 [26618] LOG SquidClamav (PID 26618) started
Sun Aug 19 18:05:06 2007 [26616] LOG SquidClamav (PID 26616) started
Sun Aug 19 18:05:06 2007 [26619] LOG SquidClamav (PID 26619) started

4)実際にVirusを検出させる
クライアントのブラウザには、 < Squidが走ってるホスト > : 3128 を設定する。
ここでは、 テストウィルス を使って実際にウィルスファイルをブラウザでダウンロードしてみた。また、その時のリダイレクト先は、squidclamav付属のclwan.cgiをWebサーバへ設置してリダイレクトするようにした。結果は、テストウィルスをダウンロードしようとすると、リダイレクトされ以下の画面1が表示された。

画面1

さらに、squidclamav.logを見ると以下のようなlogが書き込まれていた。旨く行ったようだ。
michi:/usr/local/src/squidclamav# tail /var/log/squidclamav.log
省略
Fri Aug 24 22:09:52 2007 [4068] LOG Redirecting URL to: http://www.hogehoge.info/cgi/clwarn.cgi?url=http://hoge.hogehoge.com/download/
test_virus/eicar.com&source=192.168.255.250/-&user=
-& virus=stream: Eicar-Test-Signature FOUND


5.logローティションをする
logが肥大化しそうなので、logのローテーションを行う。
michi:/usr/local/src/squidclamav# apt-get update
michi:/usr/local/src/squidclamav# apt-get install psmisc
michi:/usr/local/src/squidclamav# cd /etc/logrotate.d

michi:/etc/logrotate.d# vi squidclamav
/var/log/squidclamav.log {
weekly
rotate 4
compress
missingok
postrotate
killall -HUP squidclamav > /dev/null
endscript
}

以上

コメント