Qubes OS Tor-Konfiguration (Sehr nützlich bei Verwendung von WebTunnel)

Szenario – Whonix bietet keine vollständige Tor-Lösung

Als sicherheitsorientiertes Betriebssystem integriert Qubes OS Whonix, das die Verbindung über Tor unterstützt. Da lyrebird jedoch noch nicht im offiziellen Debian-Repository verfügbar ist, unterstützt Whonix keine WebTunnel-Bridges.

In manchen Ländern sind obfs4-Bridges leider unbrauchbar, da das Netzwerk stark zensiert wird. Die Verwendung von WebTunnel-Bridges kann dann die einzige Option sein. Daher können wir die neueste Version von Tor nutzen, um anderen Qubes über ein NetVM den Zugang zum Tor-Netzwerk zu ermöglichen.

Schritt 1: Qube für den Tor-Daemon vorbereiten

In diesem Schritt bereiten wir einen Qube vor, in dem der Tor-Daemon läuft. Erstellen Sie einen Qube – hier als StandaloneVM mit dem Namen tor-daemon basierend auf dem Template fedora-41-xfce. Aktivieren Sie den automatischen Start. Öffnen Sie nach dem Erstellen ein Terminal darin.

Tor installieren:

 $ sudo dnf install tor

Komplieren oder herunterladen Sie lyrebird, platzieren Sie es in /usr/local/bin und führen Sie dann aus:

 $ sudo chown root\:root /usr/local/bin/lyrebird
 $ sudo chmod +x /usr/local/bin/lyrebird
 $ sudo ln -s /usr/local/bin/lyrebird /usr/bin/lyrebird
 $ sudo semanage fcontext -a -t tor\_exec\_t '/usr/local/bin/lyrebird'
 $ sudo restorecon -v /usr/local/bin/lyrebird

Anschließend konfigurieren Sie Ihre Datei /etc/tor/torrc. Sie können beispielsweise folgende Zeilen hinzufügen:

UseBridges 1
ClientTransportPlugin webtunnel exec /usr/local/bin/lyrebird managed
Bridge webtunnel ...
Bridge webtunnel ...
...

managed ist entscheidend, da es sicherstellt, dass der Tor-Daemon und lyrebird über systemd gestartet werden können.

Dann den Tor-Daemon aktivieren und starten:

 $ sudo systemctl enable --now tor

Funktionstest:

 $ torsocks curl myip.wtf

Wenn eine IP-Adresse angezeigt wird, funktioniert es. Weiter zum nächsten Schritt.

Schritt 2: Qube für Routing vorbereiten

Klonen Sie das Template fedora-41-xfce. Ich habe dieses verwendet, aber Sie können auch fedora-41-minimal wählen, um Speicherplatz zu sparen – ich kann jedoch nicht garantieren, dass es funktioniert. Der Klon erhält hier den Namen fedora-41-pt.

Verbinden Sie das geklonte Template vorübergehend mit dem Netzwerk (z. B. sys-firewall), öffnen Sie ein Terminal und führen Sie aus:

 $ sudo dnf install qubes-core-agent-networking iproute clash-meta dnscrypt-proxy torsocks
 $ sudo systemctl disable dnscrypt-proxy

Dann herunterfahren und vom Netzwerk trennen.

Erstellen Sie eine AppVM basierend auf diesem Template und benennen Sie sie sys-tor. Aktivieren Sie auch hier den automatischen Start. Öffnen Sie dann ein Terminal in dom0 und führen Sie aus:

 $ sudo -s
 # echo sys-tor @default allow,target=tor-daemon >> /etc/qubes-rpc/policy/qubes.ConnectTCP
 # exit
 $ qvm-firewall sys-tor del --rule-no 0
 $ qvm-firewall sys-tor add drop
 $ qvm-firewall sys-tor add --before 0 drop proto=icmp
 $ qvm-firewall sys-tor add --before 0 drop specialtarget=dns

Öffnen Sie ein Terminal in sys-tor. Erstellen Sie die Verzeichnisse /rw/proxy/dns und /rw/proxy/clash.

Bearbeiten Sie /rw/proxy/dns/dnscrypt-proxy.toml und fügen Sie Folgendes ein:

listen_addresses = ['127.0.0.1:5353']
max_clients = 250
proxy = 'socks5://127.0.0.1:7891'
timeout = 5000
keepalive = 30
ignore_system_dns = true
netprobe_timeout = 0
cache = true
[static]
  [static.quad9_doh]
    stamp = 'sdns://AgMAAAAAAAAABzkuOS45LjkgKhX11qy258CQGt5Ou8dDsszUiQMrRuFkLwaTaDABJYoSZG5zOS5xdWFkOS5uZXQ6NDQzCi9kbnMtcXVlcnk'
  [static.mullvad_doh]
    stamp = 'sdns://AgcAAAAAAAAAAAAPZG9oLm11bGx2YWQubmV0Ci9kbnMtcXVlcnk'

Bearbeiten Sie /rw/proxy/clash/config.yaml und fügen Sie Folgendes ein:

socks-port: 7891
redir-port: 7892

mode: rule

allow-lan: true
bind-address: '*'

dns:
  enable: false

proxies:
  - name: "socks_proxy"
    type: socks5
    server: 127.0.0.1
    port: 9050

rules:
  - MATCH,socks_proxy

Bearbeiten Sie /rw/config/rc.local und fügen Sie Folgendes ein:

qvm-connect-tcp 9050:@default:9050
sysctl -w net.ipv4.conf.all.route_localnet=1
nft 'add rule ip qubes custom-forward oifname "eth0" drop'
nft 'add rule ip6 qubes custom-forward oifname "eth0" drop'
nft 'add rule ip qubes custom-forward iifname "eth0" drop'
nft 'add rule ip6 qubes custom-forward iifname "eth0" drop'
nft flush chain ip qubes dnat-dns
nft 'add rule ip qubes dnat-dns ip daddr 10.139.1.1 udp dport 53 dnat to 127.0.0.1:5353'
nft 'add rule ip qubes dnat-dns ip daddr 10.139.1.1 tcp dport 53 dnat to 127.0.0.1:5353'
nft 'add rule ip qubes dnat-dns ip daddr 10.139.1.2 udp dport 53 dnat to 127.0.0.1:5353'
nft 'add rule ip qubes dnat-dns ip daddr 10.139.1.2 tcp dport 53 dnat to 127.0.0.1:5353'
nft 'add rule ip qubes custom-input iifname "vif*" tcp dport 7892 accept'
nft 'add rule ip qubes custom-input iifname "vif*" udp dport 7892 accept'
nft 'add rule ip qubes custom-input iifname "vif*" tcp dport 5353 accept'
nft 'add rule ip qubes custom-input iifname "vif*" udp dport 5353 accept'
nft 'add chain ip qubes redir { type nat hook prerouting priority -99 ; policy accept; }'
nft 'add rule ip qubes redir iifname "vif*" ip protocol udp redirect to :7892'
nft 'add rule ip qubes redir iifname "vif*" ip protocol tcp redirect to :7892'
nft 'add chain ip qubes output { type filter hook output priority filter ; policy drop; }'
nft 'add rule ip qubes output ct state related,established accept'
nft 'add rule ip qubes output oifname "lo" accept'
nft 'add rule ip qubes output ip daddr 127.0.0.1 accept'
clash-meta -d /rw/proxy/clash >/dev/null 2>&1 &
sleep 0.5
dnscrypt-proxy -config /rw/proxy/dns/dnscrypt-proxy.toml >/dev/null 2>&1 &

Laden Sie diese Datei herunter (proprietäre Lizenz, wird aber nicht wirklich verwendet; ich werde es später mit einer beliebigen Datei testen) und speichern Sie sie unter /rw/proxy/clash/Country.mmdb.

Starten Sie sys-tor neu.

Schritt 3: Verbindung zum Tor-Netzwerk herstellen

Wählen Sie den Qube aus, über den Sie sich mit dem Tor-Netzwerk verbinden möchten. Setzen Sie sein NetVM auf sys-tor.

Öffnen Sie einen Browser und gehen Sie auf diese Website. Wenn dort steht You are using Tor! – voilà!

Wenn nicht, überprüfen Sie Ihre Konfiguration und fragen Sie die Community.

Falls Sie ein OCSP-Problem haben, kann das Deaktivieren von OCSP-Abfragen in den Browsereinstellungen eine vorübergehende Lösung sein – eine saubere Lösung habe ich derzeit nicht.

Übrigens: Ein Neustart Ihres Rechners kann helfen zu prüfen, ob die Konfiguration auch nach dem Booten erhalten bleibt.

Quellen

  1. Qube-Traffic transparent durch einen Proxy-Qube routen (Qubes R4.1 und R4.2)