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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

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

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
23天前
|
弹性计算 编解码 大数据
性价比最高提升50%!阿里云企业级云服务器上新
阿里云ECS云服务器推出全新升级的u2系列实例,包括基于Intel的u2i实例与首个基于AMD的u2a实例,提供企业级独享算力,综合性价比最高提升50%。u2i实例已开放公测,适用于中小型数据库、企业网站建设等场景。同时发布基于AMD的第九代旗舰实例g9ae,性能提升65%,适用于大数据、视频转码等密集型业务。
139 0
|
4月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
585 87
|
25天前
|
存储 机器学习/深度学习 缓存
阿里云企业级九代云服务器:c9i、g9i、r9i实例的收费标准、性能与选型攻略
计算型c9i、通用型g9i和内存型r9i实例是阿里云专为需要高性能云服务器的用户推出的第九代新品云服务器实例规格,适用于机器学习推理应用,数据分析等场景。本文为大家介绍阿里云服务器的新品实例——计算型c9i、通用型g9i、内存型r9i实例各自的性能参数与适用场景,再到最新的活动价格与其他实例的对比选型指南,以供参考。
|
2月前
|
存储 Linux Apache
在CentOS上配置SVN至Web目录的自动同步
通过上述配置,每次当SVN仓库中提交新的更改时,`post-commit`钩子将被触发,SVN仓库的内容会自动同步到指定的Web目录,从而实现代码的连续部署。
123 16
|
2月前
|
NoSQL 安全 Linux
设置Redis在CentOS7上的自启动配置
这些步骤总结了在CentOS 7系统上设置Redis服务自启动的过程。这些命令提供了一个直接且明了的方式,确保Redis作为关键组件在系统启动时能自动运行,保障了依赖于Redis服务的应用的稳定性和可用性。
334 9
|
2月前
|
人工智能 安全 算法
长擎安全操作系统:构筑企业级服务器安全的坚固基石
长擎安全操作系统,以自主可控内核为基础,构建七层纵深防御体系,全面支持国密算法与可信计算,适配能源、金融、制造等关键行业,为企业服务器提供全方位安全保障,助力数字化转型安全发展。
|
4月前
|
Ubuntu 安全 Linux
CentOS与Ubuntu中防火墙配置命令集汇
有了这些,你就能遨游在 CentOS 和 Ubuntu 的海洋中,频繁地改变你的防火墙设置,快速地应对各种安全威胁,同时也能保证你的系统可以正常工作。出发吧,勇敢的编程者,随着这些命令集的涌动,扬帆起航,走向安全的网络世界!
146 5
|
4月前
|
存储 弹性计算 调度
阿里云服务器实例选型参考:共享型与企业级实例性能与使用场景区别及选择参考
阿里云服务器实例从产品规格角度来说,主要分为共享型和企业级。共享型主要有突发性能 t5、t6 实例以及共享 N4、S6 以及经济型e等实例规格,企业级(也称独享型)实例有计算型、通用型、内存型等众多实例规格,那么,这两种类型的实例究竟有什么区别?作为用户又应该如何做出合适的选择呢?接下来,本文为大家介绍共享型与企业级实例性能与使用场景区别及选择参考。
191 10

热门文章

最新文章