www.fabiankeil.de/blog-surrogat/2007/01/21/freesbie-2.0-privoxy-tor-livecd.html

FreeSBIE 2.0: In den Fußstapfen von Anonym.OS

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.

[Screenshot: FreeSBIE-Desktop mit Savannen-Landschaft als Hintergrundsbild] 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.

Leicht veraltete Privoxy-Version

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.

Vorstellung von freesbie_tor

[Screenshot-Ausschnitt: Konservative Privoxy Standard-Einstellungen] 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.

Vorspiel

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.

Begrüßung

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.

Hilfe

[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.

Tor und Privoxy starten

[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

Shell neustarten

[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.

Oberflächlicher Konfigurations-Test

[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.

Direkte Verbindungen teilweise erlauben

[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

Fürs nächste Mal ...

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.

Thematisch begrenzt

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.