域名系统(DNS)就如同互联网的电话簿:它告诉计算机向哪里发送信息,从哪里检索信息。可惜的是,它也接受互联网提供给它的任何地址,而不会进行任何询问。
DNSSEC(域名系统安全扩展)是 Internet 工程任务组(IETF)为了解决域名解析过程中的威胁(例如缓存中毒攻击和 DNS 欺骗),对确保由域名系统(DNS)中提供的关于互联网协议网络使用特定类型的信息规格套件。它是对域名服务器 提供给 DNS 客户端(解析器)的 DNS 数据来源进行认证,并验证不存在性和校验数据完整性验证。通过采用基于公共密钥加密的数字签名,DNSSEC增强了DNS数据验证强度。
为什么使用DNSSEC?
DNS 设计于上世纪 80 年代,当时互联网规模小得多,安全性并非首要设计考虑因素。因此,当递归解析器向权威域名服务器发送查询时,解析器无法验证响应真实性。解析器仅可检查做出响应的 IP 地址与解析器发送初始查询的 IP 地址是否相同。但是,依赖响应对应的源 IP 地址并非强验证机制,因为 DNS 响应数据包的源 IP 地址很容易仿冒或伪造。
鉴于最初设计 DNS 时,解析器无法轻易识别某一项查询的仿冒响应。攻击者很容易冒充看似来自权威服务器的响应,继而伪装成解析器最初查询的权威服务器。换言之,攻击者可以悄无声息地将用户重定向至潜在恶意网站。
举一个例子:2014 年 9 月,CMU 的研究人员发现本应通过 Yahoo!、Hotmail 和 Gmail 服务器发送的电子邮件通过流氓邮件服务器进行路由。这是因为攻击者利用了域名系统(DNS)中存在数十年的漏洞——由于这个漏洞的存在,DNS 未经检查凭据就会接受应答。
这个问题的解决方案之一是DNSSEC的协议。通过提供身份验证,它在 DNS 之上添加了一个信任层。
当 DNS 解析器寻找www.dnspod.cn 时,.cn名称服务器帮助解析器验证针对 dnspod.cn返回的记录,而dnspod.cn名称服务器帮助验证针对www.dnspod.cn返回的记录。根DNS 名称服务器帮助验证 .cn,而根目录发布的信息将通过彻底的安全程序(包括“根签名仪式”)进行审核。
DNSSEC运作方式概述
对数据来源的校验(权威DNS的证书校验):DNSSEC 通过使用私钥加密来为授权区域数据进行数字签名,让互联网社区免受伪造 DNS 数据的危害。DNSSEC 验证能够向用户确保数据来自规定的来源,并且在传输过程中未遭修改。DNSSEC 还可以证明某个域名不存在。简单的说,DNSSEC依靠数字签名保证DNS应答报文的真实性和完整性。
来自DNSSEC保护区的所有应答都经过数字签名。通过检验数字签名,DNS解析器可以核查信息是否与区域所有者发布的信息相同(未修改和完整),并确系实际负责的DNS服务器所提供。
对数据合法性的校验(数据未被篡改):最终用户想要访问网站时,首先会向递归服务器请求域名解析。递归服务器向授权服务器请求该记录后记录的同时,还会请求与该区域对应的 DNSSEC 密钥。使用该密钥,服务器可以验证其接收的地址记录是否与授权名称服务器上的记录一致。
如果递归服务器确定地址记录已被授权名称服务器发送并且在传输过程中未遭修改,递归名称服务器就会解析该域名,之后用户就可以访问该网站。上述过程称为验证。如果地址记录被更改或者不是来自规定的来源,那么递归名称服务器就不会允许用户访问欺诈地址。DNSSEC 还可以证明某个域名不存在。
因此,DNS 查询和响应可以避免中间人 (MITM) 攻击以及可能将互联网用户重定向至网络钓鱼和网址嫁接网站的伪造欺诈行为的危害。
DNSSEC如何添加DS记录
如何开启DNSSEC?
第一步:DNSPod 控制台开启 DNSSEC 服务。
[控制台]- DNS 解析 - 我的域名 - 域名设置 - DNSSEC ,点击开启,即可查看该域名的 DS 记录。
第二步:前往域名注册商控制台添加 DS 记录。
前面拿到的 DS 记录,还需在您域名注册商的控制台进行添加。(如果您的域名同样注册于腾讯云(DNSPod),则该步骤自动完成。)
注意:目前只有少数注册商支持 DNSSEC ,如果您域名所在注册商不支持,可先将域名转入腾讯云,转入后方便一站管理,更可一键开启(带转入链接)
PS:这个功能目前只有收费版才能开启,免费版解析无此功能。