Tor-Browser im Browser
Recherche zu Exploits durchführen, ohne einen Sicherheitsvorfall im Unternehmen zu erzeugen.

In Unternehmen, in denen der Zugriff auf bestimmte Webseiten wie Reddit eingeschränkt ist, ermöglicht die hier vorgestellte Lösung dennoch eine sinnvolle Recherche zu sicherheitsrelevanten Themen. Gerade bei Suchanfragen, die Begriffe wie „Exploit“, „Vulnerability“ oder „Remote Execution“ enthalten, ist ein unzensierter Zugang essenziell, da viele relevante Informationen andernfalls unzugänglich bleiben und die Erfüllung des Arbeitsauftrages erheblich erschweren.
Eine effektive Methode, um Überwachung und Einschränkungen innerhalb eines Firmennetzwerks zu umgehen und anonym im Internet zu surfen, besteht darin, den Tor Browser auf einem privaten Server auszuführen und über einen Reverse Proxy sicher darauf zuzugreifen.
In diesem Artikel stelle ich die technische Umsetzung meines Ansatzes im Detail vor.

Die Herausforderung: Anonymität im Firmennetzwerk
In vielen Unternehmen ist der Internetzugang durch Proxyserver und Firewalls reguliert. Dies dient der Sicherheit und der Einhaltung von Richtlinien, hat aber auch zur Folge, dass das Surfverhalten der Nutzer oft detailliert protokolliert wird. Für Anwender, die Wert auf ihre Privatsphäre legen oder spezifische Recherchen durchführen müssen, kann dies ein Hindernis darstellen. Der Wunsch, sinnvoll für eine Firma zu arbeiten, ohne gegen Compliance-Regeln zu verstoßen, führt zur Suche nach alternativen Wegen der Internetnutzung. Einige Lösungen hatte ich bereits vorgestellt.
Doch es geht auch einfacher.
Eine Lösungsstrategie: Tor Browser über Reverse Proxy
Die Kernidee besteht darin, den Tor Browser nicht lokal auf dem Firmenrechner auszuführen, sondern ihn in einer isolierten Umgebung, genauer gesagt in einem Docker-Container, auf einem privaten Server zu hosten. Der Zugriff auf diesen entfernten Browser erfolgt dann über eine gesicherte Verbindung durch einen Nginx Proxy Manager (NPM). Der NPM stellt sicher, dass der gesamte Datenverkehr verschlüsselt (HTTPS) und über eine einzige, kontrollierte Verbindung läuft, die vom Firmennetzwerk lediglich als Zugriff auf einen bekannten Webdienst interpretiert wird. Aber so gelangen auch keine Gefahren zurück in das Firmennetz, da man wie durch eine Glasscheibe auf das Tor-Netz schaut. Win-Win also.

Technologische Grundpfeiler
Bevor die Umsetzung detailliert betrachtet wird, lohnt sich ein Blick auf die beteiligten Schlüsseltechnologien:
- Tor Netzwerk: Das Tor-Netzwerk (The Onion Router) ist ein freies Softwareprojekt, das anonyme Kommunikation ermöglicht. Es leitet Internetverkehr über ein weltweites, freiwilliges Überlagerungsnetzwerk von Tausenden von Relais weiter, um Standort und Nutzungsdaten des Anwenders vor Überwachung zu schützen. Der Tor Browser ist die gängigste Anwendung, um das Tor-Netzwerk zu nutzen.
- Docker: Docker revolutionierte die Softwarebereitstellung durch Containerisierung. Anstatt eine komplette virtuelle Maschine zu starten, werden Anwendungen und ihre Abhängigkeiten in leichtgewichtige, isolierte Container verpackt. Dies gewährleistet, dass die Anwendung konsistent in jeder Umgebung läuft und vereinfacht die Bereitstellung und Verwaltung erheblich.
- Nginx Proxy Manager (NPM): NPM ist eine Benutzeroberfläche für Nginx, die das Verwalten von Reverse-Proxys, das Ausstellen von SSL-Zertifikaten (via Let's Encrypt) und das Weiterleiten von Traffic vereinfacht. Er agiert als "Türsteher" vor dem Tor Browser Container und stellt sicher, dass der Zugriff von außen sicher und ordnungsgemäß erfolgt.
Aufbau der Infrastruktur: Docker Compose im Einsatz
Für die Orchestrierung der Container wird Docker Compose verwendet. Es ermöglicht die Definition und Ausführung von Multi-Container-Docker-Anwendungen. Eine docker-compose.yml
-Datei beschreibt alle Dienste, Netzwerke und Volumes, die für die Anwendung benötigt werden.
Um den Tor Browser über NPM zugänglich zu machen, werden mindestens zwei Dienste benötigt: der Nginx Proxy Manager selbst und der Tor Browser Container. Der domistyle/tor-browser
Container stellt dabei eine webbasierte Oberfläche bereit, die in der Regel über VNC oder noVNC erreichbar ist. Port 5800 ist der Standardport für diese Art von Weboberflächen.
Hier ist ein Beispiel für eine docker-compose.yml
Datei, die diese beiden Dienste definiert. Es wird angenommen, dass NPM bereits grundlegend konfiguriert ist oder neu aufgesetzt wird.
# docker-compose.yml für einen sicheren und anonymen Surf-Container
# Autor: M. Meister
version: '3.8'
services:
# Der Nginx Proxy Manager, unser eleganter Türsteher
nginx-proxy-manager:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
# Diese Ports müssen verfügbar sein! 80 für HTTP-Weiterleitung/Zertifikatsanfrage, 443 für HTTPS, 81 für die NPM-Oberfläche.
- '80:80'
- '443:443'
- '127.0.0.1:81:81' # Nur über einen ssh-Tunnel konfigurierbar
volumes:
# Hier wohnen die Konfigurationen und Zertifikate, also gut aufbewahren!
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
- web # Wir verknüpfen ihn mit unserem Web-Netzwerk
# Der Tor Browser, unser Meister der Tarnung
tor-browser:
image: domistyle/tor-browser:latest
container_name: tor-browser
environment:
# PUID und PGID sind wichtig, damit die Downloads auch dem richtigen Nutzer gehören.
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin # Zeitzone ist auch nicht unwichtig, damit die Logs stimmen.
volumes:
# Hier landen alle Downloads, sicher auf dem Host-System.
- "./tor-browser/downloads:/downloads"
depends_on:
- nginx-proxy-manager # Der Tor Browser wartet brav, bis NPM bereit ist.
expose:
- "5800" # Dieser Port wird intern im Docker-Netzwerk bereitgestellt.
restart: unless-stopped
networks:
- web # Auch dieser Bursche gehört in unser Web-Netzwerk.
labels:
# Watchtower sorgt dafür, dass unser Container immer auf dem neuesten Stand ist.
- "com.centurylinklabs.watchtower.enable=true"
networks:
# Das gemeinsame Netzwerk, in dem sich unsere Dienste unterhalten können.
web:
external: true # Wenn 'web' bereits existiert, sonst 'internal: true' oder ohne 'external' lassen.
# Wenn 'web' neu erstellt werden soll:
# name: web
Erklärung der Docker Compose Konfiguration:
nginx-proxy-manager
: Dieser Dienst startet den Nginx Proxy Manager. Die Ports80
,443
und81
werden vom Host-System an den Container weitergeleitet, um den Webverkehr zu verwalten und auf die NPM-Oberfläche zugreifen zu können. Die Volumesdata
undletsencrypt
persistieren die Konfiguration und die SSL-Zertifikate.tor-browser
: Dieser Dienst startet den Tor Browser.PUID
undPGID
(typischerweise 1000) stellen sicher, dass Dateien, die der Container erstellt (z.B. Downloads), die korrekten Benutzer- und Gruppenberechtigungen auf dem Host-System haben. Der Port5800
wird intern im Docker-Netzwerk exponiert. Das bedeutet, er ist für andere Container imweb
-Netzwerk zugänglich, aber nicht direkt von außerhalb des Hosts.networks
: Beide Dienste sind im selbenweb
-Netzwerk. Dies ermöglicht es dem Nginx Proxy Manager, den Tor Browser Container unter seinem Dienstnamen (tor-browser
) zu erreichen.external: true
bedeutet, dass das Netzwerkweb
bereits existieren muss, was oft der Fall ist, wenn andere Webdienste bereits in einem gemeinsamen Docker-Netzwerk laufen. Falls nicht, müsste es ohneexternal: true
definiert werden, damit Docker Compose es selbst erstellt.
Konfiguration des Nginx Proxy Managers
Nachdem die Dienste gestartet wurden (docker compose up -d
), ist der nächste Schritt, einen Proxy Host im Nginx Proxy Manager zu konfigurieren. Dies ist der "magische" Teil, der den Zugriff von außen ermöglicht.Zur Anmeldung wird ein Browser geöffnet und die IP-Adresse oder der Hostname des Servers auf Port 81 aufgerufen (z. B. http://127.0.0.1:81
). Die Anmeldung erfolgt mit den Standard-Zugangsdaten (häufig admin@example.com
/ changeme
).
Proxy Host erstellen:
Im Menü wird zu "Hosts" → "Proxy Hosts" navigiert.
Anschließend wird auf "Add Proxy Host" geklickt.
Details:
- Domain Names: Die gewünschte Domain oder Subdomain, unter der der Tor Browser erreichbar sein soll (z. B.
tor.meine-domain.de
), wird eingetragen. Es muss sichergestellt werden, dass diese Domain per DNS auf die öffentliche IP-Adresse des Servers zeigt. - Scheme: Es wird „http“ ausgewählt.
- Forward Hostname / IP: Es wird
tor-browser
eingetragen (dies entspricht dem Dienstnamen des Containers im Docker-Netzwerk). - Forward Port: Der Port
5800
wird verwendet (dieser wird vom Tor-Browser-Container bereitgestellt). - Block Common Exploits: Diese Option wird zur Erhöhung der Sicherheit aktiviert.
- Websockets Support: Diese Option muss aktiviert werden, da die Web-VNC-Schnittstelle auf WebSockets basiert.
SSL:
Es wird zum Reiter "SSL" gewechselt.
- SSL Certificate: Die Option „Request a new SSL Certificate (Let's Encrypt)“ wird ausgewählt.
- Force SSL: Diese Option wird aktiviert, um den gesamten Datenverkehr zu verschlüsseln.
- Email Address: Die eigene E-Mail-Adresse wird angegeben.
- I Agree to the Let's Encrypt Terms of Service: Diese Zustimmung wird erteilt.
- Abschließend wird die Konfiguration gespeichert.

NPM wird nun automatisch ein Let's Encrypt SSL-Zertifikat für Ihre Domain anfordern und den Traffic von der Domain tor.meine-domain.de
auf den tor-browser
-Container auf Port 5800 weiterleiten, während die Verbindung vom Client zum NPM mit SSL/TLS verschlüsselt ist.
Anonymes Surfen beginnt
Sobald der Proxy Host aktiv ist und das SSL-Zertifikat erfolgreich ausgestellt wurde, können Sie von Ihrem Arbeitsplatz aus einfach die konfigurierte Domain (https://tor.meine-domain.de
) im Browser aufrufen. Sie werden dann die webbasierte Oberfläche des Tor Browsers sehen und können damit anonym surfen. Die Firmen-IT sieht lediglich eine HTTPS-Verbindung zu Ihrer privaten Domain, nicht jedoch den eigentlichen Inhalt oder das Ziel des Datenverkehrs.

Fazit
Die Kombination aus Tor-Browser-Container und Nginx Proxy Manager bietet eine elegante Möglichkeit, aus einem regulierten Firmennetzwerk anonym und datenschutzfreundlich zu surfen. Durch Containerisierung und Reverse Proxy wird lokale Protokollierung effektiv umgangen. Der Zugriff auf den heimischen Browser erfolgt verschlüsselt und erscheint für die Firmen-IT lediglich als normale HTTPS-Verbindung zu einer privaten Domain – ideal für ungestörte Recherchen zu sicherheitsrelevanten Vorfällen, was schließlich eine der Hauptaufgaben eines Security-Engineers ist.