近日,公司的部分用户反映无论访问百度还是谷歌结果都被连接到一个垃圾网站。经过现场查看,我们发现网络连接及DNS配置都没有问题,根据经验判断应该是系统目录下的主机(HOST)文件出了问题。打开该文件,果然发现其中添加了两条记录:

  

202.*.*.* www.baidu.com
202.*.*.* www.google.cn

  一目了然,原来是HOST文件被恶意更改,将百度与谷歌域名强行与该恶意网站IP地址对应,从而导致用户访问百度、谷歌时被连接至该网站。

  显然,这次的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过滤的事故发生了。

转载于:https://blog.51cto.com/jaymimijay/659993

更改主机文件引发思考 防火墙URL过滤无奈(转)相关推荐

  1. 防火墙(ASA)高级配置之URL过滤、日志管理、透明模式

    对于防火墙产品来说,最重要的一个功能就是对事件进行日志记录.本篇博客将介绍如何对ASA进行日志管理与分析.ASA透明模式的原理与配置.利用ASA防火墙的IOS特性实施URL过滤. 一.URL过滤 利用 ...

  2. 防火墙实现URL过滤原理

    对于URL过滤:1.HTTP URL过滤 2.https URL过滤 1.HTTP URL过滤 (http请求和服务端口:80) 实现原理:iptables 规则在协议栈中获取到HTTP请求报头中的H ...

  3. sharepoint文件夹本地同步_干货 | 如何将主机文件自动同步至对象存储

    注:最好利用京东云对象存储来存储一些静态文件,不建议用其直接存储数据库之类的数据文件,而且也会受到速度的影响,当然我们可以利用其存储备份文件. 今天我们来利用s3fs工具将京东云对象存储挂载到京东云云 ...

  4. sql server 快照_添加新文章,删除文章,更改快照文件夹路径和SQL Server复制中的数据筛选器行

    sql server 快照 In the last articles, we have learned Configuring Snapshot and Transactional SQL Serve ...

  5. openwrt实现url过滤

    一.介绍 url过滤有多种方式 1.iptables的拓展模块string模块 效率不高,会影响通信速率 2.iptables的拓展模块webstr模块 只对http有效,https不行 3.dns拦 ...

  6. 提倡DNS过滤,减少URL过滤

    本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途. msn: yfydz_no1@hotmail.com 来源:http:/ ...

  7. ASA 独立实现WEB URL过滤!!!

    之前 很多人问过关于ASA能否实现具体的URL过滤, 下面是我们配置的ASA 实现URL过滤的案例,供大家使用参考,在简单的用户需求下 我们ASA完全可以实现WEB URL的过滤,并且 我们在昨天把这 ...

  8. Web生产:外部JS文件中的绝对URL?

    我想知道,您是否知道在外部JavaScript文件中指定绝对URL的最佳做法? 我正在寻找一种可维护的解决方案. 基本方案是当我需要在运行时通过javascript包含css文件或对某些URL进行aj ...

  9. oracle主机名的脚本,一个开启Oracle服务和更改主机名的脚本-Oracle

    一个开启Oracle服务和更改主机名的脚本 真不知道该起一个什么题目,这是昨天数据库老师提出的问题.由于实验室的机器都装了还原卡,每次开机或重启都会回到初始状态,所以数库的listener.ora.t ...

最新文章

  1. 简单几何(线段相交+最短路) POJ 1556 The Doors
  2. php json字符串返回false,php – json_encode()返回false
  3. The Best Way to Export an SVG from Sketch
  4. Redis(5种数据类型)
  5. [Java]java反射随笔
  6. AcWing:3.完全背包问题
  7. 现在是 RSS 复兴的时候了!
  8. Python练习题(四)
  9. 统计学习方法--提升方法adaBoost算法(集成学习)
  10. 【Linux】Shell 时间运算以及时间差计算方法!
  11. Xshell7连接VMware15虚拟机上的Ubuntu详细步骤
  12. python在股票中的应用_python在股票市场中的应用,量化大师自编选股公式
  13. 机器学习-kmeans(k均值聚类算法)
  14. cocos2dx3.17的csb文件使用方法
  15. MRT退休后的HEG(HDF-EOS To GeoTIFF Conversion Tool )工具安装
  16. 朱松纯团队工作登上 Science 头条—AI“读懂”人类价值观
  17. 第六周作业——百词斩扇贝单词背单词功能模块测试
  18. 海康服务器获取cms信息失败,织梦CMS文档读取频道信息失败,无法进行后续操作!...
  19. 使用Eagle2进行单倍型分析
  20. 安卓手机电池校正方法教程

热门文章

  1. tensorflow随笔——LeNet网络
  2. 效率 用div做表格和tr_表格也能用Word做?别不信,利用这些小技巧分分钟做出完美表格...
  3. 一行一个链接代码_小白写代码讨女朋友欢心,包教包会
  4. cmd 取消点击锁定功能
  5. 凑零钱动态规划java_动态规划巧解凑零钱问题 | 创作者训练营
  6. iteritems python3_python3 items() 与 python2 中iteritems()的区别
  7. 时间字符串转时间戳_Python3日期与时间戳转换的几种方法
  8. python 并发_Python bin()
  9. python float_Python float()
  10. java集合替换集合_Java集合–您必须知道的13件事