sqiud --ACL控制应用、sarg日志分析、反向代理
一、squid的ACL访问控制
-
Squid提供了强大的代理控制机制,通过合理设置ACL(Access Control List,访问控制列表)并进行限制,可以针对源地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤。
-
ACL访问控制的步骤:
- 1、使用 acl 配置项定义需要控制的条件
定义格式:acl 列表名称 列表类型 列表内容 … - 2、通过http_access配置项对已定义的列表做“允许”或“拒绝”访问的控制
- 1、使用 acl 配置项定义需要控制的条件
二、ACL设置的两种方式
vim /etc/squid.conf acl localhost src 192.168.100.10/32 #针对固定的源ip地址 acl MYLAN src 192.168.220.0/24 #针对某一网段 acl destionhost dst 192.168.220.10/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:周一到周日 http_access deny localhost #拒绝列表 (注意置顶)
使用acl访问控制列表,禁止客户机访问web服务器
1、修改配置文件
[root@Squid ~]# vi /etc/squid.conf acl host src 192.168.100.20/32 http_access deny host ###禁止访问,注意置顶 [root@Squid ~]# systemctl restart squid
2、测试
三、sarg日志分析
sarg软件用来分析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网页服务 sarg systemctl start httpd
[root@squid sarg-2.3.7]# vi /etc/sarg/sarg.conf [root@squid sarg-2.3.7]# touch /usr/local/sarg/noreport [root@squid sarg-2.3.7]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/[root@squid sarg-2.3.7]# sarg SARG: 纪录在文件: 122, reading: 100.00% SARG: 成功的生成报告在 /var/www/html/squid-reports/2020Nov10-2020Nov10 [root@squid sarg-2.3.7]# systemctl start httpd [root@squid sarg-2.3.7]# netstat -anpt | grep httpd tcp6 0 0 :::80 :::* LISTEN 105967/httpd [root@squid sarg-2.3.7]#
3.3、验证
设置周期性任务
crontab -e */1 * * * * /usr/local/bin/sarg #这里为了效果快速呈现出,设置了每隔1分钟
四、squid反向代理
正向代理:客户端想要访问一个服务器,但是它可能无法直接访问这台服务器,这时候这可找一台可以访问目标服务器的另外一台服务器,而这台服务器就被当做是代理人的角色 ,称之为代理服务器,于是客户端把请求发给代理服务器,由代理服务器获得目标服务器的数据并返回给客户端。客户端是清楚目标服务器的地址的,而目标服务器是不清楚来自客户端,它只知道来自哪个代理服务器,所以正向代理可以屏蔽或隐藏客户端的信息。
反向代理:从上面的正向代理,你会大概知道代理服务器是为客户端作代理人,它是站在客户端这边的。其实反向代理就是代理服务器为服务器作代理人,站在服务器这边,它就是对外屏蔽了服务器的信息,常用的场景就是多台服务器分布式部署,像一些大的网站,由于访问人数很多,就需要多台服务器来解决人数多的问题,这时这些服务器就由一个反向代理服务器来代理,客户端发来请求,先由反向代理服务器,然后按一定的规则分发到明确的服务器,而客户端不知道是哪台服务器。常常用nginx来作反向代理。
4.1、介绍
- 传统和透明是为客户端服务的,借助squid加快访问web服务的速度,或者是公司内部对员工上网行为做限制使用的。
- 反向代理模式下的squid的服务对象是web服务器,通过squid来隐藏真实web服务器IP,加快客户的访问速度,还有负载均衡的功能。
- 反向代理的设置,需要通过三个步骤来完成:
- DNS解析
- SQUID配置
- 端口转发
4.2、部署操作
一台squid服务器
两台web服务器,web1:20.0.0.20 web2:20.0.0.30
一台win10客户端
Web1配置
[root@Web1 ~]# yum -y install httpd [root@Web1 ~]# echo "<h1>this is test1 web </h1>" > /var/www/html/index.html [root@Web1 ~]# systemctl start httpd [root@Web1 ~]# netstat -anpt | grep httpd tcp6 0 0 :::80 :::* LISTEN 50552/httpd [root@Web1 ~]# route add -net 192.168.100.0/24 gw 20.0.0.10 ###添加静态路由
Web2配置
[root@Web2 ~]# yum -y install httpd [root@Web2 ~]# echo "<h1>this is test2 web </h1>" > /var/www/html/index.html [root@Web2 ~]# systemctl start httpd [root@Web2 ~]# netstat -anpt | grep httpd tcp6 0 0 :::80 :::* LISTEN 14645/httpd [root@Web2 ~]# route add -net 192.168.100.0/24 gw 20.0.0.10
squid配置
[root@Squid ~]# iptables -F [root@Squid ~]# iptables -t nat -F [root@Squid ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT [root@Squid ~]# vi /etc/squid.conf # Squid normally listens to port 3128 http_port 20.0.0.10:80 accel vhost vport ###squid外网口IP cache_peer 20.0.0.20 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1 cache_peer 20.0.0.30 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2 cache_peer_domain web1 web2 www.yun.com [root@Squid ~]# systemctl restart squid
测试
[root@server ~]# vi /etc/hosts 20.0.0.10 www.stf.com