DNS(三)DNS SEC(域名系统安全扩展)
工作需要今天了解了下DNS SEC,现把相关内容整理如下:
一、DNS SEC 简介
域名系统安全扩展(英语:Domain Name System Security Extensions,缩写为DNSSEC)是Internet工程任务组 (IETF)的对确保由域名系统 (DNS)中提供的关于互联网协议 (IP)网络使用特定类型的信息规格套件。它是对DNS提供给DNS客户端(解析器)的DNS数据来源进行认证,并验证不存在性和校验数据完整性验证,但不提供或机密性和可用性。---维基百科
简单来说,DNSSEC 就是一个对现有 DNS 协议进行安全完善的拓展。他在现有的 DNS 协议的基础上,增加了几个新的资源记录来达到这个目的。
DNSSEC 正式来说最早可以追溯到 RFC 2535,1999年3月来自 IBM 的工程师 D. Eastlake 提出了这个提案,不过要说到真正的实施部署,也是最近几年才开始的。2010年7月18日,根域名解析服务器才完成了 DNSSEC 的部署。
二、DNSSEC 新增的资源记录
这里所指的资源记录类似于我们现有的 A记录、CNAME记录以及TXT记录。
新增三种资源记录类型:RRSIG (Resource Record Signature)、DNSKEY (DNS Public Key)、DS (Delegation Signer)详细内容如下:
RRSIG (Resource Record Signature)
资源记录签名
该记录用于存放我们当前域名每一条记录的 DNSSEC 签名
格式
记录类型
- 算法类型 (参考附录「算法类型列表」)
- 标签 (泛解析中原先 RRSIG 记录的名称)
- 原 TTL 大小
- 签名失效时间
- 签名签署时间
- Key 标签 (一个简短的数值,用来迅速判断应该用那个 DNSKEY 记录来验证)
- 签名名称 (用于验证该签名的 DNSKEY 名称)
- 加密签名

DNSKEY (DNS Public Key)
该记录用于存放我们用于检查 DNSSEC 签名的公钥
格式
- 标识符 (Zone Key (DNSSEC密钥集) 以及 Secure Entry Point (KSK和简单密钥集))
- 协议 (固定值3 向下兼容)
- 算法类型 (参考附录「算法类型列表」)
- 公钥内容

DS (Delegation Signer)
该记录用于存放 DNSSEC 公钥的散列值
格式
- Key 标签 (一个简短的数值,用来迅速判断应该用那个 DNSKEY 记录来验证)
- 算法类型 (参考附录「算法类型列表」)
- 摘要类型 (创建摘要值的加密散列算法)(参考附录「摘要类型列表」)
- Digest: A cryptographic hash value of the referenced DNSKEY-record.

NSEC (Next Secure)
用于验证不存在的资源记录
三、DNS SEC签名过程
在这次的请求当中,我们可以看到服务器给我们返回了两条记录,一条是 A记录 另一条是 RRSIG 记录。A记录 就是我们想要的结果,而 RRSIG记录 正如上面所讲的,就是 DNS 权威服务器对这个解析结果的一个数字签名。DNS 权威服务器有相对应的私钥,他的作用就是用来对 DNS 请求结果进行数字签名生成数字摘要,然后原先的记录以及这条信息摘要就会一同发送给我们。数据包格式见下图:

那么,如何判断我们拿到的结果并没有被污染呢,我们就可以通过请求 DNSKEY 来获取对应的公开密钥。拿到了公开密钥之后,我们可以用他先来解密 RRSIG 的摘要,然后我们利用相同的散列算法在算一次摘要,然后将 RRSIG 的摘要和自己算出来的摘要进行比对,如果相同的话就说明这次查询结果是可信的.如下图所示:

再那么,你也许会问,为什么挟持者不把 RRSIG 以及 DNSKEY 记录也给污染了呢?这就涉及到了信任的问题。
这里用到的就是上面提到的 DS (Delegation Signer) ,DS 的值是从 imlonghao.com 的上一级 com 利用他的私钥对 imlonghao.com 的 DNSKEY 进行加密之后得到的。如果你有疑惑的话,可以拿 com 的公钥进行解密然后比对。如果还是不信的话,可以在去上一级根域名去查,然后通过类似的方法,比对 com 的记录是否正确。查询过程如下图所示:

下图是通过 DNSViz 生成的 DNSSEC 信任链

四、DNSSEC 的现状及问题
无法保证私密性
DNSSEC 并没有改变 DNS 基于 UDP 的通讯方式,数据流也都是明文传输,他所做的只是加上了一个数字签名,而中间人依然可以看到你请求了什么、结果是什么
挟持发生时不能告诉用户真正的记录
当用户的 DNS 被挟持的时候,用户通过检查 DNSSEC 签名,可以知道自己得到的并不是真正的解析结果,而是得到了一个被伪造的地址。但是,用户并不知道真正的解析结果是什么。
支持 DNSSEC 的递归服务器并不多
就目前国内而言,只有 CNNIC 的 4.2.2.4 支持,其他例如 114.114.114.114 以及 223.5.5.5 都不支持
而国外的话,谷歌在 2013 年 5 月 6 号宣布其公共 DNS 服务器 8.8.8.8 以及 8.8.4.4 支持 DNSSEC。
附录:
算法类型列表
1: RSA/MD5
2: Diffie-Hellman
3: DSA/SHA-1
4: Elliptic Curve
5: RSA/SHA-1
6: DSA-NSEC3-SHA1
7: RSASHA1-NSEC3-SHA1
8: RSA/SHA-256
10: RSA/SHA-512
12: RSA/SHA-512
13: ECDSA Curve P-256 with SHA-256
14: ECDSA Curve P-384 with SHA-384
252: Indirect
253: Private DNS
254: Private OID
摘要类型列表
1: SHA-1
2: SHA-256
3: GOST R 34.11-94
4: SHA-384
参考:
RFC2535 https://tools.ietf.org/html/rfc2535
我所理解的 DNSSEC https://imlonghao.com/41.html
DNSSEC原理简析及其实用性分析 https://www.lifetyper.com/2014/07/theory-of-dnssec-and-practical-analyze.html
在线数据包 https://www.cloudshark.org/captures/79e23786259b
DNS(三)DNS SEC(域名系统安全扩展)的更多相关文章
- DNS的查找机制、中文扩展,及其对手机扫描商标名称的支持
DNS的查找机制.中文扩展.及其对手机扫描商标名称的支持 DNS的查找机制 当DNS查找主机时,它首先在本域里查找,假设找不到则交给更上一级的域查找,直至顶级的域. 因此,假设计算机在北大域名(pku ...
- Linux系统下搭建DNS服务器——DNS原理总结
2017-01-07 整理 DNS原理 域名到IP地址的解析过程 IP地址到域名的反向域名解析过程 抓包分析DNS报文和具体解析过程 DNS服务器搭建和配置 这个东东也是今年博主参见校招的时候被很多公 ...
- 被动信息收集1——DNS基础 + DNS解析工具 NSLOOKUP使用
被动信息收集 特点: 基于公开渠道 与目标不直接接触 避免留下一切痕迹 标准參考--OSINT: 美国军方 北大西洋公约组织 名词解释 DNS--Domain Name System 域名系统 因特网 ...
- DNS及DNS有什么作用
什么是DNS,DNS有什么作用: DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直 ...
- DNS劫持 DNS污染
编号:1021时间:2016年6月24日17:23:50功能:DNS劫持 DNS污染URL:http://www.itechzero.com/dns-hijacking-dns-pollution-i ...
- python运维开发常用模块(三)DNS处理模块dnspython
1.dnspython模块介绍: dnspython(http://www.dnspython.org/)是Python实现的一个DNS 工具包,它支持几乎所有的记录类型,可以用于查询.传输并动态更新 ...
- DNS笔记 DNS区域集成到 Active Directory
可以将 DNS 区域集成到 Active Directory 中以提供增强的容错功能和安全性.OpenDNS Google Public DNS往返时间 (RTT) 远程访问服务 (RAS)域名与 ...
- LINUX中的DNS服务---DNS正向、反向和双向解析
一.DNS的正向解析 也就是域名解析为IP地址进行访问! 1)vim /etc/named.conf ----> 删除forwarders所在行 2)vim /etc/named.rf ...
- 【DNS】DNS的几个基本概念
一. 根域 就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯. 根域服 ...
随机推荐
- 一个简单的aJax——后台用servlet技术
示例:webDemo 一.客户端 <%-- Created by IntelliJ IDEA. User: Administrator Date: 15-12-2 Time: 上午5:41 To ...
- jQuery.serializeArray() 函数详解
serializeArray()函数用于序列化一组表单元素,将表单内容编码为一个JavaScript数组. serializeArray()函数常用于将表单内容序列化为JSON对象,以便于被编码为JS ...
- [转载]jquery tmpl使用方法
动态请求数据来更新页面是现在非常常用的方法,比如博客评论的分页动态加载,微博的滚动加载和定时请求加载等. 这些情况下,动态请求返回的数据一般不是已拼好的 HTML 就是 JSON 或 XML,总之不在 ...
- XSS与CSRF两种跨站攻击比较
XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery) 在那个年代,大家一般用拼接字符串的方式来构造动态SQL 语 ...
- PHP5 session 详解
http协议是WEB服务器与客户端(浏览器)相互通信的协议,它是一种无状态协议.所谓无状态,指的是不会维护http请求数据,http请求是独立的,非持久的.而越来越复杂的WEB应用,需要保存一些用户状 ...
- JavaScript 踩坑心得— 为了高速(下)
一.前言 本文的上一篇 JavaScript 踩坑心得- 为了高速(上) 主要和大家分享的是 JavaScript 使用过程中的基本原则以及编写过程中的心得分享,本文主要和大家聊聊在各个使用场景下的 ...
- 一个批量转换jtl文件的shell
最近在项目中遇到了批量转换jmeter测试结果jtl的问题,整了一个脚本,记录如下: #bin/sh filelist=`ls jtl` # 将jtl目录的所有文件列表读取并存入变量 for file ...
- [itint5]环形最大连续子段和
http://www.itint5.com/oj/#9 一开始有了个n*n的算法,就是把原来的数组*2,由环形的展开成数组.然后调用n次最大子段和的方法.超时. 后来看到个O(n)的算法,就是如果不跨 ...
- Android_Mars学习笔记_S01_001activity初步
一.activity初步 1.程序启动会先读配置文件AndroidManifest.xml找activity 2.activity会在onCreate方法中读取activity_main.xml文件, ...
- SwapEffect 枚举(定义交换效果)
由于创建设备时要用到这个值,所以在这里总结一下,以免以后再找. 首先引自msdn: Copy 只能为构成单个后台缓冲区的交换链指定此交换效果. 无论交换链是有窗口的还是全屏的,运行库都保证 Devic ...