Was ein Onion-Dienst tatsächlich ist
Ein Tor-Onion-Dienst ist ein Server, der ausschließlich über das Tor-Netzwerk erreichbar ist, unter einer Adresse, die auf .onion endet und von einem kryptografischen Schlüssel abgeleitet wird, statt von einer Registrierungsstelle vergeben zu werden. Es gibt keine DNS-Abfrage, keine öffentliche IP in irgendeinem Eintrag und kein TLS-Zertifikat zu kaufen: Die 56 Zeichen lange Adresse ist der öffentliche Schlüssel des Dienstes, sodass die Verbindung von Natur aus authentifiziert und Ende-zu-Ende-verschlüsselt ist. Ein Besucher mit Tor Browser gibt die Adresse ein; das Netzwerk arrangiert einen verschlüsselten Treffpunkt; die beiden Seiten kommunizieren, ohne dass eine den Standort der anderen erfährt. Niemand in der Mitte — kein Relay, kein Internetprovider, kein Hosting-Anbieter — sieht beide Enden der Verbindung gleichzeitig.
Die Konsequenz, die fürs Hosting zählt, ist struktureller Natur, nicht kosmetischer. Ein normaler Webserver muss auf einem öffentlichen Port lauschen, was bedeutet, dass seine Adresse auffindbar, scannbar und letztlich mit demjenigen verknüpfbar ist, der die Rechnung bezahlt. Ein Onion-Dienst lauscht auf nichts, was das Internet erreichen kann. Tor auf der Box baut ausschließlich ausgehende Verbindungen auf, errichtet Circuits zu einer Handvoll Introduction Points und wartet. Der Dienst ist online und beantwortet Traffic, während ss -tlnp nichts zeigt, was an eine routbare Adresse gebunden ist. Diese Umkehrung ist der ganze Grund, einen solchen Dienst zu betreiben.
Wann es das richtige Werkzeug ist — und wann nicht
Greifen Sie zu einem Onion-Dienst, wenn der Standort der Maschine Teil dessen ist, was Sie schützen: eine Site, die auch dann erreichbar bleiben muss, wenn ihre Clearnet-Domain beschlagnahmt wird, ein Einreichungspostfach für Quellen oder Forschende, ein Admin-Panel, das Sie dem scannenden Internet lieber gar nicht erst aussetzen möchten, oder ein Dienst, dessen Publikum ohnehin schon Tor nutzt und es zu schätzen weiß, dass Sie eine IP, die Sie nie empfangen, auch nicht loggen können. Es ist auch die ehrliche Antwort, wenn "den Origin verbergen" die eigentliche Anforderung ist — ein Reverse Proxy vor einem Clearnet-Server verschiebt das Ziel nur, während ein Onion-Dienst es entfernt.
Es ist das falsche Werkzeug, wenn Ihre Besucher Tor nicht nutzen wollen oder können, wenn Sie den rohen Durchsatz und die Latenz unter 100 Millisekunden eines direkt erreichbaren Servers brauchen, oder wenn Auffindbarkeit der Punkt ist — eine Onion-Adresse ist nichts, worauf Leute per Suchmaschine stoßen. Viele Betreiber teilen die Differenz und betreiben beides: eine normale Site für die Reichweite und einen Onion-Dienst für die Nutzer, die ihn wollen, ausgeliefert von derselben Anwendung. Dieses Muster behandeln wir weiter unten. Nichts hier ersetzt die Härtung der Box selbst; ist die Maschine kompromittiert, sickern Standort und Inhalt unabhängig davon durch, wie sie veröffentlicht wird — behandeln Sie die Härtungs-Checkliste für die erste Stunde also als Voraussetzung, nicht als Nachgedanken.
SP·03Was das Setup preisgibt — und wem
Es lohnt sich, beim Anonymitätsmodell präzise zu sein, denn "Onion-Dienst" wird oft mit "nicht zurückverfolgbar" gleichgesetzt, und die Realität ist spezifischer. Clients erfahren niemals die IP-Adresse des Servers — diese Eigenschaft ist stark und genau der springende Punkt. Ihr Hosting-Anbieter jedoch sieht weiterhin eine Maschine in seinem Netz, die einen stetigen Strom verschlüsselter ausgehender Verbindungen zum Tor-Netzwerk aufbaut; er kann weder die Onion-Adresse noch den Inhalt noch die Besucher sehen, aber er kann sehen, dass die Box Tor spricht. Bei einem Mainstream-Anbieter, der an Ihre Identität gebunden ist, ist das ein Faden, an dem sich ziehen lässt. Bei einem Offshore-VPS, anonym bezahlt und ohne hinterlegten Namen, führt er ins Leere — genau deshalb gehören die beiden Techniken zusammen.
Die Fehlermodi, die Onion-Dienste tatsächlich deanonymisieren, sind fast nie Tor selbst. Es ist die Anwendung, die eine echte IP in einer Fehlerseite, einem Header, einer versendeten E-Mail oder einer ausgehenden Anfrage an einen Clearnet-Analytics- oder Update-Endpunkt preisgibt; ein falsch konfigurierter Server, der seinen Hostnamen oder seine Zeitzone verrät; oder Korrelation, weil der Betreiber dieselbe Box, denselben Schlüssel oder denselben Schreibstil über eine Clearnet-Identität hinweg wiederverwendet. Die Kryptografie hält; erwischt wird man in der Verkabelung drumherum. Jeder Schritt weiter unten ist so geschrieben, dass diese Verkabelung dicht bleibt — an localhost binden, nichts im Klartext ausgehend versenden, und die echte Identität der Box von der Maschine fernhalten, wie unter den eigenen Namen von einem Server fernhalten beschrieben.
SP·04Ein aktuelles Tor installieren — nicht das der Distribution
Distributionen frieren Tor auf der Version ein, die zum Release-Zeitpunkt mitgeliefert wurde, und die Verteidigungsmechanismen für Onion-Dienste entwickeln sich schnell weiter — der Denial-of-Service-Schutz für Introduction Points, die v3-Client-Autorisierung und mehrere Stabilitätskorrekturen landeten allesamt in Versionen, die neuer sind als das, was ein stabiles Debian oder Ubuntu standardmäßig mitbringt. Installieren Sie aus dem eigenen, signierten Repository des Tor Project, damit Sie aktuelle Releases verfolgen und Sicherheitsupdates nach dessen Zeitplan erhalten, nicht nach dem der Distribution. Der Codeausschnitt unten erkennt den Codenamen Ihres Releases automatisch und bindet das Repository an den Signaturschlüssel des Projekts, sodass ein Angreifer, der den Mirror manipuliert, Ihnen kein herabgestuftes Paket unterschieben kann.
Tor läuft unter Debian und Ubuntu unprivilegiert als Benutzer debian-tor, wechselt in eine Sandbox und braucht keine besonderen Netzwerkrechte — es wählt sich aus wie jeder Client. Für den Onion-Dienst selbst gibt es in der Firewall nichts zu öffnen, was die erste angenehme Überraschung der ganzen Übung ist: Ihre Default-Deny-Firewall kann exakt so strikt bleiben, wie sie war.
Die Anwendung an localhost binden und an nichts sonst
Ein Onion-Dienst ist eine Eingangstür zu einem gewöhnlichen lokalen Dienst — einem Webserver, einer Anwendung, einem SSH-Daemon, allem, was TCP spricht. Die Regel, die das Ganze sicher hält, lautet: Dieser lokale Dienst darf ausschließlich auf dem Loopback-Interface lauschen, 127.0.0.1. Lauscht er zusätzlich auf der öffentlichen IP, haben Sie im Stillen genau das Problem wiederhergestellt, das der Onion-Dienst eigentlich lösen sollte: Der Inhalt ist jetzt direkt erreichbar und fingerprintbar, und ein Scan, der Ihren Clearnet-Server mit Ihrem Onion-Inhalt abgleicht, macht die Anonymität mit einer einzigen Anfrage zunichte. Binden Sie an Loopback, bestätigen Sie es mit ss -tlnp, und lassen Sie ausschließlich Tor jemals eine Verbindung zu diesem Port aufbauen.
Weil der Traffic zwischen Tor und Ihrer Anwendung auf 127.0.0.1 bleibt, berührt er nie das Netzwerk und braucht kein eigenes TLS — der Tor-Circuit verschlüsselt bereits alles Ende-zu-Ende. Setzen Sie kein selbstsigniertes Zertifikat auf den Loopback-Listener; das fügt nur eine fingerprintbare Angriffsfläche hinzu und bringt nichts. Halten Sie die Anwendung langweilig: keine Clearnet-Redirects, keine absoluten https://your-domain-Links fest in Templates verbaut, keine Schriftarten oder Analytics von Drittanbietern, die den Browser des Besuchers dazu bringen würden, vom Onion aus ins offene Web hinauszugreifen.
Den Dienst deklarieren, dann die eigene Adresse auslesen
Der Onion-Dienst besteht aus drei Zeilen torrc: einem Verzeichnis, in dem Tor das Schlüsselmaterial hält, und einer Zuordnung von einem virtuellen Port auf der Onion-Adresse zu dem lokalen Port, auf dem Ihre Anwendung lauscht. Beim ersten Neustart erzeugt Tor in diesem Verzeichnis ein Ed25519-Schlüsselpaar und schreibt die Datei hostname — die 56 Zeichen lange .onion-Adresse, die Sie weitergeben. Diese Adresse bleibt dauerhaft bestehen, solange Sie den Schlüssel behalten. Verlieren Sie den Schlüssel, ist die Adresse für immer weg; leckt er, kann jemand anderes Ihren Dienst imitieren. Behandeln Sie das HiddenServiceDir wie die Kronjuwelen: 0700, im Besitz des Tor-Benutzers, verschlüsselt und außerhalb der Box gesichert.
Zwei Einstellungen verdienen ihren Platz neben der Zuordnung. HiddenServiceEnableIntroDoSDefense 1 erlaubt Ihren Introduction Points, Verbindungsfluten zu drosseln, bevor sie Ihre Box erreichen — das Nächste, was ein Onion-Dienst an DDoS-Schutz zu bieten hat. HiddenServiceVersion 3 festzupinnen macht die Version explizit und zukunftssicher. Soll der Dienst privat statt öffentlich sein, beschränkt die v3-Client-Autorisierung ihn auf Inhaber eines Schlüssels, den Sie außerhalb des regulären Kanals verteilen — eine saubere Art, ein Admin-Panel zu betreiben, das ohne die Zugangsberechtigung schlicht niemandem antwortet.
Bekanntmachen, beides parallel betreiben, und eine einprägsame Adresse wählen
Betreiben Sie auch eine Clearnet-Site, teilen Sie Tor Browser die Onion-Version über den Response-Header Onion-Location mit (oder das entsprechende HTML-Meta-Tag). Browser mit Onion-Unterstützung bieten Besuchern die .onion-Adresse dann automatisch an — so, wie es unter anderem große Zeitungen und Suchmaschinen mit ihrer eigenen handhaben. Dieselbe Anwendung sowohl über eine Domain als auch über eine Onion-Adresse auszuliefern ist die Norm, kein Exot: eine Codebasis, eine Datenbank, zwei Eingangstüren, wobei die Clearnet-Seite hinter dem üblichen Origin-verbergenden Reverse Proxy sitzt und die Onion-Seite überhaupt nichts preisgibt.
Die Standardadresse ist eine zufällige, 56 Zeichen lange Zeichenkette — sicher, aber nicht einprägsam. Eine Vanity-Adresse lässt Sie einen Schlüssel per Brute-Force suchen, dessen Base32-Kodierung mit einem gewählten Präfix beginnt — ein paar lesbare Zeichen sind schnell erledigt, aber jedes zusätzliche Zeichen vervielfacht den Aufwand um den Faktor 32, sodass alles jenseits von sieben oder acht Buchstaben zu einer ernsthaften Rechenaufgabe wird. Erzeugen Sie Vanity-Schlüssel auf einer vertrauenswürdigen lokalen Maschine, niemals auf dem Server, und legen Sie den entstandenen Schlüssel genauso in das HiddenServiceDir, wie Sie ein Backup wiederherstellen würden. Ein wiedererkennbares Präfix stumpft außerdem einen echten Angriff ab: Phishing-Klone, die darauf setzen, dass niemand eine Wand aus Zufallszeichen liest.
Am Laufen halten: Performance, Monitoring und Schlüsselhygiene
Eine Onion-Verbindung durchquert sechs Relays statt der sonst üblichen null, sodass die Latenz höher und der Durchsatz niedriger ausfällt als bei einem direkt erreichbaren Server — das ist Physik, keine Fehlkonfiguration, und keine Einstellung schafft es aus der Welt. Widerstehen Sie der Versuchung von Single-Hop- oder nicht-anonymen Modi, um sich Geschwindigkeit zurückzuholen; sie geben genau die Eigenschaft auf, für die Sie das Ganze überhaupt aufgesetzt haben. Was Sie tun können: Tor aktuell halten, den Intro-Point-DoS-Schutz eingeschaltet lassen, einem stark frequentierten Dienst Caching vorschalten, damit jede Anfrage weniger Arbeit macht, und die Box mit genug CPU-Spielraum dimensionieren, denn Tors Kryptografie ist nicht umsonst. Ein bescheidener Offshore-VPS ab $8.00/Monat bewältigt eine typische Onion-Site problemlos.
Im Betrieb halten drei Gewohnheiten einen Onion-Dienst gesund. Beobachten Sie journalctl -u tor@default auf Erreichbarkeits- und Descriptor-Publishing-Fehler, statt anzunehmen, dass Stille Gesundheit bedeutet. Sichern Sie das HiddenServiceDir an dem Tag, an dem Sie es anlegen, und nach jeder Änderung, verschlüsselt und außerhalb der Maschine, denn dieser Schlüssel ist das eine Ding, das Sie nicht neu erzeugen können. Und halten Sie die operative Identität der Box sauber — ein frischer Schlüssel auf einem frischen anonymen VPS ist wenig wert, wenn dieselben Betreibergewohnheiten ihn zu einem Clearnet-Ich zurückführen. Der Dienst läuft klaglos jahrelang unangetastet; die Disziplin steckt in der Verkabelung drumherum, nicht im Dienst selbst.
Schritt für Schritt
-
01
Mit einer gehärteten, anonymen Box starten
Deployen Sie einen Offshore-VPS — online in etwa 15 min — und erledigen Sie zuerst die langweilige, essenzielle Arbeit: ein benannter sudo-Benutzer, ausschließlich schlüsselbasiertes SSH, eine Default-Deny-Firewall und automatische Sicherheitsupdates. Der Onion-Dienst fügt in dieser Firewall nichts hinzu, was Sie öffnen müssten, eine abgeriegelte Box bleibt also abgeriegelt. Überspringen Sie das nicht; eine Onion-Adresse vor einem kompromittierten Server verbirgt nichts.
ssh admin@203.0.113.10 sudo apt update && sudo apt full-upgrade -y # firewall stays default-deny; the onion service needs no inbound port sudo ufw status verbose
-
02
Tor aus dem Repository des Tor Project installieren
Fügen Sie das signierte Repository des Projekts hinzu, damit Sie ein aktuelles Tor mit den neuesten Verteidigungsmechanismen für Onion-Dienste betreiben, und installieren Sie es anschließend. Der Codename wird automatisch aus
/etc/os-releaseerkannt, und das Repository wird an Tors Signaturschlüssel gebunden, sodass ein manipulierter Mirror Sie nicht herabstufen kann.sudo apt install -y apt-transport-https wget gpg . /etc/os-release wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc \ | gpg --dearmor | sudo tee /usr/share/keyrings/tor.gpg >/dev/null echo "deb [signed-by=/usr/share/keyrings/tor.gpg] https://deb.torproject.org/torproject.org $VERSION_CODENAME main" \ | sudo tee /etc/apt/sources.list.d/tor.list sudo apt update && sudo apt install -y tor deb.torproject.org-keyring
-
03
Den eigenen Dienst ausschließlich an localhost binden
Richten Sie, was auch immer Sie veröffentlichen, ausschließlich auf das Loopback-Interface aus. Hier liefert nginx eine statische Site auf
127.0.0.1:8080aus; dasselbe Prinzip gilt für jede Anwendung — binden Sie an127.0.0.1, nicht an0.0.0.0. Laden Sie neu, und weisen Sie dann mitssnach, dass nichts an einer routbaren Adresse lauscht.# /etc/nginx/sites-available/onion.conf server { listen 127.0.0.1:8080; server_name _; root /var/www/onion; index index.html; }Aktivieren Sie es, laden Sie neu, und bestätigen Sie, dass die Bindung ausschließlich auf Loopback erfolgt:
sudo ln -s /etc/nginx/sites-available/onion.conf /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx ss -tlnp | grep 8080 # must show 127.0.0.1:8080, never 0.0.0.0:8080
-
04
Den Onion-Dienst in torrc deklarieren
Fügen Sie den Dienst zu
/etc/tor/torrchinzu: ein Schlüsselverzeichnis und eine Portzuordnung vom virtuellen Port 80 des Onion zu Ihrem lokalen 8080. Schalten Sie den Introduction-Point-DoS-Schutz ein und pinnen Sie die Adressversion. Starten Sie Tor anschließend neu — unter Debian und Ubuntu heißt die laufende Instanztor@default.# /etc/tor/torrc HiddenServiceDir /var/lib/tor/onion-www/ HiddenServicePort 80 127.0.0.1:8080 HiddenServiceVersion 3 HiddenServiceEnableIntroDoSDefense 1 sudo systemctl restart tor@default
-
05
Die Adresse auslesen und den Schlüssel abriegeln
Tor hat nun das Schlüsselmaterial erzeugt und Ihre Adresse geschrieben. Lesen Sie sie aus, geben Sie sie weiter — und stellen Sie sicher, dass das Verzeichnis
0700ist und dem Tor-Benutzer gehört, was Tor zwar erzwingt, was aber eine unachtsame Wiederherstellung zerstören kann. Die Dateihs_ed25519_secret_keyin diesem Verzeichnis ist Ihre Identität; nichts sonst ist es.sudo cat /var/lib/tor/onion-www/hostname # example: 2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion sudo ls -l /var/lib/tor/onion-www/ # hostname hs_ed25519_public_key hs_ed25519_secret_key sudo chown -R debian-tor:debian-tor /var/lib/tor/onion-www sudo chmod 700 /var/lib/tor/onion-www
-
06
Über Tor testen, dann bekanntmachen
Prüfen Sie den Dienst von einer Maschine aus, auf der Tor läuft, mit
torsocks, damit die Anfrage durch das Netzwerk geht statt durch das Clearnet. Antwortet er, können Sie Clearnet-Besucher optional über einenOnion-Location-Header auf Ihrer normalen Site auf die Onion-Version hinweisen.# from any box running tor: torsocks curl -sSI http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion/ | head # advertise the onion from your clearnet nginx (inside the https server block): add_header Onion-Location "http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion$request_uri";
-
07
Den Schlüssel sichern und das Runbook schreiben
Die Adresse steht und fällt mit dem Schlüsselverzeichnis. Archivieren Sie es in dem Moment, in dem es existiert, verschieben Sie das Archiv von der Box auf verschlüsselten Speicher, und beachten Sie: Es irgendwo wiederherzustellen reproduziert exakt dieselbe
.onion-Adresse. Schreiben Sie dann die zwei Befehle auf, die Sie in sechs Monaten tatsächlich brauchen werden — wo der Schlüssel liegt und wie Sie die Gesundheit prüfen —, denn der Dienst läuft lange genug unangetastet, dass Sie es garantiert vergessen werden.sudo tar czf onion-www-key.tar.gz -C /var/lib/tor onion-www # copy onion-www-key.tar.gz to encrypted off-box storage, then delete the local copy # health check any time: sudo systemctl status tor@default sudo journalctl -u tor@default --since "1 hour ago" | grep -i "onion\|error"


