首页 > 代码库 > Linux -- 代理服务器(Squid Server)的配置与应用2
Linux -- 代理服务器(Squid Server)的配置与应用2
代理客户端的配置
本节分别以Linux和Windows系统环境下典型的Web浏览器Firefox和IE为例,为大家讲述代理客户端的配置工作过程。
16.5.1 Firefox代理设置
在Linux环境下通常都使用Firefox作为Web浏览器。下面我们就以在Red Hat Enterprise Linux 5 操作系统中的Firefox V1.5.0.9为例,讲解如何进行代理客户端的配置工作。
在Firefox浏览器中,选择"编辑"菜单中的"首选项"子菜单,如图16-24所示。
在弹出的"Firfox首选项"对话框中,在"常规"属性页中单击"连接设置"按钮,如图16-25所示。
在弹出的"连接设置"对话框中,我们选中"手动代理配置"选项,然后在"HTTP代理"文本框中输入正确的代理服务器的IP地址和端口号。如果还想通过代理服务器使用SSL、FTP、Gopher和SOCKS协议,则可以选中"为所有协议使用相同代理"复选框,最后单击"确定"按钮完成代理客户端的配置工作,如图16-26所示。
IE代理设置
在Windows环境下通常都使用IE作为默认的Web浏览器。下面就以配置Windows XP系统的IE 7.0为例,讲解如何进行代理客户端的配置工作。
打开IE浏览器,选择"工具"菜单中的"Internet选项"子菜单,如图16-27所示。
在弹出的"Internet选项"对话框中,选择"连接"属性页,单击"局域网设置"按钮,如图16-28所示。
在弹出的"局域网(LAN)设置"对话框中,首先勾选"为LAN使用代理服务器(这些设置不会应用于拨号或VPN连接)"复选框,然后在"地址"文本框中输入正确的代理服务器的IP地址,在"端口"文本框中输入正确的代理服务器的端口号。如果还想通过代理服务器使用SSL、FTP、Gopher和SOCKS等协议,则可以单击"高级"按钮,如图16-29所示。
在弹出的"代理服务器设置"对话框中,我们首先去掉已经勾选的"对所有协议均使用相同的代理服务器"复选框,然后根据各个协议代理服务器的配置情况,正确地填写相应的代理服务器地址和访问端口,最后单击"确定"按钮完成代理客户端的配置工作。
访问控制应用实例
通过前几节的学习,我们应该对Squid代理服务从理论上有了一定的认识,接下来通过应用实例的学习,希望能够使大家对Squid代理服务有一个更为深入的理解。在学习实例之前有必要强调一下,Squid访问控制列表是顺序读取的,应将配置文件squid.conf中的以下两个规则始终放置在acl语句的最后,否则这两条规则会覆盖其他的acl语句。
acl all src 0.0.0.0/0.0.0.0
http_access deny all
同样的道理,当配置文件中配置多条访问控制规则时,必须注意其顺序,避免规则相互覆盖或屏蔽。另外,每次修改完配置文件后,若想使修改后的规则生效就必须重新载入配置文件,即运行命令"/etc/rc.d/init.d/squidreload"。
【实例一】禁止IP地址为192.168.1.102的客户机上网。
我们可以定义如下规则实现上述要求:
acl badclientip src 192.168.1.102
http_access deny badclientip
该规则定义了一条名为badclientip的acl,acl类型为src源IP地址方式,列表值为192.168.1.102,然后使用http_access参数禁止badclientip规则。也就是在IP地址为192.168.1.102的客户机通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,该终端客户访问Internet资源的请求将会被拦截,终端客户的Web浏览器中会显示拒绝访问的错误提示信息,如图16-31所示。
【实例二】禁止IP地址属于192.168.1.0这个子网的所有客户机上网。
我们可以定义如下规则实现上述要求:
acl badclientsubnet src 192.168.1.0/24
http_access deny badclientsubnet
该规则定义了一条名为badclientsubnet的acl,acl类型为src源IP地址方式,列表值为192.168.1.0/24,然后使用http_access参数禁止badclientsubnet规则。也就是在IP地址为192.168.1.0子网的客户机通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,当前定义子网的终端客户访问Internet资源的请求将会被拦截,终端客户的Web浏览器中会显示拒绝访问的错误提示信息。
【实例三】禁止所有终端用户访问IP地址为64.233.189.99(www.google.com)的网站。
我们可以定义如下规则实现上述要求:
acl badserverip dst 64.233.189.99
http_access deny badserverip
该规则定义了一条名为badserverip的acl,acl类型为dst目标IP地址方式,列表值为64.233.189.99,然后使用http_access参数禁止badserverip规则。也就是在终端用户通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,当前所有终端客户访问IP地址为64.233.189.99的服务器资源的请求将会被拦截,终端客户的Web浏览器中会显示拒绝访问的错误提示信息。
【实例四】禁止所有终端用户访问域名为www.google.com的网站。
我们可以定义如下规则实现上述要求:
acl baddomain dstdomain -i
http_access deny dstdomain
该规则定义了一条名为baddomain的acl,acl类型为dstdomain目标域名方式,列表值为www.google.com,然后使用http_access参数禁止baddomain规则。也就是在终端用户通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,当前所有终端客户访问域名为www.google.com的服务器的Web资源的请求将会被拦截,终端客户的Web浏览器中会显示拒绝访问的错误提示信息。但需要大家注意的是,这个限制规则仅对google.com域的WWW服务进行了限制,而对于Mail服务等并未限制。
【实例五】禁止所有终端用户访问域名包含为google.com的网站。
我们可以定义如下规则实现上述要求:
acl badurl url_regex -i google.com
http_access deny badurl
该规则定义了一条名为badurl的acl,acl类型为url_regex URL规则表达式匹配方式,列表值为google.com,然后使用http_access参数禁止badurl规则。也就是在终端用户通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,当前所有终端客户访问服务器的URL中含有google.com的所有资源的请求将会被拦截,终端客户的Web浏览器中会显示拒绝访问的错误提示信息。例如,www.abc.com/google/test.index、www.google.com、mail.google.com等URL均被拦截。
【实例六】限制IP地址为192.168.1.102的客户机并发连接的最大连接数为5。
我们可以定义如下规则实现上述要求:
acl clientip src 192.168.1.102
acl clientmaxconn maxconn 5
http_access deny clientip clientmaxconn
上述规则定义了一条名为clientip的acl,该acl类型为src源地址方式,列表值为192.168.1.102;还定义了一条名为clientmaxconn的acl,该acl类型为maxconn单一IP的最大连接数方式,列表值为5,然后使用http_access参数禁止clientip、clientmaxconn规则。也就是在终端用户通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,终端用户通过IP地址为192.168.1.102的客户机同时访问Internet资源的线程数不能超过5。这样可以防止特定客户开太多线程而占用服务器资源和带宽。
【实例七】禁止客户机IP地址在192.168.2.0子网的所有终端客户在星期一到星期五的9:00到18:00访问Internet资源。
我们可以定义如下几条规则实现上述要求:
acl clientnet src 192.168.2.0/24
acl worktime time MTWHF 9:00-18:00
http_access deny clientnet worktime
上述规则定义了一条名为clientnet的acl,该acl类型为src源地址方式,列表值为192.168.2.0/24;还定义了一条名为worktime的acl,该acl类型为time时间段方式,列表值为MTWHF 9:00-18:00,然后使用http_access参数禁止clientnet、worktime规则。也就是在终端用户通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,终端用户通过IP地址属于192.168.2.0网段的所有客户机不能在星期一到星期五的9:00到18:00期间访问Internet资源。
【实例八】禁止终端用户在任何客户机上下载文件扩展名为mp3、exe、zip和rar类型的文件。
我们可以定义如下规则实现上述要求:
acl badfile urlpath_regex -i \\.mp3$ \\.exe$ \\.zip$ \\.rar$
http_access deny badfile
该规则定义了一条名为badfile的acl,该acl类型为urlpath_regex略去协议和主机名的URL规则表达式匹配方式,列表值为\\.mp3$ \\.exe$ \\.zip$ \\.rar$;同时使用-i参数是为了忽略列表值大小写的检查,然后使用http_access参数禁止badfile规则。也就是在终端用户通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,所有终端客户访问服务器的URL中以mp3、exe、zip和rar结尾的所有资源的请求将会被拦截,终端客户的Web浏览器中会显示拒绝访问的错误提示信息。例如,http://www.abc.com/google/test.mp3、http://www.cqit.edu.cn/cs/123.zip、http://www.cqit.edu.cn/cs/siyanzhidao. rar等URL均被拦截。
Squid日志管理
网络流量日志分析对于网络管理员来说非常重要。通过系统记载的流量日志,管理员可以清楚地看到用户对网络服务器的使用情况,能够从中挖掘及发现网络中可能存在的安全问题。
在Linux下有许多日志及流量分析软件。Webalizer是一个高效、免费的Web服务器日志分析程序,其官方站点为http://www.webalizer.org/,如图16-32所示。Webalizer分析结果以HTML文件格式保存,从而可以很方便地通过Web服务器进行浏览。Internet上的很多站点都使用Webalizer进行Web服务器日志分析。本节将以对Red Hat Enterprise Linux 5下的代理服务器Squid的流量日志分析为例,详细地介绍如何使用该软件进行流量分析。
Webalizer具有以下一些特性:
用C语言编写的程序,所以该系统具有很高的运行效率。在主频为1.6GHz的机器上,Webalizer每秒钟可以分析70000条记录,也就是说,分析一个200MB大小的日志文件只需要30秒。
Webalizer支持标准的一般日志文件格式(Common LogfileFormat);除此之外,也支持几种NCSA的组合日志格式(CombinedLogfile Format)的变种,从而可以统计客户情况及操作系统类型。现在Webalizer已经可以支持wu-ftpd/proftpd xferlog日志格式及Squid代理服务器日志文件格式了。
支持命令行配置及配置文件。
支持多种语言,也可以自己进行本地化工作。
支持多种平台,比如UNIX、Linux、NT、OS/2和Mac OS等。
安装Webalizer
1.源代码安装方式
Webalizer的安装过程如下:
访问Webalizer的下载地址http://www.webalizer.org/download.html,如图16-33所示,单击"The Completesource distribution"栏目中的"Tar/Gziparchive"超链接下载"webalizer-2.20-01-src.tgz"安装文件,当前最新的稳定版本为2.20-01,文件大小为525KB。
RPM包安装方式
以RPM包方式安装Webalizer的过程如下:
可以使用下面的命令检查系统是否已经安装了Webalizer,如图16-34所示。
[root@localhost ~]#rpm -qa|grep webalizer
如果当前系统还未安装Webalizer,则需要在Red HatEnterprise Linux 5的安装盘中找到并安装以下RPM包文件:
webalizer-2.01_10-11.i386.rpm (位于第2张安装盘中)
要安装上述RPM包文件,可以将Red HatEnterprise Linux 5的安装盘放入光驱,加载光驱后在光盘的Server目录下找到相应的RPM安装包文件,然后使用rpm -ivh命令安装。
[root@localhost ~]# rpm -ivh webalizer-2.01_10-11.i386.rpm
配置Webalizer
我们可以通过命令行配置Webalizer,也可以通过配置文件进行配置。下面将重点介绍使用配置文件进行配置,该方法使用形式比较直观,使用比较普遍。
Webalizer的配置文件的路径是"/etc/webalizer.conf",它有一个对应的模板文件/etc/webalizer.conf.sample。在一般情况下,该配置文件的默认参数配置都能满足一定的应用需要,可以直接使用。接下来以实例的方式给大家介绍如何配置该文件。
使用vi编辑Webalizer配置文件。
Squid日志管理知识
Squid是Linux下一个缓存Internet数据的代理服务器软件,其接收用户的下载申请,并自动处理所下载的数据。在网络环境下,本地网络管理员经常可以通过Squid来代理访问互联网上的很多资源,因而对其进行日志审核和管理具有重大意义。
Squid日志管理的功能比较强大。通过查看相关日志文件,用户可以实时、准确地了解代理服务器的访问记录、Cache的存储状况、Cache的访问记录等许多有用的信息,从而高效地对代理服务器进行管理。
Squid最重要的日志文件就是访问日志,其访问路径为"/var/log/squid/access.log"。该日志文件记录了客户使用代理服务器的许多有用信息,包括使用时间、请求的内容、客户端信息等。该文件的格式如下:
time eclapsed remotehost code/status bytes
method URL rfc931 peerstatus /peerhost type
下面给出了实际应用中的一段真实的访问日志,只取出了其中的一部分。
#cd /var/log/squid
#cat access.log
1119263842.955 195 192.168.10.3 TCP_MISS/200
1286 GET . cn/sina/ae/ad_src/
popup/pops1.html? - DIRECT/218.30.108.19 text/html
1119263843.241 286 192.168.10.3 TCP_MISS/200
44689 GET . cn/200506/15/
21135_300x250.GIF - DIRECT/218.30.108.18 image/gif
以第一条日志记录为例,其各个字段的含义如下:
客户访问代理服务器的时间为1119263842.955毫秒;处理缓存所花费的时间为195毫秒;客户端的IP地址为192.168.10.3,为内网地址;结果信息编码/状态信息编码为TCP_MISS/200;缓存字节数为1286;HTTP请求方法为GET;访问的目的地址的URL为:http://ad4.sina.com.cn/sina/ae/ad_src/popup/pops1.html;缓存级别/目的IP地址为:DIRECT/218.30.108.19;缓存对象类型为text/html;rfc913暂未使用,用"-"表示。
在上述的10个字段当中,结果信息编码及状态信息编码比较重要,其表明了代理服务器对于客户请求的信息的返回结果,与代理服务器的Cache命中率及Cache处理过程有直接关系。该信息能够真实地反映代理服务器的Cache的整体性能,具有较大的参考价值。
应用Webalizer查看Squid网络流量日志
Webalizer可以将大量的Squid日志信息综合起来进行统计,得出可视化的显示结果供网络管理员或者网络用户进行参考和评价Squid服务器的使用情况,对于做出相应的决策有相当的参考价值。
在使用过程中需要注意:由于该软件的使用结果都是通过Web页面来显示的,所以与Web服务器的联系比较紧密。下面给出该软件结合Squid服务器的使用示例。在通常情况下,配置好该软件之后,启动Web服务器(只有启动该服务器才能通过Web页面来查看日志统计的详细情况)和该软件即可。
[root@localhost ~]# service httpd start
[root@localhost ~]# /usr/sbin/webalizer -c /etc/webalizer.conf
启动Apache服务及该软件后,就可以通过浏览器来查看Squid代理服务器的流量分析结果了。在IE浏览器的地址栏中输入Apache服务器的地址:http://192.168.1.101/usage,则得到如图16-35所示的结果。
图16-35中给出了流量分析的示意图及一些数据说明,可以通过单击图中"Summary by Month"表格的"Jul 2005"超链接,来显示更详细的统计分析数据。通过分析和查看这些统计图表的结果,用户可以清楚地知道Squid代理服务器使用的细节情况,并可以根据显示情况来对服务器做出适当的调整和优化。
使用Webalizer还有一个需要注意的问题是:通常并不需要每个用户都有权限来查看代理服务器的流量情况,否则对于系统来说是不安全的。非法用户为了掩盖自己非法使用代理服务器的目的,可以对流量统计情况的结果进行修改、删除等操作。所以,我们需要使用访问控制策略来对上述分析图表的查看权限进行控制,可以在Apache的主配置文件/etc/htpd/conf/httpd.conf中进行认证和授权配置,如下所示:
< Directory "/var/www/html/usage">
//使用基本认证方式
AuthType Basic
//指定认证域名称
AuthName "admin"
//指定认证口令文件存放的位置
AuthUserFile /var/www/passwd/admin
//授权给认证口令文件中的所有用户
require valid-user
< /Directory>
认证和授权配置成功后,需要创建认证口令文件及添加用户。
[root@localhost ~]# mkdir /var/www/passwd
[root@localhost ~]# cd /var/www/passwd
[root@localhost passwd]# htpasswd -C admin jackiee
New password:
Re-type new password:
Adding passwor for user jackiee
然后,将口令文件的属主改为apache,并重新启动Apache。
[root@localhost ~]# chown apache.apache admin
[root@localhost ~]# service httpd restart
经过上面的配置后,用户在IE地址栏内输入路径http://192.168.1.101/usage后,具有认证和授权的用户才能通过用户认证界面,查看Squid代理服务器的流量分析报表信息。
参考:http://book.51cto.com/art/200904/119292.htm
本文出自 “Ricky's Blog” 博客,请务必保留此出处http://57388.blog.51cto.com/47388/1554346
Linux -- 代理服务器(Squid Server)的配置与应用2