Anonym im Internet - Seite 3
Nicht anonyme Namensauflösung
Wie bereits in Nicht anonym im Internet erwähnt, spielt das Domain Name System bzw. die Namensauflösung für alle Verbindungen zwischen dem Rechner des Anwenders und den Servern, die nachgefragte Dienste und Inhalte anbieten, eine wichtige Rolle, die auch für die Anonymisierung und einen ungehinderten Zugang zu Informationsquellen im Internet relevant ist.
Wenn der Internetnutzer in die jeweilige Internetanwendung den Domainnamen eingibt, sendet der „DNS-Client“ bzw. „DNS-Resolver“ – per UDP, aber auch per TCP – eine Anfrage, die den nachgefragten Domainnamen enthält, an Nameserver, die Datenbanken führen, in denen die Zuordnung zwischen Domainnamen und IP-Adresse eines Rechners gespeichert sind. Das ist primär der Nameserver des eigenen Internetdienstanbieters, wenn keine „fremden“ Nameserver manuell festgelegt wurden. Wenn der Nameserver des Internetdienstanbieters die Zuordnung bereits gespeichert hat, liefert er dem DNS-Client des Internetnutzers sofort die IP-Adresse zurück. Wenn nicht, befragt der Nameserver in Sekunden weitere Nameserver bis hin zum Nameserver des Hosters bzw. Internetdienstanbieters des Internetdiensteanbieters. Ist die Auflösung durchgeführt, wird der Internetanwendung des Internetnutzers über den DNS-Client in jedem Fall zuerst die übersetzte IP-Adresse mitgeteilt, bevor sie die eigentliche TCP/IP Verbindung zum Server des Internetdiensteanbieters mit dessen IP-Adresse aufnimmt.
Das bedeutet: der Internetdienstanbieter, der die statische oder dynamische IP-Adresse im Rahmen des Vertrages an den Kunden vergibt, verfügt auch über die persönlichen Daten des Kunden. Ergeht eine Überwachungsanordnung an den Internetdienstanbieter, werden alle an der Namensauflösung beteiligten Stellen abgehört oder wird die Vergabe der IP-Adresse auf Vorrat gespeichert, kann auch die nachträgliche oder aktuelle Zuordnung zwischen einer IP-Adresse und der Identität eines Kundens hergestellt werden – über weitere Protokollierung, welche Verbindungen von dieser IP-Adresse ausgingen – also auch, welche Server ein Kunde kontaktieren wollte.
Das heißt, selbst wenn die eigentliche Verbindung nach der Namensauflösung anonymisiert hergestellt wird, liegen diese Informationen vor. Da die Namensauflösung und die anonyme Verbindung mit minimalem Zeitunterschied auftritt, kann theoretisch der Zusammenhang zwischen einer anonymisierten Verbindung und einer vorangegangenen Namensauflösung hergestellt werden, was die Anonymität der Verbindung aufhebt. Das gilt insbesondere für Anonymisierungsdienste, die ohne oder nur mit minimaler Verzögerung der Weiterleitung von Datenpaketen arbeiten wie das bei Tor der Fall ist.
Deshalb ist die anonymisierte Namensauflösung wichtige Voraussetzung für eine effektive Anonymisierung. Anonymisierte Namensauflösung heißt, dass der DNS-Client des Rechners bzw. die Internetanwendungen des Internetnutzers in keinster Weise direkt an der Namensauflösung beteiligt sind, sondern die Namensauflösung stellvertretend für den Internetnutzer über den jeweiligen Anonymisierungsdienst durchgeführt wird.
Anonymisierte Namensauflösung über Tor
Mit Tor ist es möglich, DNS Anfragen zur Auflösung von Hostnamen in IP-Adressen anonymisiert über das Tor Netz zu leiten und von Tor Ausgang-Routern ausführen zu lassen. Für die Anfragen wird wie für alle Verbindungen zum lokalen Tor Onion Proxy das SOCKS Protokoll verwendet. Tor unterstützt dabei alle SOCKS Protokollversionen, bevozugt aber das SOCKS 5 Protokoll.
Das SOCKS Protokoll
SOCKS ist ein Protokoll, definiert im IETF RFC 1928, das von SOCKS Proxys verwendet wird, mit denen Netzanwendungen die Nutzung verschiedener externer Internetdienste durch eine Firewall ermöglicht wird. Bei Nutzung eines SOCKS Proxy ist für alle Netzanwendungen und -dienste der SOCKS Proxy der „Ansprechspartner“, die Netzanwendungen verbinden sich immer zum SOCKS Proxy und dessen Port, der die Anfragen durch die Firewall zum Zielrechner weiterleitet und umgekehrt die Antworten an die Netzanwednungen zurückleitet. D. h., über einen Proxy und einen Kommunikationskanal können alle Anfragen geleitet werden, was Anfragen an Nameserver zur Namensauflösungen einschließt. Die verschiedenen SOCKS Protokollversionen 4, 4A und 5 wirken sich auf Namensauflösungen wie folgt aus:
SOCKS 4 | akzeptiert nur IP-Adressen | Netzanwendung bzw. DNS-Client löst zuvor direkt Hostnamen über Nameserver auf |
SOCKS 4A | akzeptiert immer Hostnamen | (Keine) Namensauflösung durch Netzanwendung. Hängt davon ab, wie SOCKS 4A implementiert ist |
SOCKS 5 | akzeptiert Hostnamen oder IP-Adressen | Netzanwendungen lassen meistens Hostnamen zuvor über DNS-Client auflösen |
Das bedeutet für die Nutzung von Tor zur anonymen Namensauflösung und für alle Internetanwendungen:
- die Internetanwendung verfügt über eine SOCKS Proxy Schnittstelle.
- für Internetanwendungen ohne SOCKS Schnittstelle müssen alle ausgehenden Verbindungen durch „SOCKS-Wrapper“ oder Proxy Programme mit SOCKS Schnittstelle abgefangen und durch diese an den Tor Proxy übergeben werden.
- für die Funktionen des Betriebssystems zur Namensauflösung wird direkt oder indirekt per DNS-Proxy die DNSPort Tor Option genutzt.
- statt der Übergabe eines Hostnamens an die Internetanwendung kann zuvor manuell die anonymisierte Auflösung über Tor erfolgen und anschließend der Internetanwendung direkt die erhaltene IP-Adresse übergeben werden.
Generell gilt, dass man sich nach Durchführung aller Maßnahmen vergewissert, dass Anfragen zur Namensauflösung und der sonstige Datenverkehr einer Internetanwendung tatsächlich über Tor geleitet wird.
Internetanwendungen mit SOCKS
Verfügt die Internetanwendung über Einstellungen zur Angabe eines SOCKS-Proxy, übergibt man den Einstellungen die Daten für Tor.
„Server“/„Host“ | 127.0.0.1 oder localhost |
„Typ“/„Proxy“/„Version“ | SOCKS Version 5 |
Port | 9050 |
Können weitere Proxys für andere Protokolle angegeben werden, lässt man deren Einstellungen unberührt, um für alle Protokolle nur Tor als SOCKS-Proxy zu nutzen oder man verwendet eine lokale Proxy Anwendung, die ihrerseits den Datenverkehr an Tor weiterleiten kann.
In den Mozilla Anwendungen Firefox und Thunderbird setzt man zusätzlich die network.proxy.socks_remote_dns Einstellung in der erweiterten Konfiguration auf den Wert true.
SOCKS Wrapper und Proxy
Für alle Internetanwendungen, die per HTTP und HTTPS mit Servern kommunizieren und eine HTTP(S) Proxy Schnittstelle, aber keine SOCKS Schnittstelle aufweisen, bieten sich lokal betriebene Proxys wie Privoxy oder Polipo an, die auch die Anfragen zur Namensauflösung entgegennehmen und sie an Tor als SOCKS 5 Proxy weiterleiten.
Dafür werden in der Privoxy oder Polipo Konfigurationsdatei Tor-spezifische Weiterleitungsdirektiven eingesetzt und den Internetanwendungen die Adress- und Portangabe für Privoxy bzw. Polipo übergeben.
Bei Internetanwendungen, die keine SOCKS oder HTTP Proxy Schnittstelle aufweisen, müssen die Verbindungen über einen SOCKS-Wrapper abgefangen und an Tor weitergeleitet werden, was als „Socksifizierung“ oder „Torifizierung“ bezeichnet wird. Dafür installiert man das torsocks Paket und ruft die Internetanwendung torsocks auf.
torsocks anwendung [argumente]
Neben torsocks kann außerdem socat verwendet werden.
DNS-Proxys
Zusätzlich zur anonymen Namensauflösung über Tor, die an den Internetanwendungen ansetzt, sollte man auch die Funktionen des jeweiligen Betriebssystems zur Namensauflösung so ändern, dass zumindest zur Namensauflösung per UDP Tor verwendet wird. Dazu wird ein lokaler DNS-Proxy installiert, der vom Betriebssystem als primärer Nameserver angesprochen wird. Der DNS-Proxy fängt alle Anfragen zur Namensauflösung per UDP auf Port 53 ab und leitet sie an Tor weiter. Ohne DNS-Proxy kann Tor mittels DNSPort Option direkt als Nameserver angesprochen werden. Der Linux: DNS mit Dnsmasq, DNSCrypt-Proxy2 & Tor Beitrag enthält Anregungen und Informationen, wie man die Namensauflösung über Tor und weitere Nameserver in Verbindung mit Dnsmasq umsetzt.
manuelle Namensauflösung
Dazu verwendet man die tor-resolve Tor Anwendung.
tor-resolve -v hostname [sockshost:socksport] tor-resolve -v jabber.ccc.de 127.0.0.1:9050 217.10.10.194
Anschließend übergibt man der Internetanwendung die ausgeworfene IP-Adresse bzw. trägt sie bei statischen IP-Adressen in der Internetanwendung ein. sockshost:socksport kann wegfallen, wenn Tor standardmäßig auf 127.0.0.1 mit 9050 als Socks Port läuft.
Kontrolle mit Paket-Sniffer
Wer sichergehen und genauer überprüfen will, welche Daten und insbesondere Anfragen zur Namensauflösung über die Netzwerkschnittstelle abgehen, kann einen Paket-Sniffer wie Wireshark installieren. Mit Sniffern kann man alle Datenpakete mitprotokollieren, die über die Netzwerkschnittstelle abgehen und eingehen. Nach oder während der Protokollierung werden über Filter die Datenpakete hervorgehoben, die von Interesse sind. Der Wireshark Artikel der Wikipedia enthält Links zu Wireshark Anleitungen.
Oben sieht man die aus dem gesamten Datenverkehr herausgefilterten Anfragen zur Namensauflösung, die über die Netzwerkkarte und das loopback device gehen. Bei der Anonymisierung aller Anfragen über Tor dürften im ersten Fenster überhaupt keine direkten Anfragen an bestimmte Nameserver auftauchen, sondern nur Anfragen wie im zweiten Fenster.
Hier wird jedoch pdnsd als DNS-Proxy eingesetzt, der für bestimmte Hostnamen die Anfragen über die Netzwerkkarte direkt an bestimmte Nameserver weiterleitet, während für den Großteil aller anderen Hostnamen die Anfragen über das loopback device an Tor weitergleitet werden.