squid 的配置详解 (转)--SeriesV

来源:互联网 发布:java 代码 log4j 编辑:程序博客网 时间:2024/06/11 02:07
SquidProxy的存取控制
 
基本存取控制
在SQUID里,Access Control List存取列表简称ACL用来在SQUID.CONF里设置客户端到代理服务器的权限控制。利用ACL可以将不同性质的客户端分类,以方便管理,也能对某个已经定义的ACL群组,限制其与代理服务器的联机。为什么可以轻易限制所定义的ACL群组呢?因为SQUID代理服务器的运行,需要通过HTTP,ICP等通讯协议,所以可以通过,
HTTP_ACESS ALLOW | DENY ACLNAME
ICP_ACCESS ALLOW | DENY ACLNAME等方式,允许或者拒绝HTTP,ICP达到限制控制的目的
 
在squid里对客户端的联机做存取控制分为两个阶段进行,第一阶段是定义ACL,第二阶段是设置ACL存取权限,第一阶段定义ACL
在proxy上通过ACL做连接控制
acl member src 192.168.1.10/24
http_access allow member
 
用法:
ACL的定义有以下两种:
1 acl acl名称 ACL类型 字符串1 字符串2...(ACLlist)
2 acl acl名称 ACL类型 “文件的路径”
说明:
acl命令 ,用来说明要做“存取控制列表”
acl名称,读者可以自定义一个acl名称,如:reject
ACL类型,即做限制的类型。ACL的类型有src,dst,srcdomain,dstdomain,url_pattern,urlpath_pattern,url_regex,urlpath_regex,time,port,proto,method,browser,user等相当多的限制类型
在squid里面做客户端的存取控制的定义的时候,最重要的是选择ACL类型,ACL类型会影响过滤存取的速度,一般建议使用src,dst等以IP地址为主的ACL类型,在存取规则上会快很多。
 
ACLIST:ACL的List大致可以分为字符串和文件两大类,字符串的内容可以是IP地址,FQDN,URL地址,含正则表达式的URL,文件路径(用双引号引起来),在所指定的文件里,再一行一行的写入ACLLIST
以下针对几种常用的ACL类型,说明如何完成控制客户端对SQUID PROXY的联机限制。
 
1.src限制
这种限制诶行的设置格式如下:
ACL ACL名称 SRC IP-NETWORK/NETMASK IP-NETWORK/NETMASK
用法:
使用src ACL类型的时候,后面必须是受限制的客户端的IP地址以及其掩码,也可以使用CIDR的格式,请注意SRC 是 source(来源)的意思,这种ACL是针对来源客户端的IP地址进行存取管理,使用src ACL类型的时候不能在后面输入FQDN
 
acl member src 192.168.1.0/24
主要是用来设定可以使用proxy Server的来源范围
 
其设置方式如下
acl all src 0.0.0.0/0.0.0.0;ACL名称为ALL ,并且限制来源的范围是0.0.0.0/0.0.0.0(所有)
 
acl local src 127.0.0.1/32 192.168.1.0/255.255.255.0
;这种写法适合单主机ACL名称是LOCAL来源范围是127.0.0.1/32 192.168.1.0/255.255.255.0
 
acl reject src 210.110.0.0/16 163.21.136.100/32
ACL名称是reject,reject的来源是210.110.0.0/16网域和一个163.21.136.100/32单一主机
 
acl members src 163.21.0.0/16 203.100.77.0/24
ACL的名称是MEMBER member的来源是163.21.0.0/16 网域 203.100.77.0/24网域
 
SRC限制类型,在squid存取管理里是运行速度最快的,因此如果需要对下层的客户或者是squid代理服务器做联机管理,建议使用src限制类型定义管制的来源对象,这种方式时如果有相当多的来源对象,需不断将“IP地址/掩码”加入在src语句后面,不要自动换行,但是加在src语句后面的长度会收到字符串总长度不能超过255字符的限制,因此如果使用src限制的来源对象众多的时候,请改用第二中方式即 “acl acl名称 ACL类型 “文件的路径””来做来源限制,如下所示:
acl members src "/etc/squid/myfriends"
 
接着在/etc/squid/myfriends文件里,将源IP地址/掩码,一行,一行写入,如
163.21.0.0/26
163.21.0.1/32
.................
 
在此强烈建议使用这种方法,这样可以更加快速的定义受管制的来源对象
 
2http_access命令
定义完ACL之后,暂时还无法对联机的客户端做存取控制,必须进入第二个阶段,用命令http_access设置ACL的存取权限,其语法如下:
用法:
http_access allow|deny acl名称
 
说明:
1.http_access申明设置ACL存取权限的命令
2.allow|deny 控制权限的方式。allow是允许,deny是拒绝
3.acl名称:用acl命令定义的acl名称,如前例的reject,member
以前设置的acl,all,local,reject,member为例,说明怎样设置acl的存取权限
 
http_access allow all
上式表示所有的网域都可以联机到本机的代理服务器,如果要限定特定的联机客户端,就要取消以上定义式,而改用
 
#http_access allow all
http_access allow mebmers
 
如果要定义ACL reject所定义的来源范围,拒绝使用本代理服务器,则可以定义如下:
http_access deny reject
 
在定义ACL存取权限的时候,allow和deny可以一起混用,但是必须注意存取的权限对象的先后顺序,在排列存取对象的先后顺序时,应当吧权限限制最低的项目放在前面,而权限限制最高的项目放在后面,如下列所示:
 
http_access dney rejector
http_access allow members
http_access allow local
http_access deny all
 
注意,由于members与local的来源范围有所重复,因此,需将范围交大的ACL放在范围较小的ACL的前面,习惯上做ACL存取权限定义的时候,会在定义权限限制的最末行加上“http_access deny all”,以明确的拒绝其他客户的联机要求。
 
在用http_access allow(deny)对acl对象做如上例的members做设置的时候,可以使用“!”符号做反向存取控制,如:members的定义是acl members src 163.21.110.0/24,如果设置如下:
http_access allow !members
 
表示客户端的来源IP只要不是163.21.110.0/24这个IP网域的用户,都可以使用代理。
 
当设置好存取控制之后,就先存储,并退出/etc/squid/squid.conf文件,然后让squid重新获得配置文件 squid -k reconfigure
 
补充:
读者可能已经注意到上面的使用http_access allow |deny设置存取权限的时候,acl名称都只有一个这是因为在,如果在这个命令后面接多个acl名称的话,其作用是对member1和member2的交集做存取控制,也就是说,如果这两个对象如果没有交集(一般情况)那么这条存取控制就实效,导致客户端无法使用代理服务器。如果acl名称定义的是time类型的存取控制类型,则可以与src,dst,srcdomain,dstdomain,url_pattern,urlpath_pattern,url_regex,urlpath_regex等存取控制类型搭配使用
 
3dst限制类型
 
用法
acl acl名称 dst ip-network/netmask ip-network/netmask
说明:
dst,就是distance,目的地。使用这种限制类型,可以用来对客户端要存取的“目的地”做权限控制,dst限制类型的对象是目的地的ip地址/掩码对
 
范例:
acl sex dst “/etc/squid/sex.list"
acl violence dst 210.96.0.0/16 210.128.1.0/24
http_access deny sex
http_access deny violence
 
上述设置可以用来防止不健康的网站的联机,不过一般而言,搜集不健康的网络的IP比较麻烦,所以通常防止不健康网站联机的时候,使用dstdomain限制类型较为方便
 
4srcdomain限制类型
用法:
acl acl名称 srcdomain 来源网址1 来源网址2.......
说明:
src限制类型适用于来源范围是IP地址,而srcdomain限制类型则适用于来源范围是域名或FQDN(完整域名)。
范例:
acl friends srcdomain tp.edu.cn tpc.edu.cn tmtc.edu.cn
acl 客户s srcdomain "/etc/squid/客户_list"
http_access allow friends
http_access allow clients
 
上述定义表示,允许来自tp.edu.cn tpc.edu.cn tmtc.edu.cn三个网域,以及客户_list文件里所列的域名的主机,使用本机的代理服务器。srcdomain之后通常接“域名”,如:tp.edu.cn。当然,也可以使用单一主机的FQDN,如:proxy.dfes.bj.edu.cn
注意:
用srcdomain限制类型,由于代理服务器要用DNSSERVER做域名解析在做来源范围过滤时,速度会很慢。
 
5.dstdomain限制类型
用法:
acl acl名称 dstdomain 目的网域1 目的网域2.......
说明:
dst限制类型适用于目的范围地址是IP地址,而dstdomain限制类型,则适用于目的范围是域名或FQDN(完整域名)
 
范例:
acl sex dstdomain "etc/squid/sex.list"
acl violence dstdomain "etc/squid/violence.list"
 
http_access deny sex;拒绝联机到色情网站
http_access deny violence;拒绝联机到暴力网站
 
/etc/squid/sex.list文件内容
www.playboy.com
www.sex.com
girl.com
 
dstdomain限制类型由于可对客户端所要缓冲的目的域做联机控制,因此非常适用于对不健康网站进行保护。以上例来说,建议读者将不见看的网域分为多个ACL,例如SEX,VIOLENCE等,再将不健康的网站一一列在指定的文件里,如sex.list,violence.list如此一来,就可以很轻松的做好限制访问不健康的网站的工作。
 
6.url_regex限制类型
用法:
acl acl名称 url_regex URL1 URL2
说明:
dstdomain限制类型对限制不健康网站的访问很有用,但却把整个网站都设置为拒绝联机,例如很多的著名的商业网站,在提供各类服务的同时也包含色情,暴力等网站的查询,当进行不见看的网站限制访问时,不能因为这个因素将其纳入黑名单,必须正对URL地址做控制才对,但是通过dstdomain限制无法做到的。此时,可改用URL_REGEX限制类型
 
范例:
acl sex1 url_regex^http
//dir.kimo.com/recreation/sex/$
acl sex2 url_regex^http://dir.kimo.com/recreation/sex$
acl violence url_regex "etc/squid/violence.list"
 
http_access deny sex1;拒绝联机到特定的URL地址
.......
 
URL_REGEX限制类型后面所接的是用正则表达式regular express表示的匹配对象,最简单的形似是"^URL$",也就是说在URL地址的前面加上^,表示匹配的开头,在URL的地址后面加上$标识匹配的结尾,请注意,我们在范例中给出的第一和第二个例子是不同的,请注意区分,如果您熟悉正则表达式,那么可以自己定制相应的URL
 
正则表达式的相关基础,详细在网络上有很多的介绍,在这里就不再累述了。
 
7.urlpath_regex限制类型
用法
acl acl名称 urlpath_regex URL1,URL2
 
说明:URL_REGEX限制类型主要适用于匹配网站的URL 如:“http://dir.kimol.com.cn/$" 如果针对某个网页,文件,图片的URL地址做存取控制,就得改用urlpath_regex限制类型。urlpath_regex限制类型主要用来对"http://bj.edu/works/js/js001.gif"这种完整的网页,文件,图形的URL地址来做存取控制。
范例:
acl dst urlpath_regex
^http://www.bj.edu/works/js001.gif$
 
http_access deny dst1 ;拒绝联机到特定URL地址
http_access deny dst2 ;拒绝联机到特定URL地址
 
urlpath_regex限制类型其后所接的也是正则表达式描述的URL地址。最简单的形式也是:”^URL$",也就是说在URL地址前面加上“^”,标识样式匹配的开头,在URL地址的后面加上"$",表示样式匹配的结果,如“
^http://www.bj.edu/works/js001.gif$”
 
8.time限制类型
用法:
acl acl名称 time [day-abbrevs] [h1:m1-h2:m2]
说明:
squid的ACL的限制类型,除了前面几种常用的类型外,还有一种相当特殊的ACL限制类型,TIME限制类型:time限制类型,time限制类型不能单独使用,必须配合其他限制类型结合使用,使用TIME限制类型的时候,请在 [day-abbrevs]栏填入所控制的“天”(星期几的英文所写),如:SM(表示SUNDAY,MONDAY)在[h1:m1-h2:m2]填入控制的时间,用24小时制计算,如:09:00-22:30。以下列出time限制类型用法:
 
#acl aclname time [day-abbrevs] [h1:m1-h2:m2]
#day-abbreves:
#S-Sunday
#M-Monday
#T-Tuesday
#W-Wednesday
#H-Thursday
#F-Friday
#A-Saturday
#h1:m1必须小于h2:m2
 
范例一:
acl members src "/etc/squid/myfriends"
acl Do_work time MTWHF 07:00-20:00
 
http_access allow Do_work members
http_access deny Do_work
 
上例是先用SRC限制类型指定来源范围的MEMBERS ACL:第二行用TIME限制类型定义限制联机的时间是:星期一到星期5,每天从早上7点到晚上8点,指定给Do_work ACL:第三行是重点,将Do_work,members放在http_access allow后,表示允许members联机,且限制在Do_works指定的时间里
 
范例二
 
acl members src "/etc/squid/myfriends"
acl Do_work time MTWHF 07:00-20:00
acl all src 0.0.0.0/0
acl Don’t_work time s 01:00-02:00
 
http_access deny Dont_work all
http_access allow Do_work members
http_access deny Do_work
 
这个范例,增加了一个设定,是设置每个星期天凌晨1点到2点间不允许所有的客户端联机,通常这段时间用来做系统整理LOG文件或者重新启动SQUID_DEAMON
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝买号被骗了怎么办 后脑偏头疼怎么办最快最有效 脸两边的骨头大怎么办 做b超胎儿老盘腿怎么办 裤子白边染色了怎么办 异地恋要分手了怎么办 异地恋没话题了怎么办 陪婆婆聊天心情超级郁闷怎么办? 他不想理你了怎么办 陌陌看到信息不回怎么办 qq的文档看不了怎么办 怀孕了分手了怎么办啊 qq节日祝福关了怎么办 微信欠款不还怎么办 qq文件记录删除了怎么办 qq漫游记录删了怎么办 换了新手机微信怎么办 新手机了微信怎么办 微信收藏空间已满怎么办 微信收藏空间满了怎么办 qq步数上传不了怎么办 qq发送的文件失效了怎么办 苹果手机微信数据损坏怎么办 微信文件被清理怎么办 老婆与别人聊暧昧话题怎么办 微信不小心删了聊天记录怎么办 当聊天没话题了怎么办 老婆和别人频繁聊天老公怎么办 qq上把人屏蔽了怎么办 注册微信验证码发不出去怎么办 两个人在一起没有话题怎么办 两个人聊天没话题怎么办 qq邮箱限制信用卡账单怎么办 和朋友聊天没话题怎么办 跟朋友聊天没话题怎么办 和朋友聊天找不到话题怎么办 qq加好友忽略了怎么办 微信加好友收不到验证消息怎么办 陌陌距离乱了怎么办 qq不能点赞了怎么办 快递发货地址写错了怎么办