DNS Verschlüsselung auf Linux, Android und Windows
In diesem Artikel geht es darum wie ihr die Verschlüsselung für DNS Auflösungen aktivieren könnt und wie ihr dies auf Linux, Android und Windows Geräten einrichtet.
Das Domain Name System (DNS) ist ein hierarchisches und dezentralisiertes System, das euch dabei hilft, menschenlesbare Domainnamen (wie „www.example.com“) in IP-Adressen (wie z.B 75.59.84.184
) zu übersetzen. Diese Übersetzung ist für euch notwendig, da eure Computer und andere Netzwerkgeräte besser mit numerischen IP-Adressen arbeiten, während ihr euch in der Regel leichter an verständliche Domainnamen erinnern könnt. Auf unserer Seite Protokolle findet ihr dazu auch weitere Erklärungen.
So funktioniert DNS
Stellt euch vor, ihr möchtet die Webseite www.example.com in eurem Webbrowser öffnen:
- Euer Computer fragt den DNS-Resolver eures Internetanbieters, welche IP-Adresse zu „www.example.com“ gehört.
- Falls der Resolver die Antwort nicht kennt, fragt er einen Root-DNS-Server.
- Der Root-Server weist den Resolver an den DNS-Server für die Top-Level-Domain (TLD) „.com„.
- Der „.com“-DNS-Server verweist dann an den spezifischen DNS-Server für „example.com„.
- Der DNS-Server für „example.com“ antwortet mit der IP-Adresse der Webseite.
- Euer Computer stellt nun eine Verbindung zu dieser IP-Adresse her und ruft die Webseite auf.
DNS und Zensur
Die zentrale Rolle von DNS im Internet macht es zu einem Ziel für Zensur. indem bestimmte Domains oder Auflösungen manipuliert oder blockiert werden, können Regierungen oder andere Organisationen euch den Zugriff auf bestimmte Websites verwehren. Auch in Europa wird immer wieder versucht, Zensur durchzusetzen in dem Pläne geschaffen werden Provider zu Massnahmen zu verpflichten bestimmte Sperrlisten zu verwenden. Das bekannteste Beispiel ist das Zugangserschwerungsgesetz von 2010/2011, welches von der äusserst legitimen Frau von der Leyen besonders vorangetrieben worden ist. In der Türkei sind solche Massnahmen gang und gäbe.
Bei den Kollegen vom Privacy Handbuch gibts dazu mehr zu lesen.
Nehmen wir an eine Regierung möchte den Zugriff auf www.forbiddennews.com verhindern. Sie könnte den nationalen Internetanbietern befehlen, diese Domain für euch nicht korrekt aufzulösen oder sie auf eine falsche IP-Adresse (oder eine „Seite gesperrt“-Nachricht) umzuleiten. Das passiert ganz einfach indem die Domain nicht mit der richtigen IP Adresse hinterlegt wird, sondern eine Umleitung eingerichtet wird die auf eine staatliche Seite verweist.
DNS-Spoofing
Zusätzlich zur Zensur kann DNS auch für Spoofing-Attacken ausgenutzt werden. Bei einem DNS-Spoofing-Angriff werden euch gefälschte DNS-Antworten gesendet, um euch auf eine andere, möglicherweise bösartige Webseite umzuleiten.
Ein Angreifer möchte, dass ihr, wenn ihr www.meinebank.ch besuchen wollt, stattdessen auf seine bösartige Seite umgeleitet werdet. Er könnte dies tun, indem er den Datenverkehr manipuliert und eine falsche IP-Adresse als Antwort für www.meinebank.ch liefert. Ihr würdet dann zu der bösartigen Webseite des Angreifers geleitet werden, obwohl ihr die echte Bankdomain eingegeben habt. Das ist möglich da traditionell der komplette DNS Verkehr unverschlüsselt über Port 53 gesendet wird. Das bedeutet dass die Anfragen gelesen werden können, und der Angreifer die Möglichkeit hat die Daten in den Anfragen zu manipulieren.
Wie hilft nun die DNS Verschlüsselung gegen Zensur und Angriffe
DNS over TLS Verschlüsselung
DNS über TLS (DoT) bietet mehrere Vorteile gegenüber dem herkömmlichen DNS-Protokoll da die Verbindungen über TLS vollständig verschlüsselt werden.
- Verschlüsselung: Das offensichtlichste und wichtigste Merkmal von DoT ist die Verschlüsselung. DoT verschlüsselt die Kommunikation zwischen eurem Computer (oder einem anderen Client-Gerät) und dem DNS-Server. Dies schützt eure DNS-Anfragen und Antworten vor Man-in-the-Middle-Angriffen und verhindert, dass Dritte den Inhalt eurer DNS-Kommunikation ausspionieren können.
- Datenschutz: Da eure DNS-Anfragen verschlüsselt sind, können Dritte (wie euer Internetdienstanbieter oder jemand, der den Netzwerkverkehr überwacht) nicht sehen, welche Websites ihr besuchen möchten. Das bedeutet nicht, dass sie nicht sehen können, zu welcher IP-Adresse ihr letztendlich eine Verbindung herstellt, aber sie können nicht sehen, welche Domain ihr ursprünglich aufgelöst habt.
- Integrität & Authentizität: Neben der Verschlüsselung gewährleistet DoT auch die Integrität der übertragenen Daten. Das bedeutet, dass ihr sicher sein könnt, dass die DNS-Antworten, die ihr erhaltet, tatsächlich von dem DNS-Server stammen, mit dem ihr kommuniziert, und nicht manipuliert wurden.
- Reduziert DNS-Spoofing-Risiken: Durch die Authentizität und Integrität, die DoT bietet, wird das Risiko von DNS-Spoofing-Angriffen, bei denen ein Angreifer falsche DNS-Antworten sendet, um den Verkehr umzuleiten, erheblich reduziert.
- Allgemeine Erhöhung der Sicherheit: DoT ist Teil eines breiteren Trends hin zu einer allgemeinen Verschlüsselung des Internets. Genauso wie HTTPS das normale HTTP ergänzt hat, um den Webverkehr zu sichern, ergänzt DoT das herkömmliche DNS, um den DNS-Verkehr zu sichern.
Trotz dieser Vorteile gibt es auch einige Herausforderungen und Überlegungen im Zusammenhang mit DoT:
- Kompatibilität: Nicht alle DNS-Resolver und nicht alle Netzwerke unterstützen DoT. In einigen Netzwerken könnte DoT sogar blockiert werden.
- Serververtrauen: Auch wenn ihr DNS-Verkehr verschlüsselt ist, vertraut ihr immer noch dem DNS-Resolver, den ihr verwendet (z. B. Cloudflare, Google, Quad9 usw.), dass er eure Anfragen korrekt und vertraulich behandelt.
- Port-Blockierung: DoT verwendet Port 853. Einige Netzwerke blockieren diesen Port, was DoT unbrauchbar machen könnte.
Einschränkungen
Wichtig ist, dass DoT zwar die DNS-Anfragen verschlüsselt, aber nicht verhindert, dass ein Netzwerkadministrator oder Internetanbieter den tatsächlichen Zielverkehr (die IP-Adressen, zu denen ihr eine Verbindung herstellt) sieht. Zudem kann ein repressiver Regulator oder ISP den DoT-Verkehr insgesamt blockieren, indem er den für DoT spezifischen Port (853) sperrt.
Hier kommen DNS Server ins Spiel, die eine No-Logging Mentalität versprechen. Da gibt es einige Anbieter die eure Privatsspähre wirklich schützen wollen. Später dazu mehr.
DNS über HTTPS (DoH) Verschlüsselung
Eine weitere Methode ist Dns over HTTPS oder DoH genannt. Im Gegensatz zu DNS over TLS bietet er gewisse Nachteile, sie unten.
Eigenschaften
- Versteckter Verkehr: Da DoH den HTTPS-Port 443 verwendet, sieht es aus wie normaler Webverkehr. Das macht es schwieriger für Netzwerkbetreiber, diesen speziellen DNS-Verkehr zu identifizieren und zu blockieren.
- Kompatibilität mit Webinfrastrukturen: DoH kann vorhandene Webinfrastrukturen nutzen, wie Web-Server und Content-Delivery-Netzwerke (CDNs), um die Auflösung zu beschleunigen und näher am Benutzer zu liefern.
- Einbindung in Webbrowser: Große Webbrowser wie Firefox und Chrome unterstützen DoH, was die Einführung für Endbenutzer erleichtert.
Herausforderungen
- Potenzieller Umgehung von Unternehmensrichtlinien: In Unternehmensumgebungen kann DoH dazu führen, dass Unternehmens-DNS-Richtlinien oder Filter umgangen werden.
- Zentralisierung: Da nur wenige große Anbieter DoH-Dienste anbieten, besteht die Gefahr einer Zentralisierung des DNS-Systems, was zu weniger Diversität und möglicherweise zu Kontrollpunkten führt.
Nachteile gegenüber DNS over TLS Verschlüsselung
Aufgrund der Art und Weise wie DNS over HTTPS funktioniert, gibt es auch einige Nachteile worunter die Privatsspähre schlussendlich leidet. Server könnten HTTP-Auth-Header, E-Tags und SSL-Session-ID für das Tracking verwenden oder HTTP-Header wie User-Agent, Accept-Language, Referer und etc. für das Fingerprinting des Browsers nutzen.
Vergleich zu DNS over TLS Verschlüsselung
- Transport: DoT verwendet dedizierten Port (853) für verschlüsselte DNS-Anfragen, während DoH DNS-Anfragen über den HTTPS-Port (443) sendet.
- Erkennbarkeit: DoT-Verkehr kann leichter als DNS-Verkehr identifiziert werden, da er einen spezifischen Port verwendet. DoH hingegen verschleiert DNS-Anfragen als normalen HTTPS-Verkehr.
- Implementierung: DoH ist hauptsächlich für Webbrowser konzipiert, während DoT in der Regel systemweit auf Betriebssystemebene implementiert ist.
- Infrastruktur: DoH kann von der bestehenden Webinfrastruktur profitieren, während DoT spezifischere Implementierungen erfordert.
DNSSEC (DNS Security Extensions)
DNSSEC bietet Authentifizierung und Integrität für den DNS-Datenverkehr, stellt jedoch keine Vertraulichkeit her (es verschlüsselt den Verkehr nicht). DNSSEC ermöglicht die Sicherstellung, das auch wirklich der angefragte DNS antwortet, und nicht irgendein anderer.
Vorteile gegenüber Zensur und Manipulation:
- Integrität: Mit DNSSEC könnt Ihr sicher sein, dass die DNS-Antworten, die Ihr erhaltet, authentisch sind und von der legitimen Quelle stammen. Dies verhindert DNS-Spoofing-Attacken, bei denen DNS-Antworten manipuliert werden könnten, um Euch zu täuschen oder auf eine falsche Webseite umzuleiten.
- Authentizität: DNSSEC stellt sicher, dass Ihr mit dem tatsächlichen DNS-Server kommuniziert und nicht mit einem böswilligen Akteur.
Einschränkungen
Obwohl DNSSEC Manipulationen verhindert, verschlüsselt es den Verkehr nicht, sodass Dritte immer noch sehen können, welche Domains Ihr aufruft. Zudem setzt DNSSEC eine weitreichende Implementierung voraus: Sowohl der DNS-Resolver als auch die Domain müssen DNSSEC unterstützen. DNSSEC ist aber mit DNS over TLS kombinierbar.
Kommen wir nun zum praktischen Teil unseres Berichts:
DNS Verschlüsselung und DNSSEC auf Linux, Android und Windows
Glücklicherweise beherrschen alle neueren Linux Distros DNS over TLS, DNS over HTTPS und die DNSSec Validierung. Die Einrichtung ist auch relativ einfach. Vorbereitung müssen nur in der Wahl des DNS Server des Vertrauens getätigt werden. Dazu verweisse ich auf den Artikel ebenfalls vom Privacy-Handbuch.
Falls möglich würde ich immer zu DNS over TLS tendieren da es schnellerer und sicherer ist.
Liste vertraulicher DNS Server
free-dns.yourdevice.ch (unser eigener Server)
62.2.188.238
Servername für Android DNS over TLS: free-dns.yourdevice.ch
Digitale Gesellschaft aus der Schweiz
185.95.218.42
185.95.218.43
Servername für Androids DNS over TLS: dns.digitale-gesellschaft.ch
Freifunk München aus Deutschland
5.1.66.255
185.150.99.255
Servername für Androids DNS over TLS: dot.ffmuc.net
Censurfridns Denmark aus Dänemark
91.239.100.100
89.233.43.71
Servername für Androids DNS over TLS:
anycast.uncensoreddns.org für IP Adresse 1
unicast.uncensoreddns.org für IP Adresse 2
Es gibt noch weitere professionell betreute DNS Server die Werbung und bestimmte Seiten blockieren, Infos dazu findet Ihr oben im verlinkten Privacy-Handbuch.
Einrichtung Linux Ubuntu/Debian Distros
Zuerst sei gesagt, die Änderungen des DNS Servers über das User Interface möglich ist, jedoch dort kein DNS over TLS zur Verfügung steht. Leider muss man das heutzutage immer noch über die Kommandozeile machen. Wer kein DNS over TLS benötigt. Kann in den Netzwerkeinstellungen unter IPv4 eurer Distro auch einfach die IP Adresse unseres DNS Servers eintragen:
Bitte danach die Verbindung neu starten (Disconnect und Reconnect)
Um DNS über TLS (DoT) und DNSSec auf einem Ubuntu-Rechner zu aktivieren, gibt es verschiedene Möglichkeiten. Eine gängige Methode ist die Verwendung von systemd-resolved, das in allen neueren Linux und Debian Distros enthalten ist.
Öffnet eure Konsole und bearbeitet die Datei resolved.conf im systemd Verzeichnis mit
nano /etc/systemd/resolved.conf
Wir nehmen exemplarisch den DNS Server von Digitale Gesellschaft und benutzen deren beide IP Adressen. Wir setzen einen Fallback DNS Server falls die ersten beiden Server nicht erreichbar sind. Die Einstellungen setzen wir folgt:
[Resolve]
DNS=185.95.218.42 185.95.218.43
ServerName=dns.digitale-gesellschaft.ch
FallbackDNS= 5.1.66.255
Domains=~.
#LLMNR=no
#MulticastDNS=no
DNSSEC=yes
DNSOverTLS=yes
#Cache=yes
#DNSStubListener=yes
#ReadEtcHosts=yes
Lasst den Rest wie es ist und speichert die Datei mit strg+o und beendet mit strg+x
Damit die Änderungen wirksam werden, startet den systemd-resolved Service neu mit:
sudo systemctl restart systemd-resolved
Überprüft die Einstellungen mit:
resolvectl status
Im Output müssten eure DNS Server inklusive der DNS over TLS Einstellungen enthalten sein.
Hinweis für Wi-Fi Hotspots
Im allgemeinen werden verschlüsselte DNS Anfragen in öffentlichen Hotspots mit Capitative Portals zum Beispiel U-Bahnen, Hotels und etc nicht akzeptiert. Die Seiten zum anmelden lassen sich nicht aufrufen. Grundsätzlich würde ich solche Hotspots meiden bei dem eine Anmeldung erforderlich ist. Hotspots die einen WLAN Passwort zu Verfügung stellen haben diese Eigenschaft nicht.
Wer mit seinem Laptop unterwegs einen Wi-Fi Hotspot mit Anmeldeportal nutzen möchte, muss den DNS-Server des Hotspot Betreibers verwenden und die lokale DNSSEC Validierung abschalten.
Dazu oben in der systemd/resolved.conf die DNS Server rückgängig machen indem man kurzerhand alles auskommentiert:
[Resolve]
#DNS=185.95.218.42 185.95.218.43
#ServerName=dns.digitale-gesellschaft.ch
#FallbackDNS= 5.1.66.255
#Domains=~.
#LLMNR=no
#MulticastDNS=no
#DNSSEC=yes
#DNSOverTLS=yes
#Cache=yes
#DNSStubListener=yes
#ReadEtcHosts=yes
und danach mit sudo systemctl restart systemd-resolved
den Service neustarten.
Bei Android Smartphones und iPhones besteht dieses Problem nicht.
DNS over TLS Verschlüsselung auf Android Smartphones
Auf dem Android Smartphone ist die Einrichtung sehr einfach.
Geht dazu einfach die die Einstellungen, dann Netzwerk und Internet und scrollt nach untem zum Punkt Privates DNS
Aktiviert den Punkt Hostnamen des privaten DNS-Anbieters und gebt den Hostnamen des DNS Servers ein den ihr verwenden möchtet. (Siehe Liste oben)
Klickt danach auf Speichern und fertig seid Ihr auf eurem Android Smartphone!
Windows geht seine eigenen Wege
Windows geht wieder mal eigene Wege und hat den DNS over TLS Support seit einigen Builds komplett fallen gelassen, ich merkte dies gerade als ich den Artikel schrieb, aktuelle Infos finde ich dazu keine. Auch DNSSec wird nicht unterstützt. Die Windows Dokumentation spricht zwar noch von experimentellem DNS over TLS Support, aber seit den neusten Builds ist aber nur noch DNS over HTTPS via netsh
verfügbar, und dass auch nur bei bestimmten Servern. Deshalb nutzen wir das Tool Simple DNSCrypt herunter welches uns etwas mehr Spielraum gewehrt. Ihr findet das Tool auf der Seite auch gleich unten mit dem Button download.msi x64 installer herunterladen könnt.
Nachteil auch hier: DNS over TLS wird nicht unterstützt, das Tool verwendet DNS over HTTPS, eine leicht langsamere Variante verschlüsselter DNS Protokolle mit einem leichtem Overhead. Installieren wir uns das Tool und schauen was es kann.
Im Hauptmenü legt man zunächst die grundsätzliche Konfiguration fest. Neben der Auswahl des IP-Protokolltyps IPv6 und IPv4 könnt ihr für die Nutzung der DNS-Resolver zusätzliche Einstellungen und Kriterien wählen. Wer DNS-Server mit Filter für Adblocker, Tracking oder Erwachsenen-Content nutzen möchte, deaktiviert die Option „Nur Server ohne Filter“. Ein Klick auf „einstellungen anwenden“ sorgt dafür, dass Simple DNSCrypt mit den gewünschten Optionen betrieben wird.
Damit Simple DNSCrypt als Dienst in Windows funktioniert, schiebt man den Regler neben „DNSCrypt Dienst“ nach rechts. Wichtig: unter „Netzwerkkarten“ muss man die Netzwerkkarte auswählen für die Simple DNSCrypt aktiviert werden soll.
Im Abschnitt Resolver legt ihr fest ob die Auswahl der DNS-Resolver nach den in der Grundkonfiguration festgelegten Parametern automatisch oder manuell erfolgen soll. Standardmäßig ist die automatische Auswahl aktiv. Wir nehmen die manuelle Variante und wählen wieder unseren DNS Server Digitale Gesellschaft aus der Schweiz aus.
Die erweiterten Einstellungen können so belassen werden wie sie sind. Die Variante ist relativ einfach und die Einstellungen sind bereits getätigt. Ihr könnt ausserdem oben rechts in den Einstellungen des Tools wählen dass der Dienst automatisch bei jedem Windows Start geladen werden soll. Dafür einfach auf da kleine Zahnrad oben in der Arbeitsleiste klicken und Simple DNS minimiert starten auswählen.
Test ob die DNS Verschlüsselung auf Linux, Android und Windows Geräten funktioniert
Auf der Seite https://www.dnsleaktest.com/ könnt ihr testen welche DNS Server bei Anfragen kontaktiert werden. Klickt auf den Standard Test, der reicht in den meisten fällen aus.
Sollten hier andere DNS Server auftauchen solltet ihr schauen ob Ihr alles richtig eingestellt habt. Startet eure Geräte zudem neu um den DNS Cache bzw DNS Einstellungen zu resetten.
Jetzt haben wir wenigstens eine gesicherte DNS Verbindung auf unserem Windows Rechner. Falls ich Methoden finde, wie man DNS over TLS in Windows aktiviert, werde ich das natürlich hier nachreichen. Vorerst sind wir aber fertig und haben unsere Privatsspähre und Informationssfreiheit ein bisschen mehr gefestigt mit der DNS Verschlüsselung auf Linux, Android und Windows Geräten.
Habt ihr Fragen zum Thema DNS Verschlüsselung auf Linux, Android und Windows Geräten? Schreibt sie in die Kommentare!
Ein Kommentar