这个是逗比根据地的备份镜像站(非官方)。牢记域名: [doubibackup.com]。搜索:标签云
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程
广告

浅谈HTTP劫持、DNS污染的影响及解决办法(仅个人理解)

随心随想 Toyo 31评论
广告
本文最后更新于 2017年1月20日 20:26 可能会因为没有更新而失效。如已失效或需要修正,请留言!

首先我们说一下“墙:防火长城”,它是由 互联网科学家(比如:方滨兴)、工作人员、五毛、分布式超级计算机、三大运营商组成的。

我们可以看到,墙并不是一个独立的单独存在的一个组织,而是由国内各领域的互联网重要结构组成的。

互联网科学家:专门研究如何低成本高效率的更有效的过滤审核。

工作人员:一些非机器替代的人工操作,比如人工审核。

五毛:五毛。

分布式超级计算机:要知道每一秒经过大陆各国际出口经过的流量是非常庞大的,需要很多超级计算机进行运算过滤。

三大运营商:这个是最重要的组成部分,没有运营商的支持,墙就是个屁。大陆各国际出口都是三大运营商建立和控制的,如果他们不点头,墙又如何在“大门口”(国际宽带出口处)建立“过滤审核检查站”,当然运营商也是国家控制的,所以还是一家人。

所以,墙就相当于在 大陆的各个国际宽带出口处建立的 过滤审核检查站


还有我发现一个很有趣的事情,很多人以为只有中国和朝鲜存在墙,这很无知。

如果你把 屏蔽Google、Facebook、Youtube、Twitter的国家 就当作这个国家存在墙的话,那我无话可说。

墙或者说 互联网防火长城,是任何一个拥有互联网主权国家的必备组成。

如果你的国家没有墙,没有信息审核过滤机制,那政权随时可能推翻,这不是吹牛,有好几个国家的总统或者总理因为不注重这个问题,导致不仅下位还坐牢了。

美国是个自称最自由的国家,所以他就没有墙了吗?不,他们对盗版网站,儿童色情网站等也是屏蔽。

还有韩国,在互联网方面最发达的国家之一,同样也是针对色情行业大力清理屏蔽。就算是越南、缅甸、泰国,这种互联网相对不发达的国家,依然存在墙。

墙是必然的,你不可能阻止墙的存在,只是我们的墙更高一些,我并不是为 中国防火长城 开脱什么,我只是阐述墙必须存在的事实。

我们之所以感觉我们的墙更高,一是,我们生活在这个国家的墙内,我们经常碰触到墙;二是,我们也是属于审查最严格的那一类国家。

同时墙也是一种变相的保护国内互联网产业的发展,否则微博,百度哪那么容易发展起来。

因为一些话太敏感,不能说的太直白,否则就要拆水表了,理解不了就反过来站在领导人的角度思考,所以上面说的你们能理解多少那就是多少吧。

HTTP劫持

大家都知道,我的 dou-bi.com 域名在前段时间的G20期间被HTTP劫持和DNS污染了,而我也简单的研究了一下这两个。

HTTP劫持很容易理解,因为HTTP传输协议是明文的,并且我的网站服务器是在海外,要访问我的网站就要通过中国的国际宽带出口,出去与我的网站建立连接。

但是那G20期间因为戒严,所以加强了HTTP关键词审查,我的网站也是因为关键词的原因在经过出口的时候,被“检查站:墙”扫描到了违规关键词,于是掐断了TCP链接。

所以当时用户访问网站会遇到:链接已重置、该网站已永久移动到其他地址等等。

解决方法

而HTTP劫持很容易解决,那就是加上SSL证书,网站链接全部内容加密,这样“检查站:墙”就无法解密数据分析关键词了。

但是这不是绝对能解决这个问题的,如果你的网站只是误杀或者违规擦边球,那还好,如果是大型网站,就会特殊对待了。

HTTPS在建立加密连接的时候,需要一次握手,也就是达成链接协议建立加密连接,但是这次握手是明文的(建立加密链接首先就是链接双方信任,比如网站的SSL证书是自己签的,或者SSL证书到期或伪造的,在访问这个网站的时候浏览器就会进行提示,表示此网站不安全啥的。)

握手是明文的就意味着,如果你的域名被重点关注,即使你加上了SSL证书,也会在首次握手的时候,被关键词匹配然后掐断链接。

还有一种方式,就是域名备案,使用国内服务器。这样用户在访问你的网站时,根本不需要经过墙,自然也没有了拦截。

DNS污染

DNS污染,又称为域名服务器缓存污染(DNS cache pollution)或者域名服务器快照侵害(DNS cache poisoning)。

DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址。

一般来说,网站在互联网上一般都有可信赖的域名服务器,但为减免网络上的交通,一般的域名都会把外间的域名服务器数据暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有相关网域的局域域名服务器的缓存受到污染,就会把网域内的电脑导引往错误的服务器或服务器的网址。

原理解析

我们假设 A为用户端也就是你的电脑设备,B为DNS服务器,C为A到B链路中一个节点的网络设备(路由器、交换机、网关等)。

然后我们模拟一次被污染的DNS请求过程。

A访问一个网站,比如 google.com ,然后,A向B通过UDP方式发送查询请求,比如查询内容 A google.com ,这个数据库在前往B的时候要经过数个节点网络设备比如C,然后继续前往DNS服务器B。

然而在这个传输过程中,C针对这个数据包进行特征分析,(DNS端口为53,进行特定端口监视扫描,对UDP明文传输的DNS查询请求进行特征和关键词匹配分析,比如“google.com”是关键词,也或者是“A记录”),从而立刻返回一个错误的解析结果(比如返回了 A 233.233.233.233 )。

众所周知,作为链路上的一个节点,网络设备C 必定比真正的 DNS服务器B 更快的返回结果到 用户电脑A,而目前的DNS解析机制策略有一个重要的原则,就是只认第一。因此 节点网络设备C所返回的查询结果就被 用户电脑A当作了最终结果,于是用户电脑A因为获得了错误的IP,导致无法正常访问 google.com

验证污染

我的 doub.iom 主域名虽然在大部分地区解除了DNS污染,但是我的两个SS站域名并没有,所以我尝试对我的SS 子域名进行nslookup测试。

C:\Users\Administrator>nslookup ss.dou-bi.com 8.8.8.8
服务器: google-public-dns-a.google.com
Address: 8.8.8.8

非权威应答:
名称: ss.dou-bi.com
Addresses: 200:2:9f6a:794b::
8.7.198.45

我使用的是谷歌的 8.8.8.8 DNS,但是我得到的A记录 IP却是8.7.198.45,这个明显不是我的IP,看一下其他被DNS污染的域名就会发现都会有这个IP。

所以很明显,我的 ss.dou-bi.com 域名受到了DNS污染。

解决方法

  1. 使用加密代理,比如Shadowsocks,在加密代理里进行远程DNS解析,或者使用VPN上网。
  2. 修改hosts文件,操作系统中Hosts文件的权限优先级高于DNS服务器,操作系统在访问某个域名时,会先检测HOSTS文件,然后再查询DNS服务器。
    可以在hosts添加受到污染的DNS地址来解决DNS污染和DNS劫持。
  3. 通过一些软件编程处理,可以直接忽略返回结果是虚假IP地址的数据包,直接解决DNS污染的问题。
  4. 如果你是Firefox用户,并且只用Firefox,又懒得折腾,直接打开Firefox的远程DNS解析就行了。在地址栏中输入:about:config
    找到 network.proxy.socks_remote_dns 一项改成true
  5. 使用DNSCrypt软件,此软件与使用的OpenDNS直接建立相对安全的TCP连接并加密请求数据,从而不会被污染。

对于被DNS污染的网站站长来说,最有效的方法就是 换域名或者IP 了。

污染攻击大事记

2010年3月,当美国和智利的用户试图访问热门社交网站如 http://facebook.com 和 http://youtube.com 还有 http://twitter.com 等域名,他们的域名查询请求转交给中国控制的DNS根镜像服务器处理,由于这些网站在中国被封锁,结果用户收到了错误的DNS解析信息,这意味着防火长城的DNS域名污染域名劫持已影响国际互联网。

2010年4月8日,中国大陆一个小型ISP的错误路由数据,经过中国电信的二次传播,扩散到了整个国际互联网,波及到了AT&T、Level3、Deutsche Telekom、Qwest Communications和Telefonica等多个国家的大型ISP。

2012年11月9日下午3点半开始,防火长城对Google的泛域名 http://google.com 进行了大面积的污染,所有以 http://google.com 结尾的域名均遭到污染而解析错误不能正常访问,其中甚至包括不存在的域名,而Google为各国定制的域名也遭到不同程度的污染(因为Google通过使用CNAME记录来平衡访问的流量,CNAME记录大多亦为 http://google.com 结尾),但Google拥有的其它域名如 http://googleusercontent.com 等则不受影响。有网友推测这也许是自防火长城创建以来最大规模的污染事件,而Google被大面积阻碍连接则是因为18大 。

——摘取自:知乎

当然,DNS污染的大事件肯定不会只有这几个,但是这也说明了DNS污染的力量和危害之大。

IP黑名单

即使没有DNS污染 或者 你获得了正确的IP,你就能正常访问这些被屏蔽的网站了吗?

不,墙目前已经有了IP黑名单,针对谷歌这种网站已经不再是普通的DNS污染了,因为总会有办法访问被DNS污染的网站(比如指定Hosts)。

那么就直接把所有的谷歌IP拉黑不就好了?就算你获得了正确的谷歌IP,但是当你去访问这个IP的时候,墙会发现这个IP存在于黑名单中,于是直接阻断,于是浏览器就会提示:www.google.com的响应时间过长等等。

当然谷歌的IP非常多,而且有很多都是隐藏的。

像Goagent、XX-NET、Hosts方式访问谷歌或者其他被屏蔽的网站,都是使用的谷歌IP,当大量谷歌IP被拉黑后,这三种方式就会衰败。

现在这三种方式依然在不停的扫描那些隐藏的谷歌IP,但是谷歌IP再多也不是无穷无尽的,迟早会消耗完毕,坐吃山空。到时候就是这几种方法的死期了。

在普通用户扫描的时候,“墙”中的工作人员和超级计算机何尝也不是在扫描?正是看到了这种依赖于谷歌IP方式的末路,所以我网站到现在也没有一篇和这几种方式有关的教程和文章。


以上的言论仅为个人理解,只为共享以方便讨论交流,具体事实是如何,自行探索。

转载请超链接注明:逗比根据地 » 浅谈HTTP劫持、DNS污染的影响及解决办法(仅个人理解)
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!

赞 (75)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(31)个小伙伴在吐槽
  1. Pure DNS就是因为深受此文的启发才搭建的,前来膜拜一番! 还有就是追梦人博客希望能加贵站一个友链!!!
    Dreamer2017-04-01 18:56 回复
  2. 好尴尬,我的ss站.com跟.site域名都被DNS污染了 :cry:
    Awelling2017-03-10 18:58 回复
  3. 请问可否了解Pcap_DNSProxy这个项目,我用着挺好
    warter2017-02-10 14:57 回复
  4. http://www.xsico.cn/dnshttp/ 这个没注明出处。
    dorglsn2017-01-09 22:21 回复
    • 转载我文章不注明源链接的网站多的是,多到我已经懒得去通知了,既然他一开始就没有注明源链接,那么即使我通知了,也是没用的,好点的不理我或者删评论,恶劣点的就是强词夺理张口就骂(那些转载我文章我让他注明源链接,不注明就算了,还骂我,被骂了几次,我就看透了)。
      转载文章不注明源链接的人本来就是没有素质的人,所以我也不需要跟他们讲道理。
      Toyo2017-01-09 22:40 回复
      • 是啊,我评论说没注明出处,结果被秒删。他的博客有个XsicoDNS,可以科学上网。我谷歌一下服务器的ip,发现就是Udns的,估计也是他搬运Udns的吧。像Udns这样的科学上网的DNS,速度也不错,有什么缺点呢?是容易被封杀么?是维护难度大么?
        dorglsn2017-01-10 09:46 回复
        • 打脸了。刚发现XsicoDNS就是原Udns,不是搬运的,而是Udns更名了。。。
          dorglsn2017-01-10 09:56 回复
        • 首先,做DNS服务器必须要是国内服务器,否则你放到国外,你访问DNS还是要经过墙,而DNS是明文UDP传输的,会被墙检测到并伪造污染返回错误的IP给你,所以必须国内的服务器。而国内的完全相对国外昂贵很多,这个就是成本问题。
          二是,科学上网的DNS,我知道的就是DNS服务器+SNI Proxy做出来的,技术难度不大,但是如果DNS用的人多的话,还是有几率把搭建SNI Proxy的服务器IP封掉的。
          SNI Proxy就是一个简洁的反代工具,配置后,你本地hosts设置 1.1.1.1 google.com (1.1.1.1是搭建SNI Proxy的服务器IP)这样,你就直接访问 SNI Proxy服务器了,而SNI Proxy会接受你的流量并转发给 goolge.com 然后又会把谷歌返回来的数据发给你。
          所以,就是这种简单的原理,hosts可以这样做,但是DNS更方便。
          还有,做科学上网的DNS,被封杀没什么事,但是搞不好会出现"人身安全"
          Toyo2017-01-10 11:36 回复
        • 膜拜一下,确实不错,我要在你的博客上充电。
          wangbuer2017-01-13 13:10 回复
  5. 其实我更愿意相信LZ是曲线救国,多的就不说了
    泡泡2017-01-09 17:23 回复
    • 没有那么伟大,我只是感觉好玩,玩一玩而已,玩了快两年了,反而不舍得了,更高层次的我就不考虑了。
      Toyo2017-01-09 18:31 回复
  6. 很欣赏你,才会给你写这么长的留言,不过你很让我失望,罢了,天朝教育,能生产出阁下,已经是个异数了。
    天朝2017-01-07 13:46 回复
    • 不知道什么叫做评论审核?我一会不在,你就跟个小丑一样的跳来跳去。
      我做网站仅是业余兴趣,而不是给你们提供一个讨论国家评论国家的平台!
      我的网站是帮助大家科学上网的,而不是让大家出去后讨论国家的。这些事情你在哪里讨论都可以,但是在我的网站,那就是我说的算,有本事你自己建站自己讨论去!
      Toyo2017-01-07 14:31 回复
    • “天朝教育” 呵呵 另,墙内确实不是讨论中国政治的好地方
      Yongmeng2017-01-26 13:51 回复
  7. network.proxy.socks_remote_dns <-- only if you use sock(5) proxy 写点汉字吧,博主外语很捉急
    no2016-11-27 09:34 回复
    • 我不是学习网络和计算机的,所以具体原理我不懂。
      Toyo2016-11-27 13:57 回复
  8. 我想问下站长WordPress如何防止在域名后面加/?author=2泄露用户名
    宅の物语2016-09-22 13:22 回复
  9. 太厉害了,随便不是很懂!
    Selene2016-09-21 13:25 回复
  10. 请问,你用的哪里的服务器? 能推荐一下服务商吗? 为什么你的网站和国内区别也不是很大?
    筑楼2016-09-16 21:22 回复
    • 我网站有介绍,ramnode美国洛杉矶的,速度一般凑合着用。
      Toyo2016-09-17 00:44 回复
  11. 博主用的startssl有隐患啊
    Jrohy2016-09-16 14:39 回复
  12. 站长的网站被firefox提示使用了不安全的证书。。。 ```Strict-Transport-Security:该网站的连接不可信,因此指定的头被忽略```
    Aix2016-09-15 11:50 回复
  13. 盗版网站,儿童色情网站屏蔽无可厚非。屏蔽“比较自由“的社交,视频网站目的就其心可诛了。
    ddddd2016-09-14 20:29 回复
    • 这种事情自己知道就行了,讨论起来网站就会被盯上和谐的。
      Toyo2016-09-15 01:52 回复
    • 一部分是保护国内互联网产业的发展 一方面为了国家安稳考虑 现在国内一大帮弱智和脑残 真开放了的话 全世界的知名论坛 网站都是喷子的天下 丢的是中国的脸 等理性的一代发展起来之后可能会开放【现在是喷子的天下 哪个地方都能看到喷子】 现在网上环境太乱 不可能开放的
      11112016-09-18 02:52 回复
  14. 虽然写的很牛逼 但是没看懂
    twmgod2016-09-13 09:32 回复
  15. ipv6普及会怎么样
    dk2016-09-11 16:35 回复
    • ipv6貌似已经也攻陷了吧?
      hehe2016-09-11 22:32 回复
    • 前几个月,IPv6 DNS污染已经成型,如果开始大规模普及IPv6,那既说明了 IPv6方面的墙也跟上了步伐。
      Toyo2016-09-11 23:53 回复
  16. 沙发来一波
    泷泽萝拉2016-09-11 15:49 回复