DNS 安全协议
avatar
netbeen
November 06, 2021

前言

你在阅读本文前需要了解的基础知识:计算机网络基础知识、DNS 工作原理DNS 攻击原理

DNS 安全协议为了什么?

由于 DNS 原始协议设计不包含任何安全细节,为了夺回被 DNS 攻击剥夺的 ConfidentialityIntegrity ,逐渐形成了各种 DNS 安全协议,守护信息安全

DNSSEC

DNSSEC DNS Security Extensions ,DNSSEC 是目前最大规模部署的 DNS 安全协议(目前已经在 Root Nameservers 和大部分 TLD Nameservers 完成部署),它通过在 DNS Response 里新增RRSIGDNSKEYDS 等字段,包含了数字签名,保证了包内数据的 Integrity,但是这个协议完全没有办法保护 Confidentiality

DNSCrypt

DNSCrypt 完全推翻了 DNS 协议规范,重新设计,将数据进行加密和签名,这样就同时保证了 IntegrityConfidentiality , 但是可能是因为改动过大,导致未被规范化成 RFC 标准,所以各方的支持和兼容的力度都不是很大

DNS-over-TLS

DoT DNS-over-TLS ,不同于原始 DNS 使用裸 UDP 作为底层协议,DoT 使用了 TCP + TLS ,借助于 TLS 的能力,天然就保证了 IntegrityConfidentiality ,但是 DoT 使用的传送层端口是特殊的 853 ,也就意味着,虽然攻击者知道 DNS Query 的具体内容,也无法篡改数据,但是至少它也得到了一个关键信息,即该 Client 正在使用 DoT,也会造成一定程度的信息泄露

DNS-over-HTTPS

DoH DNS-over-HTTPS , DoH 就借力更加彻底了,直接使用 HTTPS 作为底层协议,这样借助于 TCP + TLS

  • HTTPS 三重 Buff 加成,也是天然就保证了 IntegrityConfidentiality 。相比 DoT ,DoH 因为多封装了一层流行协议 HTTP ,所以性能更差,但实现难度更低。此外,由于 DoH 使用的是 HTTPS 作为承载协议,因此它的传输层端口号也是 443 ,很难从大量的 HTTPS 请求中分离出 DoH 请求,也是这四个协议里安全防护力度最高的协议

Firefox 启用 DoH

设置 -> 常规 -> 网络设置 -> 设置… -> 勾选 启用HTTPS的DNS 并选择 Cloudflare

如何验证 DoH 是否生效

访问 https://1.1.1.1/help ,会看到如下输出,其中第二行内容即 DoH 是否生效的检测结果

COPY
Debug Information
Connected to 1.1.1.1        Yes
Using DNS over HTTPS (DoH)	Yes
Using DNS over TLS (DoT)    No
Using DNS over WARP         No
AS Name                     Cloudflare
AS Number                   13335
Cloudflare Data Center      LAX

总结

特性 DNSSEC DNSCrypt DNS-over-TLS DNS-over-HTTPS
保护 Confidentiality Y Y Y
保护 Integrity Y Y Y Y
有 RFC 协议规范 Y Y Y
传输层端口号 53 443 853 443
公共 DNS 支持(Cloudflare) Y Y Y
公共 DNS 支持(Google) Y Y Y
公共 DNS 支持(Open DNS) Y Y Y

参考文献

<TOC/>