zoukankan      html  css  js  c++  java
  • DNS污染与劫持

    问题发现

    我经常从edx课程的课程进行学习

    我根据火狐的提示一直以为是协议的SSL3.0和TLS1.0的协议过时了,现在浏览器不支持。

    后来才发现是3级域名被污染了。

    ping courses.edx.org/login

    本地电脑ping

     远程服务端ping

     

    DNS污染

    网域服务器缓存污染(DNS cache pollution),又称域名服务器缓存投毒(DNS cache poisoning),是指一些刻意制造或无意中制造出来的域名服务器数据包,把域名指往不正确的IP地址。

    其工作方式是:由于通常的DNS查询没有任何认证机制,而且DNS查询通常基于的UDP是无连接不可靠的协议,因此DNS的查询非常容易被篡改,通过对UDP端口53上的DNS查询进行入侵检测,一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器(NS,Name Server)给查询者返回虚假结果。

    DNS污染指的是用户访问一个地址,国内的服务器(非DNS)监控到用户访问的已经被标记地址时,服务器伪装成DNS服务器向用户发回错误的地址的行为。为了减免网络上的交通,一般的域名都会把外间的域名服务器数据暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有关网域的局域域名服务器的缓存受到污染,就会把网域内的电脑导引往错误的服务器或服务器的网址。

    某些国家或地区出于某些目的为了防止某网站被访问,而且其又掌握部分国际DNS根目录服务器或镜像,也会利用此方法进行屏蔽。

    简单点说,DNS污染是指把自己伪装成DNS服务器,在检查到用户访问某些网站后,使域名解析到错误的IP地址。

    原理解析

    我们假设A为用户端,B为DNS服务器,C为A到B链路的一个节点的网络设备(路由器,交换机,网关等等)。一次被污染的DNS请求过程是

    A向B构建UDP连接,然后,A向B发送查询请求,查询请求内容通常是:“A baidu.com”,这一个数据包经过节点设备C继续前往DNS服务器B;

    然而在这个过程中,C通过对数据包进行特征分析(远程通讯端口为DNS服务器端口,激发内容关键字检查,检查特定的域名如上述的“courses.edx.org/login",以及查询的记录类型"A记录"),从而立刻返回一个错误的解析结果(如返回了"A 54.85.51.136"),作为链路上的一个节点,C机器的这个结果必定会先于真正的域名服务器的返回结果到达用户机器A,因此C节点所返回的查询结果就被A机器当作了最终返回结果,用于构建链接。

    DNS劫持

    DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。

     简单点说,DNS劫持指的是通过非法手段,获取DNS服务器的权限,然后把DNS配置进行修改,使域名解析到错误的IP地址。

    DNS污染和DNS劫持的区别

    DNS劫持是劫持了DNS服务器,进而修改其解析结果。

    DNS污染是国内的某些服务器对DNS查询进行入侵检测,发现与黑名单上匹配的请求,该服务器就伪装成DNS服务器,给查询者返回虚假结果。它利用了UDP协议是无连接不可靠性。

    一个是劫持了DNS服务器,一个是伪装成DNS服务器。造成的结果都是返回错误的IP地址。

    如何解决DNS污染和劫持

    方法1手动更换DNS服务器

    对于 DNS劫持,可以通过手动更换DNS服务器为第三方公共DNS解决。

    方法2修改hosts文件

    修改hosts文件,操作系统中Hosts文件的权限优先级高于DNS服务器,操作系统在访问某个域名时,会先检测HOSTS文件,然后再查询DNS服务器。

    可以在hosts添加受到污染的DNS地址来解决DNS污染和DNS劫持。

    其他方法

    3、通过一些软件编程处理,可以直接忽略返回结果是虚假IP地址的数据包,直接解决DNS污染的问题。

    4、如果你是Firefox only用户,并且只用Firefox,又懒得折腾,直接打开Firefox的远程DNS解析就行了。在地址栏中输入:

    about:config

    找到network.proxy.socks_remote_dns一项改成true。

    5、使用DNSCrypt软件,此软件与使用的OpenDNS直接建立相对安全的TCP连接并加密请求数据,从而不会被污染。

     

     

  • 相关阅读:
    SOCKET缓存
    异步任务调度
    缓存字典
    TBytes缓存多包数据
    通用压缩单元
    hazelcast-jet docker 运行试用
    hazelcast-jet 开源分布式流以及批处理框架
    Easy Python Decompiler 一个很不错的python pyc 反编译工具
    HAProxy Process Management
    pgx zombodb 团队开源的基于rust 开发pg扩展
  • 原文地址:https://www.cnblogs.com/wqbin/p/12118458.html
Copyright © 2011-2022 走看看