提倡DNS过滤,减少URL过滤

本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。
msn: [email protected]
来源:http://yfydz.cublog.cn
1. URL过滤的问题
 
URL过滤是现在防火墙的一个重要的访问控制方法,同时还衍生出一系列技术,如URL重组,和URL分类服务器连动等。固然URL控制可以限制到文件级别的粒度,但在实际应用中进行如此细粒度控制的几乎没有,并不限制访问的目录名和文件名,基本还是限制在域名级别。这样带来的问题就是不用URL 访问,而是用IP地址访问,在访问前先使用nslookup等工具先解析出IP地址后用IP访问,这样URL域名过滤就会失效;其二,即使域名限制成立,但等URL重组完,再识别,再强行断开连接,对系统,包括客户端、服务器和防火墙的资源都是很大浪费。
 
URL过滤还有一个比较大的缺陷,在HTTP/1.1中,域名部分是通过HTTP头的“Host: ”字段来获取的,其他字段均不能保证能正确获取域名,而这个字段有的服务器并不检查,可以随便填个别的域名,服务器也可以正确返回;而在HTTP/1.0 中,这个字段更加不是必须的,因此根本不能保证获取正确的域名。

2. DNS过滤的优势
 
解决方法是DNS过滤,即在域名解析时就进行限制,在DNS请求包中就把域名提取出来进行判断。由于DNS一般是UDP包,一个包中就包含了所有信息,不需要重组(对于TCP的DNS协议可以关闭,使用UDP的已经足够了);其次,对于UDP包,各种资源的消耗都很少,客户端发UDP的资源消耗远小于TCP,服务器根本就没消耗,防火墙跟踪UDP也比跟踪TCP要简单得多;再次,限制得可以更加全面,通常URL只限制了HTTP,而限制DNS则把该域名对应的所有服务都可以限制住;最后,DNS限制就没有IP访问的漏洞,因为本来就得不到IP。

当然,DNS过滤是无法控制到目录和文件级别的粒度的,但大部分情况都不需要。所以必要时可以用DNS过滤为主,URL过滤为辅的方法进行过滤。

3. 结论
 
使用DNS过滤,能更快更有效的限制对域名的访问,过滤得也更彻底,强于URL过滤。

发表于: 2006-07-31,修改于: 2006-08-14 08:44,已浏览4882次,有评论27条 推荐 投诉
	网友: testab 	时间:2006-08-01 22:34:04 IP地址:219.236.168.★
	

  1.可以使用isp提供的dns

  2.可以使用国内dns

  3.可以使用国外dns

 

 因此dns过虑就有一定局限性.

 


	网友: yfydz 	时间:2006-08-02 08:51:26 IP地址:218.247.216.★
	

我说的DNS过滤是指过滤DNS数据包内容里的东西,和DNS在哪有什么关系?


	网友: testab 	时间:2006-08-02 12:31:13 IP地址:221.221.151.★
	

 好想法


	网友: 风雷 	时间:2006-08-02 21:30:45 IP地址:222.208.210.★
	

 目前的部分管理软件都是这种机制


	网友: liyanux 	时间:2006-08-03 17:03:29 IP地址:60.208.111.★
	

不错,领教了


	网友: 本站网友 	时间:2006-08-06 21:20:54 IP地址:221.219.34.★
	

用户配静态的DNS怎么办?


	网友: yfydz 	时间:2006-08-07 08:39:22 IP地址:218.247.216.★
	

静态动态DNS有什么关系?除非你本机有完整的域名数据库


	网友: 本站网友 	时间:2006-08-07 18:04:04 IP地址:220.231.21.★
	

静态动态DNS有什么关系?

为什么没关系。你的访问控制是失效的。


	网友: 老大不小 	时间:2006-08-07 22:28:53 IP地址:66.90.123.★
	

可以通过URL过滤广告等网页,例如包含ad的URL;

另外小心DNS毒药以及坏蛋或被DoS的网站管理员临时改域名对应的IP为127.0.0.1等,那时你就惨了,别人改成什么你就Block什么,hoho~~


	网友: daxalll 	时间:2006-08-08 08:33:59 IP地址:218.74.123.★
	

google上不去是不是就是你们这些人帮助gcd搞的啊


	网友: yfydz 	时间:2006-08-08 08:55:55 IP地址:218.247.216.★
	

再强调一下,我所说的DNS过滤是过滤DNS请求包里的内容,属于内容过滤范畴,不是简单的DNS服务器IP地址,也不是过滤DNS回应包里的地址,只要你发DNS请求包就可以过滤


	网友: atoi 	时间:2006-08-08 11:19:50 IP地址:61.174.147.★
	

如果我发现一个域名解析不了了,那我用qq、msn等等请我朋友帮我解析一下,然后把IP发给我好了呀。最多大不了我下班回家自己解析一下,第二天回公司就可以用了。我觉得dns只是解决了IP的易用性问题,用它来控制访问不是从根本上解决问题


	网友: lolita 	时间:2006-08-08 19:20:01 IP地址:58.61.109.★
	

我在本机的HOSTS文件里面添加的话。可以绕过去吧


	网友: yfydz 	时间:2006-08-09 08:49:14 IP地址:218.247.216.★
	

to: atoi

我这篇小文章不是GRE阅读吧?怎么理解力那么低?我通篇是和URL过滤进行比较,说了DNS过滤是万灵药了么?



to lolita:

添加了当然可以


	网友: lolita 	时间:2006-08-09 08:59:51 IP地址:58.61.109.★
	

你好。。我想问下。他去访问一个网站的时候。是先查本机的HOSTS还是先去问DNS服务器啊。。THX。。


	网友: yfydz 	时间:2006-08-09 12:35:30 IP地址:218.247.216.★
	

看你自己本机的配置了


	网友: 本站网友 	时间:2006-08-09 22:01:26 IP地址:221.219.39.★
	

我觉得楼主的说法不对。



防火墙的目的是为了进行访问控制。



客户需要通过防火墙禁止对某些网站的访问。如果防火墙使用DNS过滤来进行web的访问控制,用户可以在连接通过防火墙的情况下通过静态DNS(根本不会发送DNS请求)来绕过访问控制。



这个至少是属于MAJOR的BUG。




	网友: 本站网友 	时间:2006-08-09 22:06:25 IP地址:221.219.39.★
	

》所以必要时可以用DNS过滤为主,URL过滤为辅的方法进行过滤。



而且,这个说法也没有意义。

为了用户不会绕过访问控制,还是必须对每个URL都做过滤。

这样,两种方法结合不但不会导致性能提高,还会导致性能下降。




	网友: yfydz 	时间:2006-08-10 08:55:56 IP地址:218.247.216.★
	

我早说过,DNS过滤不是万灵药,对于上层内容级的过滤,总可以找到底层绕过去的方法,除非你根本不作上层的内容过滤,普通情况下你能记得几个IP?

如果你作URL过滤就只为过滤域名(这是目前99.99%用户的用于情况),DNS过滤就绝对强于URL过滤;对于还要过滤URL中的目录文件,至少就可以省掉本来要过滤的很多域名时的各种URL重组,断开TCP等操作,也不用检查URL的域名部分,只检查后面部分即可,当然可以提高性能,而且更能限制诸如SSH,SSL等对于URL过滤属于根本不可能完成的任务


	网友: 本站网友 	时间:2006-08-23 14:58:35 IP地址:203.86.47.★
	

好东西啊!


	网友: lxw 	时间:2006-08-28 16:21:17 IP地址:210.21.222.★
	

那么,怎么实现过滤呢?是通过软件还是通过硬件防火墙!


	网友: lxw 	时间:2006-08-28 16:22:57 IP地址:210.21.222.★
	

有没有什么基于linux下之类的软件实现dns过滤?如果有,能不能说一下呢?


	网友: yfydz 	时间:2006-08-28 17:02:36 IP地址:218.247.216.★
	

现成的没有,已经有些防火墙可以实现该功能


	网友: 本站网友 	时间:2007-06-19 09:32:20 IP地址:159.226.40.★
	

对dns过滤很感兴趣   请问楼主 有可实现与bind串联,也就是在bind解析之前就对dns进行过滤得开源软件吗  想研究一下    thx

我的信箱    [email protected]


	网友: yfydz 	时间:2007-06-20 14:28:42 IP地址:218.247.216.★
	

和bind无关, 过滤的不是自身的包, 是在网关或防火墙处进行


	网友: lovelinux 	时间:2007-11-27 10:53:29 IP地址:122.120.32.★
	

谢谢楼主的好文章,受教了!

总结一下:

DNS过滤 vs URL过滤

1、URL过滤可以限制到文件级别的粒度,DNS过滤不能做到。

2、DNS过滤可以对域名对应的所有服务进行全面限制,防止用户通过Ping或nslookup方式轻易获取IP地址,从而绕过URL过滤。

3、URL过滤针对的是HTTP TCP报文,TCP报文的建立需要三次握手,连接识别后还要再强行断开连接,对防火墙的资源造成很大浪费。而DNS过滤只是对UDP报文进行过滤,资源消耗少,防火墙跟踪UDP比跟踪TCP要简单得多。

4、URL过滤的原理是对HTTP/1.1报头中的“Host:”字段进行识别、过滤;而在HTTP/1.0中,此字段并不是必须的,因此根本不能获取正确的域名。

5、URL过滤对形如“https://xxx”的域名访问不起作用。

请问楼主:URL重组是什么意思?是对HTTP报文的分片进行重组吗?

谢谢!


	网友: yfydz 	时间:2007-11-29 08:49:04 IP地址:218.247.216.★
	

处理URI和Host字段不能在同一个包里全部获取的情况

你可能感兴趣的:(应用服务器,linux,qq,防火墙,ssh)