您能否强制您的 PC 或设备仅使用经 DNSSec 验证的查找结果?

信息安全 中间人 dns 欺骗 dnssec dns 欺骗
2021-08-31 11:55:08

好吧,我首先要承认一些事情:我并不真正了解 DNSSec 保护如何运作良好的一些实际方面。(即使在阅读了这样的资源之后

好吧,我当然明白为什么对 DNS 名称到地址解析查找的反欺骗保护非常必要而且我什至了解(粗略地,在基本层面上)加密信任链机制是如何工作的,从 DNS 根服务器和顶级域到最低级别的 ISP 和内部/公司名称服务器,为 DNSSec 角色提供基础以加密方式证明给定域名确实链接到一个或多个给定 IP 地址。

但是,当最终用户的设备实际上利用 DNSSec 系统的功能来验证客户端正在处理的 DNS 服务器是否在说某个域名应该合法解析时,我的理解变得模糊了到某个IP地址。例如,www.example.com拥有它的人确实打算指向 93.184.216.34,而 93.184.216.34 不仅仅是一些欺骗性的、恶意的替代服务器,比如告诉我的浏览器转到攻击者控制的网页而不是真正的网页。

无论如何,我在这里的实际问题并不完全是“我不完全理解 DNSSec 在客户端/DNS 服务器级别的工作原理。请解释一下。” 我有一个更务实的担忧:是否可以实际配置最终用户客户端 PC 或设备以强制它接受并使用在 DNSSec 下经过加密验证的 DNS 查找结果显然,将 PC 配置为使用某些特定的 DNS 服务器很容易;如何将 PC 配置为仅使用经 DNSSec 基础设施验证为合法的 DNS 查找结果?或者甚至可以做到吗?关于 DNSSec 在客户端/DNS 服务器级别的工作方式,我是否遗漏了一些东西,这意味着我的整个问题都离题了?还是发生了其他事情?

(注意:我想我是在脑海中询问典型 Windows 客户端环境的图片,但实际上我的意思是在更一般的上下文中询问“DNSSec 中是否存在某种验证/检查实际上发生在客户端级别,或者 DNSSec 是一些纯粹的外部事物,客户端应该“只信任”某些 DNS 服务器的最终输出?”后者听起来很像它只会有一些相同的问题,使遗留的 DNS 系统有问题。)

2个回答

是否可以实际配置最终用户客户端 PC 或设备以强制其仅接受和使用在 DNSSec 下经过加密验证的 DNS 查找结果?

我不认为可以直接做。您可以做的是设置一个 DNS 服务器,该服务器会丢弃任何未使用 DNSSec 签名的响应。然后您可以设置您的本地网络,以便它使用此 DNS 服务器。这个 DNS 服务器甚至可以在同一台主机上运行。我不知道任何可以配置为执行此操作的现有服务器。但是编写这样一个供个人使用的服务器应该不会太难(即不需要大量扩展)。

但是,由于 Internet 上的大多数服务器都没有使用 DNSSec,因此您将通过这种方式有效地将自己与大多数 Internet 隔离开来。很适合做实验,但在实践中通常没用。

还是 DNSSec 是一些纯粹的外部事物,客户端应该“只信任”某个 DNS 服务器的最终输出?”

DNSSec 通常并没有真正集成到系统中。这意味着当前 Windows、Mac 或 Linux 系统上的应用程序通常不知道它们获得的主机地址是否是使用 DNSSec 或未受保护的 DNS 检索的。即使系统解析器知道这一点,库和编程语言中的当前 API 也大多不会向应用程序公开这些信息,或者不清楚来自 API 的这些信息本身可以信任多少。有关该问题复杂性的一些有趣阅读,请参阅GNU C 库中对 DNSSEC 的支持

是否可以实际配置最终用户客户端 PC 或设备以强制其仅接受和使用在 DNSSec 下经过加密验证的 DNS 查找结果?

是的你可以!有两种不同的方法可以做到这一点:

应用层

应用程序可以验证它执行的 DNS 查询。Chrome/FirefoxDNSSEC Validator扩展就是一个例子但是,这仅在应用程序(或插件)支持时才有效。

系统/网络级别

用户和网络管理员可以将他们的系统配置为自己验证 DNSSEC,从而对所有查询进行验证,无论其来源如何。目前最简单的实现方法是设置一个简单的递归解析器并通过它代理所有 DNS 流量。希望将来操作系统开发人员会为操作系统本身添加 DNSSEC 支持,这样就没有必要了。