服务器 频道

Squid代理服务器部署使用攻略(下)

  【IT168 专稿】在上一篇文章中(点击阅读),介绍了Squid代理服务器的安装,本文接着介绍其如何使用及其注意事项。

  四、监控Squid工作情况

  1.使用Linux命令和工具

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

  图4 查看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

  require valid-user

  </Location>

  生成口令文件:

  #cd /usr/local/squid/etc

  #htpasswd -c squid.pwd squidadmin   "创建密码文件 "

  New passwd:

  Re-type new passwd:

  Adding password for user squidadmin

  #chown apache:apche squid.pwd   "将认证口令文件的属主改为apache"

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

  图5cachemgr.cgi登录界面

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

  图6 cachemgr.cgi实时监控界面

  (2)重点解读监控数据

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

  ?         Memory Utilization(内存使用情况)

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

  图7 Memory Utilization监控界面

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

  ?         Event Queue(事件队列)

  ?         Async IO Function Counter(同步IO运行)

  ?         DISKD Stats(磁盘使用情况)

  ?         Current Squid Configuration (配置文件通常是处于隐藏状态)。

  ?         comm_incoming(低水平网络IO情况)

  ?         IP Cache Stats and Contents(IP缓存使用情况)

  ?         FQDN Cache Stats and Contents(域名缓存使用情况)

  ?         Internal DNS Statistics(内部域名统计)

  ?         External ACL stats(扩展ACL)

  ?         HTTP Header Statistics(HHTP包头统计)

  ?         Cache Utilization(缓存使用情况)

  ?         Full Histogram Counts(柱状图统计)

  ?         Process Filedescriptor Allocation(进程分配)

  ?         5 Minute Average of Counters(5分钟统计平均值)

  ?         60 Minute Average of Counters(60分钟统计平均值)

  ?         Cache Client List (缓存客户端列表)

  ?         General Runtime Information(squid服务器总体运行情况列表)见图8。

  图8 Squid 总体运行情况

  General Runtime Information是cachemgr.cgi监控Squid代理服务器的核心。包括:

  Start Time:启动时间(GMT格林尼治标准时间格式)。

  Current Time:当前时间。

  Connection information for squid: Squid代理服务器连接信息。

  Cache information for squid: Squid代理服务器缓存信息。

  Median Service Times (seconds)  5 min    60 min: Squid代理服务器五分钟、60分钟相关统计信息。

  Resource usage for squid: Squid代理服务器资源使用情况。

  Memory usage for squid via mallinfo():Squid代理服务器内存统计。

  Memory accounted for:内存占用结构。

  File descriptor usage for squid:文件系统使用统计。

  Internal Data Structures:内部数据使用比例。

  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。

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

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

  五、Squid 日志分析

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

  1     squid日志格式

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

  access.log

  该文件主要包含了客户访问的相关信息,如客户机的i p地址,访问的站点,访问的流量大小等等。一般的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日志文件格式如下所示:

  time elapsed remotehost code/status bytes method URL rfc931 peerstatus/peerhost type

  子段说明见下表

  3. 使用Linux命令

  如果我们仅仅需要查看某一个字段,可以用awk命令,它把一个记录行分割成多个字段,我们使用参数传回需要的字段。命令如下:

  # tail -f /var/log/squid/access.log | awk '{print$3 " " $8 " " $7}'

  这里选择的是客户访问时间和用户请求所花费的时间,显示见图10:

  图10查看客户访问时间和用户请求所花费的时间

  这种方式的优点是实时性强,显示的是当前正在访问的记录的情况。

  4 使用专业软件分析

  事实上, squid 已经有众多的日志分析软件了,而且大多是免费的,您可以依照自己的喜好来加以安装与分析你的 squid代理服务器。

  pwebstatus( http://martin.gleeson.com/pwebstats

  webalizer(http://www.mrunix.net/webalizer/

  squid-graph(http://squid-graph.securlogic.com/

  squidsites(http://www.stefanopassiglia.com/downloads.htm

  sarg(http://sarg.sourceforge.net/

  1.Webalizer

  Webalizer工作方式不同于Linux命令,这个软件主要侧重于信息的汇总,如带宽、输入输出量,用于比较在不同的时间段网络的使用情况。可以从站点http://www.mrunix.net/webalizer/download.html下载,当前稳定版本是 2.01-10,提供RPM包和tar包格式的下载。Webalizer的配置文件是webalizer.conf,在/etc/目录下,安装后产生可执行命令webalizer,当命令执行时,寻找webalizer.conf配置文件,产生相应的输出。webalizer.conf的配置比较简单,主要是指定squid日志文件的目录位置及产生报告的输出目录,主要参数如下:"LogFile /var/log/squid/access.log"表示squid日志文件目录;"LogType squid"表示Webalizer报告文件的输出类型;"OutputDir /var/www/html/usage_squid/ "表示报告文件的输出目录。

  下面建立目录并且复制文件:

  #mkdir  /var/www/html/usage_squid/

  #cp msfree.png webalizer.png  /var/www/html/usage_squid/

  配置文件修改完毕以后,需要定时webalizer,每天生成当日的统计分析。以root身份运行crontab -e进入定时运行任务编辑状态,加入如下任务:

  $ 5 0 * * * /usr/bin/webalizer -f /etc/webalizer.squid.conf

  这样定义在凌晨00:05对squid的日志进行统计分析。可以使用浏览器查看。方法:http://IP地址或者域名/usage_quid 。工作界面见图11.

  图11 Webalizer 工作界面

  也可以通过命令行配置webalizer,也可以通过配置文件进行配置,在下面我们将介绍使用命令行参数进行配置,需要了解配置文件使用方法的朋友可以参考README文件,里面有很详细的介绍。

  2. 用Squid-Graph进行监测

  Squid-Graph是用Perl语言写成的,但正如它的名字一样,它用图形化的方法产生squid代理的使用情况,它产生一些综合信息。可以从站点http://squid-graph.securlogic.com/files/stable/squid-graph-3.1.tar.gz下载这个软件,这个软件是目前最后一个可获得的版本。这个程序的执行需要使用Perl GD模块,名称一般为GD.pm,是perl的绘图模块,其功能类似于市面上的许多图形程序。利用GD,我们展示如何创建几何图形,以及如何进行图像处理,这个模块可在软件发行版本的CD上找到,也可以从站点http://stein.cshl.org/WWW/software/GD/下载。

  把下载的软件放到/usr/local/目录,进行解压。执行如下命令:

  #cd /usr/local/

  # tar xvzf squid-graph-3.1.tar.gz

  # mv squid-graph-3.1 squid-graph

  # cd squid-graph

  # chmod +x /usr/local/squid-graph/bin/*

  软件不须安装,直接使用,比如我们用以下的命令可产生TCP访问的累计图形:

  #/usr/local/squid-graph/bin/squid-graph -c -n -o=/var/www/html/squid-graph/ --title="Squid server usage " < /var/log/squid/access.log

  上面的这个命令用-c选项产生累计图形,用-n选项指定在命令执行过程中不向屏幕上输出信息,-o选项指定输出文件的目录,-title选项指定自定义的输出文档标题,图12是一个输出示例。

  图12 squid-graph 工作界面

  另外squid-graph命令配合Linux下的其他命令如grep可以在squid日志中搜索需要的字符串,然后针对这一匹配项产生需要的图形。如下面的命令就产生了在所有日志行中有字符串"192.168.6.99"的客户端机器的使用squid代理的图形。

  #cat /var/log/squid/access.log|grep"192.168.6.99"| /usr/local/squid-graph/bin/squid-graph -c -n / -o=/var/www/html/squid-graph/ --title="192.168.6.99's usage"

  3. 用Calamaris进行监测

  Calamaris是一个用perl语言写成的程序,如果要使用的话,首先系统里要安装perl解释器。它产生Squid日志的详细报告,包括按高峰时间时的使用情况、流进网内流量、流出流量、进出UDP包、进出TCP包、请求的二级或三级域名产生的报告文档。除用于Squid日志产生的日志分析外,它还可用于其他形式的代理服务软件产生的日志,如NetCache、Inktomi Traffic Server、Oops! proxy server、Novell InterNet Caching System等。

  安装Calamaris也很简单,首先从站点http://cord.de/tools/squid/calamaris/Welcome.html.en下载Calamaris V2.59到/usr/local/目录。执行以下命令:

  #cd /usr/local/

  #tar xvzf calamaris-2.59.tar.gz

  # cd calamaris-2.59

  解压后的目录包含可执行文件calamaris,无须安装,直接使用即可,比如用以下命令使Calamaris处理squid日志文件,产生html格式的文件,并输出到/var/www/html/calamaris/index.html。然后执行如下命令就可以查看输出报告了。

  #/usr/local/calamaris/calamaris -a -F html /var/log/squid/access.log>/var/www/html/calamaris/index.html

  对一般的应用来讲,上面的命令产生了最详细的输出报告,我们用命令选项-a表示产生所有类型的报告,用选项-F html表示产生html格式的文档。/var/log/squid/access.log表示squid日志文件的存放位置,/var/www/html/calamaris/index.html表示输出的文件名。当产生报告文件后,在客户端用浏览器可进行浏览。 命令行下工作界面见图13

  图13 Calamaris 工作界面

  总结:squid的安装维护中需要注意以下问题:理解代理服务器工作流程;全面监控代理服务器Squid运行情况;输入分析注Squid代理服务器的日志。

0
相关文章