squid代理acl控制

1:squid服务的作用

1.加快对http访问的速度

2.提高安全性

3.能够进行访问控制

代理的基本类型

传统代理:需要在客户机的浏览器、相关的工具上手动设置代理服务器的地址和端口,访问的网页域名也是由代理服务器进行解析的

透明代理:客户不需要指定代理服务器的地址和端口,而是通过网关,由防火墙的重定向策略将用户的请求交给代理服务器处理;域名解析有客户机完成

2:首先进行传统配置:如图

wKiom1jd0N_BNS9uAABuRdOPAFc914.png-wh_50 

一、安装squid

1.解压

[root@centos2 ~]# tar -zxf  squid-3.4.6.tar.gz -C /usr/src

wKioL1jd0PaCIgeRAABYpVoYfJM458.png-wh_50 

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

wKiom1jd0RDwPOVhAAAtOEoiE3g035.png-wh_50 

[root@centos2 squid-3.4.6]# make&&make install

3.创建连接文件、创建用户和组如下图:

[root@centos2 squid-3.4.6]# ln -s /usr/local/squid/sbin/* /usr/local/sbin

[root@centos2 squid-3.4.6]# useradd -M -s /sbin/nologin squid

[root@centos2 squid-3.4.6]# chown -R squid:squid /usr/local/squid/varwKiom1jd0SvDoC-qAAB1kSqZExI870.png-wh_50

4:修改squid的配置文件:[root@centos2 squid-3.4.6]#vim /etc/squid.conf

 

 

wKiom1jd0ULz_D6CAABJvHCTbrg361.png-wh_50 

 

5. squid的运行控制

1)检查配置文件语法是否正确

[root@centos2 squid-3.4.6]# squid -k parse

wKioL1jd0VrAtXlHAABun6hDbbk676.png-wh_50 

2)启动、停止squid

#squid  -z  //-z选项用来初始化缓存目录

wKioL1jd0XHBC_w-AAB7Uk7p6tw037.png-wh_50 

[root@centos2 squid-3.4.6]# cd /usr/local/squid/var/cache/squid/

wKiom1jd0YqCC3IIAAA7DGFe4EE419.png-wh_50 

[root@centos2 squid]# ls

00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F

#squid  //启动squid服务

[root@centos2 00]# netstat -anpt|grep "squid"

tcp        0      0 :::3128                     :::*                        LISTEN      38412/(squid-1)    #确认squid服务处于正常监听状态

验证效果:达到查看网页默认效果

wKiom1jd0aeCcYsHAAA-GL5Sco8021.png-wh_50 

wKiom1jd0cHi1VJVAACgBdlJs-I767.png-wh_50 

(2)代理服务的验证方法

①查看squid访问日志的新增记录

[root@centos2 ~]# 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 p_w_picpath/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 p_w_picpath/png

②查看web访问日志的新增记录

 

 

wKiom1jd0eLy5qKoAAAzh_A7hFM025.png-wh_50 

二、构建代理服务器

(一)透明代理

 

wKioL1jd0fezK9-TAABhRvDe0bc597.png-wh_50 

1.基本设置

1)先在客户机浏览器中去掉代理设置

2)在squid上开启路由功能

vim /etc/sysctl.conf

wKioL1jd0wXyMyJKAAA2hgalA1w237.png-wh_50 

sysctl -p 重启生效

(3)客户机和web服务器都填写好网关

wKiom1jd0yPjEQMnAAAUDS3rvk4970.png-wh_50 

 

3.设置iptables的重定向策略,将来自局域网内192.168.1.0/24网段且访问httphttps等协议的数据包交给运行在本机3128端口上的squid服务处理

[root@centos2 ~]# iptables -t nat -I PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp -m multiport --dport 80,443 -j REDIRECT --to 3128wKiom1jd00TCi9N4AAA8Xq7dXBk129.png-wh_50

4.验证透明代理,同上(传统代理)

wKioL1jd02CRW6N5AAEudBb8buQ013.png-wh_50 

 

(三)、ACL访问控制,加上禁止192.168.1.123访问www.benet.com用于测试

ACL的作用:对代理访问进行访问控制,可以针对源地址、目标地址、访问的url路径、访问的时间等条件进行过滤

ACL配置的步骤:

使用acl配置项定义需要控制的条件

通过使用http_access配置项对已经定义的列表做"允许"或拒绝访问的控制

ACL访问控制列表的定义方法:

acl  列表名称  列表类型  列表内容(可以为多个内容,以空格分隔,为或的关系

访问权限定义方法

http-access  allowdeny  列表名

说明:

每一条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)测试不能访问网页

wKioL1jd06CyRpNRAACH8orKrkk646.png-wh_50 

2)测试能访问网页,但是不能下载超过10MB的文件

①在web服务器网页根目录下创建一个大于10M的文件

#dd  if=/dev/zero  of=/var/www/html/dltest.data  bs=1M count=15

②在客户机上测试

wKioL1jd076zjGXjAACX9eLoKWQ464.png-wh_50 

(四)squid日志分析

1.先在squid本地挂载centos光盘并配置yum

2.安装GD

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

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.验证,在客户机访问

wKioL1jd0-6QSyoWAAChj4EOKOQ467.png-wh_50