Daten|teiler
Kopieren als Kulturtechnik

Torify: Programme im Terminal anonymisieren

4. Juni 2014 von Christian Imhorst

Die meisten Menschen benutzen Tor vermutlich zum anonymen Surfen mit dem Tor Browser Bundle, das in freiesMagazin 05/2014 [1] vorgestellt wurde. In diesem Artikel geht es um die Nutzung von Tor im Terminal, was je nach Distribution mit mehr oder weniger Installationsaufwand verbunden ist.

Redaktioneller Hinweis: Dieser Artikel von mir ist erstmals in der Juniausgabe 06/2014 von freiesMagazin erschienen.

Tor installieren

Der Name Tor ist eine Abkürzung für The Onion Router [2]. Das Ziel von Tor ist, Verbindungsdaten von Programmen im Internet zu anonymisieren und nicht nur TCP-Verbindungen von Webbrowsern, sondern auch die von E-Mail-Programmen, SSH und anderen Anwendungen zu verschleiern. Zusätzlich verbirgt Tor den Standort des Nutzers und schützt vor Netzwerküberwachung und der Analyse des Datenverkehrs.

Unter Debian reicht z. B. die Installation von Tor aus den Paketquellen. Die Installation aus dem Repository spielt zwar nicht unbedingt die aktuelle Version auf die Festplatte, aber immerhin werden wichtige Sicherheitsupdates nachgeliefert. Von der Installation aus dem Repository von Ubuntu dagegen raten die Entwickler ab. Da das Programm „universe“ [3] zugeordnet ist, erhält es keine aktuellen Stabilitäts- und Sicherheitsupdates.

Für Debian und Ubuntu gibt es aber auch ein Tor-Repository, das man direkt in eine Source-Liste eintragen und mit dem Paketmanager installieren kann [4]. Dieses Vorgehen ist besonders zu empfehlen, da so immer die aktuellste Version und die neuesten Sicherheitsupdates installiert werden.

Die beiden anderen Distributionen, die vom Tor-Projekt direkt mit Paketen versorgt werden, sind Fedora und CentOS [5]. Für sie gilt der gleiche Hinweis wie für Ubuntu: Die Pakete in den Repositorys sind veraltet. Für Yum wird aber ein Repository vom Tor-Projekt selbst gepflegt.

Für openSUSE und andere Linux-Distributionen gibt es dagegen kein Repository des Tor-Projekts, hier bleibt nur das Übersetzen des Quellcodes [6]:

$ ./configure
$ make
# make install

Wenn man wissen möchte, ob man die aktuelle Version von Tor verwendet, gibt man einfach den Befehl tor ins Terminal ein, um Tor manuell zu starten. Zu der Zeit, als dieser Artikel geschrieben wurde, war die neuste Version 0.2.4.21:

$ tor
Mar 25 20:25:41 [notice] Tor v0.2.4.21

Tor benutzen

Egal, wie man Tor installiert hat, in den Voreinstellungen ist Tor immer als Client konfiguriert und die Konfigurationsdatei muss in der Regel auch nicht geändert werden. Tor ist gleich nach der Installation und dem ersten Start einsatzbereit. Für diesen Artikel werden aber zur Veranschaulichung trotzdem zwei Einstellungen in der Konfigurationsdatei /etc/tor/torrc geändert. Hierfür muss man die Datei mit Root-Rechten editieren.

Zuerst wird dort die Zeile für die Einstellung ControlPort auskommentiert, also das Doppelkreuz davor entfernt:

ControlPort 9051

Damit wird der Port gesetzt, auf dem Tor auf lokale Verbindungen lauscht.

Danach wird Tor noch mitgeteilt, dass sich Anwendungen nicht authentifizieren müssen, um Tor zu kontrollieren. Dazu wird die Zeile mit CookieAuthentication auskommentiert und die 1 durch eine 0 ersetzt:

CookieAuthentication 0

Auf die letzte Einstellung sollte man verzichten, wenn Tor auf einem Server läuft oder der Rechner mehrere Benutzer hat, da sonst jeder Kontrolle über die Tor-Installation auf dem System erlangen kann. Weiter unten wird aber gezeigt, wie die Authentifizierung mit einem Passwort wieder sichergestellt werden kann.

Nach der Änderung der Konfigurationsdatei muss Tor neu gestartet werden:

# /etc/init.d/tor restart

Bevor es weitergeht, wird erst einmal die aktuelle IP-Adresse im Terminal festgestellt:

$ wget -qO- ifconfig.me/ip
82.185.27.13

Stellt man dem Befehl ein torify voran, bekommt man ein anderes Ergebnis:

$ torify wget -qO- ifconfig.me/ip
77.247.181.164

Das Skript torify ist ein Wrapper für Tor, also eine Software, die eine andere Software umgibt, indem es die Torsocks mit einer bestimmten Konfiguration aufruft. Mithilfe der Torsocks arbeitet Tor als Proxyserver, mit dem man viele Internetanwendungen anonym benutzen kann, indem man ihnen den Befehl torify voranstellt. Tor schickt dann deren Internetpakete verschlüsselt über drei Server, auch Nodes genannt, und erst der letzte Server, der Exit-Node, kann das Paket vollständig entschlüsseln und an den eigentlichen Bestimmungsort weiterleiten. Der Server, für den die Datenpakete bestimmt sind, sieht dabei nur die IP des Exit-Nodes, und nicht die des Absenders.

Möchte man Tor mitteilen, dass eine neue Route durch das Netzwerk gesucht werden soll, so wie man mit dem Tor-Button im Browser die Identität wechselt, kann man mit folgendem Befehl eine neue Sitzung erstellen:

$ echo -e 'AUTHENTICATE \r\nSIGNAL NEWNYM\r\nQUIT' | nc localhost 9051

Mit dem Programm Netcat [7], auch nc genannt, wird der Befehl SIGNAL NEWNYM über eine Netzwerkverbindung zum Port (hier: 5091) des Zielservers (hier: localhost) transportiert. Jetzt wird ausgenutzt, dass weiter oben die Zeile in der Konfigurationsdatei für diesen ControlPort auskommentiert wurde: Tor lauscht also auf Befehle, die über diesen Port hereinkommen. Der Befehl SIGNAL NEWNYM veranlasst Tor dazu, einen neuen Weg durch sein Netzwerk zu suchen. Ob das geklappt hat, kann man schnell feststellen, indem man seine IP-Adresse wieder mit torify überprüft:

$ torify wget -qO- ifconfig.me/ip
95.85.49.232

Wie man sieht, hat sich die IP-Adresse geändert. Anstelle von wget kann man natürlich auch die IP-Adressen anderer Programme im Terminal verschleiern, zum Beispiel die von SSH-Sitzungen, vom textbasiertem Webbrowser w3m, dem IRC-Client BitchX, rTorrent oder cURL, um anonymisiert Dateien zu übertragen.

Passwort für Tor setzen

Wird der Rechner von mehreren Leuten benutzt oder Tor auf einem Server betrieben, sollte man ein Passwort verwenden. Dazu wird zuerst ein Passwort-Hash erstellt [8]:

$ tor --hash-password "correcthorsebatterystaple"
[...]
16:8A043AE4F8D4343E602D71326A923F3524AD 549473D11FCD401A36F7EA

Die gekürzte Ausgabe zeigt nur die Zeile mit dem Hash, der in die Konfigurationsdatei /etc/tor/torrc eingetragen werden muss. Nachdem diese geöffnet wurde, muss der folgenden Zeile wieder ein Kommentarzeichen vorangestellt werden, wie hier schon zu sehen ist:

#CookieAuthentication 0

Anschließend muss die Zeile für das Passwort auskommentiert und der Hash durch den soeben generierten ersetzt werden:

[LISTINGUMG_ALT]HashedControlPassword 16:8A043AE4F8D4343 E602D71326A923F3524AD549473D11FCD401A36F7EA

Nach dem Speichern der geänderten Konfigurationsdatei wird Tor wieder neu gestartet:

# /etc/init.d/tor restart

Will man Tor jetzt mit SIGNAL NEWNYM mitteilen, dass ein anderer Weg durch das Netzwerk genommen werden soll, muss man natürlich das Passwort benutzen, um sich vorher zu authentifizieren, damit man das auch machen darf:

$ echo -e 'AUTHENTICATE "correcthorsebatterystaple"[HTML-BACKSLASH]r[HTML-BACKSLASH]nSIGNAL NEWNYM[HTML-BACKSLASH]r[HTML-BACKSLASH]nQUIT' - nc localhost 9051

Gefahren beim Benutzen von Tor

Auch im Terminal gelten dieselben Vorsichtsmaßnahmen, wie sie schon im Artikel „Mit Tarnkappe im Netz: Das Tor Browser Bundle“ angesprochen wurden. Tor schützt nicht vor der eigenen Dummheit. Wenn man seine Identität im Internet preisgibt, hilft es nicht, wenn man vorher seine IP-Adresse anonymisiert hat. Genauso sind auch bei Tor im Terminal „böse“ Exit-Nodes ein Problem, weshalb man auch hier auf eine verschlüsselte Verbindung zwischen dem eigenen Rechner und dem Zielsystem achten sollte.

Was dagegen Browser weniger trifft, aber Programme im Terminal, ist das DNS-Leaking. DNS steht für Domain Name System [9] und ist sozusagen die Telefonauskunft des Internets. Ein Name, wie zum Beispiel „freiesmagazin.de“ können sich Menschen leichter merken als die dazugehörige „Anschlussnummer“, die IP-Adresse. Wenn der Domain-Name als URL ins Internet geschickt wird, wandelt das Domain Name System sie in die dazugehörige IP-Adresse um und leitet die Anfrage zum richtigen Server weiter.

Wenn das Chat-Programm, mit dem man sich anonym über das Tor-Netzwerk unterhalten will, diese DNS-Anfrage aber mitsendet, kann ein Außenstehender sehen, von wo aus man sich mit dem Chat-Server verbunden hat. Ob eine Anwendung von diesem DNS-Leaking betroffen ist, kann man nur mit einem Sniffer zur Analyse der Netzwerk-Kommunikation herausfinden, zum Beispiel mit Wireshark [10]. Mit der Kommandozeilen-Version tshark schneidet man dann sämtliche DNS-Anfragen mit, die den eigenen Rechner verlassen. Anschließend startet man das Programm, von dem man den Verdacht hat, dass es vom DNS-Leaking betroffen ist [11].

Schließlich können auch Schwachstellen im Tor-Protokoll selbst ausgenutzt werden. Inwieweit das schon geschieht, ist unklar, was aber auch in der Natur der Sache beim Ausnutzen von Schwachstellen liegt. Hier bemüht sich das Tor-Projekt aber um größtmögliche Transparenz. Es lohnt sich also, ein Auge auf das Blog des Projekts zu haben [12].

Die Anonymisierung mit Tor hat schließlich auch ihre Grenzen in der Menge und der Verteilung der Nodes. Die Liste aller Tor-Knoten ist öffentlich. Durch die Überwachung einer ausreichend großen Anzahl der Nodes oder auch durch einen größeren Teil des Internets kann fast sämtliche Kommunikation über Tor nachvollzogen werden. Geheimdienste können das erreichen, indem sie Betreiber von Internet-Knoten oder wichtigen Backbones zur Kooperation zwingen, da sich die Tor-Nodes auf nur wenige Länder verteilen. Es reicht also die Zusammenarbeit von nur wenigen Instanzen, um die Anonymisierung im Tor-Netzwerk deutlich zu schwächen. Dann müssen nur noch der erste und der letzten Node überwacht werden, um durch eine statistische Auswertung auf den Ursprung der Verbindung zu schließen.

Links
[1] http://www.freiesmagazin.de/freiesMagazin-2014-05
[2] https://de.wikipedia.org/wiki/Tor_(Netzwerk)
[3] http://wiki.ubuntuusers.de/Paketquellen#universe
[4] https://www.torproject.org/docs/debian
[5] https://www.torproject.org/docs/rpms.html.en
[6] https://www.torproject.org/docs/tor-doc-unix.html.en
[7] https://de.wikipedia.org/wiki/Netcat
[8] http://xkcd.com/936/
[9] https://de.wikipedia.org/wiki/Domain_Name_System
[10] http://wiki.ubuntuusers.de/Wireshark
[11] http://wiki.ubuntuusers.de/Tor/Gefahren
[12] https://blog.torproject.org/blog/

Geschrieben in freiesMagazin, Publikationen