Tor Gateway – Raspberry Pi zum anonymen surfen verwenden – AnoPi

Erstellt am 25. Januar 2015 von At2oo1

Oft ist anonymes Surfen von Vorteil, zum einen möchte man nicht unbedingt immer alles über sich preis geben, zum anderen ermöglicht ein Tor Gateway Gästen anonymen Zugang ins Netz. Ein oft genutztes Anwendungsbeispiel ist das Umgehen der Steam Länder-sperre zum aktivieren von PC-Spielen die eigentlich für Deutschland oder andere Länder gesperrt wurden.

In diesem Tutorial zeige ich euch wie auf Basis des Raspberry Pi ein WiFi Tor-Gateway, auf auch als Onion Pi bezeichnet, selbst aufbauen könnt.

Was ist Tor und wie funktioniert es?

Tor oder auch The Onion Router ist eine kostenlose Software um online anonym unterwegs zu sein und um Internet-Zensur, zum Beispiel durch Regierungen, zu umgehen. Das Tor Netzwerk besteht aus freiwilligen die sich zu einem Netzwerk zusammengeschlossen haben, der Datenverkehr der Tor Benutzer wird über dieses Netzwerk geleitet um den Standort und die Aktivität des Benutzers zu verschleiern.

Um die Anonymität zu gewährleisten sendet der Tor-Client oder euer Tor Gateway euren gesamten Datenverkehr über das Tor Netzwerk, die Daten werden hierbei immer über mehrere Tor Knoten geleitet bis diese vom Letzten Knoten (auch Exit-Node genannt) an das Ziel weitergeleitet werden. Der Datenverkehr ist bis zur Exit Node verschlüsselt, wird dort entschlüsselt und an das eigentliche Ziel weitergegeben.

Wichtig!

Das alleinige verwenden von Tor über den Raspberry Pi garantiert keine Anonymität, wenn ihr anonym im Netz unterwegs sein möchtet solltet ihr euch auch so verhalten. Verwendet also keine Logins, Webseiten oder E-Mail Adressen die Rückschlüsse auf eure Identität zulassen. Benutzt zum Surfen am besten FireFox mit aktivierten AddOns welche das Anonyme Surfen unterstützen, das ist zum Beispiel das Plugin NoScript, Better Privacy und HTTPS Everywhere um Böse Identifikations-Scripte und Schnüffler an den Exit Nodes zu umgehen. Löscht nach einer Sitzung immer eure Browser Daten wie Cookies und Offline Daten, CCleaner unterstützt euch hierbei. Ihr solltet euch bewusst sein das Tor auch gerne von zwielichtigen Gestallten für Online Betrug (Fraud) verwendet wird, persönliches und kritisches sollte daher niemals bzw nicht ohne SSL-Verschlüsselung übertragen werden.

Was benötige ich hierzu?

Da wir allen Datenverkehr über den Raspberry Pi ins Tor Netz leiten möchten benötigt unser Raspberry Pi zwei Netzwerkschnittstellen. Da nur eine Ethernet-Schnittstelle vorhanden ist wird die zweite Netzwerkschnittstelle via WLAN realisiert. Die LAN Seite ist quasi der Ausgang Richtung Tor Netzwerk (ins Internet) und die WLAN Seite ist Quasi euer Verbindungspunkt (WLAN Hotspot), also der Eingang für euren Rechner.

Benötigte Hardware

  • Einen Raspberry Pi
    • Mit SD-Karte für das Betriebssystem (mindestens 4GB) – Für alle Modelle geeignet
    • Ein Netzteil mit mindestens 1200mA und MicroUSB Anschluss
    • Ein SD-Kartenleser um eure SD-Karte mit dem Betriebssystem zu bespielen (für Micro SD Adapter benötigt)
    • Ein Gehäuse für den Raspberry Pi (B+) – Optional
  • Ein Ethernet Kabel um euren RasPi mit eurem DSL-Router zu verbinden
  • Einen WLAN Adapter als Zugangspunkt für euren Rechner (WiFi Hotspot)

Voraussetzung ist natürlich ein Internet-Anschluss und ein DSL-Router mit freiem LAN-Anschluss, ich verwende eine FritzBox.

Raspberry Pi als Tor Gateway – Vorbereiten

Wir müssen, bevor wir auf unserem Raspberry Pi die Tor Software installieren einige Vorbereitungen treffen.

  1. Bespielt eure SD-Karte mit dem aktuellsten Raspbian Image – Siehe Raspberry Pi Einsteiger Tutorial Teil 2
  2. Verbindet euren Raspberry Pi via LAN-Kabel mit eurem Heimnetzwerk und richtet ihn ein – Siehe Raspberry Pi Einsteiger Tutorial Teil 3
  3. Verbindet den WLAN Adapter via USB mit dem Raspberry Pi (noch nicht konfigurieren)

Tipp:
Falls ihr den Raspberry Pi ohne Monitor betreibt schaltet den HDMI-Anschluss ab, das spart zusätzlich Strom (tvservice -o).

Raspberry Pi als Tor Gateway Einrichten

Als erstes aktualisieren wir unser Betriebssystem und die Firmware wie immer via APT

sudo apt-get -y update & sudo apt-get -y upgrade
sudo rpi-update
sudo reboot

Da wir unseren kleinen Computer direkt am Internet bzw. als Hotspot betreiben müsst ihr auf jeden Fall das Standard-Passwort des Benutzers Pi ändern, das erledigt folgender Befehl für uns. Nach Eingabe des alten Kennworts müsst ihr das neue eingeben und bestätigen.

passwd

WLAN Hotspot einrichten

Als nächstes konfigurieren wir den WLAN-Stick als Hotspot um später unseren Rechnern und Gästen einen anonymen Zugang bereitstellen zu können. Die Einrichtung des Hotspot / Access Point verläuft in mehreren Schritten:

  1. WLAN und LAN Verbindung prüfen
  2. DHCP-Server Software auf dem Raspberry Pi einrichten (das WLAN Geräte eine richtige IP-Adresse erhalten)
  3. WLAN Adapter konfigurieren (IP-Adresse vergeben)
  4. Die Access Point Software einrichten (Steuert die Konfiguration des WLAN Netzwerkes)
  5. Netzwerk Routing einstellen (Daten aus dem WLAN ans Internet weiterleiten)
  6. Hotspot testen

WLAN und LAN Verbindung prüfen

Ich verwende den Edimax Micro USB Stick mit Realtek Chipsatz, die notwendigen Treiber sind bereits in Raspbian enthalten sodass nur eine Konfiguration als Hotspot bzw. als WLAN Access Point notwendig ist. Um auf Nummer sicher zu gehen prüfen wir vorab noch kurz ob wir auch die aktuellste Treiber Version haben.

sudo apt-get install firmware-realtek

Wir prüfen noch ob der WLAN Stick tatsächlich auch richtig erkannt wurde.

ifconfig

An meinem Raspberry Pi tauchen nun drei Netzwerk-Interfaces auf, eth0 was unserem LAN-Anschluss am Router entspricht, lo für den Standard Loopback Adapter und wlan0 was mein USB WiFi Stick ist. Ich habe also meine beiden wichtigen Adapter, zum Einen eth0 für den Internetzugang mit automatischer Konfiguration via DHCP von meinem Internet Router und wlan0 welchen wir nun als WLAN Access Point einrichten.

DHCP-Server Software auf dem Raspberry Pi einrichten

Da wir Geräte, die sich mit dem WLAN Hotspot verbinden, nicht immer manuell mit den passenden IP-Adressen etc konfigurieren möchten installieren wir auf unserem Raspberry Pi einen DHCP-Server der mit dem WLAN verbundenen Geräten automatisch ihre Einstellungen übermittelt (isc-dhcp-server). Die Software hostap übernimmt für uns die Bereitstellung des Access Points auf dem Raspberry Pi.

sudo apt-get install hostapd isc-dhcp-server

Der DHCP-Server wird nicht direkt starten und ihr seht nach der Installation einen Fehler, das ist nicht weiter schlimm. Wir editieren die DHCP-Server Konfiguration mit dem Editor nano

sudo nano /etc/dhcp/dhcpd.conf

Als erstes deaktivieren wir die Verteilung von DNS-Suffixes da wir diese nicht benötigen, wir kommentieren die Zeilen daher einfach durch voranstellen einer # aus. Bei mir sieht das Ergebnis so aus.

# option definitions common to all supported networks...
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

Um zu bestimmen das dieser DHCP-Server der “Master” (authoritative) unseres Netzwerkes ist müssen wir diesen “Authorisieren” das erledigen wir durch entfernen der # vor authoritative. Bei mir sieht das Ergebnis wie folgt aus.

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

Nun fügen wir noch am Ende der Datei folgende Konfiguration hinzu um zu definieren welche IP-Adressen und Konfigurationen der DHCP-Server an die WLAN Clients sendet.

  • Ich verwende das Netz 192.168.179.0/24 und bestimme das der Standard Gateway in diesem Netz, an welchen alle Daten gesendet werden (unser Raspberry Pi), die IP-Adresse 192.168.179.1 hat. Zusätzlich gebe ich an das die WLAN Geräte alle die DNS Server von Google verwenden.
subnet 192.168.179.0 netmask 255.255.255.0 {
	range 192.168.179.10 192.168.179.50;
	option broadcast-address 192.168.179.255;
	option routers 192.168.179.1;
	default-lease-time 600;
	max-lease-time 7200;
	option domain-name "local";
	option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Wir speichern und beenden den Editor Nano, gespeichert wird bei Nano mit STRG+X, Y und Enter.

Es fehlt noch die Einstellung auf welcher Netzwerkschnittstelle der DHCP-Server die Konfiguration verteilen soll. Da wir einen Hotspot aufbauen ist das natürlich die SchSchnittstelle wlan0. Um die Einstellung vorzunehmen editieren wir die Datei isc-dhcp-server mit nano. 

sudo nano /etc/default/isc-dhcp-server

Inenrhalb der Datei ändern wir aus INTERFACES=””  in INTERFACES=”wlan0″ ab. Bei mir sieht das so aus.

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="wlan0"

Speichern und Beenden mit STRG+X, Y und Enter.

WLAN Adapter konfigurieren

Aus der Konfiguration des DHCP-Servers lassen sich nun die Netzwerkeinstellungen unseres WLAN Adapters ableiten. Wir haben das Netz 192.168.179.0 mit der Netzmaske 255.255.255.0 eingestellt und festgelegt das der Standard-Gateway auf der IP-Adresse 192.168.179.1 liegt. Folglich erhält unser Raspberry Pi diese IP-Adresse mit der genannten Netzmaske als statische IP-Adresse.

Wir deaktivieren als erstes den WLAN Adapter um die Einstellungen vornehmen zu können

sudo ifdown wlan0

Wir öffnen die Konfigurationsdatei für die Netzwerkschnittstellen mit nano

sudo nano /etc/network/interfaces

Wir ändern die Konfiguration von wlan0 wie folgt. Wir ändern die Zeile iface wlan0 inet manual zu iface wlan0 inet static und fügen darunter in eine neue Zeile die IP-Adresse address 192.168.179.1 mit der Netzmaske netmask 255.255.255.0 ein. Die Zeilen für den WPA-Schlüssel und die Defaults kommentieren wir durch voranstellen einer # aus.

Das ist meine interfaces Datei nach dem editieren.

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet static
 address 192.168.179.1
 netmask 255.255.255.0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp

Speichern wieder mit STRG+X, Y und Enter.

Access Point Software am Raspberry Pi konfigurieren

Wir konfigurieren nun das WLAN Netzwerk das unser Raspberry Pi später ausstrahlt. Hierzu erstellen wir eine Konfigurationsdatei für den vorher installierten Dienst hostapd.

sudo nano /etc/hostapd/hostapd.conf

Fügt folgende Konfiguration ein, diese bestimmt das WLAN Netz auf dem Adapter wlan0 erstellt wird und der WLAN Name raspberry.tips ist. Als Passwort für das WLAN Netzwerk wird RaspberryTor verwendet unter Verwendung von WPA Verschlüsselung (Auf Groß- Kleinschreibung achten!).

  • Falls ihr einen anderen WLAN Stick verwendet muss hier ggf. der Treiber (driver=rtl871xdrv) in den passenden geändert werden.
interface=wlan0
driver=rtl871xdrv
ssid=raspberry.tips
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=RaspberryTor
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Speichert und beendet wie immer und stellt sicher das keine Leerzeichen etc. in der Datei vorhanden sind, die Software ist hier sehr genau.

Wir Editieren nun noch die Parameter des Dienstes um festzulegen wo wir unsere WLAN Konfigurationsdatei abgelegt haben.

sudo nano /etc/default/hostapd

Wir ändern die Zeile  #DAEMON_CONF=”” wie folgt ab, vergesst nicht die Raute zu entfernen. Speichert und Beendet Nano wie gewöhnlich.

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Falls ihr wie ich den EDIMAX Stick verwendet benötigt ihr noch ein angepasstes hostapd binary, sonst funktioniert der Hotspot / Access Pint nicht. Das Herunterladen und ersetzen der Binary erledigen folgende Befehle. Die angepasste Version von Hostapd kommt von Realteak und ist im Treiber für das 8188CUS Chipset enthalten. Das dauert ein paar minuten.

wget http://cdn.raspberry.tips/2015/01/wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz
tar xzvf wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz
cd wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/hostapd
sudo make install

Routing und NAT am Raspberry Pi einrichten

Es existiert nun ein WLAN, eine Verbindung zum Internet via LAN, aber woher soll der Raspberry Pi nun wissen was er mit den Daten, welche über das WLAN bei Ihm ankommen, machen soll? Das ist ganz einfach, wir richten ein Routing ein welches bestimmt das die Daten aus dem WLAN Netz an das Internet weitergeleitet werden, das ganze passiert via Network Adresse Translation (NAT).

Als erstes aktivieren wir das IP Forwarding in der Datei sysctl.conf. Das benötigen wir um überhaupt Daten zwischen den Netzwerken weiterleiten zu können.

sudo nano /etc/sysctl.conf

Wir fügen ans Ende der Datei folgende Zeile ein und speichern/beenden wie gewohtn.

net.ipv4.ip_forward=1

Jetzt konfigurieren wir noch das NAT zwischen WLAN0 und ETH0 über das Tool iptables und speichern die Änderungen in die Datei /etc/iptables.ipv4.nat.

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

Da wir nach jedem Reboot die Konfiguration für das NAT wieder laden möchten fügen wir den Befehl hierzu in unsere interfaces Datei ans Ende an.

sudo nano /etc/network/interfaces

Fügt ans Ende folgende Zeile hinzu und Speichert wie immer.

up iptables-restore < /etc/iptables.ipv4.nat

WLAN Hotspot testen

Jetzt wird es Zeit unsere vorgenommenen Konfigurationen zu testen. Um alle Änderungen zu aktivieren führen wir jetzt einen Reboot durch, das ist einfacher als alle Dienste nun von Hand zu starten.

sudo reboot

Nach einen Reboot solltet ihr eich mit einem beliebigen WLAN Gerät verbinden und im Internet surfen können. Bei meinem Test mit meinem Windows Phone funktioniert alles einwandfrei.

Solltet ihr kein WLAN finden ist vermutlich der hostapd nicht richtig gestartet worden, ihr könnt diesen manuell starten um nach dem Fehler zu suchen.

sudo  hostapd -dd /etc/hostapd/hostapd.conf

Raspberry Pi – Tor einrichten

Da wir nun einen voll funktionsfähigen Hotspot bzw. Access Point haben können wir mit der Einrichtung unserer Tor Software zum anonymen Surfen über den Raspberry Pi fortfahren.

Wir installieren als erstes die Software Tor.

sudo apt-get install tor

Alle notwendigen Einstellungen erledigen wir in der Konfigurationsdatei der Tor Software, wir editieren diese mit dem Editor Nano

sudo nano /etc/tor/torrc

Wir fügen folgende Konfiguration ganz oben in die Datei ein. Diese Parameter bestimmen die Log Datei, das virutelle Netzwerk für den Datenverkehr und die IP-Adresse auf welcher gelauscht wird (unser WLAN Interface).

Log notice file /var/log/tor/tor-notices.log
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.179.1
DNSPort 53
DNSListenAddress 192.168.179.1

Gespeichert wird mit STRG-X, Y und Enter.

Da die Tor Software auf unserem Raspberry Pi mit einem virtuellen Netz arbeitet müssen wir die iptables Parameter noch anpassen sodass der Datenverkehr vom wlan nicht mehr direkt ins Internet gelangt sondern über die Tor Software läuft und dann ins Internet gesendet wird. Hierzu setzen wir die Konfiguration von IPTables zurück.

sudo iptables -F
sudo iptables -t nat -F

Dann definieren wir als erstes eine Ausnahme die besagt das SSH und DNS Datenverkehr nicht über Tor geleitet wird sondern direkt am Raspberry Pi landet und unter Umständen direkt ins Internet weitergeleitet wird.

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

Mit dieser Regel definieren wir das aller weiterer Datenverkehr aus dem WLAN über Tor geroutet wird (Port 9040 auf welchem der Tor Dienst lauscht).

sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040

Dann speichern wir die Tor Regeln wieder in eine Datei ab (iptables.ipv4.tor.nat).

sudo sh -c "iptables-save > /etc/iptables.ipv4.tor.nat"

Das nach jedem Neustart auch die richtigen iptables Regeln geladen werden müssen wir noch die Datei interfaces anpassen und festlegen das anstelle der Regeln iptables.ipv4.nat die Regeln aus iptables.ipv4.tor.nat geladen werden. Falls ihr später nur den Access Point Modus ohne Tor verwenden möchtet könnt ihr die Regeln einfach anpassen.

sudo nano /etc/network/interfaces

Ändert in der Datei einfach iptables.ipv4.nat zu iptables.ipv4.tor.nat. Mein Ergebnis sieht wie folg aus.

up iptables-restore < /etc/iptables.ipv4.tor.nat

Speichert und beendet nano. Jetzt fügen wir den Tor Dienst noch zum automatischen starten hinzu

sudo update-rc.d tor enable

Nach einem Reboot ist die Arbeit auch schon erledigt.

Wichtig! Um zu überprüfen das ihr auch wirklich via Tor im Internet unterwegs seit könnt ihr die Check-Seite von Tor verwenden.

https://check.torproject.org

Bei mir sieht das Ergebnis so aus.

Viel Spaß beim anonymen surfen!