Squid代理服务器(三)——ACL访问控制
一、ACL概念
Squid提供了强大的代理控制机制,通过合理设置ACL(Access Control List,访问控制列表)并进行限制,可以针对源地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤。
ACL访问控制的步骤:
1、使用acl配置项定义需要控制的条件
2、通过http_access配置项对已定义的列表做“允许”或“拒绝”访问的控制
二、ACL用法概述
(1)定义ACL访问列表
定义格式:acl 列表名称 列表类型 列表内容 ...
例:控制源IP网段
vim etc/squid.conf
acl MYLAN src 192.168.1.0/24 192.168.4.0/24
常用的ACL列表类型
1 src 源地址 2 dst 目标地址 3 port 目标地址 4 dstdomain 目标域 5 time 访问时间 6 maxconn 最大并发连接 7 url_regex 目标URL地址 # 可以定义大的范围比如http://www.baidu.com 8 urlpath_regex 整个目标URL路径 # 可以定位到每个网站的具体目标的url,比如百度音乐的一首歌的url
(2)ACL访问控制
定义好各种访问控制列表以后,需要使用httpd_access配置项来进行控制
格式:
~]#vim etc/squid.conf
http_access allow或deny 列表名……
在每一条http_access规则中,可以同时包含多个访问控制列表名,各个列表之间以空格分隔,为“与”的关系,表示必须满足所有访问控制列表对应的条件才会进行限制
规则匹配原理:没有设置任何规则时,Squid服务将拒绝客户端的请求,有规则但找不到相匹配的项时,Squid将采用与最后一条规则相反的权限,即如果最后一条规则时allow,就拒绝客户端的请求,否则允许该请求,但是我们要尽量避免找不到相匹配的情况。
三、ACL列表的详细应用
1、禁止任何客户机使用此代理服务:定义一条名为all的列表,匹配来自任意源地址的代理访问;然后拒绝此列表,注意ACL列表要写在前面
1 ~]#vi /etc/squid.conf 2 acl all src 0.0.0.0/0.0.0.0 3 http_access deny all 4 ~]#service squid reload
2、允许多个局域网段在工作时间上网
1 ~]#vim /etc/squid.conf 2 acl all src 0.0.0.0/0.0.0.0 (有些版本要这么写acl all src all) 3 acl MYLAN src 192.168.1.0/24 192.168.4.0/24 4 acl WORKTIME time MTWHF 08:30-17:30 (其中MTWHF是周一到周五的英文首字母) 5 http_access allow MYLAN WORKTIME 6 http_access deny all 7 ~]#service squid reload 8 #注意要先写http_access allow MYLAN WORKTIME再写http_access deny all,因为先执行前面的,后面的就不执行了
3、通过黑名单限制目标网站
(1)首先创建地址列表文件(直接在配置文件里写也行,但是这种用列表文件的方式适合拒绝或允许的网站域名比较多的情况,而且方便增删管理)
1 ~]#vim /etc/squid/ipblock.list 2 61.135.167.36 3 60.28.14.0/24 4 ~]#vim /etc/squid/dmblock.list 5 .qq.com
(2)配置acl
1 ~]#vim /etc/squid.conf 2 acl IPBLOCK dst "/etc/squid/ipblock.list" 3 acl DMBLOCK dstdomain "/etc/squid/dmblock.list" 4 http_access deny IPBLOCK 5 http_access deny DMBLOCK 6 ~]#service squid reload