Firefox & SSH-SOCKS-Proxy: sicher & privat surfen ohne VPN

Es kann immer mal vorkommen, dass ihr zum Surfen im Internet auf ein fremdes Netzwerk angewiesen seid. Dabei kann es sich z.B. um ein öffentliches, unverschlüsseltes, unsicheres und/oder zensiertes (restriktive Firewall, DNS-Filter usw.) Netzwerk handeln. Um trotzdem sicher und privat im Internet surfen zu können, ist der Einsatz eines VPN eine etablierte sowie beliebte Lösungsmöglichkeit.

Als Alternative, wenn ihr keinen Zugriff auf einen VPN-Server/-Dienst habt, aber z.B. auf eurem Heimrouter ein SSH-Server läuft, könnt ihr auch einen SSH-SOCKS-Proxy als "Notlösung" verwenden. In diesem Beitrag zeige ich euch, wie ihr mit SSH einen solchen SOCKS-Proxy einrichten und mit Firefox verwenden könnt.

Verwendete Software für diesen Beitrag
  • Ubuntu v20.04 LTS
  • Firefox 88.0 (64-Bit)
  • OpenSSH v8.2p1 Ubuntu-4ubuntu0.2, OpenSSL 1.1.1f 31 Mar 2020

Voraussetzungen

Um dem Beitrag zu folgen, sind folgende Voraussetzungen notwendig:

  • SSH-Server
    • Ihr verfügt über Zugangsdaten zu einem SSH-Server, der über das Internet öffentlich erreichbar ist.
    • Der SSH-Server erlaubt Dynamic-Port-Forwarding.
  • Client bzw. Endgerät (z.B. Notebook)
    • SSH-Client installiert
    • Firefox oder alternativer Webbrowser, für den die Proxy-Einstellungen angepasst werden können

Auf die Einrichtung des SSH-Servers gehe ich in diesem Beitrag nicht näher ein.

Funktionsweise

Der Einsatz von Dynamic-Port-Forwarding verwandelt den Client in einen SOCKS-Proxy. Dabei öffnet der SSH-Client lokal einen Port. Alle Anfragen auf diesen lokal lauschenden Port werden verschlüsselt an den SSH-Server gesendet. Der SSH-Server wiederum leitet die Anfragen dann ans Internet über das eigene Netzwerk weiter.

Damit euer Webbrowser den SOCKS-Proxy verwendet und alle Anfragen an den lokalen Proxy-Port sendet, müsst ihr ihn entsprechend konfigurieren. Hier besteht auch der Nachteil zum VPN. Im Allgemeinen greift das VPN für alle Anwendungen und deren Netzwerkanfragen, wohingegen der SSH-SOCKS-Proxy im Allgemeinen für jede Anwendung einzeln sowie manuell konfiguriert werden muss (wobei es auch hierfür Lösungen gibt - siehe Abschnitt "Hilfreiche Tools").

Wie beim Einsatz eines VPNs können beim Einsatz eines SSH-SOCKS-Proxy andere Teilnehmer sowie der Provider des fremden Netzwerks euren Web-Traffic nicht mehr einsehen bzw. abgreifen. Läuft der SSH-Server z.B. auf eurem Heimrouter, dann erfolgen alle Anfragen ins Internet aus eurem Heimnetzwerk heraus. Es greifen also auch die Sicherheitsvorkehrungen eures Heimnetzwerks, wie z.B. ein Ad-Blocker, wenn ihr einen solchen auf eurem Heimrouter eingerichtet habt.

SSH-SOCKS-Proxy einrichten

Zum Einrichten des SSH-SOCKS-Proxy dient folgender Befehl:

ssh -N -D 9090 user@server
Terminal / Konsole

Den Benutzername und die Server-Adresse müsst ihr entsprechend euren Zugangsdaten anpassen.

Der Befehl sorgt dafür, dass der SSH-Dienst lokal auf dem Port 9090 lauscht.

Firefox - Proxy konfigurieren

Die Proxy-Einstellungen in Firefox findet ihr in den Einstellungen unter Allgemein - Verbindungseinstellungen. Hier hinterlegt ihr nun eure Proxy-Daten:

Firefox - SSH-SOCKS-Proxy konfigurieren

Mit diesen Einstellungen sendet Firefox alle Anfragen an localhost und Port 9090.

Hinweis DNS-Anfragen auch über Proxy weiterleiten

Stellt sicher, dass ihr auch DNS-Anfragen über den Proxy weitereicht. Andernfalls lässt sich über die DNS-Anfragen nachvollziehen, welche Webseiten ihr angefragt habt.

Anschließend könnt ihr mit Firefox ganz normal im Internet surfen. Eure Anfragen werden dann verschlüsselt an den SSH-Server gesendet und dieser leitet sie dann weiter.

Hilfreiche Tools

Möchtet ihr den SSH-SOCKS-Proxy auch für andere Anwendungen verwenden, kann es aufwendig werden diese alle manuell zu konfigurieren. Zudem bieten manche Anwendungen auch gar nicht Möglichkeit, einen Proxy einzustellen.

Folgende hilfreiche Tools können euch helfen, die genannten Probleme zu umgehen:

  • tsocks: Mit diesem Tool lassen sich andere Programme aufrufen. tsocks kümmert sich dann darum, dass alle Anfragen des Programms auf euren Proxy umgeleitet werden.
  • ProxyChains: analog tsocks
  • sshuttle: Nachdem ihr sshuttle gestartet habt, werden jegliche Netzwerkanfragen (Ausnahmen können definiert werden) an euren Proxy durchgereicht. Diese Lösung kommt einem VPN tatsächlich am nächsten.

Fazit

SSH-SOCKS-Proxy sind eine einfache Alternative zum sicheren und privaten Surfen in fremden Netzwerken, wenn man selbst gerade kein VPN zur Hand hat. Hierfür hat sich auch der Begriff "Poor man's VPN" etabliert. Der einfachhalber ist der Einsatz eines Tools, wie z.B. sshuttle, empfehlenswert.

Feedback

Für Feedback zum Beitrag, seien es Fragen, Korrigierungen und/oder Anregungen, könnt ihr mir gerne eine Nachricht per E-Mail oder Mastodon schreiben (siehe Kontakt).