DNS 是在 30 多年前设计的,当时安全并不是互联网的主要关注点。如果没有额外的保护,MITM 攻击者就有可能欺骗记录并将用户引导到网络钓鱼站点。DNSSEC 阻止了这种情况,而且很容易开启。
DNS 本身并不安全
DNS 系统没有内置方法来验证对请求的响应不是伪造的,或者过程的任何其他部分没有被攻击者中断。这是一个问题,因为每当用户想要连接到您的网站时,他们都必须进行 DNS 查找以将您的域名转换为可用的 IP 地址。如果用户从不安全的地方(例如咖啡店)进行连接,则恶意攻击者可能会坐在中间并欺骗 DNS 记录。这种攻击可能允许他们通过修改 IP 地址 A 记录将用户重定向到恶意页面。
幸运的是,有一个解决方案——DNSSEC,也称为 DNS 安全扩展,可以解决这些问题。它通过使用公钥签署您的 DNS 记录来保护 DNS 查找。启用 DNSSEC 后,如果用户收到恶意响应,他们的浏览器可以检测到。攻击者没有用于签署合法记录的私钥,无法再伪造。
DNSSEC 的密钥签名一直沿链而上。当您连接到 时example.com,您的浏览器首先连接到由 IANA 管理的 DNS 根区域,然后连接到扩展的目录(.com例如),然后连接到您的域的名称服务器。当您连接到 DNS 根区域时,您的浏览器将检查由 IANA 管理的根区域签名密钥以验证它是否正确,然后是.com 目录签名密钥(由根区域签名),然后是您站点的签名密钥,即由.com 目录签名,不可伪造。
值得注意的是,在不久的将来,这不会是一个大问题。DNS 正在转移到 HTTPS,这将保护它免受各种 MITM 攻击,使 DNSSEC 变得不必要,并防止 ISP 监视您的浏览历史——这解释了康卡斯特为什么要游说反对它。尽管如此,它是 Chrome 和 Firefox 中的一项可选功能(Windows 很快将支持操作系统),因此您仍然希望在此期间启用 DNSSEC。
如何启用 DNSSEC
如果您正在运行一个网站,尤其是处理用户数据的网站,您需要打开 DNSSEC 以防止任何 DNS 攻击媒介。它没有任何缺点,除非您的 DNS 提供商仅将其作为“高级”功能提供,就像 GoDaddy 一样。在这种情况下,我们建议您使用合适的 DNS 提供商,例如 Google DNS,他们不会为了基本安全而对您一分钱一分货。您可以在此处阅读我们的使用指南,或阅读有关转移域的更多信息 。
如果您使用的是 Google Domains,则设置实际上只是一个按钮,可在域控制台的“DNS”下侧边栏中找到。选中“启用 DNSSEC”。这将需要几个小时才能完成并签署所有必需的密钥。Google Domains 还完全支持基于 HTTPS 的 DNS,因此启用该功能的用户将完全安全。
对于 Namecheap,此选项也只是域设置中“高级 DNS”下的切换,并且完全免费:
如果您使用的是 AWS Route 53,很遗憾,它不支持 DNSSEC。这是弹性 DNS 功能的一个必要缺点,它首先使它变得很棒:别名记录、DNS 级别负载平衡、健康检查和基于延迟的路由等功能。由于 Route 53 无法在每次更改时合理地对这些记录进行签名,因此 DNSSEC 是不可能的。但是,如果您使用自己的域名服务器或不同的 DNS 提供商,仍然可以为使用 Route 53注册的域启用 DNSSEC,但 不能为使用 Route 53 作为其 DNS 服务的域。