一文了解 DoH(DNS-over-HTTPS)和DoT(DNS-over-TLS)

Posted 思源湖的鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文了解 DoH(DNS-over-HTTPS)和DoT(DNS-over-TLS)相关的知识,希望对你有一定的参考价值。

前言

DNS是将域名和IP映射的地址簿,详细原理可参见一文搞明白DNS与域名解析

DNS的重要性也让其成了黑客主要攻击对象,常见的DNS攻击包括:DNS劫持、缓存投毒、DNS欺骗等等,目的就是通过各种攻击手段将正常访问合法网站的用户,引到黑客控制的假冒服务器上,进行钓鱼欺诈、窃取用户凭证或敏感数据等非法行为

为了防止针对DNS系统的攻击,强化域名系统的安全性,互联网诞生了4种提升DNS安全性的协议,分别是DNSSEC,DNSCrypt,DNS over TLS(DoT),DNS over HTTPS(DoH)

其中DNSSEC和DNSCrypt较早出现,DoT和DoH很新,本文试图学习了解此二种DNS安全协议

一、概述

1、背景

默认情况下,DNS 查询和响应以明文形式(通过 UDP)发送,这意味着它们可以被网络、ISP 或任何能够监视传输的人读取。即使网站使用 HTTPS,也会显示导航到该网站所需的 DNS 查询。

这种隐私上的欠缺对安全有着巨大影响,在某些情况下也会影响人权;如果 DNS 查询不是私密的,则政府可以更轻松地审查互联网,而不良行为者也可以跟踪用户的网上行为
在这里插入图片描述
未经加密的普通 DNS 查询可以比作通过邮件发送的明信片:处理邮件的任何人都可能瞥见背面写的文字,因此邮寄包含敏感或私密信息的明信片不是明智的做法。

基于 TLS 的 DNS 和基于 HTTPS 的 DNS 是为加密明文 DNS 流量而开发的两个标准,可以防止恶意方、广告商、ISP 和其他人解读其数据。继续上面的比喻,这些标准的目的是将邮寄的明信片放在信封内,以便任何人都可以寄送明信片,而不必担心有人窥探到明信片的内容

在这里插入图片描述

2、四种提升DNS安全性的协议

(1)DNSSEC

DNSSEC是“Domain Name System Security Extensions”的缩写,即域名系统安全扩展,允许域名所有者对DNS记录进行数字签名,签名DNS记录的私有签名密钥通常仅由合法域名所有者持有,因此可防止未经授权的第三方修改DNS条目。

DNSSEC诞生于1997年,已经列入互联网标准化文档(参考RFC 4033、RFC 4034、RFC 4035),是最早大规模部署的DNS安全协议,所有的根域名服务器都已经部署了DNSSEC。

虽然DNSSEC已经诞生20年,但APNIC统计其采用率几乎不到10%,ICANN敦促业界普及使用DNSSEC协议。不过,DNSSEC协议仅提供真实性和完整性的校验,无法确保DNS流量通信的机密性。

(2)DNSCrypt

DNSCrypt是OpenDNS发布的加密DNS工具。与SSL将HTTP流量转换为HTTPS加密流量的原理相同,DNSCrypt也是将常规DNS流量转换为加密DNS流量,这样可以防止窃听和中间人攻击。它不需要对域名或它们的工作方式进行任何更改,只是提供了一种方法,安全加密客户端与DNS服务器之间的通信。在一定程度上,DNSCrypt比DNSSEC的保密性更强,因为DNSSEC只做数字签名的校验,而DNSCrypt既能加密DNS流量也能确保完整性。

不过,DNSCrypt客户端必须明确信任所选提供者的公钥,想使用哪个DNSCrypt服务器,就需要预先安装该服务器的公钥,而不是通过常规浏览器中受信任证书颁发机构列表获取信任;此外,DNSCrypt未申请列入标准化文档,在大规模的应用场景中存在一定的局限性。

(3)DNS over TLS (DoT)

DNS over TLS(简称DoT)是一项安全协议,它可以强制所有和DNS服务器相关的链接都使用TLS,已列入标准文档(参见 RFC 7858 和 RFC 8310)。

DNS over TLS 就是基于 TLS 隧道的域名协议,由于 TLS 本身已经实现了保密性与完整性,因此 DoT 自然也就具有这两项特性。DoT通过TLS协议及SSL/TLS证书(如:沃通SSL证书)实现安全加密和身份验证,实现保密性和完整性。

与前述两项协议相比,DNS over TLS更具优势:和DNSSEC相比,DNS over TLS具备了保密性;与 DNSCrypt相比,DNS over TLS已经形成标准化文档。不过,目前支持DNS over TLS 的客户端还不够多,主流浏览器还没有计划增加对DNS over TLS的支持。

(4)DNS over HTTPS (DoH)

很多人将DNS over HTTPS 和DNS over TLS混为一谈,事实上二者是两种不同的协议,DNS over TLS使用TCP作为基本的连接协议,而DNS over HTTPS使用HTTPS和HTTP/2进行连接;DNS over TLS有自己的端口853,DNS over HTTPS则使用HTTPS标准端口443。

不过,两种协议都是通过TLS加密和SSL/TLS证书(如:沃通SSL证书)来实现保密性与完整性。目前,DNS over HTTPS已经形成RFC标准化文档[RFC 8484],且受主流浏览器青睐

二、DoT

1、介绍

DNS over TLS(缩写:DoT)是通过传输层安全协议(TLS)来加密并打包域名系统(DNS)的安全协议,工作在853端口,由RFC 7858及RFC 8310定义,旨在防止中间人攻击与控制DNS数据以保护用户隐私
在这里插入图片描述

截至2018年,Cloudflare、Quad9与CleanBrowsing均向大众提供支持DNS over TLS的公共DNS解析服务

2018年4月,Google宣布android P将包含对DNS over TLS的支持。PowerDNS的DNSDist也宣布在其最新的1.3.0版本中添加了对DNS over TLS的支持。

BIND用户也可以通过stunnel代理提供DNS over TLS服务

2020年6月,苹果在WWDC大会宣布 ios 14 与 macOS 11 新增对加密DNS的支持,包括 DNS over HTTPS(DoH)与 DNS over TLS(DoT)

2、搭建

参见:

3、应用

(1)厂家

在这里插入图片描述

三、DoH

1、介绍

DNS over HTTPS(缩写:DoH)是一个进行安全化的域名解析方案,使用HTTPS协议和HTTP/2协议进行DNS解析请求,工作在443端口,由RFC 8484定义,旨在避免原始DNS协议中用户的DNS解析请求被窃听或者修改

DoH用于DNS解析器的递归DNS解析,解析器(DoH客户端)必须能够访问托管查询端点的DoH服务器。

在这里插入图片描述

基于HTTPS的DNS缺乏操作系统的本机支持, 因此,希望使用它的用户必须安装附加软件。 以下几种使用场景很常见:

  • 在应用程序中使用DoH实现:某些浏览器具有内置的DoH实现,因此可以绕过操作系统的DNS功能来执行查询。 缺点是应用程序可能无法通过错误配置或缺乏对DoH的支持来通知用户是否跳过DoH查询。

  • 在本地网络中的名称服务器上安装DoH代理:在此方案中,客户端系统继续使用传统(端口53或853)DNS来查询本地网络中的名称服务器,然后通过到达来通过DoH收集必要的回复 互联网中的DoH服务器。 此方法对最终用户是透明的。

  • 在本地系统上安装DoH代理:在此方案中,操作系统配置为查询本地运行的DoH代理。 与前面提到的方法相反,需要在希望使用DoH的每个系统上安装代理,这可能需要在更大的环境中付出很多努力。

  • 为操作系统安装DoH解析插件

在所有这些方案中,DoH客户端不直接查询任何权威名称服务器。 相反,客户端依赖于使用传统(端口53或853)查询的DoH服务器来最终到达权威服务器。 因此,DoH不具备端到端加密协议的资格,只有逐跳加密且仅在始终使用DNS over TLS时才有资格

2、搭建

参见

3、应用

(1)厂家

在这里插入图片描述

(2)浏览器

1、在 Firefox 62 及以上版本中开启 DNS over HTTPS

  • 在浏览器地址栏输入 about:config 然后打开,并同意警告信息。
  • 搜索 network.trr
  • 设置 network.trr.mode 值为2
  • 在 network.trr.uri 中填入上表中任一服务器,例如:https://1.1.1.1/dns-query
  • 设置好后,在地址栏输入 about:networking 可以看到具体通信情况

2、在 Chrome 中开启 DNS over HTTPS

  • 在浏览器地址栏输入 chrome://flags 然后打开
  • 搜索 DNS
  • 设置 Secure DNS lookups 值为 Enabled

3、在Chromium版Edge 中开启 DNS over HTTPS

  • 在浏览器地址栏输入 edge://settings/privacy 然后打开
  • 查找“安全性”一栏
  • 打开“使用安全的 DNS 指定如何查找网站的网络地址”

结语

对DoT和DoH都做了一定的了解

参考:

以上是关于一文了解 DoH(DNS-over-HTTPS)和DoT(DNS-over-TLS)的主要内容,如果未能解决你的问题,请参考以下文章

DNS 教父怒喷 DNS-over-HTTPS!

Google正式启用 DNS-Over-HTTPS 域名安全查询服务

Dojo 和 doh:测试特定主题订阅

Dojo DOH 怎么了?

markdown doh-client on mac #dns #doh

如何检查函数是不是在 DOH 中引发错误?