Squid服务器ACL与日志分析

本文涉及的产品
.cn 域名,1个 12个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: Squid服务器ACL与日志分析

一、Squid服务器的ACL访问控制


搭建squid服务器点击下面的链接即可


搭建Squid服务器


作用: Squid提供了强大的代理控制机制,可以通过设置ACL进行限制,可以针对源地址、目标地址、范围跟的URL路径 (url表示浏览器访问服务器的网络路径 ) 、访问的时间等进行各种条件过滤


ACL的访问控制通过两个步骤实现:

(1)使用ACL配置项定义需要控制的条件

(2)通过http_access配置项对定义的列表作“运行”或“拒绝”的访问控制

ACL的所有配置项都是写在squid的主配置文件中的


定义访问控制列表


  • 语法结构:acl 列表名称 列表类型 列表内容
  • 注意:
    (1)列表名称: 可以自定义,随便取名
    (2)列表类型:


src           (源地址、源网段、源地址范围)
dst           (目标地址、网段、主机名)
port          (目标端口)
destomain     (目标域名)
time          (时间段)
maxconn       (每个客户机的并发连接数)
url_regex     (目标资源的url地址)
urlpath_regex (网址中主机名的部分)
******例如:
acl abc src 192.168.100.10 (acl名字是abc,内容是源地址是192.168.100.10的ACL)


设置访问权限


  • 语法结构:


http_access allow 列表名 (允许列表使用代理)
http_access deny 列表名  (拒绝列表使用代理)


注意:

(1)如果没有设置任何规则时,squid服务器将拒绝客户端请求

(2)如果有规则,但是找不到匹配的项时,squid将采用与最后一条规则相反的动作

建议采用: 先拒绝后允许 或 先允许后拒绝的方式

一般最后一条规则是http_access allow all 或 http_access deny all


示例(1):

******禁止本网段客户机使用此代理服务
[root@Squid ~]# cp /etc/squid.conf /etc/squid.conf.bak  (现实环境中最好先做一个备份,以免写错)
[root@Squid ~]# vim /etc/squid.conf  (打开主配置文件)
定义一条名为aaa的列表,匹配来自192.168.100.0源网段的代理访问,然后拒绝此列表
如果是按我上一次的squid传统代理或者透明代理继续做的话,记得把下面的 reply_body_max_size 10 MB 和 http_access allow all  删除再写
。。。。。。
 24 acl Safe_ports port 591         # filemaker
 25 acl Safe_ports port 777         # multiling http
 26 acl CONNECT method CONNECT
 27 acl aaa src 192.168.100.0/24  (定义一条名为aaa的acl列表,源网段是192.168.100.0)
 28 http_access deny aaa          (拒绝名为aaa的列表,也就拒绝了100网段使用代理服务)
 29 #
。。。。。。
保存退出
[root@Squid ~]# systemctl restart squid (重启服务)

验证: 使用win7访问浏览器是否被拒绝(squid服务器已经搭建完成)


  • 首先把win7的代理服务器指向指定的服务器地址(我这里是192.168.100.11,不会指的话看我最上面的链接即可)


20201228102450573.png

访问网站服务(提前搭建一个httpd就行了,我这里的httpd地址是192.168.100.12)


20201228103036950.png


使用squid服务器访问,发现可以正常访问,说明acl配置成功了

20201228103133952.png


示例(2):

******允许本网段客户机在工作时间上网
[root@Squid ~]# vim /etc/squid.conf (进入主配置文件)
。。。。。。
 26 acl CONNECT method CONNECT
 27 acl aaa src 192.168.100.0/24   (写一个名为aaa的列表,源网段是100网段)
 28 acl bbb time MTWHF 08:30-17:30 (写一个名为bbb的列表,限制时间为8:30到17:30)
 29 http_access allow aaa bbb      (允许100网段只能在8:30带17:30这个时间段里使用squid代理服务)
 30 http_access deny aaa           (除了8:30到17:30这个时间段之外都不能使用squid代理服务)
 31 # 
。。。。。。
保存退出 
[root@Squid ~]# systemctl restart squid  (重启squid服务)
[root@Squid ~]# date 122512302020        (利用date修改时间)
2020年 12月 25日 星期五 12:30:00 CST
验证的话得最好使用另外一台linux,win7时间不一样会出错,这里就不验证了,配置项都是没有错的真实环境是会生效的

示例(3):


******通过黑名单来限制目标网站
ip黑名单
[root@Squid ~]# vim /tmp/ipblock.list (往里面写入ip即可,文件名随便写)
192.168.100.12
保存退出
网址黑名单
[root@Squid ~]# vim /tmp/dmblock.list (往里面写入域名即可,文件名随便写)
.qq.com
.baidu.com
保存退出
[root@Squid ~]# vim /etc/squid.conf
。。。。。。
 26 acl CONNECT method CONNECT
 27 acl aaa src 192.168.100.0/24
 28 acl bbb time MTWHF 08:30-17:30
 29 acl ccc dst "/tmp/ipblock.list"       (指定ip黑名单,文件名要相同)
 30 acl ddd dstdomain "/tmp/dmblock.list" (指定网址黑名单,文件名要相同)
 31 http_access deny ccc                  (禁用ip黑名单里的ip地址)
 32 http_access deny ddd                  (禁用网址黑名单里的域名)  
 33 http_access allow aaa bbb
 34 http_access deny aaa
 35 
 。。。。。。
 保存退出
 [root@Squid ~]# systemctl restart squid (重启服务)
 验证ip的话直接验证即可,验证域名的话要在web服务器上搭建dns,然后配置自己想要禁用的域名即可,


三个示例其实都大同小异,都是指定列表名,后面加指定选项,通过http_access allow 或者http_access deny 来禁用或者允许


二、Squid日志分析


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

SARG的全称是: Squid Analysis Report Generator

访问sarg必须有web页面所以需要安装httpd


安装SARG


******安装GD库 
[root@Squid ~]# mount /dev/cdrom /media/cdrom/  (挂载镜像)
[root@Squid ~]# yum -y install gd gd-devel      (使用yum进行安装)
。。。。。。
完毕!
******安装SARG
[root@Squid ~]# mkdir /usr/local/sarg (创建sarg的根目录)
[root@Squid ~]# ll                    (上传源码包sarg-2.3.7.tar.gz)
总用量 5988
-rw-------.  1 root  root     1263 10月  8 17:22 anaconda-ks.cfg
-rw-r--r--   1 root  root  1282619 12月 28 16:05 sarg-2.3.7.tar.gz
drwxr-xr-x  17 squid squid    4096 12月 24 17:38 squid-3.5.23
-rw-r--r--   1 root  root  4835525 12月 24 17:36 squid-3.5.23.tar.gz
解压————配置————编译————安装
[root@Squid ~]# tar zxvf sarg-2.3.7.tar.gz 
[root@Squid sarg-2.3.7]# ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection && make && make install  (配置编译安装)
******配置
[root@Squid sarg-2.3.7]# cd /etc/sarg/    (到sarg的主配置文件目录)
[root@Squid sarg]# vim sarg.conf (文件里都是注释行)
添加: 
access_log /usr/local/squid/var/logs/access.log    *指定squid的访问日志文件
title "Squid User Access Reports"                  *网页标题
output_dir /var/www/html/sarg                      *sargent报告的输出目录
user_ip no                                         *使用用户名显示
topuser_sort_field BYTES reverse                   *指定不计入排序的站点列表文件
user_sort_field BYTES reverse                      *在top排序中,指定连接次数、访问字节数、采用降序排列。(降序reverse;升序 normal)
exclude_hosts /usr/local/sarg/noreport             *用户访问记录,连接次数按降序排列
overwrite_report no                                *当日期报告已存在,不覆盖
mail_utility mailq.postfix                         *发送邮件报告的命令
charset UTF-8                                      *使用字符集为UTF-8
weekdays 0-6                                       *指定排序的星期周期(0为周日)
hours 0-23                                         *排序的时间周期
www_document_root /var/www/html                    *网页根目录
保存退出
******后续操作
[root@Squid sarg]# touch /usr/local/sarg/noreport
[root@Squid sarg]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/  (优化执行路径)
[root@Squid sarg]# sarg   (启动)
SARG: 纪录在文件: 99, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/sarg/2020Dec24-2020Dec28
[root@Squid sarg]# yum -y install httpd (安装httpd服务)
[root@Squid sarg]# systemctl start httpd  (启动httpd服务)
******计划任务+脚本
[root@Squid sarg]# vim /usr/local/sarg/daily.sh (编写脚本)
写入
#!/bin/bash
TD=$(date +%d/%M/%Y)
YETD=$(date -d '1 day ago' +%d/%M/%Y)
/usr/local/sarg/bin/sarg –l  /usr/local/squid/var/logs/access.log –o  /var/www/html/sarg –z –d $YETD-$TD &>/dev/null
exit 0
保存退出
[root@Squid sarg]# chmod +x /usr/local/sarg/daily.sh  (添加可执行权限)
[root@Squid sarg]# crontab -e (编写任务计划)
00 00 * * * /usr/local/sarg/daily.sh  (每天的0点执行这个脚本)
******验证
[root@Squid sarg]# tail -3 /usr/local/squid/var/logs/access.log (可以查看日志)
1609143548.785      0 192.168.100.13 TCP_MISS/404 491 GET http://192.168.100.11/noindex/css/fonts/BoldItalic/OpenSans-BoldItalic.eot? - ORIGINAL_DST/192.168.100.11 text/html
1609143548.785      0 192.168.100.13 TCP_MISS/404 489 GET http://192.168.100.11/noindex/css/fonts/ExtraBold/OpenSans-ExtraBold.eot? - ORIGINAL_DST/192.168.100.11 text/html
1609143548.786      0 192.168.100.13 TCP_MISS/404 501 GET http://192.168.100.11/noindex/css/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot? - ORIGINAL_DST/192.168.100.11 text/html
可以看到那个ip访问了httpd网站
win7上使用浏览器访问http://192.168.100.11/sarg可以查看


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
41 1
|
1月前
|
分布式计算 资源调度 数据可视化
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
30 1
|
2月前
|
关系型数据库 MySQL 应用服务中间件
服务器端日志在哪里
服务器端日志在哪里
|
3月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
2月前
|
XML 存储 缓存
Squid 缓存服务器配置
Squid 缓存服务器配置
89 0
|
3月前
|
Prometheus 监控 Cloud Native
Web服务器的日志分析与监控
【8月更文第28天】Web服务器日志提供了关于服务器活动的重要信息,包括访问记录、错误报告以及性能数据。有效地分析这些日志可以帮助我们了解用户行为、诊断问题、优化网站性能,并确保服务的高可用性。本文将介绍如何使用日志分析和实时监控工具来监测Web服务器的状态和性能指标,并提供具体的代码示例。
368 0
|
4月前
|
存储 弹性计算 运维
可观测性体系问题之ECS管控对其所有日志的管理如何解决
可观测性体系问题之ECS管控对其所有日志的管理如何解决
42 0
|
4月前
|
存储 弹性计算 运维
可观测性体系问题之ECS管控对日志数据的处理如何解决
可观测性体系问题之ECS管控对日志数据的处理如何解决
59 0
|
4天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
79 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
30天前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
183 3

热门文章

最新文章