发新话题
打印

“.”的位置很重要之Squid过滤URL[电脑写手]

“.”的位置很重要之Squid过滤URL[电脑写手]

电脑网络分区写手稿件,原创首发于操作系统论坛,请勿转载。


情景:因有人向领导举报,公司好多人工作时间上QQ,MSN等聊天软件(都是WEB版的),领导又怒了,问不是早就封了这些软件,为什么还能上呢?IT:Kao,搞清楚好不好,当时封的是QQ,MSN的客户端软件,当时你们下命令说把聊天软件封掉,又没说把网站一起封掉,现在又来找后帐。现在人家转移阵地了,你封我客户端,我就用WEB。


选择:既然老大们发话了,那就干吧。可以封杀的环节有很多。


No.1 路由器


No.2 防火墙


No.3 代理服务器


No.4 利用部署在每台计算机客户端上的管理软件


其实防火墙是最好的选择,Cisco的ASA可不是盖的,10多万的设备干这点活应该不在话下,但我们管Cisco设备的IT啊,唉不说了,当时买设备的时候就是让服务商配的,估计他自己是搞不定了,上门服务不知道是怎么买的,不指望了。


路由器,当然也是很好的选择,由于路由器在防火墙的前面,而NAT等设置都配到了防火墙上,其实现在路由器很清闲,真TMD是路由器啊,就干一个活,一条静态路由命令,其它一切的一切都在防火墙上配的,2万多的Cisco的路由器就干这活,这都是我们那位IT干的事,看来指望他改Cisco的设置是没戏了。


每台计算机上的管理软件,算了吧,少给客户端点负担吧,毕竟好多计算机的硬件配置都不太好。


只有No.3了,代理服务器,这里用的是Squid,基于CentOS Linux 5平台搭建的。


这里有一个前提,在防火墙上要打开WCCP协议,把所有对外的HTTP请求转发到Squid的TCP 3128端口上,这样才能过滤URL。关于这方面的配置本文就不再详述了。


解决:选定了方案,那就做吧。其实有一个基于Squid开发的过滤软件相当于Squid的一个过滤插件吧,功能更强大,但CentOS的软件仓库中没有,也不想自己再编译相关的软件包了,毕竟服务器一般是最小安装的,好多软件都没有,想自己编译还要现装编译器和一堆库文件,太麻烦了。


就从Squid内置的ACL(Access Control List 访问控制列表)做起吧,好多软件中都有ACL的概念,学过Cisco相关认证的,应该也很熟悉ACL是什么。其中有一个使用方法是dstdomain,为了以后增减URL方便,最好专门做一个文件存放需要过滤的URL。


先创建一个文件,以下操作都以root权限来操作。


vi /etc/squid/denyurl.txt,文件名没关系,只要能跟配置文件中的对应就可以了。在Squid配置文件中加入:
acl im dstdomain "/etc/squid/denyurl.txt"该条要写在配置区域,然后找到一条叫http_access deny all,这是ACL配置的最后一条,在要这条前面相应的位置上加上:


http_access deny im


当然,这条要放到允许所有人上网的那条的前面才会有用,ACL是从上向下逐条判断执行的。如第一条已经允许了所有上无限制的上网,那么第二条不管配置成过滤什么都是无效的,这跟配置防火墙的规则是一样的。


然后在/etc/squid/denyurl.txt中加入要过滤的URL


如:


qq.com
...
...


就不全列出来了,以一个为例吧,改完之后保存,然后让配置生效,让配置生效不用重启电脑或重启服务,只要重新加载配置文件就OK了。CentOS下可以用services squid reload,也可以用通用的命令squid -k reconfigure来执行,如果没有写错就正常,如果有写错的地方,会给出相应的提示。


然后观察日志文件:


tail -f /var/log/squid/access.log | grep web.qq.com,一看,居然还可以访问,后来仔细查了一下,才发现,写成qq.com并不能配置掉如web.qq.com或www.qq.com,但如果写成.qq.com,前面两个就都可以被干掉了,后来想了想.qq.com等于把qq.com全域都封杀了,太狠了点,毕竟网站上的其它内容是无罪的,还是写的具体一些吧,写成了.web.qq.com,... ...(URL不是一条,要多观察,看到一条就加一条,就可以斩尽杀绝了)记住每加一条,都要执行一个重新加载配置文件的操作,这样设置才会生效。


这回整个世界安静了。


最后再补充一个小的区别吧,dst与dstdomain的区别,然后后面的参数都可以写域名,但dst在执行的时候会自动把域名转换成IP地址,如果一个域名可以解析成多个IP的时候,这样的效果很差,而dstdomain是直接去匹配域名的,这样拦截的效果非常好。


其实,我还是希望这样的封杀手段,多用在封杀一些恶意网站,带病毒,木马的网站或是IP上,而不是封杀基于WEB的IM,好在公司没让封杀开心网,农场什么的,不然我们又成炮灰了。


本文就写到这里吧,牢骚也就发到这里吧。Squid还有许多丰富的应用,我也只用到了冰山的一角,相信以后的写手文章中,还要再提到Squid的。


文:kingduanlian
基本没看懂。。
好人啊~~扑~~天鹅请带我向北飞
发新话题