DNSSEC 验证和验证区域数据的目的是确保无论 DNS 结果如何,这些都是真实的。
即使 DNS 解析器验证权威名称服务器已发送正确的未篡改数据,我们如何防止 DNS 解析器向 DNS 客户端发送篡改的 DNS 响应?
如果 DNS 解析器不支持 DNSSEC,它是否仍可以将 DNS 查询发送到为其区域启用了 DNSSEC 的权威名称服务器?
谢谢
DNSSEC 验证和验证区域数据的目的是确保无论 DNS 结果如何,这些都是真实的。
即使 DNS 解析器验证权威名称服务器已发送正确的未篡改数据,我们如何防止 DNS 解析器向 DNS 客户端发送篡改的 DNS 响应?
如果 DNS 解析器不支持 DNSSEC,它是否仍可以将 DNS 查询发送到为其区域启用了 DNSSEC 的权威名称服务器?
谢谢
在您开始针对您想要捍卫的内容进行描述之前,这是无法回答的(对于您在该句子中使用的任何词而不是“DNSSEC”)。
当您拥有想要保护自己的风险/漏洞/威胁列表时,您可以找出存在哪些解决方案并确定每个解决方案的有用与否。
DNSSEC
对某些 DNS 问题很有用,但并非对所有问题都有用。它给自己带来了新问题(签名和密钥的持续维护)以及新功能(NXDOMAIN
如果 DNSSEC 正确验证,则对 a 以下的所有内容进行积极缓存)。这与今天没有什么不同:如果您使用任何公共 DNS 解析器(仅举几例),您当然完全有可能向您发送垃圾数据
8.8.8.8
。这是一个权衡。DoH/DoT 在这里不会解决任何问题,因为它只会保护您与此解析器之间的内容传输,而不是内容本身。只要您正在查询的域名受 DNSSEC 保护,哪些内容受 DNSSEC “保护”(这是您在问题中忘记的一部分,实际上使 DNSSEC 变得困难:域名所有者必须启用它和DNS解析器必须使用新签名并进行验证;如果这 2 个变量等式的一部分不存在,DNSSEC 就没有用,因为它无法工作)1.1.1.1
9.9.9.9
所以问题更多地围绕着:使用哪个递归名称服务器,以及它应该在哪里运行。当然,为了最大限度地控制,您希望解析器在您的机器上运行。它仍然可以在那里使用外部资源和 DNS 解析器,但最终的 DNSSEC 验证应该发生在您的名称服务器上,而不是其他服务器上。当然,这不仅仅是依靠任何其他资源为您“免费”完成所有 DNSSEC 工作。
是的。想要获得 DNSSEC 数据的解析器必须在其请求中切换“DO”标志。
从
dig
文档:你可以这样看:
或者来自 RFC 4035 的§3.2.1:
如果 DNS 客户端(递归解析器)这样做,并且如果被查询的权威名称服务器启用了 DNSSEC(因此
RRSIG
//区域NSEC
中NSEC3
的记录类型),那么解析器将获取这些记录,然后可以进行 DNSSEC 验证。当您(不是解析器的 DNS 存根/客户端)查询递归解析器时,您可以选择使用
CD
标志,定义如下:(注意可能的双重否定)。
如果客户端不使用
CD
,则 DNSSEC 验证未被禁用,因此它被启用并且删除服务器将提供最终答案(如果为记录启用 DNSSEC 并且验证成功),或者NXDOMAIN
如果 DNSSEC将回复验证失败。该标志AD
将被设置为表示所有记录都被验证为安全,如果是这种情况(如果查询来自递归名称服务器,则该标志不能来自权威的,因为您需要来自 IANA 根的完整 DNSSEC 链验证任何给定的记录)这种安全的网络路径可能意味着 DNS-over-TLS、DNS-over-HTTPS、DNSCrypt 或在某种程度上是本地网络(较弱的信任级别,但对于部分攻击场景仍然有用)。