Squid代理实现ACL访问控制、日志分析及反向代理配置

文章目录

    • 一、ACL访问控制
    • 二、实验一:使用ACL列表实现访问控制
    • 三、实验二:Squid日志分析工具——Sarg
    • 四、Squid反向代理

一、ACL访问控制

  • ACL访问控制方式:根据地址、目标URL、文件类型等定义列表
acl 列表名称 列表类型 列表内容...
  • 针对已定义的acl列表进行限制
http_access allow或deny 列表名称...
  • ACL规则优先级
  1. 一个用户访问代理服务器时,Squid会顺序匹配Squid中定义的所有规则列表,一旦匹配成功,立即停止匹配
  2. 所有规则都不匹配时,Squid会使用最后一条相反的规则
  • 常用的ACL列表类型
  1. src——源地址
  2. dst——目标地址
  3. port——端口
  4. dstdomain——目标域
  5. time——访问时间
  6. maxconn——最大并发连接
  7. url_regex——目标URL地址
  8. Urlpath_regex——整个目标URL路径

二、实验一:使用ACL列表实现访问控制

  • 实验环境:VMware Workstation 15.5、Xshell 6、Centos7.6、squid-3.4.6.tar
  • IP地址规划
设备 IP
Squid代理服务器 192.168.50.133
Web服务器 192.168.50.134
客户机 192.168.50.128
  • 实验步骤

①方法一:直接将IP设为黑名单

1、首先安装Squid服务,安装过程请参考这篇博文:https://blog.csdn.net/u014042047/article/details/108433703

2、安装完Squid后,编辑squid服务配置文件

vim /etc/squid.conf    ## 编辑配置文件

在 # should be allowed 下方插入一行拒绝列表:
acl test src 192.168.50.128/32    ## win10客户端的IP地址

在 # Deny requests to certain unsafe ports 下方插入一行,调用刚才设置的列表:
http_access deny test

3、重载服务配置文件

service squid reload

4、在客户机上访问192.168.50.134可以发现已经被拒绝访问了
Squid代理实现ACL访问控制、日志分析及反向代理配置_第1张图片

②方法二:使用列表文件

针对少量个别IP我们可以采用第一种方式,但如果有成百上千乃至数万个IP呢,若全部写入配置文件则会使配置文件臃肿不堪不便于管理,所有产生了方法二:

1、编辑配置文件写入ACL规则

vim /etc/squid.conf    ## 编辑配置文件
acl test src "/etc/squid/dest.list"    ## 设置拒绝列表
http_access deny test     ## 调用拒绝列表
service squid reload       ## 重新加载配置文件

2、创建列表文件

mkdir /etc/squid
vim dest.list

写入要禁止访问的IP:
192.168.50.128

3、重载服务配置文件

service squid reload

三、实验二:Squid日志分析工具——Sarg

  • 实验步骤

1、安装依赖环境

yum -y install gd gd-devel pcre pcre-devel

2、解压缩安装包

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

3、进入软件目录进行配置

cd /opt/sarg-2.3.7

./configure --prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \
--enable-extraprotection             ##额外安全防护

4、编译&安装

make && make install

5、对服务进行配置

vim /etc/sarg/sarg.conf   ## 编辑配置文件

进行如下设置(前面的数字代表行号):

7 access_log /usr/local/squid/var/logs/access.log           ## 注释去掉(指定访问日志文件)
25 title "Squid User Access Reports"               ## 注释去掉(网页标题)
120 output_dir /var/www/html/squid-reports           ## 注释去掉(报告输出目录)
178 user_ip no     ## 注释去掉(使用用户名显示)
184 topuser_sort_field connect reverse          ## 注释去掉(top排序中有连接次数connect、访问字节、降序排列、升序是normal)
190        ## 默认不动
206  exclude_hosts /usr/local/sarg/noreport            ## 注释去掉(不计入排序的站点列表文件)
257 overwrite_report no                ## 注释去掉(同名日志是否进行覆盖)
289 mail_utility mailq.postfix          ## 注释去掉(发送邮件报告指令)
434 charset UTF-8            ## 注释去掉(设置字符集)
518 weekdays 0-6            ## 注释去掉(top排行的星期周期)
525 hours 0-23                ## 注释去掉(top排行的时间周期)
633 www_document_root /var/www/html             ## 注释去掉(网页根目录)

6、创建不计入站点文件:添加的域名将不被显示

touch /usr/local/sarg/noreport

7、让命令让系统识别

ln -s /usr/local/sarg/bin/sarg /usr/local/bin

8、启动服务

[root@localhost sarg]# sarg    ## 启动sarg服务
SARG: 纪录在文件: 353, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/squid-reports/2020Sep07-2020Sep07

9、安装并开启httpd服务

yum -y install httpd
systemctl start httpd

10、访问Web页面查看日志统计信息

http://192.168.50.133/squid-reports

11、当有其他IP的主机访问时,使用如下命令进行日志更新即可

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代理实现ACL访问控制、日志分析及反向代理配置_第2张图片
Squid代理实现ACL访问控制、日志分析及反向代理配置_第3张图片

四、Squid反向代理

如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将后台的WEB服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用

  • 实验步骤
  • IP地址规划:192.168.50.133(Squid)、192.168.50.134(Web1)、192.168.50.135(Web2)

1、分别在Web1与Web2服务器上安装http服务并关闭防火墙

yum -y install httpd     ## 安装http服务
systemctl start httpd     ## 启动服务
setenforce 0              ## 关闭核心防护
systemctl stop firewalld     ## 关闭防火墙

2、分别在Web1与Web2中创建一个站点页面

vim /var/www/html/index.html    ## 创建站点页面

在文件中输入以下内容:

Test1 Web

## 在web1服务器写入

Test2 Web

## 在web2服务器写入

3、在squid代理服务器上修改配置文件

vim /etc/squid.conf   ## 编辑配置文件

##http_port 3128         //这一行注释掉

在 http_port 3128 行下插入:

http_port 192.168.175.128:8080 accel vhost vport
cache_peer 192.168.175.130 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.175.129 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.yun.com

4、回到win10客户端,修改host文件

添加一行:192.168.50.133	www.yun.com

Squid代理实现ACL访问控制、日志分析及反向代理配置_第4张图片
5、打开浏览器输入www.yun.com,多刷新几次可以发现是轮询访问

Squid代理实现ACL访问控制、日志分析及反向代理配置_第5张图片
[Squid代理实现ACL访问控制、日志分析及反向代理配置_第6张图片

你可能感兴趣的:(反向代理,squid)