公司的http代理扫毒一直用havp + clamav,havp的优点是可以单独使用,内嵌libclamav,不必单独运行clamd进程,但它也有一个致命的弱点,就是不太稳定,一天运行下来产生的垃圾文件就有几万个。
其实很早就知道dgav(DansGuardian Anti-Virus plugin)也可以实现http代理扫毒,并且DansGuardian有非常强大的内容过滤功能,但它必须要把squid或者其他的web proxy作为父代理配合运行,这对我现在的网络结构来说是浪费资源。话说回来,实际的应用稳定高于一切,鉴于havp表现不佳,在未找到更合适的方案前,先尝试一下dgav吧。
公司的Internet出口采用两级防火墙结构,一级防火墙在公司内部,主要利用squid实现cache和鉴权;二级防火墙是与Internet连接的堡垒防火墙,运行dgav/havp实现http流量病毒过滤:
代码
- 1 客户端 <——>2 squid<——>3 dgav<——>4 squid<——>5 Internet
- -------- ------------------
- 一级 二级
其中(3 dgav)作为(2 squid)的父代理,(4 squid)作为(3 dgav)的父代理(这就是我说的浪费),当然也可以调整一下:
代码
- 1 客户端 <——>2 dgav<——>3 squid<——>4 Internet
- ------- --------
- 一级 二级
把dgav和squid分开在两台服务器上除了架构上两级防火墙比较安全灵活外,还考虑到单机的处理能力,因为扫毒和代理都是很费系统资源的应用。
首先下载安装必要的软件包:
1、clamav
开源杀毒软件,不多说了
http://dag.wieers.com/packages/clamav/
rpm -ivh clamav-0.92-1.rf.src.rpm
cd /usr/src/redhat/SPECS
rpmbuild -ba --clean clamav.spec
cd /usr/src/redhat/RPMS/i386
rpm -ivh clamav-db-0.92-1.rf.i386.rpm clamav-0.92-1.rf.i386.rpm clamd-0.92-1.rf.i386.rpm
clamav的配置文件在:/etc/clamd.conf
2、libesmtp
这个包在编译dgav时是必需的
http://download.fedora.redhat.com/pub/fedora/linux/releases/7/Fedora/source/SRPMS/
rpm -ivh libesmtp-1.0.4-2.fc6.src.rpm
cd /usr/src/redhat/SPECS
rpmbuild -ba --clean libesmtp.spec
rpm -ivh /usr/src/redhat/RPMS/i386/libesmtp-1.0.4-2.i386.rpm
rpm -ivh /usr/src/redhat/RPMS/i386/libesmtp-devel-1.0.4-2.i386.rpm
3、dgav
今天的主角
http://sourceforge.net/projects/dgav/
rpm -ivh dansguardian-antivirus-6.4.4.2-1.src.rpm
cd /usr/src/redhat/SPECS
rpmbuild -ba --clean DGVirus.spec
rpm -ivh /usr/src/redhat/RPMS/i386/dansguardian-antivirus-6.4.4.2-1.i386.rpm
dgav的配置文件在:/etc/dansguardian/dansguardian.conf
由于dgav与客户端之间有squid存在,为了保证能在它的log内记录实际的客户端地址,需要设置:usexforwardedfor = on
为了避免扫毒临时文件的权限问题,设置:daemonuser = 'clamav',daemongroup = 'clamav',和clamd的帐号一致。
4、squid
直接安装
yum install squid
dgav默认工作在8080端口,一级防火墙上的squid代理设置dgav为父代理:
代码
- cache_peer 二级防火墙IP地址 parent 8080 0 no-query no-digest no-netdb-exchange default
- cache_peer_access 二级防火墙IP地址 allow all
-
- #只有ftp和http流量通过二级防火墙
- acl acl_proto_ftp proto FTP
- never_direct allow acl_proto_ftp
-
- acl acl_proto_http proto HTTP
- never_direct allow acl_proto_http
二级防火墙上的squid只设置visible_hostname,可以设置成服务器的IP地址,不然squid 起不来,同时禁用log和cache,其余选项根据需要设置。