简介:
squid服务提供了强大的访问控制功能,通过定义各种ACL(Access Control List,访问控制列表),这些列表中包含了一定的过滤和控制条件,然后只要对这些列表设置时allow(允许)或deny(拒绝)就可以实现访问控制了。
在squid.conf配置文件中,HTTP的访问控制主要由acl和http_access配置项共同实现,两个配置项分别用来定义控制的条件(列表)和实施控制。
1.定义ACL列表
acl配置项用于设置访问控制列表的内容,可以为每组特定的控制目标制定一个名称。
格式:
acl 列表名称 列表类型 列表内容 ...
列表名称:用户自定义名称即可
列表类型:必须使用squid预定义的值
列表内容:即控制的对象
常见的squid预定义列表类型:
类型1:src
列表内容示范:
192.168.1.1/32
192.168.1.0/255.255.255.0
192.168.1.0-192.168.3.0/24
用途:
客户端IP地址或网络段、地址范围
类型2:dst
列表内容示范:
216.163.137.3/32
用途:
用户访问的目标主机名或者IP地址
类型3:port
列表内容示范:
80 8080 21
用途:
用户访问的端口
类型4:srcdomain
列表内容示范:
.linuxfan.cn
.llfa.cn
用途:
客户端来源域名(根据ip地址作反向解析)
类型5:dstdomain
列表内容示范:
.qq.com .msn.com .verycd.com
用途:
用户访问的目标域,匹配域内所有站点
类型6:time
列表内容示范:
MTWHF 8:30-17:30
12:30-13:30
AS
用途:
用户上网的时间段
字母表示一星期各天的英文缩写
M-monday
T-tuesday
W-wednesday
H-thursday
F-friday
A-saturday
S-sunday
列表类型7:Maxcon
列表内容示范:
15
用途:
客户端的并发HTTP连接数
列表类型8:url_regex
列表内容示范:
url_regex -i ^rtsp:// ^mms://
url_regex -i ^emule://
用途:
用户访问的整个URL网址,
可以使用正则表达式,
加-i表示忽略大小写
列表类型9:urlpath_regex
列表内容示范:
urlpath_regex -i sex adult nude
urlpath_regex -i \.mp3$ \.rar$
用途:
匹配用户访问的URL路径(部分),
可以使用正则表达式
2.设置acl访问权限
针对定义的各种acl列表,使用http_access配置项控制其访问权限,允许(allow)或者拒绝(deny)。
http_access配置行必须在对应的acl列表定义之后。
每一行http_access配置确定一条权限控制规则。
在每一条http_access规则中,可以同时包含多个acl列表名,各个列表之间使用“与”的关系,只有满足所有acl列表对应的条件才会进行限制,
可以使用“!”符号设置相反条件
格式:
http_access allow或deny 列表名.....
生效的顺序:
在squid.conf中http_access各条规则按顺序进行匹配,匹配即停止;
没有任何规则是:squid访问将拒绝客户端的请求。
有规则但找不到匹配项是:
采用与最后一条相反的权限,
即如果最后一条是allow,则拒绝,否则允许。
通常情况下把最常用的控制规则放在最前面,以减小squid的负载。
在访问控制的总体策略上采用:先拒绝后允许或先允许后拒绝,在最后添加一条“http_access allow all”或者“http_access deny all”
3.实现步骤:
定义列表
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl LAN1 src 192.168.1.0/24
acl LAN2 src 192.168.2.0/24
acl PC1 src 192.168.1.66/32
acl lan_Domain .linuxfan.cn .benet.com
acl to_localhost dst 127.0.0.0/8
acl Black_IP dst 61.143.79.86/32 217.23.45.77/32
acl Black_host dst ##squid启动时会尝试解析
acl Black_Domain dstdomain .qq.com .msn.com j.gamezone.net
acl Max10_Conn maxconn 10
acl Max20_Conn maxconn 20
acl Black_URL url_regex -i ^rtsp:// ^mms:// ^emule://
acl Illegal_words urlpath_regex -i sex adult fake
acl MediaFile urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$ \.rm$ \.mov$ \.mpg$
acl Lunch_Hours time MTWHF 12:30-13:30
acl Work_Hours time MTWHF 08:30-17:30
实现权限控制
http_access deny LAN1 Black_IP
http_access deny LAN1 Black_Host
http_access deny LAN1 Black_Domain
http_access deny LAN2 Black_URL
http_access deny LAN2 Illegal_words
http_access deny LAN2 MediaFile
http_access deny PC1 Max10_conn
http_access deny LAN1 Max20_conn
http_access allow LAN_Domain Work_Hours
http_access allow LAN1 Work_Hours
http_access allow LNA2 Work_Hours
http_access deny all