Die Entwickler des DNS-Servers BIND haben in der experimentellen Version 9.17 die serverseitige Unterstützung für die Technologien „DNS über HTTPS“ (DoH, DNS over HTTPS) und DNS über TLS (DoT, DNS over TLS) sowie den Mechanismus XFR-over-TLS zur sicheren Übertragung von DNS-Zonendaten zwischen Servern hinzugefügt. DoH ist in der Version 9.17.10 zum Testen verfügbar, während die Unterstützung für DoT seit der Version 9.17.7 vorhanden ist. Nach der Stabilisierung wird die Unterstützung für DoT und DoH in die stabile Version 9.16 zurückportiert.
Die Implementierung des Protokolls HTTP/2, das in DoH verwendet wird, basiert auf der Bibliothek nghttp2, die zu den Build-Abhängigkeiten gehört (zukünftig soll die Bibliothek in den Bereich der optionalen Abhängigkeiten verschoben werden). Sowohl verschlüsselte (TLS) als auch unverschlüsselte Verbindungen über HTTP/2 werden unterstützt. Bei entsprechender Konfiguration kann ein Prozess von named nun nicht nur traditionelle DNS-Anfragen bedienen, sondern auch Anfragen, die über DoH (DNS-over-HTTPS) und DoT (DNS-over-TLS) gesendet werden. Die Unterstützung von HTTPS auf der Client-Seite (dig) ist bisher noch nicht implementiert. Die Unterstützung von XFR-over-TLS steht sowohl für eingehende als auch ausgehende Anfragen zur Verfügung.
Die Verarbeitung von Anfragen unter Verwendung von DoH und DoT erfolgt durch Hinzufügen der Optionen http und tls in der Direktive listen-on. Für die Unterstützung von unverschlüsseltem DNS-over-HTTP muss in den Einstellungen „tls none“ angegeben werden. Die Schlüssel werden im Abschnitt „tls“ definiert. Die Standardnetzwerkports 853 für DoT, 443 für DoH und 80 für DNS-over-HTTP können über die Parameter tls-port, https-port und http-port überschrieben werden. Zum Beispiel: tls local-tls { key-file "/path/to/priv_key.pem"; cert-file "/path/to/cert_chain.pem"; }; http local-http-server { endpoints { "/dns-query"; }; }; options { https-port 443; listen-on port 443 tls local-tls http myserver {any;}; }
Besondere Merkmale der DoH-Implementierung in BIND sind die Integration als allgemeiner Transport, der nicht nur für die Bearbeitung von Client-Anfragen an den Resolver verwendet werden kann, sondern auch beim Datenaustausch zwischen Servern, bei der Übertragung von Zonen durch einen autoritativen DNS-Server und bei der Bearbeitung von beliebigen Anfragen, die von anderen DNS-Transporten unterstützt werden.
Eine weitere Besonderheit ist die Möglichkeit, die Verschlüsselungsoperationen für TLS auf einen anderen Server auszulagern, was in Situationen erforderlich sein kann, in denen TLS-Zertifikate auf einem anderen System (zum Beispiel in einer Webserver-Infrastruktur) gespeichert werden und von anderem Personal verwaltet werden. Die Unterstützung von unverschlüsseltem DNS-over-HTTP wurde implementiert, um das Debugging zu erleichtern und als Layer zur Durchleitung in einem internen Netzwerk, auf dessen Grundlage eine Verschlüsselung auf einem anderen Server eingerichtet werden kann. Auf dem externen Server kann nginx zur Erzeugung von TLS-Traffic verwendet werden, ähnlich wie die HTTPS-Bindung für Websites organisiert wird.
Es sei daran erinnert, dass DNS-over-HTTPS nützlich sein kann, um das Auslaufen von Informationen über angeforderte Hostnamen durch die DNS-Server der Anbieter zu verhindern, gegen MITM-Angriffe und DNS-Verkehrsmanipulation (z. B. beim Anschluss an öffentliche Wi-Fi-Netzwerke) vorzugehen sowie DNS-Sperren zu widerstehen (DNS-over-HTTPS kann nicht die VPN Blockaden umgehen, die auf DPI-Ebene implementiert sind) oder um den Betrieb zu organisieren, wenn eine direkte Ansprache der DNS-Server nicht möglich ist (z. B. beim Arbeiten über Proxys). Während im Normalfall DNS-Anfragen direkt an die in der Systemkonfiguration festgelegten DNS-Server gesendet werden, wird im Fall von DNS-over-HTTPS die Anfrage zur Bestimmung IP-Adressen des Hosts in den HTTPS-Verkehr gekapselt und an den HTTP-Server gesendet, auf dem der Resolver die Anfragen über die Web-API verarbeitet.
DNS over TLS unterscheidet sich von DNS over HTTPS durch die Verwendung des Standardprotokolls DNS (normalerweise wird der Netzwerkport 853 verwendet), das in einen verschlüsselten Kommunikationskanal eingewickelt ist, der mithilfe des TLS-Protokolls mit Hostvalidierung über TLS/SSL-Zertifikate, die von einer Zertifizierungsstelle signiert wurden, eingerichtet wird. Der bestehende Standard DNSSEC verwendet Verschlüsselung nur zur Authentifizierung des Clients und des Servers, schützt jedoch den Traffic nicht vor Abhörung und gewährleistet keine Vertraulichkeit der Anfragen.
Quelle: opennet.ru
