您的位置:首页 > 运维架构 > 反向代理

Squid代理服务ACL访问控制及日志分析

2019-08-17 16:28 1151 查看

对于Squid服务的部署可以参考博文:Squid代理服务器安装及部署
对于Squid服务配置代理服务器可以参考博文:利用Squid构建传统代理及透明代理

Squid服务的ACL访问控制

Squid提供了强大的代理控制机制,通过合理设置ACL(访问控制列表)并进行限制,可以针对源地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤。

在配置文件squid.conf中,ACL访问控制通过两个步骤来实现:

  • 使用acl配置项定义需要控制的条件;

  • 通过http_access配置项对已经定义的列表做“允许”或“拒绝”的控制。

1.定义访问控制列表

每行acl配置可以定义一条访问控制列表,格式如下:

其中:
“列表名称”由管理员自行指定,用来识别控制条件;
“列表类型”必须使用Squid预定义的值,对应不同类别的控制条件;
“列表内容”是要控制的具体对象,不同类型的列表所对应的内容也不一样,可以有多个值(以空格分隔,是“或者”的关系)

定义访问控制列表时,关键在于选择“列表类型”并设置具体的条件对象。Squid预定义的类型有很多种,如图:

在定义访问控制列表是,应结合当前网络环境正确分析用户的访问需求,准确定义使用代理服务的控制条件。比如:

首先创建一个存放域名黑名单的文件:
[root@www ~]# vim /etc/squid/dmblock.list
.qq.com
.msn.com
//定义存放域名的文件,当然也可以创建存放IP地址的文件,在配置文件,引用一下即可格式跟引用地址文件一样
[root@www ~]# vim /etc/squid.conf
………………                          //省略部分内容
acl MYLAN src 192.168.1.0/24
//定义列表名为MYLAN,源地址为192.168.1.0网段
acl MEDIAFILE urlpath_regex -i \.3gp$ \.mp4$ \.f4v$ \.mkv$ \.rmvb$ \.avi$
//定义列表名为MEDIAFILE,以 .3gp、.mp4、.f4v、.mkv、.rmvb、.avi结尾的URL路径
acl DMBLOCK dstdomain  "/etc/squid/dmblock.list"
//定义列表名为DMBLOCK,目标域存放在etc/squid/dmblock.list文件中
acl deny10 src 192.168.1.10
//定义列表名为deny10,源地址为192.168.1.10
acl WORKTIME time MWTHF 08:30-17:30
//定义列表名称为WORKTIME,时间为周一到周五8:30~17:30

2.设置访问权限

定义好各种访问控制列表以后,需要使用http_access配置项来进行控制,必须注意的是,http_access配置航必须放在对应的acl配置行之后。每行http_access配置确定一条访问控制规则。语法格式:

http_access语句使用说明:

  • 每一条http_access规则中,可以同时包含多个控制列表,空格分隔,为“与”的关系;

  • 取反条件时,用!符号;

  • http_access必须放在acl之后。
    [root@www ~]# vim /etc/squid.conf
    ………………               //省略部分内容
    http_access deny deny10
    //禁止列表deny10
    http_access allow MYLAN WORKTIME Safe_ports !MEDIAFILE !DMBLOCK
    //允许列表MYLAN、WORKTIME、Safe_ports列表和与MEDIAFILE和DMBLOCK列表条件相反的
    http_access deny all
    //默认禁止所有客户机使用代理

    设置完成之后重启Squid服务

    [root@www ~]# squid -k reconfigure

    关于规则的执行过程:

  • 找到一条规则即不再向后搜索;

  • 没有配置任何规则时,squid服务将拒绝客户端的请求;

  • 有规则但找不到相匹配的项:squid将采用与最后一条规则相反的权限。即如果最后一条规则是allow,就拒绝客户端的请求,否则允许该请求。

通常情况下,把最常用的控制规则放在最前面,以减少Squid的负载。早访问控制的总体策略上,建议采用“先拒绝后允许”或“先允许后拒绝”的方式,最后一条规则设为默认规则。

3.验证访问控制效果

(1)测试访问权限限制(客户机处于传统代理)自行验证!
(2)测试文件下载限制
①在web服务器网页根目录下创建一个大于10M的文件:

[root@localhost ~]# if=/dev/zero  of=/var/www/html/dltest.data  bs=1M count=15

②在squid代理服务器上编辑配置文件,加上如下行:

[root@www ~]# vim /etc/squid.conf
………………               //省略部分内容
reply_body_max_size  10 MB
//限制最大网站文件10MB
[root@www ~]# squid -k reconfigure
//重启Squid服务

客户机测试(不要用192.168.1.10进行访问)自行验证

Squid日志分析

SARG是一款Squid日志分析工具,采用HTML格式,详细列出每位用户访问Internet的站点信息,时间占用等信息,排名、连接次数、访问量等。

1.在squid本地安装GD库

[root@www ~]# yum -y install gd

2.安装SARG

sarg软件包网盘下载链接:https://pan.baidu.com/s/1WItXGVlvrLQ9TijB7CWLmQ
提取码:zh41

[root@www ~]# tar zxf sarg-2.3.7.tar.gz -C /usr/src
[root@www ~]# cd /usr/src/sarg-2.3.7/
[root@www sarg-2.3.7]#  ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg \
--enable-extraprotection && make && make install

配置项含义如下:
--prefix=/usr/local/sarg:指定安装目录;
--sysconfdir=/etc/sarg:配置文件目录,若不指定,默认是/usr/local/etc;
--enable-extraprotection:添加额外的安全保护

3.配置

[root@www sarg-2.3.7]# vim /etc/sarg/sarg.conf
......................
#若只实现基本的功能,则配置以下三项即可:
access_log /usr/local/squid/var/logs/access.log            #指定squid的访问日志文件
output_dir /var/www/html/sarg                        #sarg报告的输出目录,指向网站的根目录下
www_document_root /var/www/html               #网页根目录

#其余一些优化的配置项如下,根据需求来改即可:
title "Squid User Access Reports"                            #网页标题
user_ip no                                    #使用用户名显示
exclude_hosts /usr/local/sarg/noreport                     #指定不计入排序的站点列表文件
topuser_sort_field connect BYTES reverse
#在top排名中,指定连接次数、访问字节数,采用降序排列,升序将reverse换成normal即可。
user_sort_field connect reverse                   #对于用户访问记录,连接次数按降序排列
overwrite_report no                                #当那个日期报告已经存在,是否覆盖报告
mail_utility mailq.postfix                              #发送邮件报告的命令
charset utf-8                                     #使用字符集
weekdays 0-6                                    #指定top排序时的星期周期,0为周日。
hours 7-12,14,16,18-20                      #指定top排序时的时间周期。

4.运行

[root@www sarg-2.3.7]# touch /usr/local/sarg/noreport
//上面的配置项中添加了不计入排序的站点,需要存在这个文件中。
//这个文件中添加的域名将不被显示在排序中。
[root@www sarg-2.3.7]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin
[root@www sarg-2.3.7]# sarg                            //启动sarg
SARG: 纪录在文件: 21, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/sarg/2019Aug17-2019Aug18
[root@localhost sarg]# systemctl start httpd                 #启动httpd服务,若没有该服务,须自行安装。

5.验证

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: