发布 BIND DNS 服务器 9.18.0,支持 DNS-over-TLS 和 DNS-over-HTTPS

经过两年的开发,ISC 联盟发布了 BIND 9.18 DNS 服务器主要新分支的第一个稳定版本。 作为延长支持周期的一部分,对分支 9.18 的支持将提供三年,直至 2 年第二季度。 对 2025 分支的支持将于 9.11 月结束,对 9.16 分支的支持将于 2023 年中期结束。 为了开发 BIND 的下一个稳定版本的功能,已经形成了一个实验分支 BIND 9.19.0。

BIND 9.18.0 的发布值得注意的是实现了对 DNS over HTTPS(DoH,DNS over HTTPS)和 DNS over TLS(DoT,DNS over TLS)以及 XoT(XFR-over-TLS)机制的支持用于安全传输 DNS 内容。服务器之间的区域(支持通过 XoT 发送和接收区域)。 通过适当的设置,单个命名进程现在不仅可以服务传统的 DNS 查询,还可以服务使用 DNS-over-HTTPS 和 DNS-over-TLS 发送的查询。 dig 实用程序内置了对 DNS-over-TLS 的客户端支持,当指定“+tls”标志时,该实用程序可用于通过 TLS 发送请求。

DoH 中使用的 HTTP/2 协议的实现基于 nghttp2 库的使用,该库作为可选的程序集依赖项包含在内。 DoH 和 DoT 的证书可以由用户提供或在启动时自动生成。

通过将“http”和“tls”选项添加到listen-on指令中,可以启用使用DoH和DoT的请求处理。 要支持未加密的 DNS-over-HTTP,您应该在设置中指定“tls none”。 键在“tls”部分中定义。 DoT 的默认网络端口 853、DoH 的默认网络端口 443 以及 DNS-over-HTTP 的 80 可以通过 tls-port、https-port 和 http-port 参数覆盖。 例如:

tls local-tls { 密钥文件“/path/to/priv_key.pem”; 证书文件“/path/to/cert_chain.pem”; }; http local-http-server { 端点 { “/dns-query”; }; }; 选项 { https-端口 443; 监听端口 443 tls local-tls http myserver {any;}; }

BIND 中 DoH 实现的功能之一是能够将 TLS 的加密操作移至另一台服务器,这在 TLS 证书存储在另一系统上(例如,在具有 Web 服务器的基础设施中)并维护的情况下可能是必要的由其他人员。 实现对未加密 DNS-over-HTTP 的支持是为了简化调试,并作为转发到内部网络上另一台服务器的层(用于将加密移至单独的服务器)。 在远程服务器上,nginx 可用于生成 TLS 流量,类似于为网站组织 HTTPS 绑定的方式。

另一个功能是将 DoH 集成为通用传输,它不仅可以用于处理客户端对解析器的请求,还可以在服务器之间通信、通过权威 DNS 服务器传输区域以及处理其他 DNS 支持的任何查询时使用运输。

在可以通过禁用 DoH/DoT 构建或将加密移至另一台服务器来弥补的缺点中,代码库的一般复杂性很突出 - 添加了内置 HTTP 服务器和 TLS 库,其中可能包含漏洞并充当额外的攻击媒介。 此外,使用 DoH 时,流量会增加。

让我们回想一下,DNS-over-HTTPS 可用于防止通过提供商的 DNS 服务器泄漏有关所请求主机名的信息、打击 MITM 攻击和 DNS 流量欺骗(例如,在连接到公共 Wi-Fi 时)、反击在 DNS 级别进行阻止(DNS-over-HTTPS 无法替代 VPN 来绕过在 DPI 级别实施的阻止)或在无法直接访问 DNS 服务器时(例如,通过代理工作时)组织工作。 如果在正常情况下 DNS 请求直接发送到系统配置中定义的 DNS 服务器,那么在 DNS-over-HTTPS 的情况下,确定主机 IP 地址的请求将封装在 HTTPS 流量中并发送到 HTTP 服务器,其中解析器通过 Web API 处理请求。

“DNS over TLS”与“DNS over HTTPS”的不同之处在于使用标准 DNS 协议(通常使用网络端口 853),封装在使用 TLS 协议组织的加密通信通道中,并通过经过认证的 TLS/SSL 证书进行主机有效性检查由认证机构。 现有的DNSSEC标准仅使用加密来验证客户端和服务器,但不能保护流量不被拦截,也不能保证请求的机密性。

其他一些创新:

  • 添加了 tcp-receive-buffer、tcp-send-buffer、udp-receive-buffer 和 udp-send-buffer 设置,以设置通过 TCP 和 UDP 发送和接收请求时使用的缓冲区大小。 在繁忙的服务器上,增加传入缓冲区将有助于避免数据包在流量高峰期间被丢弃,而减少传入缓冲区将有助于消除旧请求造成的内存堵塞。
  • 添加了新的日志类别“rpz-passthru”,允许您单独记录 RPZ(响应策略区域)转发操作。
  • 在响应策略部分中,添加了“nsdname-wait-recurse”选项,当设置为“no”时,仅当为请求找到缓存中存在的权威名称服务器时才应用 RPZ NSDNAME 规则,否则RPZ NSDNAME 规则将被忽略,但信息会在后台检索并应用于后续请求。
  • 对于 HTTPS 和 SVCB 类型的记录,已实现“ADDITIONAL”部分的处理。
  • 添加了自定义更新策略规则类型 - krb5-subdomain-self-rhs 和 ms-subdomain-self-rhs,允许您限制 SRV 和 PTR 记录的更新。 更新策略块还添加了对每种类型单独设置记录数量限制的功能。
  • 在 dig 实用程序的输出中添加了有关传输协议(UDP、TCP、TLS、HTTPS)和 DNS64 前缀的信息。 出于调试目的,dig 添加了指定特定请求标识符的功能 (dig +qid= )。
  • 添加了对 OpenSSL 3.0 库的支持。
  • 为了解决处理 2020 年 DNS Flag Day 确定的大型 DNS 消息时的 IP 碎片问题,在没有对请求的响应时调整 EDNS 缓冲区大小的代码已从解析器中删除。 对于所有传出请求,EDNS 缓冲区大小现在设置为常量 (edns-udp-size)。
  • 构建系统已切换为使用 autoconf、automake 和 libtool 的组合。
  • 对“地图”格式(主文件格式地图)区域文件的支持已停止。 建议使用此格式的用户使用named-compilezone 实用程序将区域转换为原始格式。
  • 对旧版 DLZ(动态可加载区域)驱动程序的支持已停止,并由 DLZ 模块取代。
  • 对 Windows 平台的构建和运行支持已停止。 可以在 Windows 上安装的最后一个分支是 BIND 9.16。

来源: opennet.ru

添加评论