9. Security Considerations (安全考虑)
在通过DoH运行DNS查询时,安全考虑适用于DNS和HTTPS两个方面。
使用HTTPS提供了对被动攻击者的保护,这些攻击者可能试图观察DNS查询和响应。它还提供了针对某些类型的主动攻击的保护,例如试图篡改DNS响应的攻击者。
然而,DoH不能防止所有类型的攻击。特别是,它不能防止DoH服务器本身的攻击。如果DoH服务器被攻击者控制或受到攻击者的影响,则攻击者可以提供虚假的DNS响应。因此,选择可信的DoH服务器至关重要。
DoH客户端必须 (MUST) 使用[RFC2818]和[RFC6125]中描述的机制来验证DoH服务器的TLS证书。如果证书验证失败,客户端禁止 (MUST NOT) 使用该服务器进行DNS查询。
DoH使用HTTPS,这意味着它使用TLS进行传输安全。[RFC8446]的安全考虑适用于DoH。特别是,DoH实现应该使用TLS 1.3或更高版本,并应该遵循[RFC8446]中的安全建议。
DoH服务器应该 (SHOULD) 使用HTTP/2 [RFC7540] 或更高版本,因为这些版本提供了更好的性能和安全特性。如果使用HTTP/2,则[RFC7540]的安全考虑适用。
DNS安全扩展 (DNSSEC) [RFC4033] 可以与DoH一起使用,以提供额外的安全保护。DNSSEC提供了数据源身份验证和数据完整性,这可以防止某些类型的攻击,即使DoH服务器本身被攻击。但是,DNSSEC不能防止DoH服务器简单地拒绝提供有效的DNSSEC签名或提供未签名的响应。
DoH客户端和服务器都应该实施适当的速率限制,以防止拒绝服务 (DoS) 攻击。由于DoH使用HTTPS,它可能比传统的DNS更难以进行DDoS攻击,但它仍然容易受到某些类型的攻击,特别是针对HTTP基础设施的攻击。
DoH服务器可以选择要求客户端身份验证。如果这样做,服务器应该使用适当的身份验证机制,例如TLS客户端证书或HTTP身份验证。但是,要求身份验证可能会影响客户端的隐私 (参见第8节)。
DoH不会改变DNS响应的语义。特别是,DoH响应应该与通过传统DNS传输收到的响应具有相同的含义。DoH服务器不应该 (SHOULD NOT) 修改DNS响应的内容,除非有明确的理由这样做 (例如,根据本地策略过滤恶意域名)。
某些网络可能会部署透明的DNS代理或拦截器。这些设备可能会尝试拦截或修改DNS流量。DoH的使用可以绕过这些设备,这可能被视为一个功能或一个错误,取决于观点。网络运营商应该意识到DoH可能会影响他们监控和控制DNS流量的能力。
DoH可能会影响某些安全设备和服务的有效性,例如基于DNS的恶意软件过滤器。组织应该考虑这些影响,并可能需要部署自己的DoH服务器或使用能够检查DoH流量的安全设备。
因为DoH查询和响应通过与常规HTTPS流量相同的端口 (443) 传输,所以它们可能更难以区分和过滤。这可能使网络运营商更难实施基于DNS的策略。
DoH客户端应该 (SHOULD) 实施超时机制,以防止等待响应时间过长。这可以帮助防止某些类型的DoS攻击,其中攻击者试图使客户端等待很长时间。
DoH服务器应该 (SHOULD) 验证接收到的DNS查询的格式正确性,并应该拒绝格式不正确的查询。这可以帮助防止某些类型的攻击,例如尝试利用DNS解析器中的漏洞的攻击。
最后,值得注意的是,DoH只是保护DNS的一种方法。其他方法包括DNS over TLS (DoT) [RFC7858] 和DNS over QUIC (DoQ) [RFC9250]。每种方法都有其自身的优点和缺点,组织应该根据其特定需求选择最合适的方法。在某些情况下,可能需要支持多种方法以提供最大的灵活性和兼容性。