DNS安全演进:从DNSSEC到DoH的全面解析

本文深入探讨DNS安全的发展历程,详细分析DNSSEC、DNSCrypt、DoT和DoH四种安全协议的实现原理、优缺点及应用场景,帮助读者理解如何保护DNS查询的隐私和安全。

DNS安全演进的世界

作者:Tony Perez | 2019年3月2日

最近我在一个活动中聆听ICANN和CloudFlare代表关于DNS安全的演讲时意识到,我们中很少有人真正理解或欣赏其细微差别。过去五年中,互联网最后几个未被触及的基础组件之一出现了许多令人好奇且有趣的发展。

DNS基础

域名系统(DNS)由多个不同的域名服务器(DNS)组成。我写过一篇文章,说明了整个DNS生态系统如何协同工作。还有一个更酷的图解说明DNS的工作原理。

请求如何遍历DNS

本文将重点介绍我们都会与之交互但很少思考的DNS部分——DNS解析器(递归DNS)。

DNS为何对您重要

DNS解析器(递归DNS)是我们访问网络时都要经过的大门——也称为"第一站"。

假设您想在移动设备上打开一个应用程序,或在Mac或Windows机器上访问最喜欢的社交平台,无论哪种情况,您都是通过发出称为DNS查询的基本请求来开始整个交换过程。这开始了您的整个在线交换,无论是通过电子邮件、移动应用程序还是浏览器。

我们都有能力控制要使用的DNS解析器——但很少有人考虑这个选项。就个人而言,我使用CleanBrowsing并分享我在家中使用的配置,为家人创建安全的在线体验。

对大多数人来说,我们利用互联网服务提供商(ISP)或所在网络提供的默认DNS解析器。假设您去当地的咖啡店,他们提供免费Wi-Fi,或者您在办公室使用他们提供的Wi-Fi。无论哪种情况,以及更多情况下,当您连接到互联网时,您的机器都会被告知要使用什么DNS(这是默认设置)。

这些DNS解析器是您通往互联网的网关,因此它们是攻击者的主要目标。它们有能力做好事,也有能力做坏事。对于许多在线用户来说,不可能知道请求是否被拦截(如许多政府或公司所见),或者浏览器呈现的是否是正确的网站。

DNS安全选项

尽管DNS是互联网的关键协议,每个设备和在线人员都依赖它,但它从未为安全而构建,并且是少数几个尚未充分更新以应对新时代安全威胁和隐私问题的协议之一。

技术专家对现有系统的最大问题包括:

  • 易受监控(隐私问题);
  • 易受伪造(安全问题);

这个话题重新受到很多关注,但这并不是新问题。这个对话已经进行了很长时间,最大的问题仍然是消费者和组织的广泛分发和采用。可用选项的广泛范围使问题进一步复杂化。

如果您想控制DNS,这里有几个选项:

  • DNS安全扩展(DNSSEC)
  • DNSCrypt
  • DNS over HTTPS(DOH)
  • DNS over TLS(DOT)

其中三个相似,一个不同;我将分享它们并努力让您基本了解这些选项。

DNS安全扩展(DNSSEC)

DNSSEC与其他四个选项不同。它于2004年通过RFC 3833引入。对话可以追溯到1997年。

它旨在通过确保攻击者无法在请求时伪造DNS数据来保护DNS解析器(即,它试图解决伪造问题)。它通过在整个过程中添加称为密码学的东西来实现这一点。

这些新的加密签名允许系统通过促进权威DNS区域文件内DNS记录的更好认证来引入新的"信任"层。

例如,如果您正在寻找perezbox.com,作为域所有者,我需要在区域文件上启用DNSSEC,以便在本地DNS解析器尝试找到它时可以对请求进行认证。有一个很长的图解说明这是什么样子,但简而言之,它在整个过程中创建了所谓的"信任链"。

不幸的是,DNSSEC的采用率极低(截至2017年12月,其采用率不到.com、.net和.org域的约1%——来源:APIC)。其采用的最大障碍是其配置。我不会在这里详细说明原因,但要理解它涉及与注册商和注册局合作,这是一个完全不同的问题(并非所有注册商都支持它)。最终结果是配置不良的DNSSEC,导致站点无法访问。

没有人想要一个无法访问的站点。:)

DNSCrypt

DNSCrypt是另一种动物。该协议允许您控制如何与互联网通信。DNSSEC是验证您得到的响应是否正确,而DNSCrypt允许您以不允许任何人看到您请求的方式与外部通信。

DNSCrypt协议旨在通过为DNS流量做SSL/TLS为HTTP所做的事情——将流量包装在加密隧道中——来解决监控问题。通过这个安全隧道,任何监控网络的人都无法拦截或操纵通信。与SSL/TLS不同,DNSCrypt使用不同的加密库,称为椭圆曲线密码学(特别是Curve25519)。为了使这工作,您的DNS解析器也必须支持DNSCrypt。

以下是您可能从DNS解析器获得的示例(由CleanBrowsing为其免费家庭过滤器提供的示例):

对于IPv4流量:sdns://AQMAAAAAAAAAFDE4NS4yMjguMTY4LjE2ODo4NDQzILysMvrVQ2kXHwgy1gdQJ8MgjO7w6OmflBjcd2Bl1I8pEWNsZWFuYnJvd3Npbmcub3Jn

与在端口53上运行的传统DNS不同,它默认为端口443(与HTTPS相同),并且可以在UDP或TCP协议上运行。

为什么这很重要?

好吧,假设您在办公室,您真的想访问您最喜欢的任何站点,但它被阻止了。您现在可以绕过任何组织控制来访问该站点,因为它看起来像正常的网络流量。

好消息是您的连接是安全的,坏消息是大多数组织没有控制措施来帮助防御这种情况。这就是我们这个时代的重大安全难题之一。是的,我们可以保护通信,但现在我们引入了一种绕过控制的方法。

DNS over TLS

因为DNSCrypt对社区来说不够好,我们决定通过引入DNS over Transport Layer Security(TLS)(DOT)来真正让事情变得有趣,于2016年通过RFC 7858引入。

与DNSCrypt类似,它旨在帮助解决监控问题(即隐私),但工作方式略有不同。

首先,它使用TLS协议进行加密,这与HTTPS使用的相同。很酷。其次,它仅在TCP上工作。第三,它需要使用端口853。与DNSCrypt类似,为了使用DOT,您的解析器必须支持它。

以下是您可能从DNS解析器获得的示例(由CleanBrowsing为其免费家庭过滤器提供的示例):

域名:family-filter-dns.cleanbrowsing.org
IPv4地址:185.228.168.168:853185.228.169.168:853
IPv6地址:[2a0d:2a00:1::]:853[2a0d:2a00:2::]:853

这真的很酷,因为我们现在有一种安全通信的方式,同时不牺牲现有的安全控制。有道理。

DNS Over HTTPS(DOH)

自然,既然其他人都在做,浏览器决定通过引入自己的方法——DNS over HTTPS(DOH)——来参与创建另一种解决监控问题(即隐私)的方法。该标准现已通过RFC 8484批准。

Mozilla Firefox和CloudFlare特别合作构建和测试DOH的想法。他们的目标是帮助确保真正的隐私,同时引入改进的性能。

DOH配置类似于DNSCrypt和DOT,因为它旨在确保请求不能被拦截。不同之处在于它利用HTTPS协议(顺便说一下,它也使用TLS)。

HTTPS和TLS如何工作.. :)

以下是您可能从DNS解析器获得的示例(由CleanBrowsing为其免费家庭过滤器提供的示例):

URL:https://doh.cleanbrowsing.org/doh/family-filter/sdns://AgMAAAAAAAAAAAAVZG9oLmNsZWFuYnJvd3Npbmcub3JnEy9kb2gvZmFtaWx5LWZpbHRlci8

DOH与DNSCrypt有相同的挑战,因为它非常容易用于绕过组织控制。

理解各种选项

不可否认,改变DNS的工作方式是必要的。我认为真正的争议在于各种选项及其各种影响(根据您对世界的看法,所有选项都是合理的)。不幸的是,当我们无休止地辩论这些问题时,我们只会延迟进展和采用,并为日常消费者引入困惑。

我可以欣赏和理解争论的双方。

DNS劫持每天由世界各地的ISP和政府进行。您是否曾在Frontier网络上输入错误的域名?是否注意到返回的搜索页面与您预期的完全不同?在国外漫游时,是否想知道为什么某些站点无法访问?是否尝试更改本地DNS解析器,却发现您的ISP不允许您定义自己的?

这些是我自己经历过的真实世界示例,我相信你们中的许多人无论是否认识到,都经历过。

现在转换您的角色,想象自己是大型组织的网络工程师。您的任务是保护网络。您知道DNS是基础设施的关键部分。但现在,您无法检测恶意的外部请求。这也是一个真正的问题。

这将是未来几年的大哲学辩论,这将使我们技术专家在观看关于该主题的辩论时咯咯笑,并为那些密切参与的人带来极大的挫败感。

这不包括技术挑战,如使用TCP及其对三方握手的依赖,以及DNS和HTTPs流量之间的潜在冲突。幸运的是,有一些非常聪明的工程师正在研究这个问题,因此我预计随着时间的推移,这可能不是问题。

一些快速要点

以下是一些有趣的笔记,您可以利用它们来理解差异:

  • DNSSEC是关于认证的,不是隐私。推动变革的担忧是监控(隐私)和伪造(安全);
  • DNSCrypt是第一个利用HTTPS端口的,但使用不同的加密;
  • DOT用于操作系统,DOH用于浏览器(对JavaScript非常好);
  • DoT在端口853上运行,DOH在正常端口443下通过HTTPS运行;
  • DoT和DoH都没有指定用户应该如何设置协议,或者他们是否可以甚至告诉协议正在运行;
  • DoT似乎没有争议,因为人们假设计算机会配置为使用用户已经信任的相同递归解析器;
  • DoH很快变得有争议,因为FireFox使用不一定受用户信任的云提供商进行了测试;

我的个人偏好

我喜欢并偏好DNSCrypt。尝试它的最简单方法是使用基于NIX的机器的DNSCrypt-Proxy,或Windows的Simple DNSCrypt。

就个人而言,我对浏览器控制我能做什么和不能做什么有问题。他们的意图总是围绕隐私和安全,但不知何故总是找到进入他们的货币引擎的方式(出现在我的社交平台、网站访问、电子邮件和搜索结果中)。

权力和控制的分离是有目的的。

谁会赢并成为默认?

如果我是赌徒,我可能会把钱押在DOH上。大多数DNS更改的最大问题是采用,它必须在环境中是默认的——日常用户不想浪费脑力思考这些东西。DOH有一个优势,因为浏览器的普及(Mozilla Firefox已经在这样做)。

DOT有战斗的机会,但前提是操作系统默认部署它——到目前为止还没有发生。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计