防止DNS欺骗的软件

2014年6月1日 | 分类: Network | 标签:

防止DNS欺骗的软件

固定链接:http://xautlinux.net/blog/20140601/221359.htm
个人博客:http://xautofzx.blogspot.com/2014/06/dns_1.html

西理工Linux小组指导教师 张翔 2014.6.1 儿童节
联系方式:https://www.facebook.com/xautofzx

  由于众所周知的历史原因,从五月底的某一天开始,西理工Linux小组的网站 ( http://xautlinux.net ) 遭到国家防火墙的误伤,而且居然是最卑劣的DNS封锁,令我非常愤怒。对Google各项服务的大规模干扰也开始了,严重影响到正常的工作和学习,更加令人愤恨不已。
  值此六一儿童节之际,撰写本篇文章,献给开源与Linux的初学者,期待早日成长为具有独立思考能力的IT专业人才。

一、前言

  对我们做技术的人来说,墙的存在就像你在写字的时候旁边有一个人用棍子不断捅你。无数的时间和精力被花在对付它身上由于这个事件的缘故,我很少写博客文章了。当初为了培养学生完善的人格而建立的LUPA博客,居然不准我在文章中添加链接。我可不是叫兽,怎能引用别人的文字,却不给出处呢。只能放弃LUPA了,只更新墙外博客。

二、DNS欺骗原理

  近些年来中国大陆出现多次因为DNS欺骗造成的大规模网络瘫痪事件。DNS欺骗,也称为域名服务器缓存污染(DNS cache pollution),或着域名服务器缓存投毒(DNS cache poisoning),是指一些刻意制造或无意中制造出来的域名服务器封包,把域名指往不正确的IP地址。DNS欺骗的危害是巨大的,常见被利用来钓鱼、挂马之类的。
  一般来说,在互联网上一般都有可信赖的域名服务器,但为减低网络上的流量压力,一般的域名都会把外部的域名服务器资料暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有关网域的局域域名服务器的缓存受到污染,就会把网域内的电脑导引往错误的服务器或服务器的网址。域名服务器缓存污染可能是透过域名服务器软件上的设计错误而产生,但亦可能由别有用心者透过研究开放架构的域名服务器系统来利用当中的漏洞。
  为了解决DNS欺骗,业界提出了DNSSECDNScurv 。可以看看微软在测试实验室中演示 DNSSEC。某些极权国家,如伊朗、朝鲜等,招安并豢养了官方黑客,用于对国内民众封锁网络,掩盖历史真相。由于在防火墙中加入太多IP和端口过滤规则,会使得防火墙负荷过重,于是便丧心病狂的使用DNS欺骗这种滥杀无辜的大规模杀伤性技术

DNS攻击

三、DnsSpeeder

  本次西理工Linux小组的网站 ( http://xautlinux.net ) 被DNS干扰后,我使用nslookup指令,查询了多个DNS服务器,中国大陆的DNS都无返回值,国外的DNS都查询正确。据此推测是GoDaddy的某些DNS服务器被IP或者端口被临时封锁了,这种国家流氓行为以前也曾有过。
  国内的所谓安全DNS,如114DNS只能防范电信联通的广告劫持,用处不大。而直接设置为OpenDNS和Google又会影响国内网站的速度,所以必须用DNS解析缓存软件(DnsSpeeder,AcrylicHosts,FastCache),其中以DnsSpeeder最强大好用,还支持正则表达式,可以设置hosts屏蔽。
  在Win7系统中,不要把DnsSpeeder放在系统盘运行,可能会因为权限不够而运行出错。DnsSpeeder需要占用53端口 如果有其他软件占用了53端口就用不了。请下载我自己配置的版本,适合教育网内使用。友情提醒:DnsSpeeder需要使用53端口,要避免其他软件占用了53端口。

dnsspeeder2.85

四、Hosts订阅

  Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析。
  和 DNS 不同的是,计算机的用户可以直接对 Hosts 文件进行控制。Hosts 文件可以将已知的广告服务器重定向到无广告的机器(通常是本地的IP地址:127.0.0.1)上来过滤广告;减少对 DNS 服务器的访问来加快访问速度并减少带宽消耗;拦截一些恶意网站的请求,从而防止访问欺诈网站或感染一些病毒或恶意软件;屏蔽各类激活服务器;优化 IPv6 站点访问;为了避免DNS劫持,也借使用 Hosts 文件来强制将特定网站指定到正确的 IP 上。
  网络上有很多修改 Hosts 文件来访问 Google 搜索的教程。比如就有维基媒体基金会的图片服务器 IP 地址被 ISP 封锁,通过修改 Hosts 文件以正常显示图片的方法流传。
  手工修改Hosts文件,既繁琐又极易出错,有正义的IT人士共同维护着列表,如SmartHosts和ipv6-hosts等,可以通过软件自动更新。曾经的HostsX非常好用,可惜随着作者毕业而停止维护了。另一个软件HostsTool 也不错,使用huhamhire-hosts,更新比较及时。
  Hosts订阅,是手机等移动设备上规避DNS欺骗的主要方法。在PC机上可以辅助DNS解析缓存软件,双剑合璧。

HostsTool-Win-GUI

五、浏览器

  现在很多浏览器有远程DNS解析功能,如在firefox配合autoproxy插件,就会发现DNS欺骗现象没有了。提升上网体验选择一个合适的浏览器很重要,我偏爱Firefox,不仅因为它是开源免费的软件,而且其可高度自由定制的特性就足以打败其他浏览器,丰富的拓展让firefox无可替代。如果你不是IT高手,可能玩儿不转“高大上”的Firefox。那就推荐“白富美”的Chrome畅游版
  这些给菜鸟用的绿色版,都基于GoAgent的方式,安全性不太高,要想更安全,请跟随爱德华·斯诺登(Edward Snowden,曾是CIA美国中央情报局技术分析员)自行配制并使用Tor吧,必要的时候还需要在虚拟机中运行Tails来保证上网安全

六、后记

  中国大陆集中了那么多技术力量去阻碍和减慢信息流动的速度,这方面的实力可真是全球领先。由于不愿受到网站备案的羞辱和刁难,西理工Linux小组的网站 ( http://xautlinux.net ) 的网站和域名都托管在国外,和大量的中文技术网站一样,不可避免的、随时可能会被误伤。

  身在中国大陆堕落的教育体制内,不能说真话的时候,只能少说话。感谢每一届爱学习的同学,能体谅我的难处,自学成才。
  如今移民海外的华人越来越多。学习不努力,一生在内地。中国脑残千千万,QQ空间占一半儿。
  希望同学们能早日自学掌握科学上网技术,走出闭关锁国、娱乐至上的局域网,携手Google,拥抱Internet上广袤无垠的知识海洋。

 

  1. 2014年6月2日10:09

    前来围观学习!

  2. k01oo0k
    2014年6月2日11:49

    菜鸟受益了。

  3. AntBJ
    2014年6月9日17:54

    这篇文章总结的太赞了!张老师辛苦了~

  4. Aquamarine
    2014年10月4日22:24

    DnsSpeeder虽然不错,可惜早已停止开发,最好有人能够接手这个项目。

  5. 路人
    2014年10月17日23:21

    已经有非常好用的dnsforwarder了,开放源码,windows下有编译好了的二进制版本,linux下需要自己编译。

    项目网址:
    https://github.com/holmium/dnsforwarder
    wiki:
    https://github.com/holmium/dnsforwarder/wiki

    DNS 转发器 解决 DNS 污染
    DNS 转发器

    在本地开启 DNS 端口,以接收 DNS 请求,并以 UDP 或者 TCP 协议转发至指定的 DNS 服务器,然后将结果重新转发至请求端。使用时需要将本机 DNS 服务器设置为 127.0.0.1 或者另外指定的地址。

    https://github.com/holmium/dnsforwarder

    如果您要部署服务器,建议您使用 5.x 版本:https://github.com/holmium/dnsforwarder/wiki/%E9%A6%96%E6%AC%A1%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95

    编译配置选项:https://github.com/holmium/dnsforwarder/wiki/%E7%BC%96%E8%AF%91

    最新的二进制文件:https://github.com/holmium/dnsforwarder/tree/5/codeblocks_win/bin
    最新的配置文件:https://github.com/holmium/dnsforwarder/blob/5/default.config

    2.7 版本下载(2014-03-02):
    https://drive.google.com/file/d/0B_yf3JQ0zx6jNGVCZmFfblI5REU/edit?usp=sharing
    源码:https://github.com/holmium/dnsforwarder/tree/575e4e4394e3b3c8e4e27d7f6cb3be3ee83d64f4
    一些 BUG 修复。

  6. 路人1
    2014年10月17日23:27

    linux、mac、openwrt下可以用pdnsd结合tcp查询方式查询google、opendns服务器,或者pdnsd结合opendns的dnscrypt实现局域网内dns的无污染解析。

  7. 路人2
    2014年10月17日23:53

    OSX 上安装 pdnsd 加速 https://leiqing.net/?p=2744

    “mac系统,dnscrypt+unbound,挺好用的。” https://code.google.com/p/goagent/issues/detail?id=15397

    dns-tcp-query
    Forwarding UDP DNS requests to TCP
    https://code.google.com/p/dns-tcp-query/

  8. 2014年12月6日12:32