内容摘要:本文介绍Linux下非常著名、常用的Squid代理服务器的使用,并着重讲述如何使用其提供的访问控制策略,来保证代理服务器的合法使用。
aclnormalsrc192.168.0.11-192.168.0.200/32
aclbadusersrc192.168.0.100/32
aclbaddstdstwww.soocol.com
aclallsrc0.0.0.0/0
http_accessdenybaduser
http_accessallowadvance
http_accessallownormal
可以看出,ACL的基本格式如下:
acl列表名称控制方式控制目标
比如aclallsrc0.0.0.0/0,其名称是all,控制方式是src源IP地址,控制目标是0.0.0.0/0的IP地址,即所有未定义的用户。出于安全考虑,总是在最后禁止这个列表。
下面这个列表代表高级用户,包括IP地址从192.168.0.2到192.168.0.10的所有计算机:
acladvance192.168.0.2-192.168.0.20/32
下面这个baduser列表只包含一台计算机,其IP地址是192.168.0.100:
aclbaduser192.168.0.100/32
ACL写完后,接下来要对它们分别进行管理,代码如下:
http_accessdenybaduser
http_accessallowadvance
http_accessallownormal
上面几行代码告诉Squid不允许baduser组访问Internet,但advance、normal组允许(此时还没有指定详细的权限)。由于Squid是按照顺序读取规则,会首先禁止baduser,然后允许normal。如果将两条规则顺序颠倒,由于baduser在normal范围中,Squid先允许了所有的normal,那么再禁止baduser就不会起作用。
特别要注意的是,Squid将使用allow-deny-allow-deny……这样的顺序套用规则。例如,当一个用户访问代理服务器时,Squid会顺序测试Squid中定义的所有规则列表,当所有规则都不匹配时,Squid会使用与最后一条相反的规则。就像上面这个例子,假设有一个用户的IP地址是192.168.0.201,他试图通过这台代理服务器访问Internet,会发生什么情况呢?我们会发现,他能够正常访问,因为Squid找遍所有访问列表也没有和192.168.0.201有关的定义,便开始应用规则,而最后一条是deny,那么Squid默认的下一条处理规则是allow,所以192.168.0.201反而能够访问Internet了,这显然不是我们希望的。所以在所有squid.conf中,最后一条规则永远是http_accessdenyall,而all就是前面定义的“src0.0.0.0”。
责编:豆豆技术应用