Privoxy

Anonym im Internet mittels Raspberry Pi, Tor und Privoxy


In diesem Artikel möchte ich mich damit befassen, wie man sich und seinen Internetanschluss mittels eines Raspberry Pi’s anonymisieren und gleichzeitig die Online Werbung filtern bzw. ausblenden lassen kann.

Benötigt werden für dieses Projekt folgende Dinge:

Wer mag, kann natürlich noch ein Gehäuse für den Rapsberry Pi erwerben, dieser ist aber nicht zwingend notwendig.

Nachdem wir uns das Linux basierende Betriebssystem Raspbian heruntergeladen haben prüfen wir zunächst den Hashwert der Datei um sicherzustellen, dass diese korrekt heruntergeladen wurde.

sha1sum 2012-12-16-wheezy-raspbian.zip
514974a5fcbbbea02151d79a715741c2159d4b0a

Anschließend entpacken wir das Image.

unzip 2012-12-16-wheezy-raspbian.zip

und kopieren es auf die SD-Karte. Bitte ersetzt die 1 durch den korrekten Laufwerksbuchstaben der Speicherkarte, da es ansonsten zu einen Datenverlust führen kann!

Zunächst hängen wir den entsprechenden Datenträger aus.
Linux:

sudo umount /dev/sdb1

Mac OS X:

sudo umount /dev/disk1s1

und kopieren danach das Image auf die SD-Karte

sudo dd bs=4M if=2012-12-16-wheezy-raspbian.img of=/dev/disk1

Hardware anschließen, booten und den Rapsberry konfigurieren

Nachdem wir die Speicherkarte in den Raspberry Pi gesteckt und das Gerät mit dem heimischen Netzwerk gekoppelt haben, können wir es via SSH ansprechen und konfigurieren. Die IP-Adresse des Raspberry Pi’s ist in meinem Fall die 192.168.0.24 und fand ich über den Router heraus.

ssh 192.168.0.24 -l pi

Mit diesem Befehl wählen wir uns über das Netzwerk in den Raspberry Pi mit den Benutzer „Pi“ ein. Das Passwort lautet raspberry und sollte direkt geändert werden.

passwd

Nachdem dieser Elementare Schritt getan ist, können wir den Raspberry mittels

raspi-config

noch konfigurieren. Dieses ist selbsterklärend und bedarf keine nähere Erläuterung meinerseits.
Danach bringen wir das System noch auf den neusten Stand mittels,

sudo apt-get update
sudo apt-get upgrade

Tor installation und konfiguration

Zunächst installieren wir Tor und Tor-ARM

sudo apt-get install tor tor-arm

Während auf dem Raspberry Pi das Programm Tor installiert wird können wir uns Gedanken über die zu verwendenden Ports machen. Denn wenn sich der Tor-Server hinter einem Router befindet, müssen diese durch den Router zu dem Rapsberry Pi getunnelt werden. Filesharer und Gamer werden mit dieser Technik bereits vertraut sein. Im Regelfall verwendet Tor die Ports 9001 sowie 9030. Eine Übersicht, welche Ports für welche Dienste vorgesehen sind, findet sich bei Wikipedia. Ich habe mich für die Ports 9040 und 4439 entschieden und diese entsprechend im Router zum Raspberry Pi getunnelt. Fürs Interne SOCKS-Tunneling nutze ich den Port 9050, dazu später aber mehr.

Nach dem das erledigt ist, können wir die Tor Konfigurationsdatei bearbeiten

sudo nano /etc/tor/torrc

Auf dem ersten Blick erschlagen einen förmlich die ganzen Einstellungsmöglichkeiten. Die meisten sind für uns allerdings irrelevant und können ignoriert werden. Gern kann man auch alles löschen und durch folgendes ersetzen:

Log notice file /var/log/tor/notices.log
ControlPort 9051
ORPort 4439
Nickname AliasName
RelayBandwidthRate 100 KB
RelayBandwidthBurst 200 KB
DirPort 9040
ExitPolicy reject *:*
DisableDebuggerAttachment 0
AvoidDiskWrites 1
SocksPort 9050
SocksListenAddress 127.0.0.1
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 127.0.0.1
DNSPort 53
DNSListenAddress 127.0.0.1

ORPort und DirPort sind die zuvor gewählten Ports, die man auch im Router freigegeben hat. Diese kann man prinzipiell, wie bereits zuvor erwähnt, frei wählen.

SocksPort, SocksListenAddress, VirtualAddrNetwork, DNSPort und DNSListenAddress sind für die spätere Netzinterne Tunnelung via Privoxy gedacht und können auch frei gewählt werden. Man sollte dieses lediglich bei der weiteren Konfigurierung beachten.

Der Nickname ist ebenso freiwählbar und sollte einmalig sein.
Hintergrund: Damit benennt man sein Tor-Relay, es entspricht also den Namen unter welchen sich das Tor-Relay im Tor-Netzwerk anmelden wird.

Mit ExitPolicy reject *.* legt ihr die Art des Knotens (Node) fest.
In diesem Fall handelt es sich um ein sogenanntes Relay ohne Exit-Node.

Mit den Einstellungen RelayBandwidthRate und RelayBandwidthBurst legt ihr die Traffic-Beschränkung eures Relays fest.

Die Einstellung DisableDebuggerAttachment ist dafür notwendig, um das Tor-Relay grafisch in ein Control-Panel (in unserem Fall arm) zu verpacken und bedienen.

AvoidDiskWrites dient dazu um die Schreibzugriffe zu reduzieren und schont das Speichermedium.

Eine detaillierte Übersicht über die Einstellungsmöglichkeiten findet ihr beim Torproject.

Nachdem Tor nun installiert, konfiguriert und eingerichtet ist, müssen wir es lediglich noch neu starten.

sudo /etc/init.d/tor restart

Privoxy installieren und konfigurieren

Zunäst installieren wir Privoxy mit den altbekannten Installationstool apt-get

sudo apt-get install privoxy

und fügen der Konfigurationsdatei mit dem Befehl

sudo nano /etc/privoxy/config

am Ende folgende Zeilen hinzu:

listen-address 192.168.0.24:8118
forward-socks5 / 127.0.0.1:9050 .

Der Punkt am Ende ist wichtig, damit Privoxy korrekt arbeitet. Diesen also bitte nicht vergessen (;
Nun starten wir auch diesen Dienst mittels

sudo /etc/init.d/privoxy restart

neu und haben es vollendet. Nun läuft auf dem Raspberry ein Tor-Relay, welches wir Netzwerkintern ansprechen können um unseren Internetverkehr zu anonymisieren. Damit dieses klappt, nutze ich Firefox, da der Proxy sehr simpel zu konfigurieren ist. In den Firefox Einstellungen navigiert man über Erweitert zu Netzwerk und klickt bei Verbindungen auf Einstellungen. Meine sehen wie folgt aus:

Sobald die Einstellungen gespeichert sind, kann man diese Prüfen, indem man die Internetseite Wie-ist-meine-IP.de ansteuert und auf der Startseite auf die IP-Adresse und den SOCKS achtet. Es sollte so ähnlich aussehen:

Damit wir noch die Rechner-Identität, wie das Betriebssystem verschleiern, nutzen wir eine hauseigene Funktion von Firefox. Dazu öffnen wir einen neuen Tab und öffnen folgende Seite

about:config

und erstellen einen neuen String mit den Namen

general.useragent.override

und lassen den Wert leer. Dadurch dürfte beim erneuten aufrufen der Seite die Identität nun verschwunden sein.

Ab jetzt surfen wir, so lange der Proxy in Firefox eingestellt ist und der Raspberry läuft, anonymisiert über das Tor-Netzwerk. Sicherlich ist die Geschwindigkeit nicht so schnell, wie zuvor (dieses ist über die torrc einstellbar), aber das ist mir eine Privatsphäre wert. Man sollte allerdings überlegen, was man womit abwickelt, denn die beste Lösung zur Anonymisierung ist sinnfrei, wenn man sich seinen privaten Facebook oder Twitter Account einloggt, Bankgeschäfte abwickelt oder eMails versendet. Zu diesem Zweck nutze ich weiterhin einen zweiten Browser (Google Chrome). Für alles andere wähle ich mich über den Proxy (Firefox) ein. Wer keine privaten eMails oder ähnliches auf den Gerät empfangen kann, hat die Möglichkeit den gesamten Internetverkehr über den Raspberry zu leiten. Dazu in einem anderen Artikel zur gegebenen Zeit mehr.

Die Aktivität eures Tor-Relays könnt ihr übrigens über den Raspberry jederzeit mit den Befehl

sudo -u debian-tor arm


aufrufen.

Den Proxy kann man natürlich für jede erdenkliche App nutzen, die einem einfällt und diese Option bietet.

Anregungen, Fehleranmerkungen oder ähnliches gern in die Kommentare!