Skip to content Skip to main navigation Skip to footer

Linux:用 CentOS 6 快速配置一台企业级 Web 代理服务器

  Web代理服务器让企业员工可以快速安全地浏览网络。Web代理服务器可以缓存内存,让用户之后对相同网页的请求由本地缓存来处理,这比多次返回网 站来得更快速。代理服务器还能扫描入站网络流量,查找有无恶意内容,并且保护最终用户远离病毒;它们还可以控制哪些用户访问什么样的网络内容。为了充分利 用所有这些功能,本文逐步介绍安装和配置一台简单Web代理服务器(带病毒过滤功能)的整个过程。

  一个完美的安全Web代理服务器包括下列组件:

  • Squid——主要的软件和代理服务。
  • ClamAV——检查入站内容的反病毒软件。
  • C-icap——采用互联网内容适配协议(ICAP)的服务,Squid需要该服务与其他服务进行联系。
  • SquidClamav——基于ClamAV的反病毒服务,Squid通过ICAP服务连接到该服务。

安装配置

  我们将在基本的CentOS 6平台上运行代理服务器,该平台上没有预先安装任何软件包组。如果是最基本的安装,你可以使用来自官方镜像页面的最小镜像。一旦我们安装了操作系统,就可以安装代理服务器的各组件。

  镜像下载:http://www.centos.org/modules/tinycontent/index.php?id=30

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软件库,因为它让用户易于安装和维护。

  要将EPEL软件库安装到CentOS 6上,请运行命令rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release- 6-5.noarch.rpm。之后,要安装ClamAV,请执行yum install clamav clamav-db clamd。由于这是从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
Wed Feb 22 01:03:57 2012, general, DEBUG squidclamav_end_of_data_handler: Virus redirection: http://example.org/cgi-bin/clwarn.cgi?url=http://the_url_of_your_test_virus_file: Eicar-Test-Signature FOUND.

进一步的改进

  如果到目前为止你已经做好了本文介绍的各个步骤,应该有一个带病毒防护功能的基本代理服务器了。你可以在此基础上继续改进、添加更多的功能。下面是针对你添加额外组件来加强用户安全的几个建议:

  • 使用安全DNS。这种DNS不仅可以阻止扩散恶意软件的域耗用资源,还能阻止成人网站,如果进行了相应配置的话。一项广受欢迎的安全DNS服务是诺顿DNS
  • 使用URL过滤(重定向器)。URL过滤器可与分门类别的域列表协同运行,可以根据用户拥有的许可权限,允许或禁止访问网站。这类过滤器经常用于阻止员工访问与工作无关的网站。可与Squid协同运行的一种广受欢迎的过滤器是SquidGuard。它是免费开源的,可以与随处可见的黑名单结合使用。

  要是由于某个原因,这款开源代理解决方案无法完全满足你的需要,可以研究一下主要的几款商用产品,比如SmoothWall,以便最好地满足贵企业的需要。

原文:http://olex.openlogic.com/wazi/2012/a-fast-and-secure-web-proxy-for-corporate-users/

译文:http://os.51cto.com/art/201204/327327.htm

0 Comments

There are no comments yet

Leave a comment

Your email address will not be published.