Wie man Webverkehr ohne VPN sicher über einen SOCKS-Tunnel leitet

0 Aktien
0
0
0
0

Einführung

Es kann vorkommen, dass Sie sich in einem unsicheren Netzwerk oder einem Netzwerk mit einer sehr restriktiven Firewall befinden und sicherstellen möchten, dass Ihr Datenverkehr nicht überwacht wird. Eine Lösung wäre die Einrichtung eines VPNs unter Ubuntu 22.04 / 20.04 / 18.04. Viele VPNs erfordern jedoch spezielle Client-Software, deren Installation Ihnen möglicherweise nicht gestattet ist. Wenn Sie lediglich sicher im Internet surfen möchten, gibt es eine schnelle, kostenlose und nützliche Alternative: einen SOCKS5-Proxy-Tunnel.

Ein SOCKS-Proxy ist ein verschlüsselter SSH-Tunnel, über den konfigurierte Anwendungen ihren Datenverkehr leiten. Serverseitig leitet der Proxy diesen Datenverkehr dann an das öffentliche Internet weiter. Im Gegensatz zu einem VPN muss ein SOCKS-Proxy auf dem Client-Gerät für jede Anwendung einzeln konfiguriert werden. Solange die Anwendung jedoch den SOCKS-Proxy nutzen kann, lassen sie sich ohne zusätzliche Client-Software starten. Serverseitig ist lediglich die Konfiguration von SSH erforderlich.

In diesem Tutorial verwenden Sie einen Server mit Ubuntu 22.04 (es funktioniert aber auch jede andere Linux-Distribution, auf die Sie per SSH zugreifen können) und den Firefox-Webbrowser als Client-Anwendung. Am Ende dieses Tutorials können Sie über einen verschlüsselten SSH-Tunnel im Internet surfen.

Voraussetzungen
  • Ein Linux-Server mit Ubuntu (andere Distributionen funktionieren ebenfalls) und dem Benutzer sudo und SSH-Zugriff.
  • Ein Programm zur Konfiguration mit einem SOCKS-Proxy, wie zum Beispiel dem Firefox-Webbrowser.
  • Windows-Benutzer benötigen zusätzlich das PuTTY-Tool oder das Windows-Subsystem für Linux (WSL).

PuTTY dient Windows-Nutzern zum Einrichten eines Proxy-Tunnels. macOS- und Linux-Nutzer verfügen über vorinstallierte Tools zum Einrichten des Tunnels.

Schritt 1 (macOS/Linux) – Tunnel einrichten

Generieren Sie auf Ihrem lokalen Computer einen SSH-Schlüssel, falls Sie noch kein Droplet damit erstellt haben. Sobald der Schlüssel generiert ist, stellen Sie sicher, dass der öffentliche Schlüssel in der Datei “authorized_keys” Ihres SSH-Droplets hinzugefügt ist. Öffnen Sie anschließend ein Terminalprogramm, um einen SSH-Tunnel mit aktiviertem SOCKS-Proxy zu erstellen.

Starten Sie den Tunnel mit diesem Befehl:

ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain
Erläuterung des Beweises
  • -ichSSH-Schlüsselpfad zur Verbindung mit dem Host
  • -D: teilt SSH mit, dass wir einen SOCKS-Tunnel auf der angegebenen Portnummer wünschen (Sie können eine Nummer zwischen 1025 und 65536 wählen).
  • -FVerschiebt den Prozess in den Hintergrund.
  • -CKomprimiert die Daten vor dem Senden
  • -Q: Verwendet den lautlosen Modus
  • -N: Teilt SSH mit, dass nach dem Schließen des Tunnels keine Befehle mehr gesendet werden.

Überprüfen Sie mit diesem Befehl, ob der Tunnel funktioniert:

ps aux | grep ssh

In der Ausgabe sehen Sie eine Zeile wie diese:

Output
sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain

Sie können Ihre Terminalanwendung beenden, der Tunnel bleibt aber aktiv. Das liegt daran, dass wir das Argument `-f` verwendet haben, wodurch die SSH-Sitzung im Hintergrund ausgeführt wird.

Schritt 1 (Windows) – Tunnel einrichten

Öffnen Sie PuTTY. Falls Sie es noch nicht installiert haben, laden Sie PuTTY herunter und speichern Sie es an einem Ort Ihrer Wahl. Für die Installation von PuTTY sind keine Administratorrechte erforderlich. .exe Herunterladen und ausführen.

Um einen Tunnel zu errichten, befolgen Sie diese Schritte:

Fügen Sie im Abschnitt „Sitzung“ den Hostnamen (oder die IP-Adresse) Ihres Servers und den SSH-Port (normalerweise 22) hinzu.


Navigieren Sie links zu: Verbindung > SSH > Tunnel

Geben Sie eine beliebige Quellportnummer zwischen 1025 und 65536 ein, z. B. 1337.


Wählen Sie die Option „Dynamisches Optionsfeld“.

Klicken Sie auf die Schaltfläche „Hinzufügen“.

Gehen Sie links zurück zur Sitzung.

Geben Sie im Feld „Gespeicherte Sitzungen“ einen Namen ein und klicken Sie auf die Schaltfläche „Speichern“.

Klicken Sie nun auf die Schaltfläche „Öffnen“, um die Verbindung herzustellen.

Benutzername sudo und geben Sie Ihr Serverpasswort ein, um sich anzumelden.

Schritt 2 – Firefox für die Nutzung des Tunnels konfigurieren

Nachdem Sie nun einen SSH-Tunnel eingerichtet haben, müssen Sie Firefox für die Verwendung dieses Tunnels konfigurieren. Beachten Sie, dass für die Funktion eines SOCKS5-Tunnels eine lokale Anwendung erforderlich ist, die den Tunnel implementieren kann. Firefox bietet diese Möglichkeit.

Dieser Schritt ist für Windows, macOS und Linux identisch.

Stellen Sie sicher, dass Sie die Portnummer notiert haben, die Sie in Ihrem SSH-Befehl verwendet haben. In unseren Beispielen haben wir 1337 verwendet.

(Die folgenden Schritte wurden mit Firefox Version 80 durchgeführt, sollten aber auch mit anderen Versionen funktionieren, wobei die Position der Optionen variieren kann.)

Öffne Firefox.
  1. Klicken Sie oben rechts auf das Hamburger-Symbol, um das Firefox-Menü aufzurufen.
  2. Klicken Sie auf den Menüpunkt „Einstellungen“ oder „Optionen“.
  3. Scrollen Sie nach unten und wählen Sie im Abschnitt Netzwerkeinstellungen die Schaltfläche Einstellungen… aus.
  4. Wählen Sie unter der Überschrift «Proxy-Zugriff auf das Internet konfigurieren» die Option „Manuelle Proxy-Konfiguration“.
  5. Geben Sie für SOCKS Host localhost oder 127.0.0.1 ein und verwenden Sie für Port den in Ihrem Tunnel angegebenen benutzerdefinierten Port 1337.
  6. Im unteren Bereich sollten Sie das Kontrollkästchen für «DNS-Proxy bei Verwendung von SOCKS v5» aktivieren.
  7. Klicken Sie auf die Schaltfläche OK, um Ihre Einstellungen zu speichern und zu schließen.

Öffnen Sie nun einen neuen Tab in Firefox und surfen Sie im Internet. Sie können jetzt sicher über den SSH-Tunnel surfen. Die Daten, die Sie von der Website erhalten, sind verschlüsselt. Da Sie die Option „Proxy-DNS“ aktiviert haben, sind auch Ihre DNS-Anfragen verschlüsselt, sodass Ihr Internetanbieter weder Ihre aufgerufenen Inhalte noch deren Herkunft einsehen kann.

Um zu überprüfen, ob Sie einen Proxy verwenden, gehen Sie in Firefox zurück zu den Netzwerkeinstellungen, geben Sie eine andere Portnummer ein und speichern Sie die Einstellungen. Wenn Sie nun versuchen, im Internet zu surfen, sollte die Fehlermeldung “Der Proxy-Server verweigert Verbindungen” erscheinen. Dies beweist, dass Firefox einen Proxy und nicht nur die Standardverbindung verwendet. Alternativ können Sie eine Website mit öffentlichen IP-Adressen wie ipecho.net aufrufen. Die dort angezeigte IP-Adresse sollte die Ihres SSH-Droplets sein, da dieses nun als Proxy fungiert.

Schritt 3 – Proxy in Firefox zurücksetzen

Sobald Sie die Wahrung der Vertraulichkeit des SSH-Tunnels nicht mehr benötigen, gehen Sie zurück zu den Netzwerk-Proxy-Einstellungen in Firefox. Aktivieren Sie die Option «System-Proxy-Einstellungen verwenden» und klicken Sie auf OK. Da Firefox nun den SOCKS-Tunnel nicht mehr nutzt, können wir ihn ebenfalls deaktivieren. Sie können den Tunnel aktiv lassen, um den Proxy in Firefox zu aktivieren und zu deaktivieren. Wenn Sie den Tunnel jedoch zu lange inaktiv lassen, kann er sich automatisch schließen.

Tunnel schließen (macOS/Linux)

Der zuvor auf unserem lokalen Rechner erstellte Tunnel wurde in den Hintergrund verschoben. Daher wird er nicht beendet, wenn Sie das Terminalfenster schließen, mit dem Sie den Tunnel geöffnet haben. Um den Tunnel zu beenden, müssen wir die Prozess-ID (PID) mithilfe des Befehls `ps` ermitteln und anschließend den Tunnel beenden. töten Lasst uns den Prozess beenden.

Lasst uns nach allen aktiven SSH-Prozessen auf unserem Rechner suchen:

ps aux |grep ssh

Suchen Sie die Zeile, die dem Befehl ähnelt, den Sie zuvor zum Erstellen des Tunnels eingegeben haben. Hier ist eine Beispielausgabe:

Output
sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain

Gleich am Anfang der Zeile, in einer der ersten beiden Spalten, findet sich eine 3- bis 5-stellige Zahl. Dies ist die Prozess-ID (PID). Die PID des Beispiels 14345 ist hier hervorgehoben.

Nachdem Sie nun die Prozess-ID (PID) kennen, können Sie den Tunnel mit dem Befehl „kill“ beenden. Verwenden Sie beim Beenden des Prozesses dessen PID:

kill 14345
Tunnel schließen (Windows)

Schließe das PuTTY-Fenster, mit dem du den Tunnel erstellt hast. Das war's.

Schritt 4 (macOS/Linux) – Erstellen Sie eine Verknüpfung für häufige Verwendung

Für macOS- oder Linux-Systeme können wir einen Alias erstellen oder ein Skript schreiben, um den Tunnel schnell einzurichten. Es gibt zwei Möglichkeiten, den Tunneling-Prozess zu automatisieren:

Beide dieser Abkürzungsmethoden erfordern eine passwortlose/passphraselose SSH-Schlüsselauthentifizierung am Server.

Klickbares BASH-Skript

Wenn Sie ein Symbol wünschen, das den Tunnel beim Anklicken startet, können wir ein kleines Bash-Skript dafür erstellen. Das Skript startet den Tunnel und anschließend Firefox. Allerdings müssen Sie die Proxy-Einstellungen beim ersten Start in Firefox weiterhin manuell hinzufügen.

Unter macOS befindet sich die Firefox-Datei, die wir über die Kommandozeile starten können, im Ordner Firefox.app. Vorausgesetzt, die Anwendung befindet sich im Ordner „Programme“, dann befindet sich die Datei dort. /Applications/Firefox.app/Contents/MacOS/firefox Es wurde gefunden.

Auf Linux-Systemen sollte der Speicherort von Firefox, falls Sie ihn aus einem Repository installiert haben oder er bereits installiert ist, folgender sein: /usr/bin/firefox Falls Firefox nicht am Standardort liegt, können Sie jederzeit den Befehl find firefox verwenden, um herauszufinden, wo sich Firefox auf Ihrem System befindet.

Ersetzen Sie in diesem Skript den Firefox-Pfad durch den für Ihr System passenden Pfad. Möglicherweise müssen Sie auch die SSH-Zeile anpassen, damit sie den zuvor erfolgreich ausgeführten Befehl zum Einrichten eines Tunnels widerspiegelt.

Verwendung eines Texteditors

Erstellen Sie eine neue Datei mit nano:

nano ~/socks.sh

Fügen Sie die folgenden Zeilen hinzu:

#!/bin/bash -e
ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@`your_domain`
/Applications/Firefox.app/Contents/MacOS/firefox &
  • Ersetzen Sie die Portnummer durch die gewünschte. 1337 (Es sollte mit Ihren Firefox-Einstellungen übereinstimmen)
  • Ersetzen Sie SSH user@Ihr Hostname oder Ihre IP-Adresse sammy@your_domain Tun
  • /Applications/Firefox.app/Contents/MacOS/firefox Ersetzen Sie dies durch den Pfad zur Firefox-Binärdatei für Ihr System.

Speichern Sie Ihr Skript. Geben Sie für nano STRG + o ein und zum Beenden STRG + x.

Machen Sie das Skript ausführbar, sodass es durch Doppelklicken gestartet wird. Verwenden Sie dazu in der Kommandozeile den Befehl `chmod`, um die Ausführungsberechtigung hinzuzufügen.

chmod +x /path/to/socks.sh

Unter macOS müssen Sie möglicherweise einen zusätzlichen Schritt ausführen, um macOS mitzuteilen, dass eine .sh-Datei als Programm ausgeführt und nicht in einem Editor geöffnet werden soll. Klicken Sie dazu mit der rechten Maustaste auf Ihre socks.sh-Datei und wählen Sie «Informationen».

Suchen Sie den Abschnitt «Öffnen mit:» und klicken Sie darauf, falls das Dreieck nicht nach unten zeigt, um das Dropdown-Menü anzuzeigen. Möglicherweise ist Xcode als Standardanwendung festgelegt.


Ändern Sie es in Terminal.app. Falls Terminal.app nicht aufgeführt ist, wählen Sie «Andere» und gehen Sie dann zu Anwendungen > Dienstprogramme > Terminal.app (möglicherweise müssen Sie im Dropdown-Menü «Aktiv» die Option von «Empfohlene Anwendungen» auf «Alle Anwendungen» ändern).

Um Ihren SOCKS-Proxy zu öffnen, klicken Sie auf die Datei. socks.sh Doppelklicken Sie. Das Skript öffnet ein Terminalfenster, stellt eine SSH-Verbindung her und startet Firefox. Sie können das Terminalfenster jetzt schließen. Solange Sie die Proxy-Einstellungen in Firefox beibehalten haben, können Sie über Ihre sichere Verbindung surfen.

Dieses Skript hilft Ihnen, den Proxy schnell zu stoppen, aber Sie müssen trotzdem die oben aufgeführten manuellen Schritte befolgen, um den SSH-Prozess zu finden und ihn nach Beendigung zu beenden.

Befehlszeilenalias

Wenn Sie regelmäßig die Kommandozeile verwenden und den Tunnel aktivieren möchten, können Sie einen Kommandozeilenalias erstellen, der Ihnen diese Arbeit abnimmt. Die größte Herausforderung beim Erstellen eines Alias besteht darin, den Speicherort für den Alias-Befehl zu finden.

Verschiedene Linux-Distributionen und macOS-Versionen speichern Aliase an unterschiedlichen Orten. Am besten suchen Sie nach einer der folgenden Dateien und alias Suchen Sie, um herauszufinden, wo andere Aliase aktuell gespeichert sind. Zu den Funktionen gehören:

  • ~/.bashrc
  • ~/.zshrc
  • ~/.bash_aliases
  • ~/.bash_profile
  • ~/.profile

Sobald Sie die richtige Datei gefunden haben, fügen Sie den folgenden Alias zu einer bestehenden Datei oder einfach an deren Ende hinzu. Im folgenden Beispiel verwenden wir den Alias “firesox” für den SOCKS-Tunnel, Sie können aber jedes beliebige Wort als Alias verwenden:

alias firesox='ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain && /Applications/Firefox.app/Contents/MacOS/firefox &'
  • Ersetzen Sie 1337 durch die gewünschte Portnummer (diese sollte mit der in Firefox eingegebenen übereinstimmen).
  • Ersetzen Sie sammy@your_domain durch den Hostnamen oder die IP-Adresse Ihres SSH-Benutzers.
  • Ersetzen Sie /Applications/Firefox.app/Contents/MacOS/firefox durch den Pfad zur Firefox-Binärdatei.

Ihr Alias wird erst beim Start einer neuen Shell geladen. Schließen Sie daher Ihre Terminal-Sitzung und starten Sie eine neue Shell. Wenn Sie nun Folgendes eingeben:

firesox

Dadurch wird Ihr Tunnel-Alias eingerichtet, Firefox gestartet und Sie gelangen zurück zur Kommandozeile. Stellen Sie sicher, dass Firefox weiterhin den Proxy verwendet. Sie können nun sicher surfen.

Schritt 5 (Optional) – Fehlerbehebung: Firewalls umgehen

Wenn Ihre Verbindung funktioniert, können Sie fortfahren und hier aufhören zu lesen. Sollten Sie jedoch aufgrund einer restriktiven Firewall keine SSH-Verbindung herstellen können, ist wahrscheinlich Port 22 blockiert, der für den Tunnelaufbau benötigt wird. Wenn Sie die Einstellungen des SSH-Proxy-Servers anpassen können (was mit Root-Zugriff auf Ihren DigitalOcean Droplet möglich ist), können Sie SSH so konfigurieren, dass es auf einem anderen Port als 22 lauscht.

Welchen Port können Sie verwenden, der nicht blockiert ist?

Häufig geöffnete Ports sind beispielsweise 80 (allgemeiner Webverkehr) und 443 (TLS, sicherer Webverkehr).

Wenn Ihr SSH-Server keine Webinhalte bereitstellt, können wir SSH anweisen, für die Kommunikation einen dieser Webports anstelle des Standardports 22 zu verwenden. Port 443 ist die beste Wahl, da über diesen Port verschlüsselter Datenverkehr erwartet wird. Der SSH-Datenverkehr wird verschlüsselt.

Von einem Standort ohne Firewall aus können Sie sich per SSH in das DigitalOcean Droplet einloggen, das Sie als Proxy verwenden, oder Sie nutzen die integrierte Konsole des DigitalOcean-Kontrollpanels.

Bearbeiten Sie die SSH-Servereinstellungen:

sudo nano /etc/ssh/sshd_config

Suchen Sie nach der Leitung Port 22.

Wir können «22» komplett ersetzen oder einen zweiten Port für SSH hinzufügen. Da wir SSH auf mehreren Ports lauschen lassen möchten, fügen wir unterhalb von Port 22 eine neue Zeile mit Port 443 hinzu. Hier ein Beispiel:

. . .
Port 22
Port 443
. . .

Starten Sie SSH neu, um die soeben bearbeitete SSH-Konfiguration neu zu laden. Je nach Ihrer Distribution kann der Name des SSH-Servers abweichen, lautet aber wahrscheinlich ssh oder sshd. Falls einer der beiden nicht funktioniert, versuchen Sie den anderen.

sudo service ssh restart

Um zu überprüfen, ob Ihr neuer SSH-Port funktioniert, öffnen Sie eine neue Shell (schließen Sie die aktuelle noch nicht, falls Sie sich versehentlich ausgesperrt haben) und öffnen Sie SSH über den neuen Port:

ssh sammy@your_domain -p 443

Wenn alles geklappt hat, können Sie jetzt beide Shells verlassen und Ihren SSH-Tunnel über den neuen Port öffnen:

ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain -p 443

Die Firefox-Einstellungen bleiben gleich, da sie nicht vom SSH-Port, sondern nur vom Tunnel-Port (1337 oben) abhängen.

Ergebnis

Heutzutage gibt es viele Möglichkeiten, sicher in potenziell unsicheren Netzwerken wie öffentlichen WLAN-Netzen in Cafés zu surfen. In den meisten Fällen ist die Verwendung eines VPNs zum Schutz des gesamten Datenverkehrs vorzuziehen. Ein SOCKS-Tunnel bietet jedoch die nötige Sicherheit, wenn kein VPN verfügbar oder vertrauenswürdig ist. SOCKS-Tunnel lassen sich schnell einrichten und sind einfach zu bedienen; Sie haben die volle Kontrolle darüber. Sie sind eine hervorragende Option für sicheres Surfen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte Ihnen auch gefallen