寻找Linux下的优秀工具和集成这些工具的方法 注册 | 登陆

http代理扫毒的另一种实现:DansGuardian Anti-Virus plugin

公司的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. 1 客户端 <——>2 squid<——>3 dgav<——>4 squid<——>5 Internet   
  2.              --------   ------------------   
  3.                一级               二级  

其中(3 dgav)作为(2 squid)的父代理,(4 squid)作为(3 dgav)的父代理(这就是我说的浪费),当然也可以调整一下:

代码
  1. 1 客户端 <——>2 dgav<——>3 squid<——>4 Internet   
  2.              -------   --------   
  3.                一级         二级  

把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为父代理:

代码
  1. cache_peer 二级防火墙IP地址 parent 8080 0 no-query no-digest no-netdb-exchange default   
  2. cache_peer_access 二级防火墙IP地址 allow all   
  3.   
  4. #只有ftp和http流量通过二级防火墙
  5. acl acl_proto_ftp proto FTP   
  6. never_direct allow acl_proto_ftp   
  7.   
  8. acl acl_proto_http proto HTTP   
  9. never_direct allow acl_proto_http   

二级防火墙上的squid只设置visible_hostname,可以设置成服务器的IP地址,不然squid 起不来,同时禁用log和cache,其余选项根据需要设置。

« 上一篇 | 下一篇 »

引用

点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5

1条记录访客评论

哈哈~以来ta139就非得进入这里不可~~好好玩哦~
对咯,你们的邮件系统很好用~~

Post by painthoo on 2008-08-21, 11:03 PM 引用此文发表评论 #1


发表评论

评论内容 (必填):