位置:海鸟网 > IT > linux/Unix >

建立可全面监控Squid代理服务器

代理服务器的功能是代理网络用户取得网络信息,它是网络信息的中转站。随着代理服务器的广泛使用,随之而来的是一系列的安全问题。由于没有对代理服务器的访问控制策略作全面细致的配置,导致用户可以随意地通过代理服务器访问许多色情、反动的非法站点,而这些行为往往又很难追踪,给管理工作带来极大的不便。

部署Squid服务器

1.各种代理服务器的比较

Linux下的代理服务器软件很多,但是被广泛应用的只有Squid、socks、Apache等几个实践证明是高性能的代理软件。下面我们分别来比较一下这几个软件,如图1所示。


图1Linux下主流代理服务器比较

虽然上面所列种类还不太全面,但是所谓窥一斑而知全豹,从中我们也可以看出什么样的代理服务器是被用户广泛使用的。Squid是Linux下一个缓存Internet数据的代理服务器软件,其接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户想要下载一个主页时,可以向Squid发出一个申请,要Squid代替其进行下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份。当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。目前,Squid可以代理HTTP、FTP、GOPHER、SSL和WAIS协议,暂不能代理POP3、NNTP等协议。Squid可以工作在很多操作系统中,如AIX、Digital、Unix、FreeBSD、HP-UX、Irix、Linux、NetBSD、Nextstep、SCO、Solaris、OS/2等。Squid支持以下协议:

客户端协议:HTTP、FTP、Gopher、WAIS、SSL
缓存及管理协议:ICP、CacheDigests、SNMP、HTCP

2.Squid工作原理和流程图

1)代理服务器的工作机制

代理服务器的工作机制很象我们生活中常常提及的代理商,假设你自己的机器为A机,你想获得的数据由服务器B提供,代理服务器为C,那么具体的连接过程是这样的。首先,A机需要B机的数据,A直接与C机建立连接,C机接收到A机的数据请求后,与B机建立连接,下载A机所请求的B机上的数据到本地,再将此数据发送至A机,完成代理任务。

2)Squid工作流程

图2Squid工作原理图

◆客户端计算机向代理服务器端发送一个数据需求封包;
◆代理服务器端接收之后,先比对这个封包的『来源』与预计要前往的『目标』网站是否为可接受?如果来源与目标都是合法的,那么代理服务器端会预计开始替客户端计算机获取信息。
◆代理服务器首先会到自己的硬盘里面,也就是所谓的cache(缓存)查看一下有没有客户端计算机端所需要的数据,如果有的话,那就将数据直接送到客户端计算机端,而不向互联网获取信息。
◆将数据传回给客户端计算机端使用。
◆在经过以上三部查寻知道缓存没有数据,或者数据过期之后,代理服务器会向互联网上面的目标网站要求数据;
◆在将数据取回之后,代理服务器会先将取得的数据储存一份到缓存当中。
◆最后才将数据传回给客户端计算机端使用。
3.安装和配置Squid服务器

通常说来,安装Squid有两种方法:一是从Linux发行版本中获取该软件的RPM包进行;二是安装从Squid的官方站点下载该软件的源码进行编译后安装。首先要确认是否已经安装vsftpd可以使用以下命令查看:

[rpm-qsquid]

如果在系统安装时已经把squid安装上了,那么我们就可以直接对vsftpd进行配置使用了。否则,可以通过RatHetEnterpriseLinux图形界面下的“添加/删除应用程序”工具进行安装。具体方法是,选择“主选单”→“系统设置”→“添加/删除应用程序”,在弹出的界面中选中万维网服务器的“squid”选项,单击“更新”即可,见图3。

图3安装Squid代理服务器

也可以从Squid站点获取该软件的源代码安装包,包括gz和bz2两种压缩方式。
监控Squid工作情况

1.使用Linux命令和工具分别使用KDE系统卫士和netstat命令检查Squid代理组服务器允许情况,和端口使用情况,如图4。

图4查看Squid服务器运行进程和端口

如果你的桌面出现图3类似的情况表示Squid代理服务器基本运行正常。

2.使用cachemgr.cgi

1)cachemgr.cgi配置过程

squid本身提供一个cgi程序,文件名为cachemgr.cgi,squid安装完后将它复制到Apache服务器下的cgi-bin这个目录下即可使用。

#cp/usr/lib/squid/cachemgr.cgi/home/httpd/cgi-bin

下面我们通过apache进行监控squid,修改配置文件/etc/http/conf/http.conf,添加以下内容:

<Location/cgi-bin/cachemgr.cgi>
AuthTypeBasic
AuthNamw"Squidadmin"
AuthUserFile/usr/local/squid/etc/squid.pwd
requirevalid-user
</Location>

生成口令文件:

#cd/usr/local/squid/etc
#htpasswd-csquid.pwdsquidadmin“创建密码文件”
Newpasswd:
Re-typenewpasswd:
Addingpasswordforusersquidadmin
#chownapache:apchesquid.pwd“将认证口令文件的属主改为apache”

重启squid与http,要察看CacheManager提供的信息时,请在浏览器的地址列中键入服务器的名称或IP地址/cgi-bin/cachemgr.cgi。首先看到用户认证界面,经过认证后进入登录界面,输入代理服务器地址和端口号,见图5。

图5cachemgr.cgi登录界面


输入管理员名称和口令,按“continue”按纽进入Squid监控界面见图6

图6cachemgr.cgi实时监控界面

(2)重点解读监控数据

cachemgr.cgi提供的数据非常详细,下面重点解读一些内容:

◆MemoryUtilization(内存使用情况)

内存是Linux所管理的最重要的资源之一。内存管理系统是操作系统中最为重要的部分,因为系统的物理内存总是少于系统所需要的内存数量。虚拟内存就是为了克服这个矛盾而采用的策略。系统的虚拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量。Linux支持虚拟内存,就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大。核心把当前不用的内存块存到硬盘,腾出内存给其他目的。当原来的内容又要使用时,再读回内存。MemoryUtilization监控界面见图7。