首页 > 代码库 > Squid
Squid
Squid 访问控制
我们应该对Squid代理服务从理论上有了一定的认识,接下来通过应用实例的学习,希望能够使大家对Squid代理服务有一个更为深入的理解。在学习实例之前有必要强调一下,Squid访问控制列表是顺序读取的,应将配置文件squid.conf中的以下两个规则始终放置在acl语句的最后,否则这两条规则会覆盖其他的acl语句。
acl all src 0.0.0.0/0.0.0.0 |
同样的道理,当配置文件中配置多条访问控制规则时,必须注意其顺序,避免规则相互覆盖或屏蔽。另外,每次修改完配置文件后,若想使修改后的规则生效就必须重新载入配置文件,即运行命令"/etc/rc.d/init.d/squid reload"。
【实例一】禁止IP地址为192.168.1.102的客户机上网。
我们可以定义如下规则实现上述要求:
acl badclientip src 192.168.1.102 |
该规则定义了一条名为badclientip的acl,acl类型为src源IP地址方式,列表值为192.168.1.102,然后使用http_access参数禁止badclientip规则。也就是在IP地址为192.168.1.102的客户机通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,该终端客户访问Internet资源的请求将会被拦截,终端客户的Web浏览器中会显示拒绝访问的错误提示信息,如图16-31所示。
(点击查看大图)图16-31 拒绝访问的错误提示信息 |
【实例二】禁止IP地址属于192.168.1.0这个子网的所有客户机上网。
我们可以定义如下规则实现上述要求:
acl badclientsubnet src 192.168.1.0/24 |
该规则定义了一条名为badclientsubnet的acl,acl类型为src源IP地址方式,列表值为192.168.1.0/24,然后使用http_access参数禁止badclientsubnet规则。也就是在IP地址为192.168.1.0子网的客户机通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,当前定义子网的终端客户访问Internet资源的请求将会被拦截,终端客户的Web浏览器中会显示拒绝访问的错误提示信息。
【实例三】禁止所有终端用户访问IP地址为64.233.189.99(www.google.com)的网站。
我们可以定义如下规则实现上述要求:
acl badserverip dst 64.233.189.99 |
该规则定义了一条名为badserverip的acl,acl类型为dst目标IP地址方式,列表值为64.233.189.99,然后使用http_access参数禁止badserverip规则。也就是在终端用户通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,当前所有终端客户访问IP地址为64.233.189.99的服务器资源的请求将会被拦截,终端客户的Web浏览器中会显示拒绝访问的错误提示信息。
【实例四】禁止所有终端用户访问域名为www.google.com的网站。
我们可以定义如下规则实现上述要求:
acl baddomain dstdomain -i www.google.com |
该规则定义了一条名为baddomain的acl,acl类型为dstdomain目标域名方式,列表值为www.google.com,然后使用http_access参数禁止baddomain规则。也就是在终端用户通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,当前所有终端客户访问域名为www.google.com的服务器的Web资源的请求将会被拦截,终端客户的Web浏览器中会显示拒绝访问的错误提示信息。但需要大家注意的是,这个限制规则仅对google.com域的WWW服务进行了限制,而对于Mail服务等并未限制。
16.6 访问控制应用实例(2)
【实例五】禁止所有终端用户访问域名包含为google.com的网站。
我们可以定义如下规则实现上述要求:
acl badurl url_regex -i google.com |
该规则定义了一条名为badurl的acl,acl类型为url_regex URL规则表达式匹配方式,列表值为google.com,然后使用http_access参数禁止badurl规则。也就是在终端用户通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,当前所有终端客户访问服务器的URL中含有google.com的所有资源的请求将会被拦截,终端客户的Web浏览器中会显示拒绝访问的错误提示信息。例如,www.abc.com/google/test.index、www.google.com、mail.google.com等URL均被拦截。
【实例六】限制IP地址为192.168.1.102的客户机并发连接的最大连接数为5。
我们可以定义如下规则实现上述要求:
acl clientip src 192.168.1.102 |
上述规则定义了一条名为clientip的acl,该acl类型为src源地址方式,列表值为192.168.1.102;还定义了一条名为clientmaxconn的acl,该acl类型为maxconn单一IP的最大连接数方式,列表值为5,然后使用http_access参数禁止clientip、clientmaxconn规则。也就是在终端用户通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,终端用户通过IP地址为192.168.1.102的客户机同时访问Internet资源的线程数不能超过5。这样可以防止特定客户开太多线程而占用服务器资源和带宽。
【实例七】禁止客户机IP地址在192.168.2.0子网的所有终端客户在星期一到星期五的9:00到18:00访问Internet资源。
我们可以定义如下几条规则实现上述要求:
acl clientnet src 192.168.2.0/24 |
上述规则定义了一条名为clientnet的acl,该acl类型为src源地址方式,列表值为192.168.2.0/24;还定义了一条名为worktime的acl,该acl类型为time时间段方式,列表值为MTWHF 9:00-18:00,然后使用http_access参数禁止clientnet、worktime规则。也就是在终端用户通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,终端用户通过IP地址属于192.168.2.0网段的所有客户机不能在星期一到星期五的9:00到18:00期间访问Internet资源。
【实例八】禁止终端用户在任何客户机上下载文件扩展名为mp3、exe、zip和rar类型的文件。
我们可以定义如下规则实现上述要求:
acl badfile urlpath_regex -i \.mp3$ \.exe$ \.zip$ \.rar$ |
该规则定义了一条名为badfile的acl,该acl类型为urlpath_regex略去协议和主机名的URL规则表达式匹配方式,列表值为\.mp3$ \.exe$ \.zip$ \.rar$;同时使用-i参数是为了忽略列表值大小写的检查,然后使用http_access参数禁止badfile规则。也就是在终端用户通过Squid代理服务上网的模式下,由于Squid服务器增加了如上规则,所有终端客户访问服务器的URL中以mp3、exe、zip和rar结尾的所有资源的请求将会被拦截,终端客户的Web浏览器中会显示拒绝访问的错误提示信息。例如,http://www.abc.com/google/test.mp3、http://www.cqit.edu.cn/cs/123.zip、http://www.cqit.edu.cn/cs/siyanzhidao. rar等URL均被拦截。