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

Squid+Havp+SquirmでsecureなReverseProxySeverを作る!

ここのネタでは、 Squid を使ってマルウェア(ウィルス・スパイウェア等のインシデント)のブロックや有害サイトのブロック機能を備えたProxyサーバを構築するプロセスを書いたものである。

まず、良くご存じのSquidは、Proxyサーバを作るモジュールで、ここではReversProxy(アクセラレータモード 詳しくは、 ここ を参照)を作ってhttpキャッシュサーバとし、さらにhttp及びhttpsによるアクセスはReversProxy経由でないとアクセス出来ないようにする。

Havp は、Proxyサーバ用ウィルスゲートウェイでClamAVを使ってProxyにキャッシュされるファイルに対してウィルススキャンを行うサービスだ。

Squirm は、Regex正規表現ライブラリを使ったパターマッチ・リダイレクタだ。テキストデータとして有害サイトを登録しておけば、そのURLをブラウザがアクセスしようとすると指定したURLへリダイレクトされコンテンツブロックが可能となる。
以上の機能を全て使って、めちゃくちゃsecureなReversProxyを構築してみたい。下の図1がそのReversProxyサーバの原理図だ。

図1

セットアップ環境情報)
マシン情報 :

processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 7
model name : Pentium III (Katmai)
stepping : 3
cpu MHz : 598.635
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse up
bogomips : 1198.24

デバイス情報 :
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX – 82443BX/ZX/DX Host bridge (rev 03)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX – 82443BX/ZX/DX AGP bridge (rev 03)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 02)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 02)
00:0e.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
01:00.0 VGA compatible controller: nVidia Corporation NV5 [RIVA TNT2/TNT2 Pro] (rev 11)

OS及びカーネル情報 :
Linux wirehork 2.6.18-4-686 #1 SMP Wed May 9 23:03:12 UTC 2007 i686 GNU/Linux


1.squidでproxyサーバを作る

まずは、Debianパッケージでsquidをインスコしてproxyサーバを作る。squidについての設定等の詳細は、 ここ を参照して欲しい。

1)aptでsquidパッケージを手っ取り早く入れる
wirehork:~# apt-get update

Get:1 http://ftp.dti.ad.jp etch Release.gpg [378B]
Hit http://ftp.dti.ad.jp etch Release
Ign http://ftp.dti.ad.jp etch/main Packages/DiffIndex
Ign http://ftp.dti.ad.jp etch/main Sources/DiffIndex
Hit http://ftp.dti.ad.jp etch/main Packages
Hit http://ftp.dti.ad.jp etch/main Sources
Get:2 http://security.debian.org etch/updates Release.gpg [189B]
Get:3 http://security.debian.org etch/updates Release [22.5kB]
Ign http://security.debian.org etch/updates/main Packages/DiffIndex
Ign http://security.debian.org etch/updates/contrib Packages/DiffIndex
Ign http://security.debian.org etch/updates/main Sources/DiffIndex
Ign http://security.debian.org etch/updates/contrib Sources/DiffIndex
Get:4 http://security.debian.org etch/updates/main Packages [122kB]
Hit http://security.debian.org etch/updates/contrib Packages
Get:5 http://security.debian.org etch/updates/main Sources [17.6kB]
Hit http://security.debian.org etch/updates/contrib Sources
Fetched 162kB in 3s (46.1kB/s)
Reading package lists… Done

wirehork:~# apt-get install squid

インスコすると、いきなりsquidが起動するので、とりあえずsquidを止める。
wirehork:~# /etc/init.d/squid stop

2)squidを初期化する
squidを初期化する。
wirehork:~# squid -z

3)コンフィグファイルを編集する
コンフィグファイルを編集する。これは、俺独自のオリジナルコンフィグファイルです。尚、内容の詳細が知りたい場合は、 ここ を参照下さい。
wirehork:~# vi /etc/squid/squid.conf
http_port 8080

cache_mem 160 MB

visible_hostname wirehork.hogehoge.co.jp

cache_dir ufs /var/spool/squid 400 64 256

ftp_user hoge@hogehoge.co.jp

acl all src 0.0.0.0/0.0.0.0

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255

acl SSL_ports port 443

acl Safe_ports port 80 21 70 1025-65535

acl PROTOCOL proto http https ftp gopher

acl purge method PURGE

acl CONNECT method CONNECT

acl LAN src 192.168.0.0/255.255.255.0

acl OPT src 192.168.10.0/255.255.255.0

acl MT3 src 192.168.3.0/255.255.255.0

http_access allow manager localhost

http_access allow purge localhost

http_access allow LAN

http_access allow OPT

http_access allow MT3

http_access allow PROTOCOL

http_access deny manager

http_access deny purge

http_access deny !Safe_ports

http_access deny all

icp_access allow all

miss_access allow all

append_domain .hogehoge.co.jp

4)squidの起動
改めて、squidの起動。
wirehork:~# /etc/init.d/squid start

5)起動状態の確認
squidプロセスの起動状態の確認。以下のように起動していればOK!
wirehork:~# ps -ef
省略
root 1952 1 0 Aug22 ? 00:00:00 /usr/sbin/squid -D -sYC
proxy 1954 1952 0 Aug22 ? 00:00:02 (squid) -D -sYC
省略

cache.logでsquidの正常起動を確認する。正常起動したなら、以下のようなインフォメーションがlogへ書き込まれる。
wirehork:~# more /var/log/squid/cache.log
2007/08/23 06:25:30| storeDirWriteCleanLogs: Starting…
2007/08/23 06:25:30| Finished. Wrote 7427 entries.
2007/08/23 06:25:30| Took 0.0 seconds (633162.8 entries/sec).
2007/08/23 06:25:30| logfileRotate: /var/log/squid/store.log
2007/08/23 06:25:30| helperOpenServers: Starting 10 ‘squirm’ processes
2007/08/23 13:04:49| Preparing for shutdown after 1601 requests
2007/08/23 13:04:49| Waiting 30 seconds for active connections to finish
2007/08/23 13:04:49| FD 22 Closing HTTP connection
2007/08/23 13:05:20| Shutting down…
2007/08/23 13:05:20| FD 23 Closing ICP connection
2007/08/23 13:05:20| Closing unlinkd pipe on FD 20
2007/08/23 13:05:20| storeDirWriteCleanLogs: Starting…
2007/08/23 13:05:20| Finished. Wrote 7990 entries.
2007/08/23 13:05:20| Took 0.0 seconds (533377.8 entries/sec).
CPU Usage: 5.240 seconds = 2.820 user + 2.420 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 4
Memory usage for squid via mallinfo():
total space in arena: 7524 KB
Ordinary blocks: 7480 KB 31 blks
Small blocks: 0 KB 0 blks
Holding blocks: 240 KB 1 blks
Free Small blocks: 0 KB
Free Ordinary blocks: 43 KB
Total in use: 7720 KB 99%
Total free: 43 KB 1%
2007/08/23 13:05:20| Squid Cache (Version 2.6.STABLE5): Exiting normally.
2007/08/23 13:05:25| Starting Squid Cache version 2.6.STABLE5 for i386-debian-linux-gnu…
2007/08/23 13:05:25| Process ID 2446
2007/08/23 13:05:25| With 1024 file descriptors available
2007/08/23 13:05:25| Using epoll for the IO loop
2007/08/23 13:05:25| DNS Socket created at 0.0.0.0, port 1027, FD 6
2007/08/23 13:05:25| Adding domain hogehoge.co.jp from /etc/resolv.conf
2007/08/23 13:05:25| Adding nameserver 192.168.0.4 from /etc/resolv.conf
2007/08/23 13:05:25| helperOpenServers: Starting 10 ‘squirm’ processes
2007/08/23 13:05:25| User-Agent logging is disabled.
2007/08/23 13:05:25| Referer logging is disabled.
2007/08/23 13:05:25| Unlinkd pipe opened on FD 20
2007/08/23 13:05:25| Swap maxSize 409600 KB, estimated 31507 objects
2007/08/23 13:05:25| Target number of buckets: 1575
2007/08/23 13:05:25| Using 8192 Store buckets
2007/08/23 13:05:25| Max Mem size: 163840 KB
2007/08/23 13:05:25| Max Swap size: 409600 KB
2007/08/23 13:05:25| Local cache digest enabled; rebuild/rewrite every 3600/3600 sec
2007/08/23 13:05:25| Rebuilding storage in /var/spool/squid (CLEAN)
2007/08/23 13:05:25| Using Least Load store dir selection
2007/08/23 13:05:25| Current Directory is /
2007/08/23 13:05:25| Loaded Icons.
2007/08/23 13:05:25| Accepting proxy HTTP connections at 0.0.0.0, port 8080, FD22.
2007/08/23 13:05:25| Accepting ICP messages at 0.0.0.0, port 3130, FD 23.
2007/08/23 13:05:25| HTCP Disabled.
2007/08/23 13:05:25| WCCP Disabled.
2007/08/23 13:05:25| Ready to serve requests.
2007/08/23 13:05:25| Store rebuilding is 51.3% complete
2007/08/23 13:05:26| Done reading /var/spool/squid swaplog (7990 entries)
2007/08/23 13:05:26| Finished rebuilding storage from disk.
2007/08/23 13:05:26| 7990 Entries scanned
2007/08/23 13:05:26| 0 Invalid entries.
2007/08/23 13:05:26| 0 With invalid flags.
2007/08/23 13:05:26| 7990 Objects loaded.
2007/08/23 13:05:26| 0 Objects expired.
2007/08/23 13:05:26| 0 Objects cancelled.
2007/08/23 13:05:26| 0 Duplicate URLs purged.
2007/08/23 13:05:26| 0 Swapfile clashes avoided.
2007/08/23 13:05:26| Took 0.6 seconds (13530.1 objects/sec).
2007/08/23 13:05:26| Beginning Validation Procedure
2007/08/23 13:05:26| Completed Validation Procedure
2007/08/23 13:05:26| Validated 7990 Entries
2007/08/23 13:05:26| store_swap_size = 99320k
2007/08/23 13:05:26| storeLateRelease: released 0 objects


2.havpのインスコ(havp、ClamAVのインスコ)
1)ClamAVをインスコする

havpをインストールする前に、DebianパッケージのClamAVを入れる。
wirehork:~# apt-get install clamav clamav-daemon libclamav-dev

インストール後、ClamAVが動いてしまうので、clamdデーモンとfreshclamデーモンは止める。
wirehork:~# /etc/init.d/clamav-daemon stop
wirehork:~# /etc/init.d/clamav-freshclam stop

havpでは、ライブラリのみ使用して、clamdデーモンは起動させないので、
wirehork:~# update-rc.d -f clamav-daemon remove

2)その他ClamAVをソースからインスコする場合
ここ を参照。

3)havpソースのゲット
オフィシャルサイトは、 ここ でソースは、現時点2007年8月現在 havp-0.86.tar.gz が最新であった。

wirehork:/usr/local/src# wget http://www.server-side.de/download/havp-0.86.tar.gz

4)ソースの展開
wirehork:/usr/local/src# tar zxvf havp-0.86.tar.gz
wirehork:/usr/local/src# cd havp-0.86

5)ユーザ・グループの作成
wirehork:/usr/local/src/havp-0.86# groupadd havp
wirehork:/usr/local/src/havp-0.86# useradd -g havp -s /bin/false -c “HAVP – HTTP AntiVirus Proxy” havp

6)havpに必要なディレクトリの作成とオーナー設定
wirehork:/usr/local/src/havp-0.86# mkdir /var/tmp/havp

wirehork:/usr/local/src/havp-0.86# mkdir /var/log/havp

wirehork:/usr/local/src/havp-0.86# mkdir /var/run/havp

wirehork:/usr/local/src/havp-0.86# chown havp /var/tmp/havp

wirehork:/usr/local/src/havp-0.86# chown havp /var/log/havp

wirehork:/usr/local/src/havp-0.86# chown havp /var/run/havp

7)コンパイル&リンク
以下のように、./configureでClamAVのライブラリパスを自動認識した場合には、※1のようにenabledもしくは現在のClamAVのバージョンが表示される。
もし、ClamAVの自動認識に失敗するようで有れば –with-scanner=libclamav オプションを付けてやってみること。
wirehork:/usr/local/src/havp-0.86# ./configure 又は ./configure –with-scanner=libclamav
configure: loading cache /dev/null
./configure: line 1: ./configure:: No such file or directory
checking for g++… g++
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 g++ accepts -g… yes
checking Include debugging?… no
*** ClamAV library found, support enabled!    ←※1

NOTICE: /etc/iscan/libvsapi.so not found, Trend Micro support disabled!

configure: creating ./config.status
config.status: creating Makefile
config.status: creating havp/Makefile
config.status: creating havp/default.h
config.status: creating config.h
config.status: config.h is unchanged
configure: creating ./config.status
config.status: creating Makefile
config.status: creating havp/Makefile
config.status: creating havp/default.h
config.status: creating config.h
config.status: config.h is unchanged

Good – your configure finished. Start make now

wirehork:/usr/local/src/havp-0.86# make
cd havp && make
make[1]: Entering directory `/usr/local/src/havp-0.86/havp’
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o helper.o helper.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o logfile.o logfile.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o scannerhandler.o scannerhandler.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o connectiontobrowser.o connectiontobrowser.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o genericscanner.o genericscanner.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o httphandler.o httphandler.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o params.o params.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o sockethandler.o sockethandler.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o connectiontohttp.o connectiontohttp.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o havp.o havp.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o proxyhandler.o proxyhandler.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o utils.o utils.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o whitelist.o whitelist.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o scanners/avgscanner.o scanners/avgscanner.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o scanners/f-protscanner.o scanners/f-protscanner.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o scanners/kasperskyscanner.o scanners/kasperskyscanner.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o scanners/nod32scanner.o scanners/nod32scanner.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o scanners/clamdscanner.o scanners/clamdscanner.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o scanners/sophiescanner.o scanners/sophiescanner.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o scanners/avastscanner.o scanners/avastscanner.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -DUSECLAMLIB -c -o scanners/clamlibscanner.o scanners/clamlibscanner.cpp
g++ -O2 -I/usr/include -g -O2 -Wall -o havp helper.o logfile.o scannerhandler.o connectiontobrowser.o genericscanner.o httphandler.o params.o sockethandler.o connectiontohttp.o havp.o proxyhandler.o utils.o whitelist.o scanners/avgscanner.o scanners/f-protscanner.o scanners/kasperskyscanner.o scanners/nod32scanner.o scanners/clamdscanner.o scanners/sophiescanner.o scanners/avastscanner.o scanners/clamlibscanner.o -L/usr/lib -lz -lbz2 -lgmp -L/usr/lib -lcurl -lidn -lssl -lcrypto -ldl -lssl -lcrypto -ldl -lz -lpthread -lclamav
make[1]: Leaving directory `/usr/local/src/havp-0.86/havp’

wirehork:/usr/local/src/havp-0.86# make install
cd havp && make install
make[1]: Entering directory `/usr/local/src/havp-0.86/havp’
../install-sh -d /usr/local//sbin
../install-sh -s -m 755 havp /usr/local//sbin/havp
../install-sh -d -m 755 /var/log/havp/
../install-sh -d -m 755 /var/tmp/havp/
../install-sh -d -m 755 /var/run/havp/
../install-sh -d /etc/init.d
../install-sh -m 755 ../etc/init.d/havp /etc/init.d/
../install-sh -m 644 ../etc/havp/havp.config /usr/local//etc/havp/havp.config.default
cp -r ../etc/havp/templates /usr/local//etc/havp
chmod -R a+rX /usr/local//etc/havp/templates

Remember to give correct permissions:
chown <havpuser> /var/tmp/havp (after mounting if needed)
chown <havpuser> /var/log/havp
chown <havpuser> /var/run/havp

make[1]: Leaving directory `/usr/local/src/havp-0.86/havp’

起動スクリプトをコピー。
wirehork:/usr/local/src/havp-0.86# cp etc/init.d/havp /etc/init.d/

8)havp.confの設定と編集
正常にインストールが終われば、/usr/local/etc/havp/havp.confが出来るのでエディットする。
尚、以下のコンフィグファイルには必要な項目のみを記載する。詳しい説明は、 ここ を参照すること。
wirehork:~# vi /usr/local/etc/havp/havp.config

#REMOVETHISLINE deleteme          ← コメントアウトになっているのでコメントにする

USER havp
GROUP havp

DAEMON true

DISPLAYINITIALMESSAGES true

PIDFILE /var/run/havp/havp.pid

SERVERNUMBER 8

MAXSERVERS 100

ACCESSLOG /var/log/havp/access.log

LOG_OKS true

ERRORLOG /var/log/havp/havp.log

LOGLEVEL 0

SCANTEMPFILE /var/tmp/havp/havp-XXXXXX

TEMPDIR /var/tmp

DBRELOAD 60

TRANSPARENT false

PARENTPROXY localhost
PARENTPORT 8080

FORWARDED_IP false

PORT 3128

FAILSCANERROR true

SCANNERTIMEOUT 10

RANGE false

ENABLECLAMLIB true

CLAMDBDIR /var/lib/clamav

ENABLECLAMD false

CLAMDSOCKET /tmp/clamd

以上の濃い青文字の如く編集出来てればよい。

9)起動する前に、fstabのmountオプションにmandパラメータを追加する
wirehork:/usr/local/src/havp-0.86# vi /etc/fstab

ABEL=/ / ext3 defaults,mand 1 1
LABEL=/boot /boot ext3 defaults 1 2
LABEL=/usr/addhdd /usr/addhdd ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda2 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0

濃い青文字のmandパラメータだけを追加して、システムを再起動する。
wirehork:/usr/local/src/havp-0.86# reboot

9)clamav-freshclamの起動
clamavは、freshclamデーモンのみ常駐させて、clamavデーモンは起動しない。clamavライブラリのみhavpで使ってるので起動する必要はない。

wirehork:~# /etc/init.d/clamav-freshclam start

10)squidをstopする
wirehork:~# /etc/init.d/squid stop

11)havpの起動
wirehork:~# /etc/init.d/havp start

12)squidをstartする
wirehork:/usr/local/src/havp-0.86# /etc/init.d/squid start

13)番外: 単独で走らせる場合
wirehork:/usr/local/src/havp-0.86# /usr/local/sbin/havp -c < path to config >

14)プロセス確認
wirehork:/usr/local/src/havp-0.86# ps -ef

省略
havp 2148 1 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2149 2148 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2150 2149 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2151 2148 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2152 2151 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2153 2148 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2154 2153 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2155 2148 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2157 2155 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2156 2148 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2158 2156 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2159 2148 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2160 2159 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2161 2148 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2163 2148 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2162 2161 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
havp 2164 2163 0 15:13 ? 00:00:00 /usr/local/sbin/havp -c /usr/local/etc/havp/havp.conf
root 2304 1 0 15:53 ? 00:00:00 /usr/sbin/squid -D -sYC
proxy 2306 2304 1 15:53 ? 00:00:05 (squid) -D -sYC
proxy 2308 2306 0 15:53 ? 00:00:00 (unlinkd)
省略

15)LISTEN状態確認
wirehork:/usr/local/src/havp-0.86# lsof -i | grep LISTEN
ntop 1340 ntop 12u IPv6 3331 TCP *:3000 (LISTEN)
ntop 1340 ntop 13u IPv6 3334 TCP *:4242 (LISTEN)
master 1436 root 12u IPv4 3058 TCP *:smtp (LISTEN)
master 1436 root 13u IPv6 3059 TCP *:smtp (LISTEN)
inetd 2261 root 4u IPv4 13565 TCP *:ftp (LISTEN)
inetd 2261 root 5u IPv4 13566 TCP *:telnet (LISTEN)
havp 2561 havp 5u IPv4 15114 TCP *:3128 (LISTEN)
havp 2562 havp 5u IPv4 15114 TCP *:3128 (LISTEN)
havp 2564 havp 5u IPv4 15114 TCP *:3128 (LISTEN)
havp 2565 havp 5u IPv4 15114 TCP *:3128 (LISTEN)
havp 2568 havp 5u IPv4 15114 TCP *:3128 (LISTEN)
havp 2570 havp 5u IPv4 15114 TCP *:3128 (LISTEN)
havp 2572 havp 5u IPv4 15114 TCP *:3128 (LISTEN)
havp 2573 havp 5u IPv4 15114 TCP *:3128 (LISTEN)
havp 2576 havp 5u IPv4 15114 TCP *:3128 (LISTEN)
squid 2633 proxy 13u IPv4 15528 TCP *:webcache (LISTEN)

16)上手く起動したときのhavp.logの中身
wirehork:/usr/local/src/havp-0.86# tail /var/log/havp/havp.log

22/08/2007 17:05:54 === Starting HAVP Version: 0.86
22/08/2007 17:05:54 Change to user havp
22/08/2007 17:05:54 Change to group havp
22/08/2007 17:05:54 Use parent proxy: 192.168.0.9 8080
22/08/2007 17:05:54 — Initializing ClamAV Library Scanner
22/08/2007 17:05:54 ClamAV: Using database directory: /var/lib/clamav/
22/08/2007 17:07:56 ClamAV: Loaded 148148 signatures (engine 0.90.1)
22/08/2007 17:07:56 ClamAV Library Scanner passed EICAR virus test (Eicar-Test-Signature)
22/08/2007 17:07:56 — All scanners initialized
22/08/2007 17:07:56 Process ID: 2119

これでちゃんと動作していると思うが、実際にサンプルウィルスかなにかで挙動を確認してみる方が良いかもしれない。

注:もしかすると、起動時にClamAVのイニシャライズに時間がかかるかも知れない。

17)havpを起動させて、ClamAVを初期化した時コマンドが戻ってこない場合は
wirehork:/usr/local/src/havp-0.86# vi /etc/init.d/havp
省略
case “$1” in
start)
echo “Starting HAVP …”
if [ ! -f $HAVP_BIN ]; then
echo “Error: $HAVP_BIN not found”
exit 5
fi
$HAVP_BIN -c $HAVP_CONFIG &   ← ここに&を追加する
exit $?
;;
省略

havpを再起動する。
wirehork:/usr/local/src/havp-0.86# /etc/init.d/havp restart

18)ログローティション
念のため、ログローティションスクリプトを作る。
wirehork:/usr/local/src/havp-0.86# vi /etc/logrotate.d/havp
/var/log/havp/havp.log /var/log/havp/access.log
{
   rotate 6
   size=100k
   missingok
   dairy
   sharedscripts
   postrotate
   /bin/kill -HUP `cat /var/run/havp/havp.pid 2>/dev/null` 2> /dev/null
   endscript
}


3.squirmのインスコ
詳しくは、 squirm日本語サイト を参照のこと。

1)ソースをゲットする
オフィシャルサイト
 からwgetを使ってダウンロードする。 2007年8月現在、squirn-1.0detaB.tar.gzが最新版であった(squirn-1.26.tgzも有るが、regexライブラリが同梱されてないのでsquirn-1.0detaB.tar.gzをインスコしてから1.26へアップデートした方がよい感じだ)。
wirehork:/# cd /usr/local/src/

wirehork:/usr/local/src# wget http://squirm.foote.com.au/squirm-1.0betaB.tar.gz
–15:50:01– http://squirm.foote.com.au/squirm-1.0betaB.tar.gz
=> `squirm-1.0betaB.tar.gz’
Resolving squirm.foote.com.au… 203.32.153.21
Connecting to squirm.foote.com.au|203.32.153.21|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 318,142 (311K) [application/x-tar]

100%[================================>] 318,142 155.44K/s

15:50:04 (155.05 KB/s) – `squirm-1.0betaB.tar.gz’ saved [318142/318142]

wirehork:/usr/local/src# tar zxvf squirm-1.0betaB.tar.gz
squirm-1.0betaB/
squirm-1.0betaB/Makefile
squirm-1.0betaB/log.c
squirm-1.0betaB/paths.h
squirm-1.0betaB/squirm.h
squirm-1.0betaB/squirm.c
squirm-1.0betaB/config.c
squirm-1.0betaB/Makefile.real
squirm-1.0betaB/lists.c
squirm-1.0betaB/lists.h
squirm-1.0betaB/Makefile.profiling
squirm-1.0betaB/regex-0.12/
squirm-1.0betaB/regex-0.12/AUTHORS
squirm-1.0betaB/regex-0.12/ChangeLog
squirm-1.0betaB/regex-0.12/COPYING
squirm-1.0betaB/regex-0.12/INSTALL
squirm-1.0betaB/regex-0.12/NEWS
squirm-1.0betaB/regex-0.12/README
squirm-1.0betaB/regex-0.12/Makefile.in
squirm-1.0betaB/regex-0.12/configure.in
squirm-1.0betaB/regex-0.12/configure
squirm-1.0betaB/regex-0.12/regex.c
squirm-1.0betaB/regex-0.12/regex.h
squirm-1.0betaB/regex-0.12/doc/
squirm-1.0betaB/regex-0.12/doc/Makefile.in
squirm-1.0betaB/regex-0.12/doc/regex.texi
squirm-1.0betaB/regex-0.12/doc/xregex.texi
squirm-1.0betaB/regex-0.12/doc/texinfo.tex
squirm-1.0betaB/regex-0.12/doc/include.awk
squirm-1.0betaB/regex-0.12/doc/regex.info
squirm-1.0betaB/regex-0.12/doc/regex.aux
squirm-1.0betaB/regex-0.12/doc/regex.cps
squirm-1.0betaB/regex-0.12/doc/Makefile
squirm-1.0betaB/regex-0.12/test/
squirm-1.0betaB/regex-0.12/test/ChangeLog
squirm-1.0betaB/regex-0.12/test/TAGS
squirm-1.0betaB/regex-0.12/test/Makefile.in
squirm-1.0betaB/regex-0.12/test/alloca.c
squirm-1.0betaB/regex-0.12/test/bsd-interf.c
squirm-1.0betaB/regex-0.12/test/debugmalloc.c
squirm-1.0betaB/regex-0.12/test/emacsmalloc.c
squirm-1.0betaB/regex-0.12/test/fileregex.c
squirm-1.0betaB/regex-0.12/test/g++malloc.c
squirm-1.0betaB/regex-0.12/test/iregex.c
squirm-1.0betaB/regex-0.12/test/main.c
squirm-1.0betaB/regex-0.12/test/malloc-test.c
squirm-1.0betaB/regex-0.12/test/other.c
squirm-1.0betaB/regex-0.12/test/printchar.c
squirm-1.0betaB/regex-0.12/test/psx-basic.c
squirm-1.0betaB/regex-0.12/test/psx-extend.c
squirm-1.0betaB/regex-0.12/test/psx-generic.c
squirm-1.0betaB/regex-0.12/test/psx-group.c
squirm-1.0betaB/regex-0.12/test/psx-interf.c
squirm-1.0betaB/regex-0.12/test/psx-interv.c
squirm-1.0betaB/regex-0.12/test/test.c
squirm-1.0betaB/regex-0.12/test/tregress.c
squirm-1.0betaB/regex-0.12/test/upcase.c
squirm-1.0betaB/regex-0.12/test/xmalloc.c
squirm-1.0betaB/regex-0.12/test/getpagesize.h
squirm-1.0betaB/regex-0.12/test/test.h
squirm-1.0betaB/regex-0.12/test/regexcpp.sed
squirm-1.0betaB/regex-0.12/test/syntax.skel
squirm-1.0betaB/regex-0.12/test/Makefile
squirm-1.0betaB/regex-0.12/config.status
squirm-1.0betaB/regex-0.12/Makefile
squirm-1.0betaB/log.h
squirm-1.0betaB/main.c
squirm-1.0betaB/regex
squirm-1.0betaB/Copyright
squirm-1.0betaB/GPL
squirm-1.0betaB/README
squirm-1.0betaB/INSTALL
squirm-1.0betaB/squirm.patterns.dist
squirm-1.0betaB/squirm.local.dist

wirehork:/usr/local/src# cd squirm-1.0betaB

2)コンパイル
初めに、regex.oを作るため、regexディレクトリでコンパイル作業を行う。
wirehork:/usr/local/src/squirm-1.0betaB# cd regex

wirehork:/usr/local/src/squirm-1.0betaB/regex# ./configure
checking for gcc
checking for install
checking for AIX
checking how to run the C preprocessor
checking for DYNIX/ptx libseq
checking for POSIXized ISC
checking for minix/config.h
checking for ANSI C header files
checking for string.h
checking for working alloca.h
checking for alloca
checking for working const
checking for gcc to derive installation directory prefix
creating config.status
creating Makefile
creating doc/Makefile
creating test/Makefile

wirehork:/usr/local/src/squirm-1.0betaB/regex# make clean
rm -f *.o
for d in test; do (cd $d; make CPPFLAGS=” CFLAGS=’-O3′ CC=’gcc’ DEFS=’-DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_ALLOCA_H=1′ LDFLAGS=” LOADLIBES=” clean); done
make[1]: Entering directory `/usr/local/src/squirm-1.0betaB/regex-0.12/test’
rm -f *.o regex cppregex iregex fileregex regexcpp.c syntax
make[1]: Leaving directory `/usr/local/src/squirm-1.0betaB/regex-0.12/test’

wirehork:/usr/local/src/squirm-1.0betaB/regex# make
gcc -O3 -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_ALLOCA_H=1 -I. -I. -c regex.c
regex.c: In function ‘re_match_2’:
regex.c:3834: warning: passing argument 1 of ‘bcmp_translate’ discards qualifiers from pointer target type
regex.c:3834: warning: passing argument 2 of ‘bcmp_translate’ discards qualifiers from pointer target type
for d in test; do (cd $d; make CPPFLAGS=” CFLAGS=’-O3′ CC=’gcc’ DEFS=’-DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_ALLOCA_H=1′ LDFLAGS=” LOADLIBES=” default); done
make[1]: Entering directory `/usr/local/src/squirm-1.0betaB/regex-0.12/test’
make[1]: Nothing to be done for `default’.
make[1]: Leaving directory `/usr/local/src/squirm-1.0betaB/regex-0.12/test’

生成された、regex.oとregex.hをsquirmを解凍したトップディレクトリへコピーする。
wirehork:/usr/local/src/squirm-1.0betaB/regex# cp -p regex.o regex.h ..

いよいよ、メインソースをコンパイルする。
wirehork:/usr/local/src/squirm-1.0betaB/regex# cd ..

make を行う前に、squirmはsquidオーナーとグループで動こうとする。したがって、Makefileの中のsquidオーナーとグループがデフォルトでsquidになっているため、自分の鯖のsquidオーナーとグループに書き換える。例えば、このホストのsquidはDebianバイナリなので、 squidはオーナーがproxyでグループもproxyで有るため、Makefileのsquidの部分をproxyへ変更する。
wirehork:/usr/local/src/squirm-1.0betaB/regex# vi Makefile
省略
install: all
install -m 755 -o root -g root -d /usr/local/squirm \
/usr/local/squirm/bin
install -m 770 -o root -g proxy -d /usr/local/squirm/etc
install -m 750 -o proxy -g proxy -d /usr/local/squirm/logs
install -m 660 -o root -g proxy squirm.local.dist squirm.patterns.dist \
省略

wirehork:/usr/local/src/squirm-1.0betaB# make
gcc -c squirm.c -O3 -Wall -funroll-loops
In file included from squirm.c:38:
log.h:35: warning: conflicting types for built-in function ‘log’
gcc -c main.c -O3 -Wall -funroll-loops
In file included from main.c:39:
log.h:35: warning: conflicting types for built-in function ‘log’
gcc -c config.c -O3 -Wall -funroll-loops
In file included from config.c:29:
log.h:35: warning: conflicting types for built-in function ‘log’
gcc -c log.c -O3 -Wall -funroll-loops
In file included from log.c:30:
log.h:35: warning: conflicting types for built-in function ‘log’
gcc -c lists.c -O3 -Wall -funroll-loops
In file included from lists.c:30:
log.h:35: warning: conflicting types for built-in function ‘log’
gcc -o squirm squirm.o main.o config.o log.o lists.o regex.o

3)リンク
wirehork:/usr/local/src/squirm-1.0betaB# make install
install -m 755 -o root -g root -d /usr/local/squirm \
/usr/local/squirm/bin
install -m 770 -o root -g proxy -d /usr/local/squirm/etc
install -m 750 -o proxy -g proxy -d /usr/local/squirm/logs
install -m 660 -o root -g proxy squirm.local.dist squirm.patterns.dist \
/usr/local/squirm/etc
install -m 755 -o root -g root –strip squirm /usr/local/squirm/bin

wirehork:/usr/local/src/squirm-1.0betaB# cd /usr/local/squirm/bin/

wirehork:/usr/local/squirm/bin# ls -al
total 56
drwxr-sr-x 2 root root 4096 Jun 25 14:32 .
drwxr-sr-x 5 root root 4096 Jun 25 14:32 ..
-rwxr-xr-x 1 root root 46444 Jun 25 14:32 squirm

4)とりあえず動作テスト
動作テストを行ってみる。以下のようなメッセージが出てホールド状態になればOK!。
CTRL+Cで抜ける。しかし、未だ/usr/local/squirm/etcの中に設定ファイルが入ってないのでエラーメッセージが出ているが・・・・・。
wirehork:/usr/local/squirm/bin# ./squirm
Squirm running as UID 0: writing logs to stderr
Mon Jun 25 14:33:47 2007:unable to open local addresses file [/usr/local/squirm/etc/squirm.local]
Mon Jun 25 14:33:47 2007:unable to open redirect patterns file
Mon Jun 25 14:33:47 2007:Invalid condition – continuing in DODO mode
Mon Jun 25 14:33:47 2007:Squirm (PID 24917) started

5)設定と編集
必要最小限の設定を紹介する、詳しくは、 ここ を参照すること。

① squid.confの設定
/etc/squid/squid.confの最後に以下を追加する。
wirehork:/usr/local/src/squirm-1.0betaB# vi /etc/squid/squid.conf
省略
redirect_program /usr/local/squirm/bin/squirm
redirect_children 10

② squirm.localの設定
実際に対象となるネットワークアドレスもしくは、IPアドレスを記載。
wirehork:/usr/local/squirm/etc# vi squirm.local
127.0.0
192.168.0

③ squirm.patternsの設定
最も簡単なパターン。
wirehork:/usr/local/squirm/etc# vi squirm.patterns
# reject URLs
regexi ^http://.*hoge-i\.com/.* http://xxxxxxxx.com/blocked.html
regexi ^http://.*hogehoge-p\.com/.* http://xxxxxxxx.com/blocked.html
regexi ^http://.*hoge-k\.com/.* http://xxxxxxxx.com/blocked.html
regexi ^http://.*123\.123\.123\.123/.* http://xxxxxxxx.com/blocked.html

5)実際に動かしてlogを見る
① 起動する
wirehork:/usr/local/squirm/etc# /etc/init.d/squid restart

② logで起動確認
squirmが正常起動するとsquirm.infoへ以下のようなlogが書き込まれる。
wirehork:/usr/local/squirm/etc# more ../logs/squirm.info
Thu Aug 23 15:55:44 2007:Loading IP List
Thu Aug 23 15:55:44 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns
Thu Aug 23 15:55:44 2007:Squirm (PID 2630) started
Thu Aug 23 15:55:44 2007:Loading IP List
Thu Aug 23 15:55:44 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns
Thu Aug 23 15:55:44 2007:Squirm (PID 2631) started
Thu Aug 23 15:55:44 2007:Loading IP List
Thu Aug 23 15:55:44 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns
Thu Aug 23 15:55:44 2007:Squirm (PID 2632) started
Thu Aug 23 15:55:44 2007:Loading IP List
Thu Aug 23 15:55:44 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns
Thu Aug 23 15:55:44 2007:Loading IP List
Thu Aug 23 15:55:44 2007:Reading Patterns from config /usr/local/squirm/etc/squirmpatterns
Thu Aug 23 15:55:44 2007:Squirm (PID 2634) started
Thu Aug 23 15:55:44 2007:Loading IP List
Thu Aug 23 15:55:44 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.atterns
Thu Aug 23 15:55:44 2007:Squirm (PID 2635) started
Thu Aug 23 15:55:44 2007:Loading IP List
Thu Aug 23 15:55:44 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns
Thu Aug 23 15:55:44 2007:Squirm (PID 2636) started
Thu Aug 23 15:55:44 2007:Loading IP List
Thu Aug 23 15:55:44 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns
Thu Aug 23 15:55:44 2007:Squirm (PID 2637) started
Thu Aug 23 15:55:44 2007:Loading IP List
Thu Aug 23 15:55:44 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns
Thu Aug 23 15:55:44 2007:Squirm (PID 2638) started
Thu Aug 23 15:55:44 2007:Squirm (PID 2633) started
Thu Aug 23 15:55:44 2007:Loading IP List
Thu Aug 23 15:55:44 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns
Thu Aug 23 15:55:44 2007:Squirm (PID 2639) started

③ squid+havp+squirmのサービス起動状態を見る
最終的に、squid+havp+squirmが正常に動くと以下のようなプロセスで常駐する。
wirehork:/usr/local/squirm/etc# ps -ef
省略
havp 2119 1 0 Aug22 ? 00:12:17 /usr/local/sbin/havp -c /usr/local
havp 2120 2119 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2121 2120 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2122 2119 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2123 2122 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2124 2119 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2126 2119 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2127 2126 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2128 2119 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2129 2128 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2130 2119 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2131 2130 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2132 2119 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2134 2119 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2125 2124 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2133 2132 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
havp 2135 2134 0 Aug22 ? 00:00:00 /usr/local/sbin/havp -c /usr/local
root 2444 1 0 13:05 ? 00:00:00 /usr/sbin/squid -D -sYC
proxy 2446 2444 0 13:05 ? 00:00:00 (squid) -D -sYC
proxy 2451 2446 0 13:05 ? 00:00:00 (squirm)
proxy 2452 2446 0 13:05 ? 00:00:00 (squirm)
proxy 2453 2446 0 13:05 ? 00:00:00 (squirm)
proxy 2454 2446 0 13:05 ? 00:00:00 (squirm)
proxy 2455 2446 0 13:05 ? 00:00:00 (squirm)
proxy 2456 2446 0 13:05 ? 00:00:00 (squirm)
proxy 2457 2446 0 13:05 ? 00:00:00 (squirm)
proxy 2458 2446 0 13:05 ? 00:00:00 (squirm)
proxy 2459 2446 0 13:05 ? 00:00:00 (squirm)
proxy 2460 2446 0 13:05 ? 00:00:00 (squirm)
proxy 2461 2446 0 13:05 ? 00:00:00 (unlinkd)
省略

④ squirmのlogの場所と内容
logは、/usr/local/squirm/etcの下に、
squirm.error
squirm.match
squirm.info
の三つのlogがsquirmの初めの起動時に生成される。ここでは、squirm.match logを見てみる。
このlogは、パターンマッチで引っかかった結果を出力している。

wirehork:/usr/local/squirm/logs# more squirm.match
Mon Jun 25 14:44:23 2007:http://www.hogehoge.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 14:49:51 2007:http://www.hogehoge.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 14:50:23 2007:http://www.hogehoge.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 14:55:00 2007:http://hoge-i.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 14:55:06 2007:http://www.hoge-i.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:05:36 2007:http://hoge-i.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:10:15 2007:http://www.hogehoge.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:10:34 2007:http://hogehoge.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:10:34 2007:http://hogehoge.com/favicon.ico:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:17:10 2007:http://www.hogehoge.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:17:51 2007:http://sub2.hogehoge.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:17:51 2007:http://sub2.hogehoge.com/favicon.ico:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:20:22 2007:http://sub2.hogehoge.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:20:29 2007:http://hogehoge.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:20:39 2007:http://www.hogehoge.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:31:29 2007:http://hoge-i.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:31:30 2007:http://hoge-i.com/favicon.ico:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:31:33 2007:http://hoge-k.com/:http://xxxxxxxx.com/blocked.html
Mon Jun 25 15:31:33 2007:http://hoge-k.com/favicon.ico:http://xxxxxxxx.com/blocked.html

6)logのローティション
logが肥大化しそうなので、logのローテーションを行う。
killallコマンドを使うので、以下のモジュールをインスコする。
wirehork:/usr/local/squirm/logs# apt-get update
wirehork:/usr/local/squirm/logs# apt-get install psmisc

wirehork:/usr/local/squirm/logs# cd /etc/logrotate.d

wirehork:/etc/logrotate.d# vi squirm
/usr/local/squirm/etc/squirm.error /usr/local/squirm/etc/squirm.match /usr/l
ocal/squirm/etc/squirm.info {
weekly
rotate 4
compress
missingok
postrotate
killall -HUP squirm > /dev/null
endscript
}

7)Squid+Havp+Squirmの動作確認
ブラウザのProxyには、havpが動いているマシンのIPアドレスと,ポート:3128を指定する(squidの8080ではないことに注意)。
確認方法は、havpはAccessDenied画面へリダイレクトして、squirmは対象URLに対してリダイレクト先へリダイレクトすればOKである。

以上

コメント