squid服务执行普通代理和透明代理时,使用ACL来控制内网用户对外网的访问。ACL要先定义后调用
定义方式:
acl 名称 类型 内容
调用方式:
http_access 控制方式 acl名称
使用方法:
src(源地址):可以为网段(例:192.168.4.0/24,192.168.4.0/255.255.255.0)或单独IP(192.168.4.1/32,192.168.4.1/255.255.255.255),有多个值时用空格间隔
dst(目的地址):用法与src相同
port(目标端口):端口名(80),端口区段(80-83)
dstdomain(目标域名):主机名(www.163.com),域名(.163.com)
time 访问时间
time 星期 起始时间-结束时间
SMTWUFA hh:mm-hh:mm
日123456
例:工作时间不允许上网
acl mynet src 192.168.0.0/24
acl work_time time MTWUF 09:00-17:30
http_access deny mynet work_time
maxconn 最大并发连接
acl pc89 src 192.168.0.89/32
acl max_line_10 maxconn 10
http_access allow pc89 max_line_10
url_regex 目标URL地址,匹配url头(http://,ftp://)
acl Blk_URL url_regex -i ^rtsp:// ^mms:// ^ftp://
urlpath_regex 整个目标URL路径,匹配整条url路径
acl Blk_Words urlpath_regex -i sex adult(路径中不能包含sex,adult敏感词)
例:上班时间不允许看视频
acl RealFile urlpath_regex -i \.rmvb$ \.rm$ \.mp3$ \.mp4$
http_access deny mynet wrok_time RealFile
在squid中使用时,从第一条acl开始匹配,指导找到匹配条目,之后的acl条目无视。
必要的时候ACL可以用文件方式定义,再在squid.conf中调用:
在/etc/aquid/目录下建立两个acl文件,注意要将文件的所有者改为squid:
[root@svr5 ~]# vim /etc/squid/ipblock.list
61.135.16.36
60.28.16.0/24
1.1.1.1/32
:wq
[root@svr5 ~]# vim /etc/squid/dmblock.list
.qq.com
.msn.com
tmall.com
www.taobao.com
:wq
chown squid ipblock.list dmblock.list
在squid配置文件中调用:
[root@svr5 ~]# vim /etc/squid/squid.conf
acl IPaddress dst "/etc/squid/ipblock.list"
acl DMname dstdomain "/etc/squid/dmblock.list"
http_access deny IPaddress
http_access deny DMname
vi /etc/squid/squid.conf