www.fabiankeil.de/blog-surrogat/2007/01/21/freesbie-2.0-privoxy-tor-livecd.html
Die vor einem Jahr vorgestellte LiveCD Anonym.OS ist nicht mehr taufrisch, die darin enthaltene Privoxy-Version sogar fast drei Jahre alt und deren Konfiguration außerdem verbesserungswürdig.
Anfang Oktober habe ich mich daher mit Matteo Riondato in Verbindung gesetzt, um die Integration von Privoxy und Tor in FreeSBIE 2.0 anzuregen und somit für Ersatz zu sorgen. FreeSBIE ist eine auf FreeBSD basierende LiveCD, Matteo einer der Köpfe des Entwickler-Teams.
Zuerst schlug Matteo vor, eine gesonderte FreeSBIE-Version mit einer Anonym.OS-ähnlichen Konfiguration zu erzeugen, am Ende erschien es uns aber sinnvoller, die Standard-Version zu erweitern, so dass sich der Nutzer nicht zwischen zwei FreeSBIE-Variationen entscheiden, oder sogar beide runterladen muss.
Eigentlich kam ich schon etwas spät zur Party: die Endwicklung von FreeSBIE 2.0 war bereits in der Endphase und größere Anpassungen nicht mehr erwünscht, da späte Änderungen häufig unerwartete Nebeneffekte haben.
Das angedachte zweite Nutzerkonto mit fertiger Tor- und Privoxy-Konfiguration viel daher flach, stattdessen wurde ein Skript erstellt, mit dem Tor und Privoxy vom Standard-Nutzer (freesbie) kontrolliert werden können.
Im Nachhinein scheint das auch die bessere Lösung gewesen zu sein, da es den lästigen Account-Wechsel erspart.
Die Integration von Privoxy 3.0.6 scheiterte leider ebenfalls an der – nachvollziehbaren – Regel, die Pakete nicht im letzten Augenblick zu ändern, FreeSBIE 2.0 kommt daher mit Privoxy 3.0.5 beta.
Aus Privoxy-Entwickler-Sicht bedauerlich, aber ansonsten halb so tragisch und ein großer Fortschritt gegenüber Anonym.OS' mit Privoxy 3.0.3. Von der Code-Basis sind 3.0.5 beta und 3.0.6 weitesgehend gleich, deutlich unterschiedlich sind nur die Filter, die für 3.0.6 überarbeitet und ergänzt worden sind.
Nach dem Start verhält sich FreeSBIE wie eine normale LiveCD, Privoxy und Tor sind deaktiviert, ausgehende Netzwerk-Verbindungen werden nicht abgefangen sondern erreichen das Ziel ohne Umweg.
Über sudo freesbie_tor start
wird in den Anonymisierungs-Modus gewechselt,
dabei werden Tor, Privoxy, dns-proxy-tor und PF aktiviert, Privoxy wird als Proxy für
Firefox eingetragen und als http_proxy
in der Konfigurations-Datei der Standard-Shell
gesetzt.
Beide Einstellungen werden nur wirksam wenn die Shell neugestartet wird beziehungsweise Firefox noch nicht gestartet ist; andernfalls wird Privoxy umgangen.
Tor und PF bilden einen Abfang-Proxy: ausgehende TCP-Verbindungen von unprivilegierten Programmen werden von PF ins Tor-Netzwerk umgeleitet, ohne das dazu jede Programm-Konfiguration einzeln geändert werden müsste.
Dies geschieht ohne Umweg über trans-proxy-tor, die auf FreeSBIE eingesetzte Tor-alpha kann direkt mit PF kommunizieren um das ursprüngliche Ziel der Verbindung abzufragen.
Vor dieser Demonstration habe ich in FreeSBIE das Netzwerk konfiguriert,
mit passwd
ein neues Passwort gesetzt, über
sudo /etc/rc.d/sshd forcestart
den ssh-Server gestartet
und PF mit
echo "pass all flags S/SA keep state" | sudo pfctl -ef -
aktiviert.
Die PF-Konfiguration sorgte dafür, dass die spätere ssh-Verbindung
nach dem Aufruf von freesbie_tor
bestehen blieb.
fk@TP51 ~ $ssh freesbie@192.168.5.120 The authenticity of host '192.168.5.120 (192.168.5.120)' can't be established. DSA key fingerprint is 69:8c:83:71:07:4c:cb:5e:47:65:58:2e:d4:94:0c:c2. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.5.120' (DSA) to the list of known hosts. Password: Last login: Sun Jan 21 14:26:28 2007 Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD 6.2-RELEASE (FREESBIE) #4: Fri Jan 12 09:30:21 UTC 2007 --- Welcome to FreeSBIE 2.0 ----------------- /( )` \ \___ / | /- _ `-/ ' (/\/ \ \ /\ / / | ` \ O O ) / | `-^--'`< ' (_.) _ ) / `.___/` / `-----' / <----. __ / __ \ <----|====O)))==) \) /==== <----' `--' `.__,' \ ---------------FreeBSD: the power to serve--- If you need a reminder to leave your terminal, type "leave +hhmm" where "hhmm" represents in how many hours and minutes you need to leave. -- Dru <genesis@istar.ca> freesbie has logged on ttyp0 from 192.168.5.49. freesbie has logged on ttyv0 from local.
[freesbie@FreeSBIE][~]> freesbie_tor help Script: /usr/local/bin/freesbie_tor Parameters: - start Configures the system to use Privoxy and Tor. - stop Disables Privoxy and Tor again. - whitelist X Don't use Tor for connections to X (IP address or hostname) - wl X Shortcut for whitelist - blacklist X Use Tor for connections to X (IP address or hostname) (Default if Tor is enabled) - bl X Shortcut for blacklist WARNING: Don't use this script while Firefox is running or the modified proxy settings will be ignored.
[freesbie@FreeSBIE][~]> sudo freesbie_tor start Starting ... Preparing Tor configuration Preparing dns-proxy-tor configuration Preparing Privoxy configuration Preparing PF configuration to redirect outgoing TCP connections into Tor Configuring Firefox to use Privoxy Starting tor. Jan 21 14:34:17.882 [notice] Tor v0.1.2.2-alpha. This is experimental software. Do not rely on it for strong anonymity. Jan 21 14:34:18.065 [notice] Initialized libevent version 1.2 using method kqueue. Good. Jan 21 14:34:18.065 [warn] Fixing permissions on directory /var/db/tor Jan 21 14:34:18.065 [notice] Opening Socks listener on 127.0.0.1:9050 Jan 21 14:34:18.065 [notice] Opening Transparent listener on 127.0.0.1:9040 Jan 21 14:34:18.065 [notice] Opening Control listener on 127.0.0.1:9051 Jan 21 14:34:18.066 [warn] Can't log to stdout with RunAsDaemon set; skipping stdout Creating /var/log/dns-proxy-tor.log Starting dns_proxy_tor. Connected to Tor Starting privoxy. Jan 21 14:34:22 Privoxy(08085000) Info: loading configuration file '/usr/local/etc/privoxy/config': Configuring Firefox for proxy connections Setting http_proxy in tcsh's config file to Privoxy Waiting for Tor to get ready. This may take several minutes ......... Tor is ready. No ALTQ support in kernel ALTQ related functions disabled pfctl: pf already enabled
[freesbie@FreeSBIE][~]> csh freesbie has logged on ttyp0 from 192.168.5.49. freesbie has logged on ttyv0 from local.
Wahrscheinlich gibt es auch für csh
eine Möglichkeit,
die Konfigurations-Datei ohne Neustart neu einzulesen, als bash-Nutzer
ist sie mir allerdings nicht bekannt.
Wenn man nach dem freesbie_tor
-Aufruf über xinit
in den grafischen Modus schaltet, kann man sich den Neustart der Shell
auch sparen.
[freesbie@FreeSBIE][~]> lynx -dump http://www.showmyip.com/ | grep -A 11 "Internet Connection" #[2]IP Address properties of your Internet Connection 128.2.141.33 Real-Time Tor Detection Service has found 128.2.141.33 is a Tor Network exit node nickname err, running Tor 0.1.0.17 on FreeBSD i386 at Host Name [3]ERR.CYLAB.CMU.EDU so you appear to be in US-United States (verified) (Pennsylvania (verified)) through Internet Service Provider (ISP) Carnegie Mellon University (verified)
Ein etwas gründlicherer Test ist mit dem ebenfalls in FreeSBIE 2.0 enthaltenen Wireshark möglich: beim Belauschen des Netzwerk-Verkehrs dürfen Tors Verbindungen für die Aktualisierung der Directory-Informationen im Klartext erscheinen, die Web-Nutzung sollte aber – abgesehen vom verschlüsselten Tor-Verkehr – keine Spuren hinterlassen.
[freesbie@FreeSBIE][~]> sudo freesbie_tor wl 192.168.5.49 Whitelisting 192.168.5.49 No ALTQ support in kernel ALTQ related functions disabled 1/1 addresses added.
Über eine Whitelist können Ausnahmen für ausgehende Verbindungen gemacht werden, die ohne Umweg über Tor erfolgen sollen. Für lokale Verbindungen ist das auch zwingend erforderlich, da Tor sie nicht weiterleiten kann.
Beim heutigen Test ist mir noch eingefallen, dass es praktisch
wäre, wenn man auch eingehende Verbindungen über freesbie_tor
erlauben könnte, momentan muss man dass aber noch direkt über
pfctl
regeln, oder gleich die ganze Konfiguration wieder
zurück setzen:
[freesbie@FreeSBIE][~]> sudo freesbie_tor stop Stopping ... Stopping dns_proxy_tor. Stopping privoxy. Stopping tor. Disabling PF No ALTQ support in kernel ALTQ related functions disabled pf disabled Unsetting http_proxy Configuring Firefox for direct connections
FreeSBIE 2.0 löst auch jetzt schon Anonym.OS als Empfehlung des Hauses ab, ein paar Verbesserungsmöglichkeiten bei der Privoxy-Integration sind mir beim Schreiben dieses Artikels aber noch eingefallen.
freesbie_tor
sollte als erste Amtshandlung eventuell laufende
Firefox-Prozesse abschießen um sicherzustellen, dass die Konfigurations-Änderungen
korrekt übernommen werden. Die nächste FreeSBIE-Version wird wohl
mit Firefox 2.x kommen, der Nutzer könnte die Sitzung nach dem Neustart also
fortsetzen.
Die Privoxy-Konfiguration könnte etwas aggressiver sein. Für FreeSBIE 2.0 habe
ich weitesgehend die Cautious
-Settings übernommen, um Privoxy-Neulinge
nicht zu sehr zu verwirren, zum Schutz meiner eigenen Augen werde ich jedoch
beim nächsten Mal zumindest deanimate-gifs
zusätzlich aktivieren.
Statt einen statischen User-Agent (Firefox für Windows) zu setzen,
sollte mit uagen
für Abwechselung gesorgt werden. Seit Version 1.0.5 kann uagen
auch in Firefox-Konfigurations-Dateien schreiben, es fehlt also nur noch
der FreeBSD-Port um die Integration in die nächste FreeSBIE-Version zu erleichtern.
pft wäre ebenfalls eine nette Ergänzung, auch hier fehlt allerdings noch der FreeBSD-Port, außerdem über perldoc zugängliche Dokumentation.
In diesem Beitrag ging es ausschließlich um die Integration von Privoxy und Tor, FreeSBIE bietet eine Reihe weiterer netter Funktionen, siehe dazu: FreeSBIE 2.0 Release Notes, Handbook and FAQ.