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

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

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

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

安装配置

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

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

镜像下载: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,以便最好地满足贵企业的需要。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容