squid服务的作用
1.加快对http访问的速度
2.提高安全性
3.能够进行访问控制
代理的基本类型
传统代理:需要在客户机的浏览器、相关的工具上手动设置代理服务器的地址和端口,访问的网页域名也是由代理服务器进行解析的
透明代理:客户不需要指定代理服务器的地址和端口,而是通过网关,由防火墙的重定向策略将用户的请求交给代理服务器处理;域名解析有客户机完成
实验要求:
1.所有的局域网pc通过共享ip(ip地址为200.1.1.1)的方式接入internet,用于非web访问协议的访问(如dns,ftp,mail等等)
2.当局域网pc访问internet中的web站点(80、443端口)时,自动使用代理
3.针对局域网pc的web访问进行控制,主要要求如下。
禁止下载扩展名为.3pg 、.mp4、.f4v、.mkv、.rmvb、.avi的视频文件
超过4MB大小的文件不尽兴缓存,禁止下载超过10MB的文件
设置网站黑名单,禁止访问位于.qq.com、.msn.com域下的web站点
允许在正常的上班时间(周一到周五的8:30~17:30)使用代理服务
默认策略设置为禁止任何客户机使用代理服务
一、安装squid
1.解压
[root@centos2 ~]# tar -zxf /mnt/squid-3.4.6.tar.gz -C /usr/src
2.配置、编译、安装
[root@centos2 squid-3.4.6]# ./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll --enable-gnuregex
说明:
1.squid服务器的配置
(1)修改squid.conf配置文件
http_access allow all //允许任意客户机使用代理服务器,放在http_access deny all前面(注意不加也可以,如果客户机地址正好时192.168.段就不用加,因为在squid.conf中有一个acl localnet src 192.168.0.0/16,http_access allow localnet)
(2)在防火墙上添加允许的策略
Sytemctl stop firewalld
(3)配置dns服务器,为web站点注册域名www.benet.com(略)
(4)在squid代理服务器上填写好dns服务器的地址(这一点特别注意,要求代理服务器本身可以解析域名)
#vim /etc/resolv.conf
nameserver 192.168.1.1
(5)重启squid代理服务
[root@centos2 ~]# squid -k reconfigure
2.客户机的代理配置
(1)客户机不用填写网关和dns服务器地址,完全由squid代理解析
(2)代理服务的验证方法
①查看squid访问日志的新增记录
[root@centos2 ~]# tail /usr/local/squid/var/logs/access.log
②查看web访问日志的新增记录
(注意:当客户机再次访问同一个web页面时,squid访问日志会增加新的记录,但web访问日志中的记录不会发生变化(除非页面变更或执行强制刷新等操作),这说明当客户机重复访问同一个静态页面时,实际上是由代理服务器通过缓存提供的
(二)、构建透明代理:需要在客户机填写网关和dns地址
1.基本设置
(1)先在客户机浏览器中去掉代理设置
(2)在squid上开启路由功能
#vim /etc/sysctl.conf
net.ipv4.ip_forward = 0 ----->net.ipv4.ip_forward = 1
#sysctl -p
(3)客户机和web服务器都填写好网关
route add default gw 192.168.2.1
(4)如果是在源拓扑图上改的,注意更改dns中的记录设置,并清除客户机的dns缓存
2.配置squid支持透明代理
[root@centos2 ~]# vim /etc/squid.conf
http_port 3128 ---->http_port 192.168.1.1: 3128 transparent
#[root@centos2 ~]# squid -k reconfigure
3.设置iptables的重定向策略,将来自局域网内192.168.1.0/24网段且访问http,https等协议的数据包交给运行在本机3128端口上的squid服务处理
[root@centos1 ~]# systemctl start firewalld
[root@centos1 ~]# firewall-cmd --zone=external --add-interface=ens36
[root@centos2 ~# firewall-cmd --zone=internel --add-interface=ens33
[root@centos2 ~]firewall-cmd --zone=external --add-service=http
[root@centos2 ~]firewall-cmd --zone=external --add-service=https
[root@centos2 ~]firewall-cmd --zone=external --add-port=3128/tcp
[root@centos2 ~]firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens36 -p tcp --dport 80 -j REDIRECT --to-ports 3128
[root@centos2 ~]firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens36 -p tcp --dport 443 -j REDIRECT --to-ports 3128
[root@centos2 ~]
4.验证透明代理,同上(传统代理)
(三)、ACL访问控制,加上禁止192.168.1.10访问www.benet.com用于测试
ACL的作用:对代理访问进行访问控制,可以针对源地址、目标地址、访问的url路径、访问的时间等条件进行过滤
ACL配置的步骤:
使用acl配置项定义需要控制的条件
通过使用http_access配置项对已经定义的列表做"允许"或拒绝访问的控制
ACL访问控制列表的定义方法:
acl 列表名称 列表类型 列表内容(可以为多个内容,以空格分隔,为或的关系
访问权限定义方法
http-access allow或deny 列表名
说明:
每一条http_access规则中,可以同时包含多个控制列表,空格分隔,为与的关系
取反条件时,用!符号
http_access必须放在acl之后
关于规则的执行过程:
找到一条规则即不再向后搜索
没有配置任何规则时,squid服务将拒绝客户端的请求
有规则但找不到相匹配的项:squid将采用与最后一条规则相反的权限
1.首先,创建一个存放域名黑名单的目录
#mkdir /etc/squid
#vim /etc/squid/dmblock.list
.qq.com
.msn.com.
....
2.修改squid配置文件
[root@centos2 ~]# vim /etc/squid.conf
acl MYLAN src 192.168.1.0/24
acl MEDIAFILE urlpath_regex -i .3gp$ .mp4$ .f4v$ .mkv$ .rmvb$ .avi$
acl DMBLOCK dstdomain "/etc/squid/dmblock.list"
acl deny10 src 192.168.1.10
acl WORKTIME time MWTHF 08:30-17:30
http_access deny deny10
http_access allow MYLAN WORKTIME Safe_ports !MEDIAFILE !DMBLOCK
http_access deny all
[root@centos2 ~]# squid -k reconfigure
3.将客户机ip改为192.168.1.10再访问测试,不能访问了
(1)测试不能访问网页
(2)测试能访问网页,但是不能下载超过10MB的文件
①在web服务器网页根目录下创建一个大于10M的文件
#dd if=/dev/zero of=/var/www/html/dltest.data bs=1M count=15
②在squid代理服务器上编辑配置文件,加上如下行
#vim /etc/squid.conf
reply_body_max_size 10 MB
③在客户机上测试
(四)squid日志分析
1.先在squid本地挂载centos光盘并配置yum
2.安装GD库
#yum -y install gd gd-devel
3安装sarg软件,挂载sarg光盘
[root@centos2 sarg-2.3.7]# tar zxf /mnt/sarg-2.3.7.tar.gz -C /usr/src
[root@centos2 sarg-2.3.7]# cd /usr/src/sarg
[root@centos2 sarg-2.3.7]# ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
说明:
--enable-extraprotection //添加额外的安全保护
[root@centos1 sarg-2.3.7]# make&&make install
4.配置 (找到如下行修改就可以)
#vim /etc/sarg/sarg.conf
access_log /usr/local/squid/var/logs/access.log //指定squid的访问日志文件
Especify the title for html page.
title "Squid User Access Reports" //网页标题
output_dir /var/www/html/sarg //sarg报告的输出目录
user_ip no //使用用户名显示
topuser_sort_field connect reverse BYTES reverse //在top排序中国,指定连接次数、访问字节数,采用降序排列,升序将reverse换成normal
user_sort_field connect reverse //对于用户访问记录,连接次数按降序排列
exclude_hosts /usr/local/sarg/noreport //指定不计入排序的站点列表文件
overwrite_report no //当那个日期报告已经存在,是否覆盖报告
mail_utility mailq.postfix //发送邮件报告的命令
charset UTF-8 //使用字符集
weekdays 0-6 //指定top排序时的星期周期,0为周日
The hours to take into account
hours 9-12,14-16,18-20 //指定top排序时的时间周期
www_document_root /var/www/html //网页根目录
4.运行
上述配置中,添加了不计入排序的站点,需要存在下面这个文件
touch /usr/local/sarg/noreport
建议建立符号链接
#ln -s /usr/local/sarg/bin/sarg /usr/local/bin
直接执行sarg
#sarg
5.验证,在客户机访问
转载于:https://blog.51cto.com/13468179/2171906