squid+havp+clamav搭建防毒代理墙

系统:CentOS5.2

步骤:

1.安装squid和clamav

yum install squid

yum install clamav clamav-devel

要按照clamav-devel,因为havp安装的时候,需要这个包,rpmforge有这个包

2.下载安装havp-0.88

./configure
make
make install
cp etc/init.d/havp /etc/rc.d/init.d/havp

安装时/etc/init.d/没有havp启动脚本,必须手动copy

3.配置havp

vi /usr/local/etc/havp/havp.config

### 註解以下這行
#REMOVETHISLINE deleteme

### ClamAV Library Scanner (libclamav) → 由 HAVP 直接取用 ClamAV 的病毒資料庫
ENABLECLAMLIB true

##yum安装的,注释掉
#CLAMDBDIR /usr/local/share/clamav

TRANSPARENT false

### 理論上越多的執行緒效能效能越好, 但仍需視伺服器資源而定
SERVERNUMBER 40
MAXSERVERS 200

### 只記錄 error log. 較少的 Log 記錄可減輕伺服器負擔
LOGLEVEL 0

### 使用 RAM Disk 處理暫存檔案可獲得最佳效能
TEMPDIR /var/tmp/havp

### 不對圖片檔掃毒, 可減輕 CPU 負擔
SCANIMAGES false

4.设置havp的TEMPDIR

dd if=/dev/zero of=/root/havp_tmp.img bs=128K count=1 seek=1024 (建立 128MB Virtual Disk)
mkfs.ext2 /root/havp_tmp.img
mount -o loop,mand /root/havp_tmp.img /var/tmp/havp

编辑/etc/fstab,添加

/root/havp_tmp.img      /var/tmp/havp           ext2    mand,loop       0 0

5.设置squid

# vi /etc/squid/squid.conf

acl mynet src 192.168.1.0/24 (你内网的网段)
http_access allow mynet (放在http_access deny all之上)

HAVP + Squid
HAVP is Parent Proxy
修改 squid.conf, 設定 Parent Proxy 為本機的 8080 port

#acl all src 0.0.0.0/0.0.0.0
cache_peer 127.0.0.1 parent 8080 0 no-query no-digest no-netdb-exchange default
cache_peer_access 127.0.0.1 allow all
#Only http traffic can be scanned
acl Scan_HTTP proto HTTP
never_direct allow Scan_HTTP

Proxy 指向Squid:3128
修改 squid.conf, 讓 Squid 變成透明代理 (請參考 “這篇” )

iptables -t nat -A PREROUTING -p tcp -s 192.168.0.0/24 –dport 80 -j REDIRECT –to-port 3128

 

5.启动

/etc/init.d/havp start
/etc/init.d/squid start

测试eicar – Anti-Virus test file

结果:

image

参考:使用 HAVP + ClamAV 建置防毒 HTTP Proxy

havp无法写入scannerfiles错误

参考:Jamyy’s Weblog: 使用 HAVP + ClamAV 建置防毒 HTTP Proxy

写得非常的详细。

当中遇到一个问题,就是设置havp的TEMPDIR的时候,我先前使用的是使用内存的方法,就是

mkfs -t ext2 /dev/ram0 8192 (建立 8MB RAM Disk)
mount -o mand /dev/ram0 /var/tmp/havp

然后设置权限,之类的,完全没有问题的

但是启动的时候,出现:

Starting HAVP …
Starting HAVP Version: 0.88
Too many tries – Exiting..

查看日志error.log

15/07/2008 16:36:38 Could not write to Scannerfile: /var/tmp/havp/havp-tdpVGs
15/07/2008 16:36:39 Could not write to Scannerfile: /var/tmp/havp/havp-GjwJ5A
15/07/2008 16:36:40 Could not write to Scannerfile: /var/tmp/havp/havp-sVVytK
15/07/2008 16:36:41 Could not write to Scannerfile: /var/tmp/havp/havp-bNRpQU

查看权限,都是没有问题的,所有者也都OK。

后,尝试使用硬盘文件,就是方法b

dd if=/dev/zero of=/root/havp_tmp.img bs=128K count=1 seek=1024 (建立 128MB Virtual Disk)
mkfs.ext2 /root/havp_tmp.img
mount -o loop,mand /root/havp_tmp.img /var/tmp/havp

在设置了权限之后,完全OK 。

终于搞定了。