squid代理与acl控制
1:squid服务的作用
1.加快对http访问的速度
2.提高安全性
3.能够进行访问控制
代理的基本类型
l 传统代理:需要在客户机的浏览器、相关的工具上手动设置代理服务器的地址和端口,访问的网页域名也是由代理服务器进行解析的
l 透明代理:客户不需要指定代理服务器的地址和端口,而是通过网关,由防火墙的重定向策略将用户的请求交给代理服务器处理;域名解析有客户机完成
2:首先进行传统配置:如图
一、安装squid
1.解压
[[email protected] ~]# tar -zxf squid-3.4.6.tar.gz -C /usr/src
2.配置、编译、安装
[[email protected] 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
[[email protected] squid-3.4.6]# make&&make install
3.创建连接文件、创建用户和组如下图:
[[email protected] squid-3.4.6]# ln -s /usr/local/squid/sbin/* /usr/local/sbin
[[email protected] squid-3.4.6]# useradd -M -s /sbin/nologin squid
[[email protected] squid-3.4.6]# chown -R squid:squid /usr/local/squid/var
4:修改squid的配置文件:[[email protected] squid-3.4.6]#vim /etc/squid.conf
5. squid的运行控制
1)检查配置文件语法是否正确
[[email protected] squid-3.4.6]# squid -k parse
2)启动、停止squid
#squid -z //-z选项用来初始化缓存目录
[[email protected] squid-3.4.6]# cd /usr/local/squid/var/cache/squid/
[[email protected] squid]# ls
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
#squid //启动squid服务
[[email protected] 00]# netstat -anpt|grep "squid"
tcp 0 0 :::3128 :::* LISTEN 38412/(squid-1) #确认squid服务处于正常监听状态
验证效果:达到查看网页默认效果
(2)代理服务的验证方法
①查看squid访问日志的新增记录
[[email protected] ~]# tail /usr/local/squid/var/logs/access.log
1490524324.184 3 192.168.1.1 TCP_CLIENT_REFRESH_MISS/200 2667 GET http://www.benet.com/icons/apache_pb.gif - HIER_DIRECT/192.168.1.2 image/gif
1490524324.186 4 192.168.1.1 TCP_CLIENT_REFRESH_MISS/200 4296 GET http://www.benet.com/icons/poweredby.png - HIER_DIRECT/192.168.1.2 image/png
②查看web访问日志的新增记录
二、构建代理服务器
(一)透明代理
1.基本设置
(1)先在客户机浏览器中去掉代理设置
(2)在squid上开启路由功能
vim /etc/sysctl.conf
sysctl -p 重启生效
(3)客户机和web服务器都填写好网关
3.设置iptables的重定向策略,将来自局域网内192.168.1.0/24网段且访问http,https等协议的数据包交给运行在本机3128端口上的squid服务处理
[[email protected] ~]# iptables -t nat -I PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp -m multiport --dport 80,443 -j REDIRECT --to 3128
4.验证透明代理,同上(传统代理)
(三)、ACL访问控制,加上禁止192.168.1.123访问www.benet.com用于测试
ACL的作用:对代理访问进行访问控制,可以针对源地址、目标地址、访问的url路径、访问的时间等条件进行过滤
ACL配置的步骤:
l 使用acl配置项定义需要控制的条件
l 通过使用http_access配置项对已经定义的列表做"允许"或拒绝访问的控制
ACL访问控制列表的定义方法:
acl 列表名称 列表类型 列表内容(可以为多个内容,以空格分隔,为或的关系
访问权限定义方法
http-access allow或deny 列表名
说明:
l 每一条http_access规则中,可以同时包含多个控制列表,空格分隔,为与的关系
l 取反条件时,用!符号
l http_access必须放在acl之后
关于规则的执行过程:
l 找到一条规则即不再向后搜索
l 没有配置任何规则时,squid服务将拒绝客户端的请求
l 有规则但找不到相匹配的项:squid将采用与最后一条规则相反的权限
1.首先,创建一个存放域名内名单的目录
#mkdir /etc/squid
#vim /etc/squid/dmblock.list
.qq.com
.msn.com.
....
2.修改squid配置文件
[[email protected] ~]# 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
[[email protected] ~]# 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日志分析
1.先在squid本地挂载centos光盘并配置yum
2.安装GD库
3安装sarg软件,挂载sarg光盘
[[email protected] sarg-2.3.7]# tar zxf /mnt/sarg-2.3.7.tar.gz -C /usr/src
[[email protected] sarg-2.3.7]# cd /usr/src/sarg
[[email protected] sarg-2.3.7]# ./configure --prefix=/usr/local/sarg -sysconfdir=/etc/sarg --enable-extraprotection
4.配置 (找到如下行修改就可以)
#vim /etc/sarg/sarg.conf
access_log /usr/local/squid/var/logs/access.log
Especify the title for html page.
title "Squid User Access Reports"
output_dir /var/www/html/sarg
user_ip no
topuser_sort_field connect reverse BYTES reverse
user_sort_field connect reverse
exclude_hosts /usr/local/sarg/noreport
overwrite_report no
mail_utility mailq.postfix
charset UTF-8
weekdays 0-6
The hours to take into account
hours 9-12,14-16,18-20
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.验证,在客户机访问