squid反向代理, sarg日志分析(ACL策略配置)

前言

具体squid环境搭建请点击下面的链接,这里就不再介绍
squid 环境搭建.

一、squid的ACL访问控制

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

ACL访问控制的步骤:

1、使用 acl 配置项定义需要控制的条件
定义格式:acl 列表名称 列表类型 列表内容 …
2、通过http_access配置项对已定义的列表做“允许”或“拒绝”访问的控制

二、ACL设置的两种方式

2.1、直接在squid的配置文件里修改

vim /etc/squid.conf
acl hostlocal src 192.168.10.160/32        #针对固定的源ip地址
acl MYLAN src 192.168.220.0/24              #针对某一网段
acl destionhost dst 192.168.220.130/32   #针对具体的目标ip地址
acl MC20 maxconn 20                             #访问的最大并发连接数量
acl BURL url_regex -i ^rtsp:// ^emule://    #正则表达式的访问协议
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$   #访问的文件资源末尾
acl work time MTWHF 08:30-17:30          #访问时间
MTWHF:周一到周五
MTWHFAS:周一到周日
AC :周一 周三

http_access denyhostlocal     #拒绝列表 (注意置顶)

具体配置
在这里插入图片描述
在这里插入图片描述

2.2、创建新文件,在配置文件里声明文件位置

mkdir /etc/squid      #启用对象列表管理
vim sha.list
       192.168.100.160  #目标web
   
vim /etc/squid.conf
    acl hostlocal scr "/etc/squid/dest.list"
  
    http_access deny hostlocal    #拒绝列表 (注意置顶)

具体配置
在这里插入图片描述
在这里插入图片描述

三、sarg日志分析

sarg软件用来分析squid服务的日志
在上篇博客的基础上做squid反向代理实验,安装squid的具体步骤见上篇博客链接:squid代理介绍----传统代理、squid代理-----透明代理模式
squid代理设置方法专业介绍篇

3.1、sarg安装

//图像处理
yum -y install gd gd-devel httpd 

//解压安装包
tar zxvf sarg-2.3.7.tar.gz -C /opt/

cd /opt/sarg-2.3.7/
./configure --prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \
--enable-extraprotection         #额外安全防护
 
make && make install

3.2、修改配置文件

vi /etc/sarg/sarg.conf
对应行号去掉注释即开启
7 access_log /usr/local/squid/var/logs/access.log              ###squid的访问日志位置
25 title "Squid User Access Reports"                                     ###网页标题
120 output_dir /var/www/html/squid-reports                     ###分析报告的存放位置
178 user_ip no                                                                         ###不使用IP代替用户ID
184 topuser_sort_field BYTES reverse                                   ###升序排列
190 user_sort_field BYTES reverse                           //用户访问记录,连接此时,访问字节按降序排序
206 exclude_hosts /usr/local/sarg/noreport                        ###设置不生成报告的主机
257 overwrite_report no                                                              //同名日志是否覆盖
289 mail_utility mailx                                                               ###指定发邮件命令
434 charset UTF-8                                                                      //使用字符集
518 weekdays 0-6                                                                   ###指定top排序星期周期
523 hours 7-12,14,16,18-20                                                   ###指定top排序时间周期
633 www_document_root /var/www/html                           ###网页根目录
touch /usr/local/sarg/noreport            ###建立不生成报告的主机列表文件
ln -s /usr/local/sarg/bin/sarg /usr/local/bin/

//启动sarg日志分析和squid网页服务

yum install httpd -y 
root@squid sarg]# systemctl start httpd
[root@squid sarg]# systemctl start httpd
[root@squid sarg]# systemctl stop firewalld
[root@squid sarg]#
[root@squid sarg]# sarg
SARG: 纪录在文件: 237, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/squid-reports/2020Sep07-2020Sep07
[root@squid sarg]#

在这里插入图片描述

3.3、验证

3.3.1、在客户端机浏览器输入:http://192.168.10.3/squid-reports/index.html

在这里插入图片描述
换个浏览器地址,重新访问192.168.100.3 网页
重新生成报告

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)

检查发现多生成了一行记录
在这里插入图片描述

3.3.2、squid服务器设置周期性任务

crontab -e 
*/1 * * * * /usr/local/bin/sarg    #这里为了效果快速呈现出,设置了每隔1分钟

四. 传统代理模式搭建squid 反向代理

4.1 基本配置方法

实现反向代理最基本的两处选项,修改squid.conf
1.在squid.conf中的http_port配置住行添加vhost选项,以支持虚拟主机映射

vi /etc/squid/squid.conf
http_port squid服务器IP vhost
2.指定web服务器主机位置
使用cache_peer配置指定web服务器主机位置,格式如下
cache_peer web服务器IP 服务器类型 http端口 icp端口 【可选项】
服务器类型一般使用parent(父服务器)icp端口用户连接相邻ICP缓存服

务器(通常为另外一台squid主机),如果没有使用0; 可选项提供缓存

时的一些附件参数,如originserver表示该服务器作为提供web服务的原始

主机,weight=n指定服务器的优先权重,n为整数,数值越大优先级越高

,默认为1. ;max-conn=n 指定反向代理主机到该web服务器的最大连接数。

4.2 具体配置

在这里插入图片描述

4.2.1 配置方法

反向代理使用 80端口 ,需注意80 端口不要冲突,或被别的程序调用

去掉透明代理设置反向代理通过80端口,访问虚拟主机,虚拟节点
http_port 192.168.100.3:80 accel vhost vport        
节点服务器1最大访问30,权重1,别名web1
cache_peer 192.168.100.4 parent 80 0 no-query originserver round-robin max-conn=30 weight=1 name=web1     
cache_peer 192.168.100.5 parent 80 0 no-query originserver round-robin max-conn=30 weight=1 name=web2
访问yun.com匹配web1,web2节点
cache_peer_domain web1 web2 www.yun.com

在这里插入图片描述

4.2.2 squid -k parse 检查语法

在这里插入图片描述

4.2.3 修改客户端本地hosts文件

在这里插入图片描述
在这里插入图片描述

4.2.4 设置浏览器代理服务器的 端口为 80

在这里插入图片描述

4.2.5 访问测试,测试成功

在这里插入图片描述

五. 设置透明模式的反向代理

在这里插入图片描述

5.1 开启路由功能

[root@squid network-scripts]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@squid network-scripts]# sysctl -p  //立即生效

5.2 修改配置文件

vim /etc/squid.conf

在这里插入图片描述

5.3 客户机使用IP访问squid

在这里插入图片描述
在这里插入图片描述

5.4 客户机使用www.yun.com 访问squid

5.4.1 修改配置文件

新增一行 cache_peer_domain web1 web2 www.yun.com

vim /etc/squid.conf

http_port 80 accel vhost
cache_peer 192.168.100.4 parent 80 0 no-query originserver round-robin max-conn=30  weight=1 name=web1
cache_peer 192.168.100.5 parent 80 0 no-query originserver round-robin max-conn=30  weight=1 name=web2
cache_peer_domain web1 web2 www.yun.com
cache_effective_user squid
cache_effective_group squid
cache_mem 64 MB
reply_body_max_size 10 MB
maximum_object_size 4096 KB

5.4.2 客户端设置

修改本地hosts 文件
在这里插入图片描述

5.4.3 浏览器访问 squid 测试

在这里插入图片描述
在这里插入图片描述

六 . squid服务器的配置文件说明

squid 的主配置文件是 /etc/squid/squid.conf,所有squid的设定都是在这个文件里配置,下面我们来讲解一下该文件的配置选项。

http_port 3128      //设置监听的IP与端口号

cache_mem 64 MB      //额外提供给squid使用的内存,squid的内存总占用为 X * 10+15+“cache_mem”,其中X为squid的cache占用的容量(以GB为单位),
               //比如下面的cache大小是100M,即0.1GB,则内存总占用为0.1*10+15+64=80M,推荐大小为物理内存的1/3-1/2或更多。
maximum_object_size 4 MB   //设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘

minimum_object_size 0 KB   //设置squid磁盘缓存最小文件

maximum_object_size_in_memory 4096 KB   //设置squid内存缓存最大文件,超过4M的文件不保存到内存

cache_dir ufs /var/spool/squid 100 16 256   //定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量

logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh        //log文件日志格式

access_log /var/log/squid/access.log combined  //log文件存放路径和日志格式

cache_log /var/log/squid/cache.log   //设置缓存日志

logfile_rotate 60   //log轮循 60

cache_swap_high 95  //cache目录使用量大于95%时,开始清理旧的cache

cache_swap_low 90   //cache目录清理到90%时停止。

acl localnet src 192.168.1.0/24  //定义本地网段

http_access allow localnet  //允许本地网段使用

http_access deny all  //拒绝所有

visible_hostname squid.david.dev  //主机名

cache_mgr mchina_tang@qq.com  //管理员邮箱

猜你喜欢

转载自blog.csdn.net/BIGmustang/article/details/108466203