Squid—日志分析和反向代理(服务搭建教程)
Posted 丁CCCCC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Squid—日志分析和反向代理(服务搭建教程)相关的知识,希望对你有一定的参考价值。
squid
一、ACL访问控制
ALC主要通过两个步骤来实现
- 通过aclp配置项定义需要控制的条件
- 通过http_access 配置项对已定义的列表做 “允许” 或 “拒绝” 访问的控制
1.1 定义访问控制列表
格式
acl 列表名称 列表类型 列表 内容
acl localhost src 12.0.0.10/24
- 列表名称
- 名称自定义,相当于给acl起个名字
- 列表类型
- 必须使用squid预定义的值,对应不同类别的控制条件
- 列表内容
- 是要控制的具体对象,不同类型的列表所对应的内容也不一样,可以有多个值(以空格为分
隔,为“或"的关系)
- 是要控制的具体对象,不同类型的列表所对应的内容也不一样,可以有多个值(以空格为分
方法一
- vim /etc/squid.conf
# 第七行下插入客户端ip内容
7 # should be allowed
8 acl localhost src 12.0.0.10/24
# 31行下插入禁止命令
31 # Deny requests to certain unsafe ports
32 http_access deny localhost
测试
此时访问会被拒绝
- 注释第32行即可继续访问
方法二
- 创建目录
mkdir /etc/squid/
- vim /etc/squid/dest.list
12.0.0.10 # 新建放入客户端IP
- vim /etc/squid.conf
# 前面设置的修改为调用上面文件的内容
8 acl destinationhost dst "/etc/squid/dext.list"
# 修改为拒绝该列表
33 http_access deny destinationhost
# 修改回原来的
66 http_port 3128
- systemctl restart squid
测试
二、日志分析
sarg ( Squid Analysis ReportGenerator)
是一款squid日志分析工具,采用html格式,详细列出每一位用户访问Internet的站点信息、时间占用信息、排名、连接次数、访问量等
2.1 服务搭建
服务安装使用
软件安装
- yum -y install gd gd-devel pcre-devel
创建目录
- mkdir /usr/local/sarg
解压缩
- cd /opt
- tar zxvf sarg-2.3.7.tar.gz
编译安装
- cd /opt/sarg-2.3.7/
./configure --prefix=/usr/local/sarg \\
> --sysconfdir=/etc/sarg \\ # 配置文件目录
> --enable-extraprotection # 额外安全防护
- make && make install
修改配置文件
- vim /etc/sarg/sarg.conf
#第7行取消注释
7 access_log /usr/local/squid/var/logs/access.log # 访问指定的日志文件
#第25行取消注释
25 title "Squid User Access Reports" # 网页标题
#第120行取消注释,修改
120 output_dir /var/www/html/sarg # 输出的目录
#第178行取消注释
178 user_ip no # 使用用户名显示
#第184行取消注释并修改
184 topuser_sort_field connect reverse # top排序中,指定连接次数用降序,升序设置 normal
#第190行取消注释并修改
190 user_sort_field connect reverse # 用户访问记录用降序排序
#第206行取消注释并修改
206 exclude_hosts /usr/local/sarg/noreport # 指定不计入排序的站点列表的文件
#第257行取消注释
257 overwrite_report no # 同名同日的日志不覆盖
#第289行取消注释并修改
289 mail_utility mailq.postfix # 发送邮件报告命令
#第434行取消注释并修改
434 charset UTF-8 # 万国符
#第518行取消注释
518 weekdays 0-6 # top排行的星期周期
#第525行取消注释
525 hours 0-23 # top排行的时间周期
#第633行取消注释
633 www_document_root /var/www/html # 指定网页根目录
添加不计入站点文件
- touch /usr/local/sarg/noreport
- ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
运行
- sarg
2.2 验证
- yum -y install httpd
- systemctl start httpd
使用squid服务器访问192.168.253.11/sarg
2.3 添加计划任务
创建脚本
- vim /usr/1oca1/sarg/report.sh
#!/bin/bash
#Get current date
TODAY=$(date +%d/%m/%Y)
#Get one week ago today
YESTERDAY=$(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 $YESTERDAY-$TODAY &> /dev/null
exit 0
- chmod +x /usr/local/sarg/report.sh
- crontab -e
- 0 0 * * * /usr/local/sarg/report.sh
三、反向代理
如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的Web服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用
3.1 工作机制
- 缓存网页对象,减少重复请求
- 将互联网请求轮询或按权重分配到内网web服务器
- 代理用户请求,避免用户直接访问Web服务器,提高安全
3.2 服务搭建
关闭防火墙,关闭本地httpd
- systemctl stop firewalld
- systemctl stop httpd
设置防火墙规则
iptables -F
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
配置文件设置
- vim /etc/squid.conf
# 添加以下内容
http_port 192.168.253.11:80 accel vhost vport
cache_peer 192.168.253.22 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.253.33 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.cc.com
对www.cc.com的请求,squid向253.22和253.33的80端口发出请求
# 名词解释
accel:反向代理加速模式
vhost:支持域名或主机名来表示代理节点
vport:支持IP和端口来表示代理节点
parent:代表为父节点,上下关系,非平级关系
80:代理内部web服务器的80端口
0 :没有使用icp,表示就一台squid服务器
no-query:不做查询操作,直接获取数据
originserver:指定是源服务器
round-robin:指定squid通过轮询方式将请求分发到其中一台父节点
max_conn:指定最大连接数
weight:指定权重
name:设置别名
squid从一个缓存变成了一个Web服务器反向代理加速模式,这个时候squid在80端口监听请求,同时和webserver的请求端口(vhostvport)绑定,这个时候请求到了squid, squid是不用转发请求的,而是直接要么从缓存中拿数据要么向绑定的端口直接请求数据
3.3 服务器设置
web1设置
echo "this is web111" >> /var/www/html/index.html
systemctl start httpd
web2设置
echo "this is web222" >> /var/www/html/index.html
systemctl start httpd
客户机域名映射
末行添加
192.168.253.11 www.cc.com
3.4 访问测试
以上是关于Squid—日志分析和反向代理(服务搭建教程)的主要内容,如果未能解决你的问题,请参考以下文章
缓存加速------Squid代理服务器应用(传统代理,透明代理,反向代理,ACL访问控制,日志分析)
squid代理服务器(传统代理透明代理反向代理ACL日志分析)