Raspberry Pi: Tor WLAN Hotspot/Access-Point
Das Tor Netzwerk ist eines der bekanntesten Anonymisierungstools im Bezug auf das Tunneln des Internet Verkehrs. Man kann sich Tor auf seinen Computer installieren und es nutzen. Jedoch kann es sein, dass man diese Software aus gegebenen Gründen nicht auf dem eigenen Rechner haben möchte. Oder man möchte einen öffentlichen WLAN Hotspot betreiben, wobei man die Gefahr einer Abmahnung durch missbräuchliche Verwendung durch Dritte minimieren möchte. Dann bietet sich ein WLAN Hotspot/Access-Point an, der den gesamten Traffic über das Tor Netzwerk leitet. Dazu bietet sich aufgrund der geringen Leistungsaufnahme der Raspberry Pi an (Kombination auch unter dem Namen Onion Pi von Adafruit bekannt). Im Folgenden erkläre ich wie man mit dem Raspberry Pi einen Tor WLAN Hotspot/Access-Point aufbaut, der seinen Traffic über das Tor Netzwerk leitet.
Voraussetzung: Raspbian oder vergleichbare Distribution installiert mit angeschlossenem Access-Point fähigen WLAN-Stick
Zunächst benötigt man einen Access-Point fähigen WLAN-Stick. Diesen muss man auf dem Raspberry Pi als Access-Point/Hotspot konfigurieren und den Internet Zugang über diesen freigeben. Die Vorgehensweise ist nicht bei jedem WLAN-Stick gleich (häufig ähnlich, aber nicht immer gleich). In dem Artikel WLAN-Access-Point einrichten habe ich dir Vorgehensweise für den weit verbreiteten RTL8192SU bzw. RTL8188CUS Chipsatz erklärt. Falls du einen anderen WLAN-Stick verwenden möchtest solltest du nach einem passenden Tutorial suchen.
Im Folgenden gehe ich davon aus, dass man sich über WLAN an dem Raspberry Pi Hotspot anmelden und darüber surfen kann.
Wir installieren nun tor über den Paketmanager.
sudo apt-get install tor
Nun müssen wir die Konfigurationsdatei von tor anpassen. Dazu schreiben wir folgende Konfigurationen einfach an das Ende der Datei. Dies definiert einige Vorgehensweisen von dem installierten Tor Client. Dabei ist darauf zu achten, dass 10.11.12.1 durch die IP-Adresse des WLAN Adapters ersetzt werden muss. Diese finden wir über den Befehl ifconfig heraus (siehe Screenshot). In dem Editor nano kann man mittels STRG + X, Y und Enter speichern.
sudo nano /etc/tor/torrc
Log notice file /var/log/tor/notices.log VirtualAddrNetwork 10.192.0.0/10 AutomapHostsSuffixes .onion,.exit AutomapHostsOnResolve 1 TransPort 9040 TransListenAddress 10.11.12.1 DNSPort 53 DNSListenAddress 10.11.12.1 ClientOnly 1
Damit die soeben eingestellten Änderungen ihre Wirkung entfalten müssen wir Tor neustarten.
sudo service tor restart
Jetzt müssen wir mittels iptables den gesamten Datenverkehr über den Port 9050 (Tor) umleiten. Davon ausgenommen ist der Port 22, über den der SSH Traffic läuft (sofern der SSH Port geändert wurde, muss dieser hier angepasst werden). Dies bewerkstelligen wir mit folgendem Kommando. Des Weiteren muss, sofern der WLAN Adapter nicht wlan0 heißt, dessen Name angepasst werden.
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 22 -j REDIRECT --to-ports 22
sudo iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 53
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040
Wir sollten nun testen ob der Traffic über das Tor Netzwerk geleitet wird, wenn wir uns mit dem WLAN Hotspot des Raspberry Pis verbinden. Bspw. können wir dies unter der Check Page des Tor Projektes überprüfen.
Hat alles klappt, dann müssen wir noch Tor in den Autostart legen.
sudo update-rc.d tor enable
Abschließend legen wir die iptables Regeln noch in das Startscript von Tor, sodass sie bei jedem Start des Raspberry Pis ausgeführt werden. Dazu ersetzen wir die erste durch die zweite angegebene Version.
sudo nano /etc/init.d/tor
start)
ersetzen durch
start) sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 22 -j REDIRECT --to-ports 22 sudo iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 53 sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040
Fertig! Der Tor WLAN Hotspot/Access-Point ist auf dem Raspberry pi eingerichtet und kann genutzt werden. An dieser Stelle noch der Hinweis, dass man auch über Tor nicht vollständig anonym/sicher im Internet unterwegs ist – wie bei jedem anderen System dieser Art. Jedoch wird durch Tor die Rückverfolgung über die IP-Adresse wesentlich(st) erschwert.
36 Kommentare. Hinterlasse eine Antwort
Hallo Jan,
vielen Dank für deinen Raspberry Blog.
Ich überlege mir gerade eine Pi zuzulegen, noch läuft bei mir eine NSLU2 im 24/7 Betrieb.
In den iptables Regeln schreibst du immer Port 9040. Müsste das nicht für TOR der Port 9050 sein?
Dank und Gruß
Heiko
Prinzipiell ist deine Annahme richtig (also, dass dies der Standardport ist). Da man jedoch ein VLAN für den Access Point erstellt wird in Step 3, um Überschneidungen zu vermeinen, der TransPort auf 9049 gesetzt, worüber der Traffic dann durch den Tor Client läuft.
Hallo Jan,
wird mein raspberry denn auch als „tor exit“ punkt oder als „tore node“ punkt benutzt??? Falls ja wie kann ich das ausstellen? Und wo finde ich generel die einstellungen dazu? Danke schonmal
Meines Kenntnisstandes nach wird dein Raspberry Pi bei der beschriebenen Einrichtung nicht hierfür verwendet.
Hallo Jan,
tolle Anleitung, habe aber 2 Verständnisfragen: Ich will meine NSLU2 (mit Debian) auch als TOR Maschine nutzen. Ich will aber kein TOR WLAN aufmachen, sondern das ganze über Ethernet machen, d.h. ich würde an meinem PC die NSLU2 dann als DNS, Gateway usw angeben…
Müsste ich dann in Schritt 3 einfach die IP vom eth0 angeben und in Schritt 5 einfach eth0 anstatt wlan0? Wäre das schon alles?
P.S. Vielleicht macht hier auch noch der Einsatz von Privoxy Sinn, um den Traffic zu filtern…!?!
Gruss
Tyler
Wenn ich es richtig verstehe möchtest du, dass über eth0 der Raspberry Pi zum Internet verbunden ist, aber auch Anfragen die reinkommen durch das TOR-Netz leitet. Ich würde sagen ohne einen zweiten Netzwerkcontroller geht das nicht.
Ja stimmt, habe ich mich blöd ausgedrückt. Ich habe einen zweiten USB Ethernet Adapter dran. Dann müsste mein Vorhaben aber gehen oder?
Ja, das sollte gehen. Anstatt wlan0 eben den zweiten Ethernet Adapter angeben.
hallo Jan erstmal danke für die tolle Anleitung ich habe den torhotspot genau nach deiner Anleitung eingerichtet.
sogar mit dem gleichen WLAN stick.
ich habe das folgende Problem wenn ich über den Torhotspot auf meine Emails zugreifen will „Googlemail“ wird automatisch das Konto gesperrt.
ich habe auch schon viel wegen diesem Problem im Internet gesucht aber nicht eindeutiges gefunden.
hast du vielleicht einen Tipp für mich wie ich das Problem beheben kann.
viele liebe Grüße und danke im voraus michael.
Tor und Google sind meines Wissens nach nicht die besten Freunde. Das sollte schon alles Wichtige aussagen 😉
Hi Jan
wenn ich Step 4 ausführe kommt
Feb 09 17:09:40.983 [warn] You specified a public address for TransPort. Other people on the Internet might find your computer and use it as an open proxy. Please don’t allow this unless you have a good reason.
hab ich nun was falsch gemacht? Nur wenn was? Ist ja ne Sicherheitswarnung
ich hab einfach mal weiter mit der Anleitung geamcht. Bei Step 7 kommt
insserv: warning: script ‚mathkernel‘ missing LSB tags and overrides
Hoffe du kannst mit bei den beiden Problemen helfen. Der Test das Tor läuft war erfolgreich schonmal. Nur würde ich dennoch gerne wissen was mit den Fehlermeldungen es auf sich hat. Vorallem wenn es Sicherheitsprobleme gibt.
„insserv: warning: script ‘mathkernel’ missing LSB tags and overrides“ – die Meldung ist unbedenklich. Ist seit geraumer Zeit im Raspbian Image sozusagen inklusive 😉
Mhhh… habe gerade auch mal nach dem Fehler gegoogelt. Klingt strange. Eine Lösung war nicht in Sicht. Ich würde ihn einfach ignorieren, auch wenns nicht schön ist.
traue mich ja fast nicht nochwas zu Fragen
Bei
crontab -e
steht nirgends bei mir
start)
nur viel Informationen. Habe alles so eingegeben nur wenn ich den pi neu starte bin ich mit Tor nicht verbunden. Gebe ich die Befehle in der Konsole ein läuft alles prima.
Irgendwas mache ich beim autostart falsch. Hab die crontab unter user pi und unter root schon angelegt
Das war jetzt aber mein Fehler. Habs im Artikel korrigiert 🙂
Hi Jan,
wie schon vor Wochen beschrieben, habe ich mir jetzt mal die Zeit genommen und deine Anleitung (leicht verändert) angewendet. Ich nutze eine NSLU2 mit Debian 7 und 2 LAN Ports –> will keine Wifi, sondern das ganze über LAN realisieren.
Ich habe daheim 2 Subnetze (wie ja auch in deiner Anleitung) hinter dem Router. Soweit habe ich alles konfiguriert, aber wenn ich die IP Adresse des 1. LAN Adapters als Default Gateway in meinem Windows PC eingebe, kommt keine Verbindung zustande.
Meine Situation:
LAN 1:
192.168.178.0/24
LAN 2:
192.168.179.0/24
LAN 2 kann das Default Gateway von LAN1 erreichen, damit man auch von LAN2 ins Internet kann (default route). Sonst kann man aus LAN 2 nichts im LAN1 erreichen.
meine NSLU2:
Eth0: 192.168.178.28
Eth1: 192.168.179.28
Das .179.28er Netz konfiguriere ich dann in Schritt 3 deiner Anleitung als Listen Address. Von meinem Windows PC errreiche ich ja nur LAN1 deshalb nehme ich die 192.168.178.28 als DNS und Gateway. Habe ich da jetzt nen starken Denkfehler oder wieso klappt es nicht?
Beste Grüße u. schonmal Danke!
Puh. Ich muss zugeben Netzwerkkonfigurationen sind (wenn es keine Standardfälle sind) nicht meine Stärke. Damit würde ich mal in ein Debian Forum gehen. Dort findest du Leute, die sich damit besser auskennen als ich 🙂
mh so ganz habe ich das noch nicht verstanden. Habe aber selbst ein Gateway bei mir eingerichtet und zusätlich noch ein netz für wlan über tor.
Also welche ip hat den dein router 192.168.178.1?
und dein zweites Netz ist dann der 179 er bereich?
179 kann über 178 schon ins internet
nun soll 179 das tor bekommen und ins internet gehen
so richtig verstanden?
verstehe nun nicht was dein windows pc soll. wieso soll der von 178 zu 179 gehen. Um das Tor zu benutzen? Wieso gibst du dem nicht die 179 um Tor zu benutzen. So kann der ja auch auf 178 netz zugreifen
Hi,
eine Frage: An der Stelle an der ich in sudo nano /etc/init.d/tor
start)
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp –dport 22 -j REDIRECT –to-ports 22
sudo iptables -t nat -A PREROUTING -i wlan0 -p udp –dport 53 -j REDIRECT –to-ports 53
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp –syn -j REDIRECT –to-ports 9040
einfügen muss wird mir ausgegeben die Syntax „)“ von „start)“ nicht zu kennen, daher startet mein Tor auch beim reboot nicht von selbst. Wenn ich tor dann manuell starte, steht da es läuft, jedoch bleibt meine IP wenn ich über den access Point gehe dieselbe wie davor. Hatte niemand dieses Problem? Habe mich streng an die Anleitung, auch andere gehalten.
Deine Aussage widerspricht sich. Du könntest mit /etc/init.d/tor starten, aber darin ist ein Syntax Fehler. Das geht nicht. Die drei von dir zitierten Zeilen nach start) leiten den Datenverkehr erst über da Tor Netzwerk um.
Hi Jan!
Tolle Anleitung, ich werde mich mal daran versuchen.
Einen Hinweis hätte ich jedoch noch, falls ein Neuling wie ich sich dazu entschließt, das auch zu versuchen und sich nicht mit TOR auskennt.
Um die Sicherheit gegen Bad Exit-Nodes zu erhöhen, kann (sollte) man vertrauenswürdige Exit Nodes festlegen, die benutzt werden sollen. Das müsste in der Datei torcc gehen.
Auch sollte man vielleicht erwähnen, dass es sinnvoll ist, besonders bei sensibler Kommunikation noch Ende zu Ende Verschlüsselung zu verwenden und auf die Zertifikate und deren Vertrauenswürdigkeit zu achten.
Grüße
Philipp
Ich denke jeder dem es in hohem Maße um Sicherheit geht muss sich sowieso eingehender mit der Thematik beschäftigen. Alles andere bietet keine ernstzunehmende Sicherheit. Folglich lass ich den Kommentar mal in den Kommentaren stehen, werde ihn jedoch nicht in den Artikel einpflegen. Trotzdem danke für deine Anregung!
Hallo,
folgendes Szenario: Von unterwegs per VPN beim Rasperry einwählen und von dort aus ins Tor Netzwerk. VPN habe ich, nach deiner Einleitung, schon erfolgreich eingerichtet.
Ich denke, da muss nur eine richtige Einstellung bei den IPs erfolgen? Nur was genau?
Das sollte man über iptables behandeln können. Wie genau weiß ich auf die schnelle jedoch auch nicht. Das sollte aber recherchierbar sein.
Ich möchte das auch gerne einrichten (von extern mit vpn auf raspberry zu Hause und über Tor ins Internet) . Leider finde ich im Internet keine Lösung / Anleitung. Kann mir jemand helfen? VPN ist wie bei dir eingerichtet.
Hat keiner eine Lösung?
[…] Router baut, der beispielsweise alle Verbindungen über einen OpenVPN Server leitet oder ein Tor WLAN Hotspot aufbaut. Zur Realisierung benötigt man nicht mehr als einen WLAN-Stick an dem kleinen Rechner und […]
Und wie funktioniert das dann mit einem OpenVPN Client?:)
Ähnlich, wäre aber ein eigenes Tutorial. Habe ich mal auf meine Todo-Liste geschrieben 😉
Hi,
ich muss nach jedem reboot die hostapd neu starten (obwohl anscheinend der Prozess läuft), sonst ist keine Verbindung zum Netzwerk möglich.
Hat jemand ein ähnliche Problem oder eine Lösung?
Diesen Fehler kann ich bei mir leider nicht replizieren. Schau doch mal in das syslog. Dort sollten Fehler von hostapd geloggt werden.
cat /var/log/syslog
Hallo Jan!
Zuerst mal danke für die rollen Anleitungen.
Ist es sicher dass der Ganze Datenverkehr über Tor geleitet wird, also nicht das Flash sich „vorbeischummelt“ oder so?
Wenn ichs richtig sehe wird hier nur TCP über Tor geleitet. Kann man p2p Protokolle irgendwie auf z.B 127.0.0.1 umleiten, sodass keine „bösartigen Protokolle“ das Internet erreichen?
Vielen Dank und mach weiter so!
Hallo Jan,
wenn ich deinem tutorial folge, wird dann der gesammte traffic über tor geleitet?
Danke,
Hagen
Hallo Jan,
eben alles nach Anleitung gemacht und es hat funktioniert. Jedoch ist ach dem restart vom Pi irgendetwas kaputt gegangen. Der Traffic wird nicht mehr über Tor geleitet. Wenn ich tor starten möchte kommt das: Job for tor.service failed. See ’systemctl status tor.service‘ and ‚journalctl -xn‘ for details.
Hast du eine Ahnung was ich machen könnte?
Hallo Jan,
die Anleitung funktioniert mit den heutigen OS leider gar nicht mehr. Wie wäre es bitte mit einer Aktualisierung?
VG Walther