Tor Dienste mit IP2Tor auf dem Raspiblitz via Clearnet ansprechen
In diesem Tutorial erfahrt ihr, wie ihr die öffentliche IP-Adresse eines Virtual Private Servers (VPS) nutzt, um Tor Hidden Services Dienste auf dem Raspiblitz via IP2Tor über das Clearnet ansprechen könnt. Dies ermöglicht es euch, Dienste, die normalerweise nur über das Tor-Netzwerk erreichbar sind, auch über eine herkömmliche IP-Adresse zu erreichen. In weiteren Artikeln schauen wir uns dann an, wie wir für zum Beispiel für den BTCPay Server auf dem Raspiblitz eine Domain mit SSL Zertifikat einrichten können.
Was richten wir hier genau ein
Wir richten einen sogenannten Tor-to-IP-Tunnel-Dienst ein. Dabei wird der Datenverkehr von einem Tor Hidden Service über einen VPS geleitet, sodass er über eine normale IP-Adresse oder Domain zugänglich ist. Der VPS fungiert hierbei als Brücke zwischen dem Tor-Netzwerk und dem öffentlichen Internet.
Wie es funktioniert
- Tor Hidden Service: Ein Dienst, der nur über das Tor-Netzwerk erreichbar ist, wird auf deinem lokalen Rechner betrieben.
- VPS: Ein Virtual Private Server, der als öffentlich zugänglicher Einstiegspunkt dient.
- socat: Ein Tool, das den Datenverkehr zwischen dem VPS und dem Tor Hidden Service weiterleitet.
Vorteile
- Verbirgt die IP-Adresse des Hosts vor der Öffentlichkeit und dem VPS.
- Kein Port-Forwarding im lokalen Netzwerk (LAN) des Hosts erforderlich.
- Zusätzliche Verschlüsselung durch Tor zwischen dem Host und dem VPS.
Nachteile
- Die Lösung ist elegant, um die eigenen Dienste via Clearnet zu erreichen, die Verbindung danach erfolgt aber weiterhin über Tor, ist also nicht so schnell wie zum Beispiel die VPN Lösung Tunnelsats.
Voraussetzungen
- SSH-Zugang zu einem Virtual Private Server (VPS) - Zum Beispiel ein minimales Paket bei IONOS oder Hetzner für für ca. 2-4 Euro pro Monat.
- Ein Rapsiblitz der voll synchronisiert ist. Die Dienste müssen eingerichtet sein, und funktionieren.
- Portfreigabe auf dem VPS Server: Der entsprechene Port muss in der Firewall des VPS Servers freigegeben sein!
Schritt-für-Schritt Anleitung
Einrichtung von Tor und Socat auf dem VPS Server
Meldet euch mit SSH als root-Benutzer an:
ssh root@VPS_IP_ADDRESSE
Bringt eures System auf den neusten Stand mit:
apt update && apt upgrade -y && apt autoremove -y && apt autoclean -y
Installiert socat:
apt install socat
Installiert danach Tor:
$ apt install apt-transport-https
$ sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/deb.torproject.org-keyring.gpg] https://deb.torproject.org/torproject.org $(lsb_release -sc) main" >> /etc/apt/sources.list.d/tor-project.list'
$ apt update
$ apt install tor
Ubuntu 24.04 und Tor
Auf Ubuntu 24.04 gibt es bis jetzt kein Tor Release Package. Die neuste Version kann deshalb noch nicht verwendet werden. Entfernt das Repo bei Fehlern mit rm /etc/apt/sources.list.d/tor-project.list und installiert tor nochmals mit apt install tor
Einrichtung eines systemd-Dienstes
Erstellt einen separaten Prozess für jeden verbundenen Hidden Service, um zu vermeiden, dass jede Verbindung neu gestartet werden muss, wenn ein Dienst hinzugefügt oder entfernt wird. Vorteilhaft wäre es, den verwendeten Port und den Dienstnamen im Namen des Dienstes anzugeben, z.B. tor2ip<VPS_PORT>_<lnd>
.
Erstellt die Dienstdatei
nano /etc/systemd/system/tor2ip9236_lnd.service
Fügt den folgenden Inhalt ein und passt die Variablen an:
- VPS_PORT: Der Port, der öffentlich zugänglich sein soll (in diesem Beispiel: 9236).
- TOR_HIDDEN_SERVICE_ADDRESS.onion: Die Adresse des Hidden Services.
- Die Adresse erhaltet ihr auf dem Raspiblitz für Lightning zum Beispiel mit:
lncli getinfo
- Die Adresse erhaltet ihr auf dem Raspiblitz für Lightning zum Beispiel mit:
- TOR_PORT: Der Port, den der Hidden Service verwendet (in diesem Beispiel für LND: 9735).
[Unit]
Description=Tor2IP Tunnel Service
After=network.target
[Service]
User=root
Group=root
ExecStart=/usr/bin/socat TCP4-LISTEN:9236,bind=0.0.0.0,fork SOCKS4A:localhost:TOR_HIDDEN_SERVICE_ADDRESSE.onion:9735,socksport=9050
StandardOutput=journal
[Install]
WantedBy=multi-user.target
TOR_HIDDEN_SERVICE_ADRESS ist dabei die Adresse vom Raspiblitz die ihr mit lncli getinfo
auf dem Raspiblitz erhalten habt:
Die Tor Adresse ist der Teil nach dem @!
Dienst aktivieren und starten
systemctl enable tor2ip9236_lnd
systemctl start tor2ip9236_lnd
Überprüfung und Überwachung
Überprüft, ob der Tunnel aktiv ist mit:
netstat -tulpn
Achtet auf die Zeile:
tcp 0 0 0.0.0.0:9236 0.0.0.0:* LISTEN 13684/socat
Dienst überwachen
systemctl status tor2ip9236
Beispielausgabe:
● tor2ip9236_lnd.service - Tor2IP Tunnel Service
Loaded: loaded (/etc/systemd/system/tor2ip9236.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2024-06-20 14:58:43 BST; 2min 23s ago
Main PID: 13684 (socat)
Tasks: 1 (limit: 1078)
Memory: 540.0K
CGroup: /system.slice/tor2ip9236.service
└─13684 /usr/bin/socat TCP4-LISTEN:9236,bind=0.0.0.0,fork SOCKS4A:localhost:TOR_HIDDEN_SERVICE_ADDRESS.onion:9735,socksport=9050
Jun 20 14:58:43 VPS_hostname systemd[1]: Started Tor2IP Tunnel Service.
Port freigeben auf dem VPS Server
In den Server Einstellungen bei eurem VPS Provider muss der Port 9236 wie in diesem Beispiel freigegeben werden. Bei Ionos findet ihr die Einstellungen unter Netzwerk -> Firewall Richtlinien:
Abschluss
Herzlichen Glückwunsch! Ihr habt erfolgreich einen Tor-to-IP-Tunnel-Dienst eingerichtet. Ihr könnt nun weitere Dienste hinzufügen, indem ihr unterschiedliche Ports auf dem VPS verwendet. Um auf die Ports/Dienste des Host-Computers zuzugreifen, verwendet dazu einfach die VPS_IP_ADRESSE:VPS_PORT.
Beispiel für die Verbindung zu LND. Eure Peers können sich nun mit der IP Adresse eures VPS und dem entsprechenden Port mit euch verbinden:
lncli connect NODE_PUBLIC_KEY@VPS_IP_ADRESSE:9236
Mit dieser Konfiguration im Artikel "Tor Dienste mit IP2Tor auf dem Raspiblitz via Clearnet ansprechen" habt ihr eine sichere und anonyme Möglichkeit geschaffen, Tor Hidden Services im Clearnet zugänglich zu machen. Achte darauf, die Sicherheit deiner Dienste stets im Auge zu behalten und die Regeln deines VPS-Anbieters zu beachten.
Resourcen:
https://github.com/openoms/bitcoin-tutorials/blob/master/tor2ip_tunnel.md