在通过上一篇分别配置普通代理以后,我们透过测试正常使用的squid proxy,开始挖掘squid 的ACL权限管控
一、ACL简介
ACL:访问控制列表,应用在网络管理设备上的指令列表(规则), 即告诉管理设备哪些数据允许通过,哪些数据拒绝通过
定义:访问控制列表ACL 是由一系列的规则组成的集合,ACL通过这些规则对报文进行分类,从而使设备可以对不同类报文进行不同的处理!
Squid ACL访问控制步骤
1、使用acl配置项定义需要控制的条件
2、透过http_access配置项对已定义的列表做“允许”或“拒绝”访问的控制
访问控制列表为顺序执行,如遇到匹配到acl策略,就执行,不执行后面的策略!
二‘、ACL的元素语法
acl name acltype value1 value2 ....
示例
acl localnet src 10.0.0.0/8 定义原地址范围网段
acl localhost src 10.67.124.191 定义单个主机原地址
其中,acltype可以是src、dst、srcdomain、dstdomain、url_regex、time、port、proto、time中的任意一种,一下我们逐一分析!
列表类型 | 含义/用途 | 列表内容示例 |
src | 源IP地址、网段、IP地址范围(客户机IP地址) | 10.67.124.0/23 10.67.50.0/23 |
dst | 目标IP地址、网段主机名(服务器IP地址) | 216.182.154.9 216.182.154.0/24
|
port | 目标端口 | 80 443 20 22 |
srcdomain | 源名称(客户机所属的域) | 暂不测试
|
dstdomain | 目标名称(服务器所属的域) | .qq.com .weibo.com .163.com |
time | 字母表示一星期中各天的英文缩写MTWHFAS | MTWHF 8:30-17:30(周一至周五的时刻) 12:30-13:30 AS(周六、日) |
maxconn | 每个客户机的并发连接数 | X |
url_regex | 目标资源的URL地址,-i表示忽略大小写 | url_regex -i ^rtsp:// |
urlpath_regex | 目标资源的整个URL路径 | urlpath_regex -i sex adult urlpath_regex -i \.mp3$ |
1、针对不同的客户机地址、时间段等分别定义列表
查看squid服务器时间,根据时间进行测试
[root@basicservices ~]# vim /etc/squid/squid.conf
http_port 3128
cache_mem 128 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_effective_user squid
cache_effective_group squid
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
visible_hostname basicservices
acl localnet src 10.0.0.0/8 #定义源地址段
acl jobtime time W 09:00-10:00 #定义时间
http_access allow localnet jobtime #允许在规定时间下,源地址段使用代理工具
http_access deny all
cache_peer 10.67.50.59 parent 808 0 default
never_direct allow all
1.1 测试
在将代理IP配置到IE浏览器后,10.0.0.0/8网段的地址使用proxy,无法在周三09:00-10:00 以外的时间使用!
2、针对不同的目的地址或目的域名进行访问限制,当需要限制的同一个acltype较多时,可以用独立的文件来存放;省时省力!
比如多个目的IP地址可创建文件,在指定目录下创建文件,并配置文件内容;
此两个文件的路径,我写入在/etc/squid目录下
[root@basicservices squid]# more ipblock.list
14.215.177.39
183.58.18.95
多个目的域名地址可创建文件,在指定目录下创建文件,并配置文件内容
[root@basicservices squid]# more dmblock.list
.qq.com
.weibo.com
163.com
将上面的文件添加到squid.conf 配置文件中!生成如下配置:
http_port 3128
cache_mem 128 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_effective_user squid
cache_effective_group squid
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
visible_hostname basicservices
acl localnet src 10.0.0.0/8 #定义源地址段
acl jobtime time W 09:00-10:00 #定义访问时间
acl dmblock dstdomain "/etc/squid/dmblock.list" #定义block掉的目的域名指定文件
acl ipblock dst "/etc/squid/ipblock.list" #定义block掉的目的IP指定文件
http_access allow localhost #顺序执行以下策略,符合标准就执行,不符合标准就调准至下一条指令!
http_access deny dmblock #屏蔽掉dmblock 中的域名,模糊查询 .qq.com/.weibo.com/.163.com
http_access deny ipblock #屏蔽掉ipblock 中的IP地址,无法访问
http_access allow localnet jobtime #允许在规定时间下,定义的源地址使用proxy
http_access deny all
cache_peer 10.67.50.59 parent 808 0 default
never_direct allow all
2.1 测试
根据上面的配置,客户能够使用的时间限制在周三的上午9:00-10:00 ,无法放问dmblock.list中的域名,也无访问ipblock.list中的地址;acl 的标准即顺序执行,符合条件就执行,不符合条件直接进入下一条策略!
3、定义最大连接数、文件后缀格式以及url格式的测试本次就不在测试!大家感兴趣,可以自行测试执行!
acl mc20 maxconn 50 #最大并发连接50
acl blackURL url_regex -i ^www:// #以www://等开头的URL
acl fileURL urlpath_regex -i \.mp3$ \.mp4$ #以.mp3、.mp4结尾的URL路径
切记ACL 的执行标准!