当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > 建立可全面监控Squid代理服务器

Linux服务器
Linux Vsftpd本地用户不能登录问题
ChartDirector Linux下中文显示问题
关于Linux操作系统Fork的使用
Apache的基本设置和乱码解决方法
Apache的httpd.conf的配置详解
Linux Shell下的后台运行及其前台的转换
Linux操作系统两用户之间的信任关系
Linux操作系统下Shutdown命令-[option]
Linux系统下SSH远程登录速度慢?
Linux操作系统的时间服务器配置方法
Ubuntu Linux中文支持及编码问题
Linux下实现FTP虚拟主机的方法
Linux下查看某目录或指定文件大小的命令
Linux刷新主板BIOS的方法
闪盘(Thumb drive)装Linux系统
Linux文本模式下发送带附件的Email
删除文件提示:Operation not permitted
配置Linux的环境变量
Linux系统下硬盘挂载详细说明
Linux和Unix最常用的网络命令

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 160 ::
收藏到网摘: n/a

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

部署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的官方站点http://www.squid-cache.org/下载该软件的源码进行编译后安装。首先要确认是否已经安装vsftpd可以使用以下命令查看:

[rpm-qsquid]

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

图3安装Squid代理服务器

也可以从Squid站点www.squid-cache.org获取该软件的源代码安装包,包括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提供的信息时,请在浏览器的地址列中键入http://服务器的名称或IP地址/cgi-bin/cachemgr.cgi。首先看到用户认证界面,经过认证后进入登录界面,输入代理服务器地址和端口号,见图5。

图5cachemgr.cgi登录界面

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

图6cachemgr.cgi实时监控界面

(2)重点解读监控数据

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

◆MemoryUtilization(内存使用情况)

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

图7MemoryUtilization监控界面

一个内存池是主要的物理内存逻辑区分,包括一个工作或工作组。你能检查正在使用每个进程的内存,空闲的内存,以及泄露的内存。

◆EventQueue(事件队列)
◆AsyncIOFunctionCounter(同步IO运行)
◆DISKDStats(磁盘使用情况)
◆CurrentSquidConfiguration(配置文件通常是处于隐藏状态)。
◆comm_incoming(低水平网络IO情况)
◆IPCacheStatsandContents(IP缓存使用情况)
◆FQDNCacheStatsandContents(域名缓存使用情况)
◆InternalDNSStatistics(内部域名统计)
◆ExternalACLstats(扩展ACL)
◆HTTPHeaderStatistics(HHTP包头统计)
◆CacheUtilization(缓存使用情况)
◆FullHistogramCounts(柱状图统计)
◆ProcessFiledescriptorAllocation(进程分配)
◆5MinuteAverageofCounters(5分钟统计平均值)
◆60MinuteAverageofCounters(60分钟统计平均值)
◆CacheClientList(缓存客户端列表)
◆GeneralRuntimeInformation(squid服务器总体运行情况列表)见图8。

图8Squid总体运行情

3.安全应用cachemgr.cgi监控

cachemgr.cgi可以监测的数据包括:网络流量、使用协议、系统负载、数据包发送时间等。透过它,基本上所有进出数据都无所遁形,不管拿来做例行的网络监测工作,还是拿来做报告,都是非常优秀的工具,让您的网络流量透明化,通过对这些数据的分析,网络管理员可以深入了解网络当前的运行状况。不过如何保护这些信息只能给授权的人士获得,将变得额外重要。除了前面介绍的控制访问外最好使用SSL协议保护敏感的监控网页。

保护HTTP通讯:SSL的一个常见的用途是保护浏览器和网络服务器之间的网络HTTP通讯,但这并排除应用于不加保护的HTTP。其方法主要是,对普通HTTP加以SSL保护(称为HTTPS),但有一个重要的区别:它使用URL类型https而不是http,而且使用不同的服务器端口(默认的是443)。限于篇幅SSL配置过程读者可以参考一些修改书籍。配置SSL完成后。使用浏览器访问首页输入:https://IP地址或者域名/cgi-bin/cachemgr.cgi在Linux下Firefox浏览器屏幕提示https安全。注意浏览器位置栏和右下角的安全标志,见图9。

图9Firefox浏览器https安全性提示的界面

注意客户端如果使用IE的话,此时只有右下角的安全标志。通过SSL(Securesocketlayer)进行HTTP传输的协议就是HTTPS,它不但通过公用密钥的算法进行加密保证传输的安全性,而且还可以通过获得认证证书CA,保证客户连接的服务器没有被假冒。

关注Squid代理服务器日志

Linux网络管理员应当尽量记录所有日志,这些日志会记录所有异常访问的线索。网络日志不是用来应付检查,而且它能够帮助你更好地从事网络管理工作。它记录了系统每天发生的各种各样的事情,包括哪些用户曾经或者正在使用系统,可以通过日志来检查错误发生的原因,更重要的是在系统受到黑客攻击后,日志可以记录下攻击者留下的痕迹,通过查看这些痕迹,系统管理员可以发现黑客攻击的某些手段以及特点,从而能够进行处理工作,为抵御下一次攻击做好准备。

1.Squid日志格式

squid拥有完善的日志系统,但是对用户来说,以下的几个日志文件具有重要的意义:

access.log
该文件主要包含了客户访问的相关信息,如客户机的ip地址,访问的站点,访问的流量大小等等。一般的squid日志分析程序主要是基于该文件的。

cache.log
该文件包含着squid服务进程的相关信息,如启动的状态,错误信息等等。

store.log
该文件包含缓存中存储对象的相关信息,如对象存储的时间,对象的大小,对象超期的时间等等。

2.分析access.log日志文件

access.log日志文件的格式说明

由于access.log文件是最重要的一个日志文件,很多squid的日志分析程序都是围绕该文件编写的(如计费,流量分析,热门站点等),所以在这里我们就着重讲述一下该日志文件的格式。access.log可以有两种基本的格式,一种native(原始日志文件)日志文件格式,另外一种是common(普通日志文件)日志文件格式。common日志文件格式包含的信息要比native日志文件格式来得少,并且native日志文件包含着许多管理员感兴趣的信息。默认时,squid采用native日志文件格式。如果要切换到common日志文件格式,可以更改emulate_httpd_log选项为on。

native日志文件格式如下所示:

timeelapsedremotehostcode/statusbytesmethodURLrfc931peerstatus/peerhosttype