近日,公司的部分用户反映无论访问百度还是谷歌结果都被连接到一个垃圾网站。经过现场查看,我们发现网络连接及DNS配置都没有问题,根据经验判断应该是系统目录下的主机(HOST)文件出了问题。打开该文件,果然发现其中添加了两条记录:
202.*.*.* www.baidu.com 202.*.*.* www.google.cn |
显然,这次的HOST文件的修改是一种被动行为(首先感染病毒,然后病毒更改文件内容),并非用户的主观意愿。但如果是用户主动更改HOST文件记录,那是否会对公司防火墙定义的URL过滤规则形成一种挑战呢?
HOST文件
我们先来了解一下什么是HOST文件。在Windows2000/XP系统中,HOST文件位于C:\Winnt\System32\Drivers\Etc 目录。该文件其实是一个纯文本的文件,用普通的文本编辑软件(如记事本等)都能打开,它记录主机名与IP地址的映射关系。用户在通过主机名(域名)访问网络资源时,系统首先会查找本机HOST文件内是否有该主机名(域名)记录,如果有该记录,就调用该记录的IP地址映射;如果没有,再向DNS服务器提出域名解析请求。该文件最大的作用就是加快域名解析。同时,很多网管以及安全软件(如360安全卫士等)也把这个文件作为屏蔽恶意网站的工具,也就是将恶意网站的域名与127.0.0.1做成映射。
防火墙URL过滤
除了HOST文件,我们还需要了解URL过滤。目前市场上大部分防火墙都具有URL过滤功能,在某种程度上也解决了应用层访问控制的问题,使网管人员可以更灵活地运用相关策略对企业网络进行更好的安全维护。
所谓URL过滤,就是防火墙通过检测用户发送的http请求数据包中的HOST字段是否与URL过滤规则中定义的URL相符,并按照过滤规则进行处理。处理的方式一般有两种:规则内全部禁止,其余全部允许;规则内允许访问,其余全部禁止。
只有当判断用户的连接请求是http请求时,防火墙才会检测HOST字段。防火墙判断用户的连接请求为http请求的原则一般是TCP目的端口为80端口。
前文提到,URL过滤一般有两种处理方式:URL列表内禁止,其余全部允许;URL列表内允许,其余全部禁止。对于前者,人们可以可以利用nslookup等工具首先得到被禁止网站的IP地址,然后通过直接访问IP地址绕开URL过滤规则的限制。而后者,由于允许访问的网站数量有限,即使想通过IP地址访问不被允许的网站也无法得逞。很多网管认为这种方式比较有效。
但是通过这次恶意更改HOST文件事故,笔者就有了文章开头提到的疑问,为了通过验证得到答案,笔者做了如下尝试。
疑问见证
首先,在防火墙(型号:天融信NFW4000)中规定主机A只能访问 http://www.dlqx.gov.cn(大连市气象局)。而主机A用户尝试访问http://www.dlqx.gov.cn(大连市气象局)网站失败。主机A用户通过Nslookup等工具得知http://www.gjj.dl.gov.cn的IP地址为218.25.171.98,然后该用户打开C:\WINDOWS\system32\drivers\etc
\hosts(操作系统安装在C盘)文件,并添加记录行:218.25.171.98 www.dlqx.gov.cn 。
该用户再次访问 www.dlqx.gov.cn,结果打开的是大连公积金管理中心的网站,对其进行抓包,结果如图1所示(注意字体放大行)。从抓包截图中,我们清楚地看到,目的IP为www.gjj.dl.gov.cn的IP地址是218.25.171.98,但是HOST字段却是 www.dlqx.gov.cn,而抓包工具获取的数据其实就是防火墙获取的数据。很显然,防火墙的URL过滤规则起作用了,但是被利用了。
在对以上结果惊叹之余,我们不妨冷静地思考一下:为什么防火墙的URL过滤又一次令我们失望了?那是不是所有不被允许的网站都可以通过修改HOST文件来进行访问呢?换句话说,通过修改HOST文件访问那些不被允许的网站还需要其他条件吗?
其实,熟悉建立Web服务器的读者都应该清楚,Web服务器也有校验主机头的功能,也就是Web服务器会校验用户发送过来的请求中的HOST字段内的URL是否与服务器创建的主机头相符。
但是,并不是互联网上所有的服务器都配置了主机头校验的!
我们知道,Internet是信息的海洋,其中存在大量不良站点。那如何有效地管理对Internet的访问呢?其实,使用防火墙URL过滤功能是数据过滤的一种常用并且实用的方法,可以有效实现对一些黄色、反动站点或者信息的过滤,同时此方法在一定程度上也可以防范一些黑客攻击。
URL过滤是防火墙技术中一个重要的访问控制方法,同时还衍生出一系列技术,如URL重组和URL分类服务器连动等。但URL过滤也会经常出现失效的问题,就比如前文中提到的在访问前先使用nslookup等工具先解析出IP地址后再用IP访问,这样URL域名过滤就会失效。而接下来笔者所体验的HOST文件自定义的方法,显然绕过了URL过滤,即在域名解析进行限制之前,本地主机已经根据Windows系统的默认设置(HOSTS文件优先于DNS解析)跳过了DNS解析这个过程,这对于没有设置Web站点主机头检测的主机是完全可以访问的。
综上所述,由于URL过滤发生在应用层,因此普通用户干预的能力大大增强,从而导致URL过滤存在着诸多无奈。
但是我们不能因此而放弃URL过滤功能,只要网管人员能够根据工作的实际情况,结合运用防火墙强大的传输层控制能力,控制用户在主机上的权限,还是可以最大限度地满足用户需求的。但同时也说明,防火墙产品的技术与功能也是有待加强的。
厂商回应
这个问题实际是一个运用局部和整体的策略来实现同一个安全目的的情况。由于URL过滤只是对数据包内容进行检查,并按照防火墙的策略进行过滤,它没有去检查实际的目的地址。因此只要我们先通过 nslookup获取我们需要控制的网址的IP地址,把这个地址定义成一个具体对象,然后应用到防火墙访问策略里就可以解决文章里的问题。
另外,用天融信的TopDesk桌面安全系统来监视对应的主机HOST文件是否修改,可以从根本上解决这个问题。
因此我们可以说,单靠一种措施是不够的,结合多种方法可以使客户的网络相对安全得多。
专家点评
URL过滤有一个比较大的缺陷,在HTTP/1.1中,域名部分是通过HTTP头的HOST字段来获取的,其他字段均不能保证能正确获取域名。而对这个字段有的服务器并不检查,因此不能保证获取正确的域名。
URL失效时,用户可以检查一下防火墙是否提供了DNS过滤,即在域名解析时就进行限制,在DNS请求包中就把域名提取出来进行判断。通常URL只限制了HTTP,而限制DNS则把该域名对应的所有服务都可以限制住。
对安全防御来说,有些软件防火墙安装客户端代理,或者利用一些HOST锁定工具,这样就可以有效地控制病毒感染HOST文件,并绕过URL过滤的事故发生了。