搭建Linux安全的Squid代理服务器

豆豆网   技术应用频道   2007年09月22日  【字号: 收藏本文

内容摘要:本文介绍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”。

责编:豆豆技术应用

正在加载评论...