squid代理服务的ACL访问控制、日志分析及反向代理(4.1版本)
文章目录
[隐藏]
- squid的ACL访问控制列表
- 1. 定义访问控制列表
- 2. 设置访问权限
- 演示实验
- squid日志分析
- 反向代理
squid的ACL访问控制列表
squid提供了强大的代理控制机制,通过合理的设置ACL(Access Control List,访问控制列表)并进行限制,可针对源地址、目标地址、访问的URL路径、访问的时间等各种控制条件进行过滤。
ACL访问控制通过以下两个步骤来实现:
①、使用acl配置项定义需要控制的条件;
②、通过http_access配置项对已定义的列表做“允许”或者“拒绝”访问的控制。
1. 定义访问控制列表
格式:acl 列表名称 列表类型 列表内容 ···
常见的访问控制列表类型
2. 设置访问权限
定义好各种访问控制列表以后,使用http_access配置项来进行控制。
格式:http_access allow或deny 列表名···
在设置访问权限时,需要注意两点:
- 没有设置任何规则时:squid服务将拒绝客户端的请求
- 有规则但找不到相匹配的项:squid将采用与最后一条规则相反的权限。
演示实验
因为之前我们做了squid的透明代理的实验,所以这里就接着那个实验继续做,配置好透明代理后,我们可以使用IP为192.168.100.50的client(客户端)访问IP为12.0.0.12的web服务器,那么下面我们就通过设置acl访问控制列表使client不能访问web服务器
vim /etc/squid.conf
acl localhost src 192.168.100.0/24 #定义访问控制列表 http_access deny localhost #对列表做拒绝处理 service squid stop service squid start #重启服务
squid日志分析
squid的日志分析功能需要借助sarg(Squid Analysis Report Generator),首先先部署安装sarg工具
- 安装相关的软件环境包
yum -y install gcc gcc-c++ gd gd-devel httpd #这里的dg库是支持图像处理的软件
sarg下载地址https://sourceforge.net/projects/sarg/
- 安装sarg
mkdir /usr/local/sarg #为sarg创建安装目录 tar zxvf sarg-2.3.11.tar.gz -C /opt/ #将sarg解压到指定目录 cd /opt/sarg-2.3.11/ #到sarg目录中进行编译安装 ./configure --prefix=/usr/local/sarg #这里指定安装目录 --sysconfdir=/etc/sarg #指定配置文件目录 --enable-extraprotection #开启额外保护功能 配置完后,进行编译和安装 make && make install
- 修改sarg配置文件
vim /etc/sarg/sarg.conf
access_log /usr/local/squid/var/logs/access.log #指定访问日志文件(开启) title "Squid User Access Reports" #网页标题(开启) output_dir /var/www/html/squid-reports #报告输出目录(开启) user_ip no #使用用户名显示(开启) exclude_hosts /usr/local/sarg/noreport #不计入排序的站点列表文件(开启,删除none,添加路径) topuser_sort_field connect reverse #top排序中有连接次数、访问字节、降序排列升序是normal (开启,修改BYTES) user_sort_field connect reverse #用户访问记录 连接次数、访问字节按降序排序 (开启,修改BYTES) overwrite_report no #同名日志是否覆盖(开启) mail_utility mailq.postfix #发送邮件报告命令(开启,修改mail) charset UTF-8 #使用字符集 (开启) weekdays 0-6 #top排行的星期周期 (开启) hours 0-23 #top排行的时间周期(开启) www_document_root /var/www/html #网页根目录(开启)
touch /usr/local/sarg/noreport 创建上述不计入站点文件,添加的域名将不被显示在排序中 ln -s /usr/local/sarg/bin/sarg /usr/local/bin/ #建立软链接,方便使用命令 systemctl start httpd.service #因为我们要在网页里访问日志,需要我们开启httpd服务
- 运行sarg
然后使用client登录网页管理界面
反向代理
squid反向代理可以加速网站的访问速度,可将不同的URL请求分发到后台不同的web服务器上,同时互联网用户只能看到反向代理服务器的地址,加强网站的访问安全。
squid反向代理加速的原理描述如下:
- Squid反向代理服务器位于本地Web服务器和Internet之间,客户端请求访问Web服务器时,DNS将访问的域名解析为Squid反向代理服务器的IP地址,客户端将访问Squid代理服务器。
- 如果Squid反向代理服务器缓存了该请求的资源,则将该请求的资源返回给客户端,否则反向代理服务器将向后台的Web服务器请求资源,然后将应答资源返回给客户端,同时也将该资源在本地缓存一份,供下一个请求使用。
实验环境
- 修改squid代理服务的配置文件
vim /etc/squid.conf
acl web1 dstdomain www.yun.com acl web2 dstdomain www.yun.com #定义两个个基于域名的控制列表,分别命名为web1,web2 http_access allow web1 web2 #允许以web1,web2为目标域名的访问 http_port 172.16.10.137:80 accel vhost vport #将端口监听在 172.16.10.137的80端口上,accel 指启用加速模式,vhost,vport用于转发请求 cache_peer 172.16.10.29 parent 80 0 no-query originserver round-robin weight=1 name=web1 #cache_peer 指定后端服务器地址,80 为后端服务端口,0 为 ICP 端口号(多个 Squid 时用),originserver 指定资源服务器,round-robin指使用轮询方式,weight指的是权重,自由分配,name 指定一个别名 cache_peer 172.16.10.134 parent 80 0 no-query originserver round-robin weight=1 name=web2 #和上面的一样
这里记得重新启动squid服务
- 修改两个http服务的首页内容,方便后面实验的验证
- 修改客户端win7的地址解析使之识别www.yun.com
这样就实验成功了,访问www.yun.com,真实服务器会使用轮询的方式,分别轮流访问两台web服务器。
原文出处:51cto -> http://blog.51cto.com/13659301/2152503