相关问题

DNS的解析 查询 调度原理是什么?什么是DNS劫持,污染?如何监控?

DNS简介

域名系统并不像电话号码通讯录那么简单,通讯录主要是单个个体在使用,同一个名字出现在不同个体的通讯录里并不会出现问题,但域名是群体中所有人都在用的,必须要保持唯一性。为了达到唯一性的目的,因特网在命名的时候采用了层次结构的命名方法。每一个域名(本文只讨论英文域名)都是一个标号序列(labels),用字母(A-Z,a-z,大小写等价)、数字(0-9)和连接符(-)组成,标号序列总长度不能超过255个字符,它由点号分割成一个个的标号(label),每个标号应该在63个字符之内,每个标号都可以看成一个层次的域名。级别最低的域名写在左边,级别最高的域名写在右边。域名服务主要是基于UDP实现的,服务器的端口号为53。

域名层级结构

DNS的解析 查询 调度原理是什么?什么是DNS劫持,污染?如何监控?

域名服务器

有域名结构还不行,还需要有一个东西去解析域名,手机通讯录是由通讯录软件解析的,域名需要由遍及全世界的域名服务器去解析,域名服务器实际上就是装有域名系统的主机。由高向低进行层次划分,可分为以下几大类:

根域名服务器:最高层次的域名服务器,也是最重要的域名服务器,本地域名服务器如果解析不了域名就会向根域名服务器求助。全球共有13个不同IP地址的根域名服务器,它们的名称用一个英文字母命名,从a一直到m。这些服务器由各种组织控制,并由ICANN(互联网名称和数字地址分配公司)授权,由于每分钟都要解析的名称数量多得令人难以置信,所以实际上每个根服务器都有镜像服务器,每个根服务器与它的镜像服务器共享同一个IP地址,中国大陆地区内只有6组根服务器镜像(F,I(3台),J,L)。当你对某个根服务器发出请求时,请求会被路由到该根服务器离你最近的镜像服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和地址,如果向根服务器发出对“”的请求,则根服务器是不能在它的记录文件中找到与“”匹配的记录。但是它会找到"tech"的顶级域名记录,并把负责"tech"地址的顶级域名服务器的地址发回给请求者。

顶级域名服务器:负责管理在该顶级域名服务器下注册的二级域名。当根域名服务器告诉查询者顶级域名服务器地址时,查询者紧接着就会到顶级域名服务器进行查询。比如还是查询"",根域名服务器已经告诉了查询者"tech"顶级域名服务器的地址,"tech"顶级域名服务器会找到“”的域名服务器的记录,域名服务器检查其区域文件,并发现它有与“”相关联的区域文件。在此文件的内部,有该主机的记录。此记录说明此主机所在的IP地址,并向请求者返回最终答案。

权限域名服务器:负责一个区的域名解析工作

本地域名服务器:当一个主机发出DNS查询请求的时候,这个查询请求首先就是发给本地域名服务器的。

DNS的解析 查询 调度原理是什么?什么是DNS劫持,污染?如何监控?

DNS解析流程

.国际金融域名DNS解析的步骤一共分为9步,如果每次解析都要走完9个步骤,大家浏览网站的速度也不会那么快,现在之所以能保持这么快的访问速度,其实一般的解析都是跑完第4步就可以了。除非一个地区完全是第一次访问(在都没有缓存的情况下)才会走完9个步骤,这个情况很少。

1、本地客户机提出域名解析请求,查找本地HOST文件后将该请求发送给本地的域名服务器。

2、将请求发送给本地的域名服务器。

3、当本地的域名服务器收到请求后,就先查询本地的缓存。

4、如果有该纪录项,则本地的域名服务器就直接把查询的结果返回浏览器。

5、如果本地DNS缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器。

6、然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。

7、本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。

8、重复第7步,直到找到正确的纪录。

9、本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

DNS的解析 查询 调度原理是什么?什么是DNS劫持,污染?如何监控?

注意事项:

递归查询:在该模式下DNS服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS服务器本地没有存储查询DNS信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。

迭代查询:DNS所在服务器若没有可以响应的结果,会向客户机提供其他能够解析查询请求的DNS服务器地址,当客户机发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉客户机另一台DNS服务器地址,客户机再向这台DNS服务器提交请求,依次循环直到返回查询的结果为止。

为什么DNS通常基于UDP

使用基于UDP的DNS协议只要一个请求、一个应答就好了

而使用基于TCP的DNS协议要三次握手、发送数据以及应答、四次挥手

明显基于TCP协议的DNS更浪费网络资源!

当然以上只是从数据包的数量以及占有网络资源的层面来进行的分析,那数据一致性层面呢?

DNS数据包不是那种大数据包,所以使用UDP不需要考虑分包,如果丢包那么就是全部丢包,如果收到了数据,那就是收到了全部数据!所以只需要考虑丢包的情况,那就算是丢包了,重新请求一次就好了。而且DNS的报文允许填入序号字段,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分DNS应答是对应的哪个请求

DNS查询dig查询
pdaiMbp:/pdai$;;;globaloptions:+cmd;;Gotanswer:;;-HEADER-opcode:QUERY,status:NOERROR,id:15304;;flags:qrrdra;QUERY:1,ANSWER:3,AUTHORITY:0,ADDITIONAL:0;;QUESTIONSECTION:;;;ANSWERSECTION:;;Querytime:20msec;;SERVER:192.168.3.153(192.168.3.1)/LGzpVjlBUJRfkmk8tSvZW+L0UFHnzSn8agztJ8sMGU+knBLW5LLoPoh6iG7exLV5wVIJZVh+0ISk3AG85VJXZ3HSTWcHZfjMOYI7JXpepv/5JqT9Eai0ScEJAowDa1qctGOE/LHdNwr30VF8U0LoZL0iXVN3KQ4kiKnl0S0hB41KH+BHFcNpWqxKHRK2piMZRNe8+8Nu9I4GilfW/D90e69pSgG7puU3J3srarhccj0OS5WcLi6nsMf/2k0C6rQMe+WD7aOVZXoLts93/thoNSWIprseKrYze2STnuG+T/VxzZRJ3fjoZARGHtDf3gTibHC2syXLxaXz5w==;;();;:==::115.238.190.240
whois查询
pdaiMbp:/pdai$%IANAWHOISserver%formoreinformationonIANA,visit"".Lastupdateofwhoisdatabase:2020-01-31T07:03:29Z
DNS调度原理

现在,大部分应用和业务都采用域名作为服务的入口,因此用DNS来负载均衡和区域调度是非常普遍的做法,网易云也有着一套基于DNS的调度系统。某些用户在进行直播推流时用的并不是网易云的直播SDK,而是一些第三方的推流软件,如obs,这样就不能使用我们的GSLB全局调度服务器来调度。对于这些用户,我们使用DNS调度的方式,对不同地域的请求返回不同解析结果,将请求调度到离用户最近的服务器节点,从而减少延迟访问。

DNS的解析 查询 调度原理是什么?什么是DNS劫持,污染?如何监控?

咋一看,DNS调度这么简单方便,那为什么不让所有的用户都走DNS调度呢?想知道原因?来,我们继续讲。

地理位置调度不准确

在DNS解析过程中,与权威服务器通信的只有DNS缓存服务器,所以权威服务器只能根据DNS缓存服务器的IP来进行调度。因此DNS调度有一个前提:假定用户使用的缓存DNS与用户本身在同个网络内,即至少在同一个AS(自治域)内,在该前提下,DNS的解析才是准确的。通常情况下,用户使用ISP提供的本地缓存(简称localDNS),localDNS一般与用户在同个网络内,这时候DNS调度是有效的。

但近些年,不少互联网厂商推广基于BGPAnycast的公共DNS(PublicDNS),而这些AnycasetIP的节点一般是远少于各个ISP的节点,例如可能广州电信用户使用了某公共DNS,但该公共DNS里用户最近的是上海电信节点,甚至更极端的如,在中国大陆没有节点(最近的是台湾)。而不幸的是国内有不少用户使用了GoogleDNS,这其实降低了他们的网络访问体验。总的来说,使用公共DNS,实际上破坏了上文的前提,导致DNS区域调度失效,用户以为得到了更快更安全的DNS解析,但实际得到了错误的解析,增加了网络访问延迟。

DNS的解析 查询 调度原理是什么?什么是DNS劫持,污染?如何监控?

DNS安全相关

犯罪分子会抓住任何互联网服务或协议的漏洞发动攻击,这当然也包括域名系统(DNS)。他们会注册一次性域名用于垃圾邮件活动和僵尸网络管理,还会盗用域名进行钓鱼和恶意软件下载。他们会注入恶意查询代码以利用域名服务器的漏洞或扰乱域名解析过程。他们会注入伪造的响应污染解析器缓存或强化DDOS攻击。他们甚至将DNS用作数据渗漏或恶意软件更新的隐蔽通道。

你可能没办法了解每一个新的DNS漏洞攻击,但是可以使用防火墙、网络入侵监测系统或域名解析器报告可疑的DNS行为迹象,作为主动防范的措施。

先讲下最常用的手段:DNS劫持和DNS污染。

什么是DNS劫持

DNS劫持就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。DNS劫持通过篡改DNS服务器上的数据返回给用户一个错误的查询结果来实现的。

什么是DNS污染

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

而DNS污染则是发生在用户请求的第一步上,直接从协议上对用户的DNS请求进行干扰。

DNS污染症状:目前一些被禁止访问的网站很多就是通过DNS污染来实现的,例如YouTube、Facebook等网站。

解决方法:

对于DNS劫持,可以采用使用国外免费公用的DNS服务器解决。例如OpenDNS(208.67.222.222)或GoogleDNS(8.8.8.8)。

对于DNS污染,可以说,个人用户很难单单靠设置解决,通常可以使用VPN或者域名远程解析的方法解决,但这大多需要购买付费的VPN或SSH等,也可以通过修改Hosts的方法,手动设置域名正确的IP地址。

为什么要DNS流量监控

预示网络中正出现可疑或恶意代码的DNS组合查询或流量特征。例如:

1.来自伪造源地址的DNS查询、或未授权使用且无出口过滤地址的DNS查询,若同时观察到异常大的DNS查询量或使用TCP而非UDP进行DNS查询,这可能表明网络内存在被感染的主机,受到了DDoS攻击。

2.异常DNS查询可能是针对域名服务器或解析器(根据目标IP地址确定)的漏洞攻击的标志。与此同时,这些查询也可能表明网络中有不正常运行的设备。原因可能是恶意软件或未能成功清除恶意软件。

3.在很多情况下,DNS查询要求解析的域名如果是已知的恶意域名,或具有域名生成算法(DGA)(与非法僵尸网络有关)常见特征的域名,或者向未授权使用的解析器发送的查询,都是证明网络中存在被感染主机的有力证据。

4.DNS响应也能显露可疑或恶意数据在网络主机间传播的迹象。例如,DNS响应的长度或组合特征可以暴露恶意或非法行为。例如,响应消息异常巨大(放大攻击),或响应消息的AnswerSection或AdditionalSection非常可疑(缓存污染,隐蔽通道)。

5.针对自身域名组合的DNS响应,如果解析至不同于你发布在授权区域中的IP地址,或来自未授权区域主机的域名服务器的响应,或解析为名称错误(NXDOMAIN)的对区域主机名的肯定响应,均表明域名或注册账号可能被劫持或DNS响应被篡改。

6.来自可疑IP地址的DNS响应,例如来自分配给宽带接入网络IP段的地址、非标准端口上出现的DNS流量,异常大量的解析至短生存时间(TTL)域名的响应消息,或异常大量的包含“nameerror”(NXDOMAIN)的响应消息,往往是主机被僵尸网络控制、运行恶意软件或被感染的表现。

DNS流量监控防火墙

我们从最常用的安全系统开始吧,那就是防火墙。所有的防火墙都允许自定义规则以防止IP地址欺骗。添加一条规则,拒绝接收来自指定范围段以外的IP地址的DNS查询,从而避免域名解析器被DDOS攻击用作开放的反射器。

接下来,启动DNS流量检测功能,监测是否存在可疑的字节模式或异常DNS流量,以阻止域名服务器软件漏洞攻击。具备本功能的常用防火墙的介绍资料在许多网站都可以找到(例如PaloAlto、思科、沃奇卫士等)。Sonicwall和PaloAlto还可以监测并拦截特定的DNS隧道流量。

入侵检测系统

无论你使用Snort、Suricata还是OSSEC,都可以制定规则,要求系统对未授权客户的DNS请求发送报告。你也可以制定规则来计数或报告NXDomain响应、包含较小TTL数值记录的响应、通过TCP发起的DNS查询、对非标准端口的DNS查询和可疑的大规模DNS响应等。DNS查询或响应信息中的任何字段、任何数值基本上都“能检测”。唯一能限制你的,就是你的想象力和对DNS的熟悉程度。防火墙的IDS(入侵检测系统)对大多数常见检测项目都提供了允许和拒绝两种配置规则。

流量分析工具

Wireshark和Bro的实际案例都表明,被动流量分析对识别恶意软件流量很有效果。捕获并过滤客户端与解析器之间的DNS数据,保存为PCAP(网络封包)文件。创建脚本程序搜索这些网络封包,以寻找你正在调查的某种可疑行为。或使用PacketQ(最初是DNS2DB)对网络封包直接进行SQL查询。

(记住:除了自己的本地解析器之外,禁止客户使用任何其他解析器或非标准端口。)

DNS被动复制

该方法涉及对解析器使用传感器以创建数据库,使之包含通过给定解析器或解析器组进行的所有DNS交易(查询/响应)。在分析中包含DNS被动数据对识别恶意软件域名有着重要作用,尤其适用于恶意软件使用由算法生成的域名的情况。将Suricata用做IDS(入侵检测系统)引擎的PaloAlto防火墙和安全管理系统,正是结合使用被动DNS与IPS(入侵防御系统)以防御已知恶意域名的安全系统范例。

解析器日志记录

尽管本文提到了不少资料链接、案例分析和实际例子,但也只是涉及了众多监控DNS流量方法中的九牛一毛,疏漏在所难免,要想全面快捷及时有效监控DNS流量,不妨试试DNS服务器监控。

DNS服务器监控

应用管理器可对域名系统(DNS)进行全面深入的可用性和性能监控,也可监控DNS监控器的个别属性,比如响应时间、记录类型、可用记录、搜索字段、搜索值、搜索值状态以及搜索时间等。

DNS中被监控的一些关键组件:

指标描述响应时间给出DNS监控器的响应时间,以毫秒表示记录类型显示记录类型连接到DNS服务器的耗时可用记录根据可用记录类型输出True或False搜索字段显示用于DNS服务器的字段类型搜索值显示在DNS服务器中执行的搜索值搜索值状态根据输出信息显示搜索值状态:Success(成功)或Failed(失败)搜索时间DNS服务器中的搜索执行时间

监控可用性和响应时间等性能统计数据。这些数据可绘制成性能图表和报表,即时可用,还可以按照可用性和完善性对报表进行分组显示。

若DNS服务器或系统内任何特定属性出现问题,会根据配置好的阈值生成通知和警告,并根据配置自动执行相关操作。目前,国内外DNS监控工具主要有Newrelic、appDynamic、OneAPM。

参考文章

【网易MC】DNS调度原理解析

DNS原理入门

DNS原理及其解析过程【精彩剖析】

当我们谈网络时,我们谈些什么(2)--DNS的工作原理

企业如何抵御利用DNS隧道的恶意软件?

监控DNS流量,预防安全隐患五大招!

DNS协议详解及报文格式分析

上一篇:畅通生命通道!1个多月,500+新生命在这里诞生
  • 下一篇:怀孕做B超能查出怀孕多久吗 返回列表