Hintergrund
DNS over TLS (DoT) sorgt dafür, dass alle DNS-Anfragen vom Server zum Resolver verschlüsselt übertragen werden. Das verhindert, dass Provider, Angreifer im gleichen Netz oder auf dem Transportweg mitlesen oder Anfragen manipulieren, und schließt damit eine klassische Schwachstelle in ansonsten gut gehärteten Server-Setups. Gerade auf einem Debian-Server, auf dem oft sensible Dienste laufen und viel Traffic erzeugt wird, ist ein verschlüsselter DNS-Transport ein sinnvoller Baustein der allgemeinen Sicherheits- und Datenschutzstrategie.
Quad9 ist in diesem Kontext eine gute Wahl, weil der Dienst nicht nur klassische rekursive DNS-Auflösung anbietet, sondern Anfragen gegen bekannte Malware- und Phishing-Domänen filtert. So wird ein kompromittierter Dienst oder ein fehlerhaft konfiguriertes Skript im Zweifel daran gehindert, unbemerkt mit Command-and-Control-Servern oder bösartigen Hosts zu sprechen. Zusätzlich sitzt Quad9 rechtlich in einer datenschutzfreundlichen Jurisdiktion und speichert nach eigenen Angaben keine personenbezogenen IP-Adressen in den Logs, was den Einsatz auch aus Compliance- und DSGVO-Perspektive attraktiv macht.
Konfiguration
Um DNS über TLS (DoT) zu nutzen, hast du mehrere Möglichkeiten auf Debian, wobei systemd-resolved die einfachste Lösung ist.
sudo apt install systemd-resolved
sudo systemctl enable --now systemd-resolved
Bearbeite die Konfigurationsdatei:
sudo nano /etc/systemd/resolved.conf
Hinterlege die folgende Konfiguration für den Quad9 DNS-Resolver für eine gesichertee TLS-DNS Verbindung via Port 853.
Als Fallback wurden die DNS4EU Server hinterlegt.
Alles mit einem führendem # ist deaktiviert.
[Resolve]
# Some examples of DNS servers which may be used for DNS= and FallbackDNS=:
# Cloudflare: 1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com 2606:4700:4700::1111#cloudflare-dns.com 2606:4700:4700::1001#cloudflare-dns.com
# Google: 8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.google 2001:4860:4860::8844#dns.google
# Quad9: 9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#dns.quad9.net 2620:fe::9#dns.quad9.net
DNS=9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#dns.quad9.net 2620:fe::9#dns.quad9.net
FallbackDNS=86.54.11.13 86.54.11.213 2a13:1001::86:54:11:13 2a13:1001::86:54:11:213
#Domains=
DNSSEC=yes
DNSOverTLS=yes
#MulticastDNS=yes
#LLMNR=yes
#Cache=yes
#CacheFromLocalhost=no
#DNSStubListener=yes
#DNSStubListenerExtra=
#ReadEtcHosts=yes
#ResolveUnicastSingleLabel=no
#StaleRetentionSec=0
Starte den Service anschließend neu und überprüfe den Service-Status:
sudo systemctl restart systemd-resolved
resolvectl status
Mit folgendem Befehl kannst du einmal prüfen, ob die Konfiguration korrekt übernommen und angewendet wurde:
resolvectl query google.com
-> Ergebnis
google.com: 142.251.140.174 -- link: eth0
2a00:1450:4001:804::200e -- link: eth0
-- Information acquired via protocol DNS in 30.5ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: yes
-- Data from: network
nslookup google.com
-> Ergebis
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: google.com
Address: 142.251.140.174
Name: google.com
Address: 2a00:1450:4001:811::200e


