DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录

相关学习资料

http://baike.baidu.com/link?url=77B3BYIuVsB3MpK1nOQXI-JbS-AP5MvREzSnnedU7F9_G8l_Kvbkt_O2gKqFw7vm
http://www.rfc-editor.org/rfc/rfc1035.txt
http://www.rfc-editor.org/rfc/rfc3596.txt
http://www.rfc-editor.org/rfc/rfc2782.txt
http://www.rfc-editor.org/rfc/rfc3403.txt
http://zhumeng8337797.blog.163.com/blog/static/10076891420110694312990/
tcp-ip详解卷1:协议.pdf
http://wenku.baidu.com/link?url=gIwRwFkKbwB-x45_xVShR10VII_r3nchf0wYTPwelAu5CrS7T5N3zxoBtImYD8i3-mwJhgi5ix-XWMcXkI0uNg6gJCgCihZkRwVydqyFWF3
ftp://ftp.rs.internic.net/domain/
http://www.laojia1987.cn/show.asp?id=756
http://technet.microsoft.com/zh-cn/cc779148(WS.10).aspx
http://blog.csdn.net/lastsweetop/article/details/5692312
http://blog.sina.com.cn/s/blog_6441e0640100scj2.html
http://zhumeng8337797.blog.163.com/blog/static/100768914201082910759244/

 

目录

1. DNS简介
2. DNS查询方式
3. 和DNS有关的安全风险
4. DNS记录类型

 

1. DNS简介 

DNS是指:域名系统(Domain Name System)。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析系统来完成,DNS就是进行域名解析的系统。

DNS协议运行在UDP协议之上,使用端口号53。在传输层TCP提供端到端可靠的服务,在UDP端提供尽力交付的服务。其控制端口作用于UDP端口53。

0x1: DNS记录类型

DNS系统中,常见的资源记录类型有:

1. 主机记录(A记录)
RFC 1035定义,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。过A记录,大家可以设置自己的不同域名转到不同的IP上去,如:1) www.dns.la 转到IP 116.255.202.12) web.dns.la 转到IP 116.255.202.113) mail.dns.la 转到IP 116.255.202.1112. 别名记录(CNAME记录)
RFC 1035定义,CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。对于CNAME的原理要注意和URL转发进行区分:1) url转发可以转发到某一个目录下,甚至某一个文件上2) 而cname是不可以,这就是url转发和cname的主要区别所在3. MX记录(Mail Exchange)
邮件交换记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操作控制所有的邮箱设置。要注意的是邮箱DNS解析和HTTP DNS解析是独立的,如果你设置A记录
是指向123.
12.123.123,而MX记录你设置是指向222.22.222.222,那么你的DNS服务器接收到别人的邮件路 由请求时就将会将它的请求解释到222.22.222.222上去!而别人访问你的网页
的时候仍然是访问123.12.123.1234. NS(Name Server) 域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析,可以把一个域名的不同二级域名分别指向到不同的DNS系统来解析5. IPv6主机语录(AAAA记录) RFC 3596定义,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。6. 服务位置记录(SRV记录) RFC 2782定义,用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。7. NAPTR记录 RFC 3403定义,它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。

0x2: 域名系统分类

DNS的名字空间和Unix的文件系统相似,也具有层次结构。每个结点有 一个至多63个字符长的标识。这颗树的树根是没有任何标识的特殊结点(即全球根DNS)。命名标识中一律不区分大写和小写。命名树上任何一个结点的域名就 是将从该结点到最高层的域名串连起来,中间使用一个点"."分隔这些域名,域名树中的每个结点必须有一个唯一的域名,但域名树中的不同结点可使用相同的标 识。
以点"."结尾的域名称为绝对域名或完全合格的域名FQDN(Full Qualified Domain Name),例如sun.tuc.noao.edu.  
如果一个域名不以点结尾,则认为该域名是不完全的。

DNS根域名服务器
全球共有13台根"逻辑域名服务器"。这13台逻辑根域名服务器中名字分别为"A""M",真实的根服务器在2014年1月25日的数据为386台,分布于全球各大洲。
之所以是13台,这要从DNS协议(域名解析协议)说起。DNS协议使用了端口上的UDP和TCP协议,UDP通常用于查询和响应,TCP用于主服务器和从服务器之间的传送。由于在所有UDP查询和响应中
能保证正常工作的最大长度是512字节,512字节限制了根服务器的数量和名字。要让所有的根服务器数据能包含在一个512字节的UDP包中,根服务器只能限制在13个,而且每个服务器要使用字
母表中的单个字母命名,这也是根服务器是从A
~M命名的原因。 在根域名服务器中虽然没有每个域名的具体信息,但储存了负责每个域(如COM、NET、ORG等)的解析的域名服务器的地址信息,如同通过北京电信你问不到广州市某单位的电话号码,但是北京电
信可以告诉你去查020114。世界上所有互联网访问者的浏览器的将域名转化为IP地址的请求(浏览器必须知道数字化的IP地址才能访问网站)理论上都要经过根服务器的指引后去该域名的权威域
名服务器(authoritative name server),当然现实中提供接入服务的ISP的
"缓存域名服务器"上可能已经有了这个对应关系(域名到IP地址)的缓存。 1. 顶级域名 顶级域名被分为三个部分1) arpa是一个用作地址到名字转换的特殊域(即反过来用IP来解析域名)2) 7个3字符长的普通域。有些书也将这些域称为组织域2.1) com: 商业组织2.2) edu: 教育机构2.3) gov: 政府部门2.4) int: 国际组织2.5) mil: 军事网点2.6) net: 网络2.7) org: 其他组织3) 所有2字符长的域均是基于ISO3166中定义的国家代码,这些域被称为国家域,或地理域。,例如3.1) hk3.2) us 2. 二级域名 一个独立管理的DNS子树称为一个区域(zone)。一个常见的区域是一个二级域,如noao.edu。许多二级域将它们的区域划分成更小的区域。例如,大学可能根据不同的系来划分区域,公司可能
根据不同的部门来划分区域。

0x3: DNS协议格式

1. 标识
一个4字节16bit的字段,Transaction ID,表明当前DNS请求的序号
2. 标志
16bit的标志字段1) QR1bit字段1.1) 0表示查询报文1.2) 1表示响应报文。2) opcode4bit字段2.1) 通常值为0(标准查询)2.2) 其他值为1(反向查询)2.3) 2(服务器状态请求)3) A 1bit标志,表示"授权回答(authoritative answer)"。该名字服务器是授权于该域的。4) TC1bit字段,表示"可截断的(truncated)"。使用UDP时,它表示当应答的总长度超过512字节时,只返回前512个字节5) RD1bit字段,表示"期望递归(recursion desired)"。该比特能在一个查询中设置,并在响应中返回。这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询。如果该位为0,且
被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为迭代查询。
6) RA1bit字段,表示"可用递归"。如果名字服务器支持递归查询,则在响应中将该比特设置为1。大多数名字服务器都提供递归查询,除了某些根服务器7) 随后3bit必须为08) rcode4bit的返回码字段。通常的值为:8.1) 0(没有差错)8.2) 3(名字差错)名字差错只有从一个授权名字服务器上返回,它表示在查询中制定的域名不存在。 3. 问题数 查询问题的数量,对于请求报文,通常为1 4. 资源记录数 返回的资源记录数 5. 授权资源记录数 返回的授权资源记录数 6. 额外资源记录数 返回的额外资源记录数 7. 查询问题 注意,一个DNS数据报中可能会有多个查询问题,这也是为什么在之前的"问题数"等字段会有大于1数字的原因。每个"查询问题格式"都相同,如下:1) 查询名查询名是要查找的名字,它是一个或多个字符串的序列。每个字符串以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束,字符串之间以"."分隔,例如
www.baidu.com中www、baidu、com都是字符串,长度为0的字符串是根标识符。计数字节的值必须是0~63的数,因为单个字符串的最大长度仅为63 2) 查询类型2.1) A: IP地址2.2) NS: 名字服务器2.3) CNAME: 规范名称2.4) PTR: 指针记录,即IP到域名的反向查询2.5) HINFO: 主机信息2.6) MX: 邮件交换记录2.7) AXFR: 区域传送请求 2.8) */ANY: 对所有记录的请求 最常用的查询类型是A类型,表示期望获得查询名的IP地址。一个PTR查询则请求获得一个IP地址对应的域名。这是一个指针查询3) 查询类查询类通常是1,指互联网地址(某些站点也支持其他非IP地址) 8. 回答(只在DNS响应数据报中存在)1) 域名客户端请求解析的域名,和请求报文中的问题中的查询名一样 2) 类型2.1) A: IP地址2.2) NS: 名字服务器2.3) CNAME: 规范名称2.4) PTR: 指针记录,即IP到域名的反向查询2.5) HINFO: 主机信息2.6) MX: 邮件交换记录2.7) AXFR: 区域传送请求 2.8) */ANY: 对所有记录的请求 3) 类通常是1,指互联网地址(某些站点也支持其他非IP地址)4) 生存时间客户程序保留该资源记录的秒数。资源记录通常的生存时间值为2天。5) 资源数据长度资源数据的数量。该数据的格式依赖于类型字段的值5.1) 对于类型1(A记录)资源数据是4字节的IP地址5.2) 对于类型CNAME资源数据是域名字符串长度 9. 授权(只在DNS响应数据报中存在) 10. 额外信息(只在DNS响应数据报中存在)

 

2. DNS查询方式

0x1: 递归查询和迭代查询的区别

1.递归查询: 
一般客户机和首选DNS服务器(宽带连接是设置的默认DNS)之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终结
果后转交给客户机
2.迭代查询(反复查询): 一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求

下图为一次完整的DNS查询过程,包括客户端和本地DNS的递归查询、以及本地DNS和上机DNS之间的迭代查询

1. 网络客户端准备访问www.163.com这个域名,浏览器准备进行DNS解析以获取对应的IP
2. 网络客户端将DNS解析请求发送到"本地DNS服务器"后,就进行等待状态,因为对于网络客户端和本地DNS服务器来说它们是递归关系,本地DNS服务器最终一定会把结果返回给网络客户端
(IP、或者是不存在)
3. 本地DNS服务器接收到DNS解析请求后,开始和上机DNS服务之间进行迭代查询1) 向全球根域名DNS服务器发送解析请求,根DNS根据请求中的顶级域名,返回该域名对应的顶级DNS服务器(.com)IP2) 本地DNS服务器接着继续向".com"DNS服务器发送解析请求,".com"服务器查询自己的DNS缓存,返回.163.com域名服务器,要求本地DNS继续迭代查询3) 本地DNS继续向".163.com"进行请求,并得到解析IP: 1.1.1.1 4. 本地DNS服务器将最终的解析结果返回给网络客户端,完成一次DNS解析

dig maps.google.com +trace

 

; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> maps.google.com +trace
;; global options: +cmd
.            276507    IN    NS    c.root-servers.net.
.            276507    IN    NS    d.root-servers.net.
.            276507    IN    NS    h.root-servers.net.
.            276507    IN    NS    b.root-servers.net.
.            276507    IN    NS    g.root-servers.net.
.            276507    IN    NS    j.root-servers.net.
.            276507    IN    NS    a.root-servers.net.
.            276507    IN    NS    i.root-servers.net.
.            276507    IN    NS    k.root-servers.net.
.            276507    IN    NS    l.root-servers.net.
.            276507    IN    NS    m.root-servers.net.
.            276507    IN    NS    e.root-servers.net.
.            276507    IN    NS    f.root-servers.net.
.            467210    IN    RRSIG    NS 8 0 518400 20160720050000 20160710040000 46551 . hoEAAYtNaUlG8/AB1vZwqsgIUb2NPrbs6CIBjstfNe3xvAfTeMVQb7oy KPGxlCxBtkR4S+jaoR//Es3FHqUDk7Okap5VroNJxfUq2ZCugTOIp8g4 aaSi13vb/ShFmfN4ADfUqXOHgqGRz/QOkSdZ+0tElkQoDcd63U6ETlJM IAQ=
;; Received 913 bytes from 10.143.22.116#53(10.143.22.116) in 24 mscom.            172800    IN    NS    e.gtld-servers.net.
com.            172800    IN    NS    b.gtld-servers.net.
com.            172800    IN    NS    j.gtld-servers.net.
com.            172800    IN    NS    m.gtld-servers.net.
com.            172800    IN    NS    i.gtld-servers.net.
com.            172800    IN    NS    f.gtld-servers.net.
com.            172800    IN    NS    a.gtld-servers.net.
com.            172800    IN    NS    g.gtld-servers.net.
com.            172800    IN    NS    h.gtld-servers.net.
com.            172800    IN    NS    l.gtld-servers.net.
com.            172800    IN    NS    k.gtld-servers.net.
com.            172800    IN    NS    c.gtld-servers.net.
com.            172800    IN    NS    d.gtld-servers.net.
com.            86400    IN    DS    30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.            86400    IN    RRSIG    DS 8 1 86400 20160720170000 20160710160000 46551 . TtxKBdFbscgs26hOkVaP5DV5bvrczgFJ91Vq79iRhvRu5PveAjT8af8G yF0+JZMUAXyMbU7uxhgs0Rpec7ldBu/palvN9edTXZTUmmRCHiCoJwSX 46nzphAUeWh6+BB8FRZl6FpRMaSfZ02Vd3f3pxabNzLYtHzsizMXAOBv 8go=
;; Received 739 bytes from 198.41.0.4#53(a.root-servers.net) in 298 msgoogle.com.        172800    IN    NS    ns2.google.com.
google.com.        172800    IN    NS    ns1.google.com.
google.com.        172800    IN    NS    ns3.google.com.
google.com.        172800    IN    NS    ns4.google.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20160717050355 20160710035355 34745 com. FRl3kWjrLQDbv3KST9JdLeQN0FgGqik8Pau80HDFSwQV9ON0D9L9CnyT 3qLHbgsh8MMt9ma0AnxjnfZx00YoRySt+0vwQfzk0/7Z6pTeyXEZCBQU 9we3XmqWg56sIDVDK3KKyTaPE2mJUZjweRpuvv3RsfjQ7qHeDeFR/spT eNk=
S84AE3BIT99DKIHQH27TRC0584HV5KOH.com. 86400 IN NSEC3 1 1 0 - S84HQQBBMVORSCH4GNB3G868OHH33GUR NS DS RRSIG
S84AE3BIT99DKIHQH27TRC0584HV5KOH.com. 86400 IN RRSIG NSEC3 8 2 86400 20160715050611 20160708035611 34745 com. oXeZcWKIL0ov3ySqHKlaBI6m7I1IgGjLzWBjiVUHBmgw7VWWrhibPvWu jeUSLDHNtyhC7LXgiMl18hjTB+frknLNG5gA/lut82uheMGHMV4VrsvP CREQ1mSgNqV7eNNocPoIHcFgL+3+wOrxLc1QzhJ6UK5/ni/kSewbHJQE qo0=
;; Received 665 bytes from 192.48.79.30#53(j.gtld-servers.net) in 268 msmaps.google.com.    300    IN    A    216.58.197.110
;; Received 49 bytes from 216.239.36.10#53(ns3.google.com) in 52 ms

 

dig 8uc.gddos.com  +trace

; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> 8uc.gddos.com +trace
;; global options: +cmd
.            276370    IN    NS    i.root-servers.net.
.            276370    IN    NS    m.root-servers.net.
.            276370    IN    NS    d.root-servers.net.
.            276370    IN    NS    h.root-servers.net.
.            276370    IN    NS    b.root-servers.net.
.            276370    IN    NS    a.root-servers.net.
.            276370    IN    NS    e.root-servers.net.
.            276370    IN    NS    j.root-servers.net.
.            276370    IN    NS    c.root-servers.net.
.            276370    IN    NS    l.root-servers.net.
.            276370    IN    NS    k.root-servers.net.
.            276370    IN    NS    f.root-servers.net.
.            276370    IN    NS    g.root-servers.net.
.            467073    IN    RRSIG    NS 8 0 518400 20160720050000 20160710040000 46551 . hoEAAYtNaUlG8/AB1vZwqsgIUb2NPrbs6CIBjstfNe3xvAfTeMVQb7oy KPGxlCxBtkR4S+jaoR//Es3FHqUDk7Okap5VroNJxfUq2ZCugTOIp8g4 aaSi13vb/ShFmfN4ADfUqXOHgqGRz/QOkSdZ+0tElkQoDcd63U6ETlJM IAQ=
;; Received 913 bytes from 10.143.22.116#53(10.143.22.116) in 2 mscom.            172800    IN    NS    e.gtld-servers.net.
com.            172800    IN    NS    l.gtld-servers.net.
com.            172800    IN    NS    h.gtld-servers.net.
com.            172800    IN    NS    m.gtld-servers.net.
com.            172800    IN    NS    f.gtld-servers.net.
com.            172800    IN    NS    g.gtld-servers.net.
com.            172800    IN    NS    d.gtld-servers.net.
com.            172800    IN    NS    i.gtld-servers.net.
com.            172800    IN    NS    c.gtld-servers.net.
com.            172800    IN    NS    b.gtld-servers.net.
com.            172800    IN    NS    a.gtld-servers.net.
com.            172800    IN    NS    k.gtld-servers.net.
com.            172800    IN    NS    j.gtld-servers.net.
com.            86400    IN    DS    30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.            86400    IN    RRSIG    DS 8 1 86400 20160720170000 20160710160000 46551 . TtxKBdFbscgs26hOkVaP5DV5bvrczgFJ91Vq79iRhvRu5PveAjT8af8G yF0+JZMUAXyMbU7uxhgs0Rpec7ldBu/palvN9edTXZTUmmRCHiCoJwSX 46nzphAUeWh6+BB8FRZl6FpRMaSfZ02Vd3f3pxabNzLYtHzsizMXAOBv 8go=
;; Received 737 bytes from 192.5.5.241#53(f.root-servers.net) in 29 msgddos.com.        172800    IN    NS    ns1cwy.name.com.
gddos.com.        172800    IN    NS    ns2gtx.name.com.
gddos.com.        172800    IN    NS    ns3dkz.name.com.
gddos.com.        172800    IN    NS    ns4dls.name.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20160717050355 20160710035355 34745 com. FRl3kWjrLQDbv3KST9JdLeQN0FgGqik8Pau80HDFSwQV9ON0D9L9CnyT 3qLHbgsh8MMt9ma0AnxjnfZx00YoRySt+0vwQfzk0/7Z6pTeyXEZCBQU 9we3XmqWg56sIDVDK3KKyTaPE2mJUZjweRpuvv3RsfjQ7qHeDeFR/spT eNk=
7P30T8CNL78NE7VK927QBUTOVFF0A00H.com. 86400 IN NSEC3 1 1 0 - 7P35935AMQU5C7SUS076VU2RMISV0DF9 NS DS RRSIG
7P30T8CNL78NE7VK927QBUTOVFF0A00H.com. 86400 IN RRSIG NSEC3 8 2 86400 20160717044119 20160710033119 34745 com. I9KyGVdi7ZOHtlVKCUcShMkCSwuR61D5tpD/yVD8IRammwLEUlQizyxv uiF3kWTC4PKZCcaJemBATBDhZIm+ZshdwL1sToMTbEYWucq+HGBgl6jM pVPbREB/ywa0U3dS9C6UiUvSuYP119LevJBkOVxkJ2SvlUsEVWkirKl6 EE8=
;; Received 708 bytes from 192.31.80.30#53(d.gtld-servers.net) in 276 msgddos.com.        300    IN    SOA    ns1cwy.name.com. support.name.com. 1 10800 3600 604800 300
;; Received 87 bytes from 98.124.217.1#53(ns4dls.name.com) in 287 ms

 

 

0x2: DNS解析抓包实验过程

1. DNS普通查询

2. DNS查询响应

可以看到,www.baidu.com是一个CNAME地址,是百度为了用户好记而登记的域名

3. Zone Transfer(AXFR)请求

4. PTR域名反向查询

 

3. 和DNS有关的安全风险

DNS是互联网的一个基础设施,针对DNS的安全风险大致有如下几个:

1. 防火墙不会限制对DNS的访问
这导致攻击者可能会借助DNS通道进行数据库带外信道注入、或者DNS隐藏隧道等攻击2.DNS可以泄漏内部的网络拓朴结构
即DNS Zone Transfer攻击 3.DNS的本身性能问题
安全的一个重要标志是可用性。对于DNS服务器而言这点尤其重要,在现实生活中经常定义攻击者入侵系统获取数据为一个安全问题,但是对于DNS服务器来说,遭到了拒绝服务攻击则是一件更严
重的问题。失去了DNS服务器的话,任何在internet网络上的人将不能够再使用域名找到你的服务器,不可想像让普通的网民们使用202.
106.184.200来代替www.sina.com.cn使用。更严重的
是,没有了DNS的服务,所有的邮件发送都将失败,而你的内部网络将由于解析域名的失败而失去和外部网络的联系。 注册了一个域名以后,可以最大为你的域名设置6个DNS服务器名。 例如,microsoft.com公司的就为自己设置了五个DNS服务器来解析自己的域名: Name Servers: DNS4.CP.MSFT.NET
207.46.138.11 DNS5.CP.MSFT.NET 207.46.138.12 Z1.MSFT.AKADNS.COM 216.32.118.104 Z7.MSFT.AKADNS.COM 213.161.66.158 DNS1.TK.MSFT.NET 207.46.232.37 这样,即使这三个中的两个停止了工作,但是了,仍然可以有一个会对外提供服务,而对于广大的用户而言,当出现这种多个DNS服务器停止服务带来的唯一的影响就是查询域名的时候会延迟,因
为它需要一个一个的去查询,直到找到最后的一个为止。而上面这一个步骤也是你应付恶意攻击者对DNS服务器进行拒绝服务攻击的一个保护手段。

0x1: DNS Zone Transfer

Zone Transfer漏洞可以被渗透测试人员用来进行内网信息搜集、拓朴获取等目的,是内网横向渗透、信息搜集的一个很重要的手段。

一个名字服务器(NS)负责一个或多个区域(zone)。一个区域的管理者必须为该区域提供一个主名字服务器(master)和至少一个辅助名字服务器(slave)。主、辅名字服务器必须是独立和冗余的,以便当某个名字服务器发生故障时不会影响该区域的名字服务。
主、辅名字服务器的主要区别在于主名字服务器从磁盘文件中调入该区域的所有信息,而辅名字服务器则从主服务器调入所有信息。我们将辅名字服务器从主服务器调入信息称为区域传送(zone transfer)

了解了DNS Zone Transfer的基本概念之后,我们来一起学习一下dig、nslookup这2个命令,看看我们都能利用Zone Transfer获得哪些信息

nslookup命令解释

在win上,nslookup会根据ipconfig连接后的默认DNS去找到所要使用的local DNS server
在linux上,nslookup会根据/etc/resolv.conf的内容去找到所要使用的local DNS server

C:\Users\LittleHann>nslookup
默认服务器:  FJ-DNS.fz.fj.cn
Address:  218.85.157.99
> ?
命令:   (标识符以大写表示,[] 表示可选)
1. NAME            
打印有关使用默认DNS服务器(系统默认的DNS服务器)的主机/域NAME的信息,例如www.baidu.com 
2. set OPTION     
设置选项,OPTION可选项如下,[no]代表默认关闭1) all: 打印选项、当前服务器和主机2) [no]debug: 打印调试信息3) [no]d2: 打印详细的调试信息4) [no]defname: 将域名附加到每个查询5) [no]recurse: 询问查询的递归应答6) [no]search: 使用域搜索列表7) [no]vc: 始终使用虚拟电路8) domain=NAME: 将默认域名设置为 NAME9) srchlist=N1[/N2/.../N6]: 将域设置为 N1,并将搜索列表设置为 N1、N2 等10) root=NAME: 将根服务器设置为 NAME11) retry=X: 将重试次数设置为 X12) timeout=X: 将初始超时间隔设置为 X 秒13) type=X: 设置查询类型(如 A、AAAA、A+AAAA、ANY、CNAME、MX、NS、PTR、SOA 和 SRV)
set type=ptr
本来要由IP反查 domain name时, 在直接打IP就行了, 但如果已经下了type=any的话, 要由IP反查时就没那么方便了, 此时IP 4个数字要倒着写, 最后还要加上in-addr.arpa.
以查140.116.72.219 为例, 要输入的就是219.72.116.140.in-addr.arpa
14) querytype=X: 与类型相同15) class=X: 设置查询类(如IN(Internet)和ANY)16) [no]msxfr: 使用MS快速区域传送17) ixfrver=X: 用于IXFR传送请求的当前版本 3. server NAME 将默认服务器设置为NAME(例如8.8.8.8),同时对NAME进行解析
很多情况下,我们的DNS查询并不会被发送到跟DNS服务器上,而是由DNS Cache服务器进行返回,为了获得最新的数据,我们需要手动去修改"默认本地DNS"从而获得最新的DNS数据
4. lserver NAME 将默认服务器设置为NAME,使用初始服务器 5. root 将当前默认服务器设置为根服务器 6. ls [opt] DOMAIN [> FILE] 列出DOMAIN中的地址(可选: 输出到文件 FILE)
这个命令是要求name server将其负责的zone内容show出来, 这个动作相当于name server的整份记录从server端传回给nslookup这个程序, 这种传回整个zone的动作叫作zone transfer
1) -a列出规范名称和别名2) -d列出所有记录3) -t TYPE列出给定 RFC 记录类型3.1) A3.2) CNAME3.3) MX3.4) NS3.5) PTR等的记录 7. view FILE 对 'ls' 输出文件排序,并使用 pg 查看 8. exit 退出程序

dig命令解释

Dig是linux中的域名解析工具,Dig是domain information groper的缩写

Usage:  dig [@global-server] [domain] [q-type] [q-class] {q-opt}{global-d-opt} host [@local-server] {local-d-opt}[ host [@local-server] {local-d-opt} [...]]
1. domain
要查询的域名
2. q-class  1) IN(默认)2) HS3) CH
3. q-type1) A(默认)2) ANY3) MX4) NS5) SOA6) HINFO7) AXFR8) TXT
4. q-opt1) -x dot-notation     (shortcut for reverse lookups)2) -i                  (use IP6.INT for IPv6 reverse lookups)3) -f filename         (batch mode)4) -b address[#port]   (bind to source address/port)5) -p port             (specify port number)6) -q name             (specify query name)7) -t type             (specify query type)8) -c class            (specify query class)9) -k keyfile          (specify tsig key file)10) -y [hmac:]name:key  (specify named base64 tsig key)11) -4                  (use IPv4 query transport only)12) -6                  (use IPv6 query transport only)13) -m                  (enable memory usage debugging)
5. d-opt    
格式为: +keyword[=value],keyword的可选值如下1) +[no]vc             (TCP mode)2) +[no]tcp            (TCP mode, alternate syntax)3) +time=###           (Set query timeout) [5]4) +tries=###          (Set number of UDP attempts) [3]5) +retry=###          (Set number of UDP retries) [2]6) +domain=###         (Set default domainname)7) +bufsize=###        (Set EDNS0 Max UDP packet size)8) +ndots=###          (Set NDOTS value)9) +edns=###           (Set EDNS version)10) +[no]search         (Set whether to use searchlist)
  给你的公众服务器提供清楚的统计信息
11) +[no]showsearch (Search with intermediate results)12) +[no]defname (Ditto)13) +[no]recurse (Recursive mode)14) +[no]ignore (Don't revert to TCP for TC responses.)15) +[no]fail (Don't try next server on SERVFAIL)16) +[no]besteffort (Try to parse even illegal messages)17) +[no]aaonly (Set AA flag in query (+[no]aaflag))18) +[no]adflag (Set AD flag in query)19) +[no]cdflag (Set CD flag in query)20) +[no]cl (Control display of class in records)21) +[no]cmd (Control display of command line)22) +[no]comments (Control display of comment lines)23) +[no]question (Control display of question)24) +[no]answer (Control display of answer)
  查询的结果
25) +[no]authority (Control display of authority)
  告诉我们哪个DNS服务器给我们提供权威的答案
26) +[no]additional (Control display of additional)
  包含了列出的权威DNS的IP地址
27) +[no]stats (Control display of statistics)
  输出包含了查询的统计数据
28) +[no]short (Disable everything except short form of answer)29) +[no]ttlid (Control display of ttls in records)30) +[no]all (Set or clear all display flags)31) +[no]qr (Print question before sending)32) +[no]nssearch (Search all authoritative nameservers)33) +[no]identify (ID responders in short answers)34) +[no]trace (Trace delegation down from root)35) +[no]dnssec (Request DNSSEC records)36) +[no]nsid (Request Name Server ID)37) +[no]sigchase (Chase DNSSEC signatures)38) +trusted-key=#### (Trusted Key when chasing DNSSEC sigs)39) +[no]topdown (Do DNSSEC validation top down mode)40) +[no]multiline (Print records in an expanded format) 6. global d-opts and servers (before host name) affect all queries. 7. local d-opts and servers (after host name) affect only that lookup.1) -h: (print help and exit)2) -v: (print version and exit)

常用的dig命令

1. 查找yahoo.com的A记录:
dig yahoo.com A +noall +answer
(注意:TTL的单位为秒s)
2. 查找yahoo.com MX记录的列表: dig yahoo.com MX +noall +answer3. 查找yahoo.com的权威DNS: dig yahoo.com NS +noall +answer4. 查询上面所有的记录: dig yahoo.com ANY +noall +answer5. 在现在这种IPv4和IPV6混用的情况下,你也可以使用AAAA的选项查询主机的IPv6 AAAA记录: dig www.isc.org AAAA +short6. 答案的精简查询 dig +nocmd www.baidu.com mx +noall +answer7. 用-x的选项查找IP地址的主机名 dig -x 8.8.8.8 +short8. 显式指定NS服务器 dig @ns1.google.com www.google.com9. 查询大量的主机名 dig -f /path/to/host-list.txt10. 找到最新的named.root文件 dig +nocmd . NS +noall +answer +additional11. 跟踪DNS解析过程 dig gentoo.de +trace 可以在dig输出的头部分看到根DNS,然后找到负责解析所有*.de的DNS,最后找到gentoo.de的域名IP12. 用dig查看zone数据传输 dig @server www.baidu.com AXFR13. 用dig查看zone数据的增量传输 dig @server www.baidu.com IXFR=N14. 用dig查看反向解析 dig -x 8.8.8.8 @server15. 查找一个域的授权dns服务器 dig www.baidu.com +nssearch

0x2: Anti-DNS Zone Transfer配置

正常情况下,在一个信任网域下,将DNS资料列出是没有问题的(即正常的主从服务器的Zone Transfer),但是若是能由外界进行任意查询,那将衍变为具有危险的行为,因此,对DNS服务器进行Zone Transfer安全配置是十分重要的。对于DNS的安全加固,大致可以从以下几个方面入手:

1. 控制允许可以向DNS服务器提出查询请求的主机:
allow-query { myAddresses; trusted; };
如果你没有定义选项 allow-query ;那么Bind默认会允许所有的来访者都可以查询这个DNS服务器,相当于:
allow-query { any; };2. 控制允许可以进行迭代解析或查询的主机列表:
allow-recursion { match-list; };
如果你没有定义选项 allow-recursion ; 那么Bind默认会允许所有可以访问DNS的来访者都可以进行迭代查询3. 定义可以与主DNS服务器进行数据交流的辅助DNS服务器的ip地址,即限制zone transfer的访问
allow-transfer { match-list; };
允许这些match-list中的辅助DNS与主DNS服务器进行数据的交流与传送。
例如:我的主DNS服务器192.168.68.128;辅助DNS服务器192.168.68.2,允许它们进行数据交流:
allow-transfer { 192.168.68.2; };:
如果你没有定义选项 allow-transfer ;那么Bind默认会允许所有的辅助DNS服务器与主DNS服务器进行数据交流4. 定义主DNS服务器的对客户的请求查询失败时的行为:
forwarders { match-list; };
forward first | only;
选项forwarders定义了当DNS服务器应答失败时,就将客户端的请求转发到match-list中的其他服务器;
选项forward 定义DNS服务的转发类型:first 是优先转发上述定义的DNS服务器;only是只会转发到上述定义的DNS服务器;
如果你没有定义选项 forwarders的选项 ;那么Bind默认不做任何转发动作。

 

4. DNS记录类型

0x1: TXT记录

TXT记录是DNS记录的一种类型,可向您网域外部的源提供文本信息。该文本可以是用户可读型文本或机读型文本,并可用于多种用途
可以向您网域的DNS设置中添加TXT记录以验证网域所有权并实施多种电子邮件安全措施
TXT记录可包含任何文本值,具体取决于它的用途(它由DNS管理员自己定制)。例如,Google使用TXT记录来验证您拥有希望用于我们企业服务的网域,其值为"google-site-verification=rXOxyZounnZasA8Z7oaD3c14JdjS9aKSWvsR1EbUSIQ"。之后,Google会查询您的网域以确定该TXT记录是否已生效。如果TXT记录已生效,那么Google会知道管理员有权访问该网域的DNS设置,那么管理员一定拥有该网域

1. TXT格式

To store new types of information, the experimental RFC 1464 suggests a structured format in TXT data fields. The format consists of the attribute name followed by the value of the attribute. The name and value are separated by an equals sign (=)
The general syntax is:

<owner> <class> <ttl> TXT "<attribute name>=<attribute value>"

Example:

name  ttl  class   rr     text
joe        IN      TXT    "Located in a black hole"

2. TXT记录用途

1. 验证网域所有权
2. 使用SPF向发件人授权
3. 使用DKIM添加电子邮件数字签名
4. 使用DMARC阻止外发垃圾邮件
//按照spf格式在dns中增加一条txt类型的记录,将提高该域名的信誉度,同时可以防止垃圾邮件伪造该域的发件人发送垃圾邮件

3. Sender Policy Framework(SPF)

"v=spf1 mx -all"Allow domain's MXes to send mail for the domain, prohibit all others.
"v=spf1 -all"The domain sends no mail at all.
"v=spf1 +all"The domain owner thinks that SPF is useless and/or doesn't care.

0x2: SOA记录

任何DNS系统返回第一个域名记录就是SOA(Start of Authority)

在域名配置中,SOA记录格式如下
IN  SOA     nameserver.place.dom.  postmaster.place.dom. 
(1           ; serial number 
3600         ; refresh   [1h] 
600          ; retry     [10m] 
86400        ; expire    [1d] 
3600 )       ; min TTL   [1h]使用"dig"时的返回格式为 
gddos.com.        300    IN    SOA    ns1cwy.name.com. support.name.com. 1 10800 3600 604800 300其中的每个部分含义如下
1. serial number(序列号): 是域名记录的版本,每更改一次域名的任何DNS记录,版本号就会自动加一,这时secondary dns就会知道DNS记录发生更改,以便重新同步
2. refresh(刷新时间): 告诉secondary dns多久应该查询primary dns,看看DNS记录是否有更新。每次查询时,secondary dns会向primary dns请求SOA记录。如果记录中的serial number跟secondary dns已有的序列号不一样,则会向primary dns请求传送域名的当前的DNS记录
3. retry(重试时间): 如果想primary dns请求传送域名当前的DNS记录失败后,间隔重试时间后再次重试请求。一般来说,retry小于refresh 
4. expire(过期时间): 在过期时间之前,secondary dns会继续请求传送DNS记录,并且在此时间里,secondary dns会根据已有的记录应答相关的DNS查询。如果到了过期时间后,secondary dns会停止应答该域名的DNS查询 
5. min TTL(最小TTL): 域名所有记录的最小生存时间值。当用户DNS查询到记录后,将存在缓存中,直到至少过了这个时间才将缓存刷新重新查询 
6. Negative caching TTL: 有的DNS服务器还会有Negative caching TTL,就是当用户DNS查询到无此域名记录(NXDOMAIN)时,将把这个"没有此域名的记录"的声明保存在缓存中的时间 

Relevant Link:

https://support.google.com/a/answer/2716800?hl=zh-Hans 
http://mxtoolbox.com/TXTLookup.aspx 
https://en.wikipedia.org/wiki/TXT_record
http://www.openspf.org/SPF_Record_Syntax
http://blog.csdn.net/qingchn/article/details/9719545

 

Copyright (c) 2014 LittleHann All rights reserved

 

转载于:https://www.cnblogs.com/LittleHann/p/3828927.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【blade利刃出鞘】一起进入移动端webapp开发吧

前言 在移动浪潮袭来的时候&#xff0c;小钗有幸进入框架组做webapp框架开发&#xff0c;过程中遇到了移动端的各种坑&#xff0c;也产生了各种激情&#xff0c;就我们公司的发展历程来说 第一阶段&#xff1a;使用传统方式开发移动站点&#xff0c;少量引入HTML5元素 第二阶段…

Android静态图片人脸识别的完整demo(附完整源码)

Demo功能&#xff1a;利用android自带的人脸识别进行识别&#xff0c;标记出眼睛和人脸位置。点击按键后进行人脸识别&#xff0c;完毕后显示到imageview上。 第一部分&#xff1a;布局文件activity_main.xml [html] view plaincopyprint?<RelativeLayout xmlns:android&qu…

图论:最短路径搜索--Dijkstra算法(c代码实现)

最近因为辞职&#xff0c;有不少闲功夫&#xff0c;重温下数据结构&#xff0c;顺便练练手。今天说说最短路径搜索算法中的Dijkstra原理和实现。 一&#xff1a;简介 这个算法用于解决图中单源最短路径问题。所谓单源节点是指给定源节点&#xff0c;求图中其它节点到此源节点的…

C++多线程快速入门(五)简单线程池设计

目录设计思路主线程运行逻辑task以及taskpool设计详细流程讲解完整代码打印结果往期回顾设计思路 线程池实际上就是一组线程&#xff0c;当我们需要异步执行一些任务时&#xff0c;经常要通过OS频繁创建和销毁线程&#xff0c;不如直接创建一组在程序生命周期内不会退出的线程…

C++网络编程快速入门(一):TCP网络通信基本流程以及基础函数使用

目录流程概述服务器端代码实现客户端代码实现函数和结构讲解sockaddr_in和sockaddrsocket &#xff1a; 创建一个socket连接bind &#xff1a;绑定地址以及端口号问题流程概述 客户端与服务器之间的网络通信基本原理如下所示&#xff0c;复杂一点的架构可能会添加消息中间件。…

使用前端框架Foundation 4来帮助简化响应式设计开发

日期&#xff1a;2013-3-12 来源&#xff1a;GBin1.com Foundation是一套使用广泛的前端开发套件&#xff0c;可以帮助你快速的网站。最近ZURB发布了一个新版本的Foundation 4前端框架&#xff0c;能够有效的帮助你快速的开发响应式的网站。 和另外一个套知名的前端框架BootSt…

C++网络编程快速入门(二):Linux下使用select演示简单服务端程序

目录select参数解释select使用规范select使用缺点基本流程实例代码通信效果演示往期文章select参数解释 extern int select (int __nfds, fd_set *__restrict __readfds,fd_set *__restrict __writefds,fd_set *__restrict __exceptfds,struct timeval *__restrict __timeout)…

Android转载一:Android文件命名规范

REF&#xff1a;http://blog.csdn.net/gulianchao/article/details/23391651 (一) Layout命名 1&#xff0e;contentview命名&#xff1a;activity_功能模块.xml 例如&#xff1a;activity_main.xml、activity_more.xml 2&#xff0e;Dialog命名&#xff1a;dialog_描述.xml …

C++网络编程快速入门(三):阻塞与非阻塞式调用网络通信函数

目录阻塞与非阻塞定义send与recvconnect一些问题为什么要将监听socket设置为非阻塞阻塞与非阻塞定义 阻塞模式指的是当前某个函数执行效果未达预期&#xff0c;该函数会阻塞当前的执行线程&#xff0c;程序执行流在超时时间到达或者执行成功后恢复原有流程。非阻塞模式相反&am…

socket 端口和地址复用

https://blog.csdn.net/weibo1230123/article/details/79978745 https://blog.csdn.net/weixin_42157432/article/details/115560824 在linux socket网络编程中&#xff0c;大规模并发TCP或UDP连接时&#xff0c;经常会用到端口复用&#xff1a; int opt 1; if (setsockopt…

MyEclipse老是弹出problem occurred窗口

有的时候是因为jsp页面中的java脚本有误&#xff0c;比如说<% String name"";>就会出现错误&#xff0c;因为结束标签少了一个百分号&#xff05;。转载于:https://www.cnblogs.com/passer1991/archive/2013/03/15/2961624.html

Mysql中代替like模糊查询的一种方法

使用Mysql的函数instr,可代替传统的like方式查询,并且速度更快。 instr函数&#xff0c;第一个参数是字段&#xff0c;第二个参数是要查询的串&#xff0c;返回串的位置&#xff0c;第一个是1&#xff0c;如果没找到就是0. 例如&#xff1a; select username from prefix_user …

Linux网络故障排查命令(ifconfig、ping、telnet、netstat、lsof、nc、curl、tcpdump)

目录ifconfig-s&#xff0c;显示网卡信息的精简列表-a、up、down将IP地址绑定到某个网卡&#xff0c;以及解绑操作pingtelnetnetstatlsofnc模拟一个服务器程序和客户端程序进行通信发送文件curltcpdump参数连接一个正常的监听端口ifconfig 该命令用来查看当前系统的网卡和IP地…

My Oracle Support Metalink站点最近将放弃flash界面转而使用ADF HTML

根据oracle官方博客的报道《The New My Oracle Support User Interface (HTML-based) 》&#xff0c; MY ORACLE SUPPORT开发team会在最近将support.oracle.com站点从原来的flash界面迁移到基于ADF HTML的用户界面上。 实际上在2012年的 January 27&#xff0c; MOS开发team就…

心跳检测以及应用层心跳包机制设计

博主联系方式&#xff1a; QQ:1540984562 微信&#xff1a;wxid_nz49532kbh9u22 QQ交流群&#xff1a;750313950&#xff08;嵌入式方向&#xff09; QQ交流群&#xff1a;856398158&#xff08;后端方向&#xff09; 目录心跳检测应用场景死连接情况保活传递有效业务数据心跳包…

一个DBA的工作写照

一个DBA的工作写照&#xff0c; 一个DBA的内心 Know the DBA Mind! DBA也是 IT民工啊&#xff0c; 民工何苦为难民工&#xff01; 转载于:https://www.cnblogs.com/macleanoracle/archive/2013/03/19/2968227.html

UVALive 6257 Chemist's vows --一道题的三种解法(模拟,DFS,DP)

题意&#xff1a;给一个元素周期表的元素符号&#xff08;114种&#xff09;&#xff0c;再给一个串&#xff0c;问这个串能否有这些元素符号组成&#xff08;全为小写&#xff09;。 解法1&#xff1a;动态规划 定义&#xff1a;dp[i]表示到 i 这个字符为止&#xff0c;能否有…

hdu 1025(最长非递减子序列的n*log(n)求法)

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1025 经典题。。。最长非递减序列的n*log(n)求法。。。orz... View Code 1 #include<iostream>2 const int N500007;3 using namespace std;4 int city[N];5 int dp[N];//dp[i]保存的是长度为i的最长不降…

消息队列重要机制讲解以及MQ设计思路(kafka、rabbitmq、rocketmq)

目录《Kafka篇》简述kafka的架构设计原理&#xff08;入口点&#xff09;消息队列有哪些作用&#xff08;简单&#xff09;消息队列的优缺点&#xff0c;使用场景&#xff08;基础&#xff09;消息队列如何保证消息可靠传输死信队列是什么&#xff1f;延时队列是什么&#xff1…

数据库归档模式

1、在sys身份下登陆oracle&#xff0c;执行命令archive log list; SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence …