用squid+havp+clamav搭建支持病毒过滤的http proxy

来源:互联网 发布:project2007软件下载 编辑:程序博客网 时间:2024/05/23 01:34
 

Original : http://www.nixsky.com/server/web/2007-09/220.html

主要软件包:
clamav:http://www.clamav.net,开源杀毒软件
havp:http://www.server-side.de,HTTP Antivirus Proxy

安装设置:

1、安装clamav
下载软件包源代码:
wget –c http://crash.fce.vutbr.cz/crash-hat/5/clamav/clamav-0.90.2-1.src.rpm
wget –c http://nchc.dl.sourceforge.net/sourceforge/clamav/clamav-0.90.3.tar.gz

安装源代码包:
rpm –ivh clamav-0.90.2-1.src.rpm
cp clamav-0.90.3.tar.gz /usr/src/redhat/SOURCES

修改配置:
cd /usr/src/redhat/SPECS
修改clamav.spec,把其中的Version: 0.90.2改成Version: 0.90.3

编译生成clamav的rpm包:
rpmbuild –ba clamav.spec

安装clamav:
cd /usr/src/redhat/RPMS/i386
rpm -ivh clamav-devel-0.90.3-1.i386.rpm clamav-0.90.3-1.i386.rpm

启动freshclam服务,每小时自动更新病毒库:
/etc/rc.d/init.d/freshclam start
下面的havp设置使用libclamav直接读取clamav病毒库

freshclam的日志:/var/log/clamav/freshclam.log
 
2、安装havp
下载软件包源代码:
wget –c http://www.server-side.de/download/havp-0.86.tar.gz

解压缩并编译安装:
tar zxvf havp-0.86.tar.gz
cd havp-0.86
./configure && make && make install
cp etc/init.d/havp /etc/rc.d/init.d/havp

havp的配置文件在:/usr/local/etc/havp.config,主要设置项如下:
USER clamav
GROUP clamav
SERVERNUMBER 60
MAXSERVERS 120
LOG_OKS false
TEMPDIR /var/tmp/havp
TRANSPARENT false
FORWARDED_IP true
PORT 8080
BIND_ADDRESS 127.0.0.1
ENABLECLAMLIB true
CLAMDBDIR /var/lib/clamav
ENABLECLAMD false
ENABLEFPROT false
ENABLEAVG false
ENABLEAVESERVER false
ENABLESOPHIE false
ENABLETROPHIE false
ENABLENOD32 false
ENABLEAVAST false
ENABLEARCAVIR false
其中的user和group设置成clamav是为了使havp正确加载libclamav和其病毒库

修改相关目录的属性:
chown clamav.clamav /var/tmp/havp /var/log/havp /var/run/havp
chmod 700 /var/tmp/havp /var/log/havp /var/run/havp

启动havp:
/etc/rc.d/init.d/havp start

havp的日志:/var/log/havp/access.log和/var/log/havp/error.log

注意,TMPDIR所在的分区,这里是/var/tmp/havp,mount时要使用mand参数,比如我的fstab里的设置:
/dev/VolGroup00/LogVol01 /var/tmp/havp          ext3    mand            1 1
 
3、和squid配合
havp 可以单独使用,也可以和squid配合使用。squid可以提供cache、强大的acl控制等等havp所不具备的功能。下面以squid支持透明代理,havp作为parent proxy来配置。如果只用havp做透明代理,应该将前面havp.config中的TRANSPARENT项设置成true:

havp.config内容见上面;

squid.conf主要配置如下:

#支持透明代理
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

#所有的http流量指向parent proxy
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

4、设置iptables规则支持透明代理:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
其中eth1是防火墙内网接口,3128是havp或squid端口

5、病毒过滤日志
[root@linux-firewall /var/tmp/havp]# tail -f /var/log/havp/access.log
15/06/2007 10:36:06 134.40.108.216 GET 200 http://yn52.net/admin/xh.c 268+1156 VIRUS ClamAV: Exploit.W32.MS05-002
15/06/2007 10:41:46 134.40.108.74 GET 200 http://g.ads8.com/pds_k/view.php? 243+7604 VIRUS ClamAV: Trojan.Clicker.HTML.Agent
15/06/2007 10:52:34 134.40.104.10 GET 200 http://www.5460w.cn/xzz/0603.exe 258+7680 VIRUS ClamAV: Trojan.Downloader-5123
15/06/2007 10:55:26 134.40.108.224 GET 200 http://u.keyrun.com/o.js 276+7323 VIRUS ClamAV: Trojan.Clicker.HTML.Agent
15/06/2007 11:01:43 134.40.108.216 GET 200 http://m.ads8.com/pds_k/view.php? 243+6086 VIRUS ClamAV: Trojan.Clicker.HTML.Agent
15/06/2007 11:22:12 134.40.108.102 GET 200 http://n.ads8.com/pds_k/view.php? 243+6086 VIRUS ClamAV: Trojan.Clicker.HTML.Agent
15/06/2007 11:26:00 10.18.160.23 GET 200 http://u.keyrun.com/o.js 276+7323 VIRUS ClamAV: Trojan.Clicker.HTML.Agent
15/06/2007 12:03:55 10.18.128.244 GET 200 http://g.ads8.com/pds_k/view.php? 243+7340 VIRUS ClamAV: Trojan.Clicker.HTML.Agent
15/06/2007 13:12:05 134.40.108.10 GET 200 http://i.ads8.com/pds_k/view.php? 243+7604 VIRUS ClamAV: Trojan.Clicker.HTML.Agent
15/06/2007 13:50:42 10.18.128.244 GET 200 http://f.ads8.com/pds_k/view.php? 243+7340 VIRUS ClamAV: Trojan.Clicker.HTML.Agent