DNS安全演进的世界
作者:Tony Perez | 2019年3月2日
最近在一次活动中,我聆听了ICANN和CloudFlare代表关于DNS安全的演讲,突然意识到我们中很少有人真正理解或欣赏其细微差别。过去五年中,互联网最后几个未被触及的基础组件之一——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:853
和 185.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有战斗的机会,但只有在操作系统默认部署它的情况下——迄今为止还没有发生。