web代理服务器让企业员工可以快速安全地浏览网络。web代理服务器可以缓存内存,让用户之后对相同网页的请求由本地缓存来处理,这比多次返 回网站来得更快速。代理服务器还能扫描入站网络流量,查找有无恶意内容,并且保护最终用户远离病毒;它们还可以控制哪些用户访问什么样的网络内容。为了充 分利用所有这些功能,本文逐步介绍安装和配置一台简单web代理服务器(带病毒过滤功能)的整个过程。
一个完美的安全web代理服务器包括下列组件:
● squid——主要的软件和代理服务。
● clamav——检查入站内容的反病毒软件。
● c-icap——采用互联网内容适配协议(icap)的服务,squid需要该服务与其他服务进行联系。
● squidclamav——基于clamav的反病毒服务,squid通过icap服务连接到该服务。
安装配置
我们将在基本的centos 6平台上运行代理服务器,该平台上没有预先安装任何软件包组。如果是最基本的安装,你可以使用来自官方镜像页面的最小镜像。一旦我们安装了操作系统,就可以安装代理服务器的各组件。
squid
squid可以从官方的centos 6软件库获得。只要执行yum install squid,即可安装它。确保squid随系统自动开启和关闭,为此借助命令chkconfig squid on,把它添加到默认的系统启动和关闭级别。
默认情况下,squid的主配置文件/etc/squid/squid.conf允许通过常见端口的来自本地网站的请求。去掉cache_dir ufs /var/spool/squid 100 16 256这一行的注释,那样代理服务器将文件缓存在磁盘上。这个命令的参数指示代理服务器使用默认的ufs存储格式。缓存目录是/var/spool /squid,它应该可以存储最多100mb的内容,16个一级子目录和256个次级子目录。考虑将缓存大小从100mb增加到1000mb,因为 100mb太低了,满足不了如今的浏览需求。
在同一个文件中,在默认配置信息后面,添加下列几个命令:
icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_encode off
icap_client_username_header x-authenticated-user
icap_preview_enable on
icap_preview_size 2048
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all
这个基本配置指示squid使用在本地主机上运行的squidclamav icap服务,本地主机使用tcp端口1344。对非缓存内容而言,需要使用这项服务。你可以从官方的squid说明文档,找到关于所有配置命令的更多信息。
clamav
clamav并不存在于默认的centos 6软件库中,所以你要么从源代码安装,要么使用第三方软件库。我建议使用epel软件库,因为它让用户易于安装和维护。
执行chkconfig clamd on,确保clamav后台守护进程clamd自动启动和终止。
你可以设置最基本的clamav配置,只需编辑文件/etc/clamd.conf。你得至少移除显示example的那一行,那样该服务就能启动。你 可能还考虑更改一些命令的默认值。比如说,可以定义使用scanpe、scanelf和scanpdf来扫描哪些文件扩展名。为了提升性能,可以将待扫描 文件的默认最大值(maxfilesize)由25mb改成其他值,或者更改每个文件的多少数据有待扫描(maxscansize)——100mb是默认 值。值越大,所需的资源就越多,代理服务器的速度也就越慢。
clamav病毒特征数据库由一个名为freshclam的独立程序来更新。其配置文件是/etc/freshclam.conf。为了使用它,你同样得至少移除文件开头部分显示example的那一行。大多数设置不用管,保持默认值就可以了。
如果你执行没有参数的freshclam,病毒特征更新一次,程序退出。你可以将freshclam配置成一项计划任务(cron job),定期检查clamav更新版,或者可以在后台守护模式下启用它,只需运行freshclam -d -c 2,其中-d指明了后台守护模式,-c 2指明了每天更新几次——这个例子中每天两次。把这个命令添加到/etc/rc.local文件中,就可以确保下一次服务器重启时,它会启用。
在/etc/freshclam.conf中可能需要更改的一项值得关注的设置是safebrowsing,它在默认情况下被设置成关闭。这个 设置指定了你是不是想使用谷歌的safe browsing(安全浏览)数据库,该数据库里面含有一份更新后的列表,收录了已知的恶意网站。你应该启用它,对性能只有一点影响,除非贵企业的最终用 户在使用已经采用该数据库的浏览器,比如mozilla firefox和谷歌chrome。你只要指定safebrowsing yes,就可以开启它。
c-icap
c-icap并不存在于默认的软件库或epel中,所以你得从其网站的源代码安装,对其进行解压缩,然后完成标准的配置、编译和安装这个过程。
由于c-icap是从源代码自定义安装,并不得到chkconfig的支持。因而,为了让c-icap服务器在系统启动时自动开启,就用新的一行,将其二进制可执行代码/usr/local/bin/c-icap添加到底部的/etc/rc.local。
你可以找到默认情况下在/usr/local/etc/c-icap.conf的c-icap配置文件。大多数默认选项不用管它。指定 serverlog /var/log/icapserver.log,将服务器的活动记录到文件/var/log/icapserver.log中;我们以后要用到服务器的 日志,确保一切都在正常运行。
你在检查配置时,要注意modulesdir和servicesdir这两个命令。默认情况下,两者都指向/usr/local/lib/c_icap。这个目录是你安装icap服务和模块(如squidclamav)的地方。
squidclamav
你得从源代码安装squidclamav,原因与c-icap一样。一旦你从其sourceforge网页下载它,对其进行解压缩,然后完成标准的配置、编译和安装这个过程。
为了确保squidclamav正确安装,要检查目录/usr/local/lib/c_icap。你应该会看到两个文件:squidclamav.la(libtool 库文件)和squidclamav.so(模块本身)。
squidclamav并不作为一项独立的服务来运行,所以没必要把它添加到默认的运行级别来实现自动启动。相反,它是通过c-icap服务器来访问的。
squidclamav的配置文件位于/etc/squidclamav.conf。这里,默认配置的大部分选项直接可以拿来用。要更改的其中 一个选项是redirect。最终用户试图下载病毒时,他们会被重定向至你在这里指定的url。创建详细描述的一个页面,否则你这个管理员会接到大量投 诉,反映下载的内容莫名其妙地无法运行。
为了创建重定向页面,可以使用脚本cgi-bin/clwarn.cgi,你可以在sqidclamav的源代码归档文件中找到它。只要将它上传至网站,指定redirect example.org/cgi-bin/clwarn.cgi即可。
测试代理服务器
至此,你的代理服务器应该已安装完毕、合理配置。为了确保所有服务自动开启,重启服务器,然后开始测试。
你开始测试时,确保可以通过tcp端口3128这个默认代理端口,连接到服务器的ip地址。你必须在默认的centos 6防火墙中允许连接到这个端口,除非按基本centos 6安装中建议的那样禁用了防火墙。
一旦你确保了可以连接到这个端口,对浏览器进行同样详细的配置:至于http代理地址,就使用服务器的ip地址;至于端口,使用端口3128。 然后开始浏览网络,看看代理服务器与未使用代理的浏览相比结果怎样。不妨模拟一下许多用户通常浏览的场景。你可能会发现,随着更多的用户开始使用代理服务 器,服务器的资源必须随之增加。
在服务器端,监控下列日志:
● squid的日志——默认情况下,它在文件/var/log/squid/access.log中。你会在那里看到哪些用户的ip地址在提出什么样的请求。
● c-icap服务器的日志——与/usr/local/etc/c-icap.conf中通过serverlog之前配置的那样,它应该在/var/log/icapserver.log中。
对你的代理服务器来说最重要的测试就是,试着下载病毒,看看结果如何。网上有众多资源介绍如何创建含有已知病毒特征的测试文件。一旦创建了这样 一个文件,把它上传至某个地方,试着使用新建的代理服务器,用浏览器来下载它。如果一切运行正常,在c-icap服务器的日志中应该会看到这样的条目:
wed feb 22 01:03:57 2012, general, debug squidclamav_end_of_data_handler: received from clamd: stream: eicar-test-signature found
进一步的改进
如果到目前为止你已经做好了本文介绍的各个步骤,应该有一个带病毒防护功能的基本代理服务器了。你可以在此基础上继续改进、添加更多的功能。下面是针对你添加额外组件来加强用户安全的几个建议:
● 使用安全dns。这种dns不仅可以阻止扩散恶意软件的域耗用资源,还能阻止成人网站,如果进行了相应配置的话。一项广受欢迎的安全dns服务是诺顿dns。
● 使用url过滤(重定向器)。url过滤器可与分门类别的域列表协同运行,可以根据用户拥有的许可权限,允许或禁止访问网站。这类过滤器经常用于阻止员工 访问与工作无关的网站。可与squid协同运行的一种广受欢迎的过滤器是squidguard。它是免费开源的,可以与随处可见的黑名单结合使用。
要是由于某个原因,这款开源代理解决方案无法完全满足你的需要,可以研究一下主要的几款商用产品,比如smoothwall,以便最好地满足贵企业的需要。