Verschlüsseltes DNS
HTTPS dürfte im Zusammenhang mit Internetdiensten heutzutage jedem ein Begriff und zudem Standard sein. Hierbei wird die HTTP Kommunikation verschlüsselt, was in den meisten Anwendungsfällen herkömmliche Webseiten wie diese betrifft. Und bei dieser Kommunikation stoßen wir auf ein sehr altes grundsätzliches Problem, denn das Internet ist eigentlich kaputt...
Die Adressermittlung (bzw. Umwandlung) im Internet findet nach wie vor über das Dynamic Name System, kurz DNS, statt. Ich werde ich jetzt nicht im Detail auf die Arbeitsweise von DNS eingehen, aber kurz gesagt, nach wie vor kommunizieren Computer im Internet über IP Adressen, welche zu einer (oder mehreren) Adressen gehören (das Telefonbuchprinzip). Daher muss ein Computer bevor er eine Webseite o.Ä. aufruft, zunächst seinen bekannten DNS Resolver befragen, welcher weiß, welche IP zu der aufgerufenen Adresse gehört. Einige Webseiten laden externen Inhalt, sei es duch Werbung, oder die Verlinkung zu anderen Artikeln o.Ä. Daher kann das Aufrufen einer einzigen Webseite u.U. mehrere DNS Anfragen zur Folge haben. Alleine nur das Aufrufen der Seite www.heise.de beinhaltet über 50 Anfragen zu weiterführenden Webseiten. Wieviele Anfragen nochmals jede dieser 50 Seiten produziert, lässt sich nicht einmal erahnen.
Und hier kommt die Krux an der Sache: Diese (DNS) Anfragen sind standardmäßig nicht verschlüsselt. Damals (in den 1980ern) hat man sich über Verschlüsselung wenig bis keine Gedanken gemacht. Und es hat zu dieser Zeit bestimmt niemand damit gerechnet, wie man DNS Anfragen missbrauchen kann bzw. was sich mit diesen Informationen sonst noch anstellen lässt.
Problem 1:
Da die Anfragen unverschlüsselt sind, lassen sich diese natürlich an jeder beliebigen Stelle mitlesen, was eine sogenannte "Man in the Middle" Attacke (MITM) zulässt. Hierbei kann der Angreifer DNS Anfragen umlenken indem er statt auf www.abc.de das Opfer auf www.xyz.de umleitet, dieses davon aber nicht mitbekommt, bzw. erst wenn es zu spät ist (der Schadcode ist auf dem PC, oder die wertvollen Daten wurden abgegriffen, da das Opfer diese auf der gefälschten Seite gutgläubig eingegeben hat).
Problem 2:
Von dem oben genannten "Phishing" hat fast jeder schon einmal gehört. Aber abseits von sicherheitsrelevanten Problemen im DNS, gibt es ein weiteres nicht unerhebliches Problem im Bereich der digitalen Privatsphäre. Dadurch das die DNS Anfragen unverschlüsselt sind, ist angefangen beim ISP (Telekom, Vodafone etc.) einsehbar, welche Webseiten wann besucht wurden. Hier befinden wir uns im Bereich des User-Tracking, sprich dem Sammeln von Benutzerdaten, welche anhand der IP- und ggf. der MAC Adresse des Quellgerätes personifiziert werden können und somit ein wahrer Goldschatz für die Werbeindustriee sind. Dr. Dominik Hermann hat hierzu eine ausführliche Dissertation veröffentlicht.
DoH oder DoT (DNS over TLS) ermöglicht es diesen Datenstrom zu verschlüsseln. Allerdings passiert dies nur bis zum ISP, danach findet die DNS Kommunikation wieder unverschlüsselt statt. Angeblich soll es hierzu aber Pläne geben, diese weiterführende Kommunikation ebenfalls komplett auf Verschlüsselung umzustellen.
Das "Einer kennt alles" Problem
Im Regelfall benutzen Systeme einen einzigen DNS Resolver. Man kann zwar mehr als einen konfigurieren, aber üblicherweise wird der erste solange genutzt, bis dieser nicht mehr erreichbar ist. Das bedeutet, ein Resolver kennt alle DNS Anfragen. Jetzt kann man natürlich gut und gerne die Frage stellen, was machen ISPs wie die Telekom, Vodafone, 1&1 usw. mit unseren ganzen DNS Anfragen? Jedenfalls werden diese zunächst einmal geloggt und gespeichert. Was damit weiterhin passiert, kann niemand mit absoluter Sicherheit sagen und vielleicht werden diese sogar an Dritte weitergegeben/verkauft. Und selbst wenn damit nichts passieren sollte, ist theoretisch der Datenstrom der Benutzer mitsamt IP und DNS Anfragen nach dem ISP wieder erfassbar. Und diese "Ausgänge" sind natürlich nur bedingt dynamisch und relativ leicht aufzufinden.
Es spricht also einiges dafür unabhängig von der Verschlüsselung seinen DNS Resolver genauer auszuwählen, oder vielleicht sogar einen eigenen DNS Resolver zu betreiben. Einige Resolver werben auch extra dafür, dass z.B. keinerlei Logging erfolgt. Ein Abschöpfen des ausgehenden Datenstroms ist bei kleineren unbekannten Resolvern natürlich ebenfalls unwahrscheinlich. Somit wird das Risiko minimiert, auch wenn es nicht gänzlich verschwindet. Zumindest ist eine Rückverfolgung des ursprünglichen Systems, welches die Anfrage gestartet hat, deutlich schwieriger.
DoH, DoT, DNSCrypt, DwasBitte?
Bei DoH (DNS over HTTPS) wird tatsächlich normal über den Port 443 (das reguläre HTTPS Protokoll) kommuniziert, was es ermöglicht, dass eine DNS Anfrage nicht von einer normalen Webseiten-Anfrage zu unterscheiden ist. Dieses Verfahren macht es allerdings auch zu dem langsameren, wobei die Unterschiede bei herkömmlichen Verbindungsgeschwindigkeiten marginal ausfallen dürften. DoH ist als RFC 8484 standardisiert.
DNS over TLS (DoH) nimmt die bisherige Basis der DNS Kommunkation per UDP/53 und entwickelt diese weiter indem eine Verschlüsselung per TLS hinzugefügt und ein eigenständiger Port (normalerweise 853) verwendet wird. Dadurch ist DoT schneller als DoH. DoT ist zwar nicht standardisiert, aber als RFC 7858 vorgeschlagen.
DNSCrypt ist gegenüber den beiden anderen das ältere Verfahren und basiert weder auf HTTPS noch TLS, sondern setzt auf einen eigenen Algorithmus. Allerdings läuft DNSCrypt ebenfalls über den Port 443 (standardmäßig allerdings UDP, Fallback TCP) was somit bis zu einem gewissen Grad auch den Vorteil der "Paketverschleierung" beinhaltet. DNSCrypt wurde jedoch nie als Standard vorgeschlagen.
Weitere Protokolle zur Verschlüsselung von DNS ist bspw. QUIC, auf welches ich hier aber nicht weiter eingehe.
DoH und DoT sind somit derzeit die gängisten Lösungen. Aber wie nutzt man nun verschlüsseltes DNS?
Die betriebssystemseitige Lösung
Ich habe bereits im Sailfish Artikel oder auch auf Mastodon mehrfach auf die Software dnscrypt-proxy hingewiesen. Anders als der Name vermuten lässt, unterstützt dies natürlich auch DoH/DoT.
Der Vorteil dieser Software ist, dass die Verschlüsselung auf OS Ebene erfolgt, unabhängig von den nachfolgenden Geräten/Zugängen. Somit hat man DoH/DoT/DNSCrypt bspw. auf seinem Notebook, egal wo man sich befindet. Zusätzlich bietet die Software die Nutzung von Domain- und IP Blacklists und dadurch natürlich auch Whitelists. Der zu verwendende Resolver ist frei wählbar, wobei auch mehrere Resolver mit unterschiedlichen Protokollen genutzt werden können.
dnscrypt-proxy arbeitet mit sogenannten DNS Stamps. Diese Stamps beinhalten alle relevanten Informationen um sich mit den gesicherten DNS Resolver verbinden zu können. Eine Liste mit Resolvern und den dazugehörigen Stamps findet sich hier. Zusätzlich kann man Stamps auch selbst generieren.
Für iOS gibt es die App DNSCloak, welche im Endeffekt nur ein iOS Frontend für dnscrypt-proxy ist.
Statt manueller Eintragung von DNS Stamps, bekommt man eine vorgefertigte Liste mit Resolvern und den Protokollen und Optionen.
Hier sieht man auch einen weiteren Vortel einiger unabhängiger Resolver: Teilweise laufen diese mit Filtern, was das Blocken unerwünschten Inhalts wie diverser Werbeseiten bewirkt.
Eine Software mit ähnlichen Funktionen ist Stubby, welche für Linux, MacOS und Windows verfügbar ist.
Pihole
Der PiHole dürfte eines der bekanntesten und weit verbreitetesten Raspberry Pi Projekte überhaupt sein. Mit seiner Hilfe lässt sich die gesamte DNS Kommunikation in einem Netzwerk filtern - überwiegend natürlich dazu gedacht, Werbung und Tracking zu unterbinden. Der PiHole arbeitet dabei auch nur mit einfachen Blocklisten, welche beinhalten, was für DNS Namen gefiltert werden sollen. Um den PiHole im Netzwerk nutzen zu können, muss dieser natürlich auch als erster DNS Resolver im Netzwerk konfiguriert werden (z.B. am Router). Leider bietet PiHole aber bisher von Haus aus nicht die Möglichkeit, die DNS Kommunikation zu verschlüsseln bzw. DoH o.Ä. zu nutzen, weshalb hier Hand angelegt werden muss.
Auf der eigenen PiHole Webseite wird beschrieben, wie man einen DoH Client von Cloudflare (cloudflared) installieren kann.
Zwar kann man theoretisch auch einen anderen Resolver verwenden als Cloudflare, für mich persönlich hatte aber die Firma im Hintergrund bei der Lösung einen bitteren Beigeschmack (siehe Punkt "Firefox").
Die o.g. Software dnscrypt-proxy ist allerdings so vielseitig einsetzbar, dass auch diese auf einem PiHole funktioniert. Man muss nur beachten, dass der dnscrypt-proxy Daemon nicht auf Port 53 läuft, sondern bspw. auf 5053. Anschließend muss dann der PiHole selbst mit der 127.0.0.1#5053 als Custom Upstream DNS Server in der grafischen Konfiguration eingetragen werden.
Firefox
Seit 2018 experimentiert Firefox mit DoH als implementierte Lösung innerhalb des Browsers, was seit 2019 Bestandteil ist und auch standardmäßig aktiviert wird. Diese Lösung birgt allerdings mehrere Nachteile. Erstens findet die Verschlüsselung der DNS Anfragen nicht auf OS Ebene statt, sprich es werden nur Anfragen aus dem Firefox Browser verschlüsselt. Damit fällt die restliche Kommunikation diverser Anwendungen etc. hinten runter. Zweitens setzt Firefox (bzw. Mozilla) zunächst auf Cloudflare als DNS Resolver, welcher auch von Haus aus eingestellt ist.
Hierbei kommen wir wieder auf das "einer kennt alles" Problem, zudem die Firma Cloudflare recht fragwürdig ist. Cloudflare wird in der Security/Privacy Szene mittlerweile skeptisch betrachtet, da diese die Benutzerdaten loggen und analysieren. Was das bedeutet kann man zwar nur erahnen, aber lässt höchstwahrscheinlich darauf schließen, dass ein Datentrog exisitiert. Und wo ein Trog ist...
Zusätzlich untersteht das große Unternehmen mit Sitz in San Francisco natürlich der US Administration. Nach einigen Protesten ist man mittlereweile in der Lage eigene Resolver einzutragen, was aber nicht den ersten Nachteil löst, dass DoH nicht systemweit läuft.
Fazit
Das Thema DNS Verschlüsselung wird gerade in heutiger Zeit immer wichtiger. Unabhängig von den sicherheitsrelevanten Aspekten, nützt es auch der digitalen Privatsphäre um es Internetfirmen zu erschweren, personenbezogene Profile für Werbung o.Ä. erstellen zu können.
Ich für meinen Teil setze bisher vollumfänglich auf die Software dnscrypt-proxy mit zusätzlicher Blacklist und wechsel hin und wieder den Resolver. Auf lange Sicht hin wäre es allerdings wünschenswert, wenn die DNS Kommunikation endlich als Standard im Internet verschlüsselt wäre.
Diskussionen, Anmerkungen usw. zu diesem Artikel findet ihr auf Mastodon.