squid日志分析与访问控制


    squid的日志系统能够帮助我们查看访问者的记录,包括来访者Internet的站点信息,时间占用信息, 

排名、连接次数和访问量。是一个很完善的日志系统。

    squid常用日志分为如下两个:分别是access.log 和cache.log

access.log:客户端使用代理服务器的记录文件,访问日志位置在squid.conf中自行定义;

cache.log : 缓存在运行时的状态信息和调试信息,一般情况下容量不大。缓存日志位置在squid.conf中自行定义。

本文主要针对访问日志使用sarg进行图形化界面的显示管理,相对于文字显示更加直观。


搭建squid请参考:http://blog.51cto.com/13760226/2177929

使用sarg软件包地址:链接:https://pan.baidu.com/s/1IT6a2WvcpNpdXvr-EWMPvg  密码:cfl8

实验环境:

            操作系统               IP地址          服务类型
       Centos7       192.168.60.134/24    squid缓存服务、sarg、httpd
       Centos7       192.168.60.136/24    httpd服务
       win7       192.168.60.133/24    client客户机

一、使用Sarg日志分析

● 安装编译环境

 yum install gd gd-devel gcc gcc-c++  httpd -y 

● 创建sarg的安装目录

mkdir /usr/local/sarg

● 解压进行安装

tar zxf sarg-2.3.7.tar.gz -C /opt/

cd /opt/sarg-2.3.7/

./configure --prefix=/usr/local/sarg \     #安装目录

--sysconfdir=/etc/sarg \        #配置文件目录

--enable-extraportection      #额外的安全防护

make && make install

● 安装完成后修改配置文件

由于整个配置文件都是被注释的,需要我们去掉注释并加以修改

vim /opt/sarg/sarg.conf     


access_log /usr/local/squid/var/logs/access.log    #squid的日志文件


title "Squid User Access Reports"   网页标题


output_dir /var/www/html/squid-reports   报告输出的地址条目


user_ip no   使用用户名显示


exclude_hosts /usr/local/sarg/noreport   不计入排序的站点列表文件 需要创建


topuser_sort_field connect reverse  将BYTES改成connect


user_sort_field connect reverse    将BYTES改成connect


overwrite_report no 同名日志的覆盖


mail_utility mailq.postfix  发送邮件命令报告


charset UTF-8  字符集


weekdays 0-6  top排行的星期周期


hours 0-23   top排行的时间周期


www_document_root /var/www/html  网页根目录


● 优化,启动sarg和httpd服务

touch /usr/local/sarg/noreport     #创建不计入排序的站点列表文件

ln -s /usr/local/sarg/bin/sarg /usr/local/bin    #创建个软链接系统识别方便使用

systemctl start httpd    #启动httpd服务

sarg    #启动sarg服务


● 访问squid网站后再次使用sarg刷新

Squid日志分析与访问控制详解_日志分析

● 使用 http://192.168.60.134/squid-reports/ 进行访问,查看日志

Squid日志分析与访问控制详解_日志分析 _02

Squid日志分析与访问控制详解_日志分析 _03

● 使用周期性任务对日志进行分割

sarg -l /usr/local/squid/var/logs/access.log  -o /var/www/html/squid-reports/ -z -d $(date -d "1 day ago" +%d/%m/%Y)-$(date +%d/%m/%Y)

Squid日志分析与访问控制详解_squid_04


二、squid访问控

    squid访问控制功能就类似于一个acl访问控制列表,可以对源、对目标网段进行控制,

对于写入的控制条目,最后进行逐条匹配,控制着用户访问。

● 查看squid配置文件

    vim /etc/squid 

Squid日志分析与访问控制详解_日志分析 _05

从配置文件我们可以看出全是acl的控制内容列表,我们可以自行添加条目,进行控制

以下是以下用法,大家可以根据实际需要添加相关条目。

acl hostlocal src 12.0.0.11/24  acl+名字+源地址+网址网段

acl work time MTWHFAS 8:00-17:50  基于时间进行的访问控制

acl MYLAN src 12.0.0.0/24 对于一个网段

acl destionhost dst 192.168.60.136/24 对目标网段进行控制

acl MC20 maxconn 20 最大链接数量

acl BURL url_regex -i ^rtsp:// ^emule://    -i忽略大小写 以什么为开头的内容

acl PURL urlpath_regex -i \.mp3$  \.mp4$  \.rmvb$  匹配路径 正则表达式 -i 忽略大小写 以什么为结尾的内容


例:针对某一ip进行固定限制

# should be allowed

acl hostlocal src 192.168.60.133/32


# Only allow cachemgr access from localhost

http_access deny hostlocal

http_access allow localhost manager

Squid日志分析与访问控制详解_日志分析 _06

Squid日志分析与访问控制详解_日志分析 _07

未做限制前访问测试网站

Squid日志分析与访问控制详解_日志分析 _08

做了限制后就不能进行访问

Squid日志分析与访问控制详解_squid_09

客户机已不能访问测试页面。