Wenn es darum geht, Ihren Fußabdruck im Web zu sichern, haben Sie vielleicht schon von VPNs gehört, oder? Ein VPN fungiert als Vermittler zwischen Ihrem Computer und dem Internet. Der gesamte Datenverkehr läuft über den VPN-Server, wodurch Ihre IP-Adresse und Ihr Standort effektiv maskiert werden.
Ein VPN ist jedoch nicht die einzige Form eines Proxyservers. SOCKS (Socket Secure) ist ein ähnliches Netzwerkprotokoll, das die Kommunikation mit Servern durch eine Firewall ermöglicht, indem es den Netzwerkverkehr im Namen eines Clients weiterleitet. Im Vergleich zu VPN bietet SOCKS mehr Flexibilität und Kontrolle über die Netzwerkkonfiguration. Es ist nützlich, wenn Sie den VPN-Client nicht installieren können oder einem VPN-Anbieter nicht vertrauen.
Diese Anleitung wird zeigen, wie Sie einen SSH-SOCKS-5-Proxy-Tunnel einrichten und Ihren Webverkehr durch den Tunnel leiten.
Voraussetzungen
Zur Demonstration haben wir einen lokalen Rechner mit Ubuntu Desktop und einen entfernten Rechner mit Ubuntu Server verwendet. Sie müssen SSH konfiguriert haben, damit es reibungslos funktioniert. Da wir einen SOCKS-Proxy verwenden, benötigen wir zum Testen der Verbindung eine App, die diesen nutzen kann. Firefox ist ein perfektes Beispiel. Es ist ein moderner Webbrowser, der den SOCKS-5-Proxy-Tunnel unterstützt.
Wenn Sie Windows verwenden, nutzen Sie entweder WSL (Windows-Subsystem für Linux), um eine lokale Linux-Umgebung einzurichten, oder PuTTY, eine Open-Source-App, die verschiedene Netzwerkprotokolle wie Telnet, rlogin usw. implementieren kann.
Konfigurieren des SOCKS-Tunnels
-
Einrichten des SOCKS-Tunnels (macOS/Linux)
Auf dem lokalen Computer müssen wir einen SSH-Schlüssel konfigurieren, um eine sichere Verbindung zu gewährleisten. Der SSH-Schlüssel muss auch auf dem Remote-System registriert sein. Diese Anleitung zur Konfiguration der SSH-Schlüssel-basierten Authentifizierung zeigt den Prozess im Detail.
Der folgende SSH-Befehl baut einen SOCKS-Tunnel zum Remote-Server auf:
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> |

Lassen Sie uns den Befehl aufschlüsseln:
-
-i: Es teilt SSH mit, welcher SSH-Schlüssel für die Verbindung verwendet werden soll.
-
-D: Es teilt SSH mit, dass wir einen SOCKS-Tunnel einrichten möchten. Als Port verwenden wir den Port 1024. Dies ist kein fester Wert. Sie können jeden Port wählen zwischen 1024 und 65536.
-
-f: Der SSH-Prozess wird im Hintergrund ausgeführt (fork).
-
-C: SSH komprimiert die Daten, bevor sie an den Remote-Server gesendet werden. Dies kann sowohl den Datenverbrauch senken als auch die effektive Bandbreite erhöhen.
-
-q: Führt das Tool im Silent-Modus (stumm) aus.
-
-N: Es teilt SSH mit, dass nach dem Aufbau des Tunnels kein Befehl gesendet wird.
Nach der Ausführung können wir überprüfen, ob der Prozess ordnungsgemäß gestartet wurde. Der folgende Befehl gibt Informationen über alle laufenden SSH-Prozesse aus:
|
1 |
ps aux | grep ssh |

Jetzt können Sie das Terminalfenster sicher schließen. Der SSH-Prozess läuft wie gewünscht im Hintergrund weiter.
-
Einrichten des SOCKS-Tunnels (Windows)
Für Windows-Benutzer ist die Verwendung von PuTTY eine einfachere Lösung. Zuerst müssen Sie PuTTY herunterladen:

Nach der Installation starten Sie PuTTY:

Geben Sie im linken Bereich auf der Registerkarte Session den Host Name (or IP address) Ihres Servers ein. Wählen Sie als Connection type die Option SSH. Gehen Sie als Nächstes zu Connection >> SSH >> Tunnels. Wählen Sie hier im Feld Destination die im Screenshot gezeigten Optionen aus:

Klicken Sie anschließend auf Open. Es öffnet sich ein Terminalfenster, um eine Verbindung zum Remote-Server über SSH herzustellen. Melden Sie sich auf dem Remote-Server an:

Implementieren des SOCKS-Tunnels
Der Tunnel ist nun eingerichtet. Jede App, die SOCKS unterstützt, kann den Tunnel nutzen. Zur Demonstration ist Firefox ein hervorragendes Beispiel.
Öffnen Sie zuerst Firefox. Klicken Sie in der oberen rechten Ecke auf das Menüsymbol. Gehen Sie zu Settings:

Suchen Sie als Nächstes nach proxy. Klicken Sie bei Settings unter Configure how Firefox connects to the internet:

Wählen Sie danach Manual proxy configuration. Verwenden Sie für den SOCKS Host, use localhost oder 127.0.0.1. Geben Sie dann für den Port den Port ein, den wir für den SOCKS-Tunnel reserviert haben. Vergessen Sie nicht, SOCKS_v5:

Aktivieren Sie zuletzt die Option Proxy DNS when using SOCKS_v5. Klicken Sie auf OK, um fortzufahren.
Öffnen Sie als Nächstes einen neuen Tab und versuchen Sie, auf eine beliebige Webseite zuzugreifen. Sie können beispielsweise Ihre IP-Adresse über CheckMyIP.
Proxy-Einstellungen rückgängig machen
Wenn Sie die Proxy-Verbindung zum SSH-Tunnel nicht mehr benötigen, können Sie sie in den Firefox-Proxy-Einstellungen sicher deaktivieren:

Wählen Sie im Fenster System-Proxy-Einstellungen verwenden und klicken Sie auf OK.
Schließen des SOCKS-Tunnels
-
Schließen des Tunnels unter macOS/Linux
Um den Tunnel zu schließen, müssen wir den SSH-Prozess manuell beenden. Wir benötigen die PID (Prozess-ID) des SSH-Prozesses. Der folgende Befehl zeigt die PIDs aller laufenden SSH-Prozesse an:
|
1 |
ps aux | grep ssh |
Notieren Sie sich den SSH-Prozess, der mit dem Befehl zur Erstellung des Tunnels ausgeführt wird. Beenden Sie den Prozess:
|
1 |
kill <tunnel_ssh_pid> |
Wenn keine Option definiert ist, sendet der kill-Befehl ein generisches SIGTERM -Signal an den Zielprozess. Mehr über die Linux-Prozessverwaltung erfahren Sie in diesem Tutorial.
-
Schließen des Tunnels unter Windows
Das Schließen des PuTTY-Fensters sollte die Tunnelverbindung beenden.
Fehlerbehebung
Hier sind einige häufige Probleme, die auftreten können, wenn Sie versuchen, SOCKS zur Weiterleitung von Datenverkehr zu verwenden.
-
Firewall
Wenn Sie aufgrund einer Firewall-Einschränkung keine Verbindung herstellen können, ist die Firewall wahrscheinlich so konfiguriert, dass sie Verbindungen zu Port 22 blockiert. Dies ist der Standardport, den SSH für Verbindungen zu Remote-Systemen verwendet. Einige Ports bleiben standardmäßig geöffnet, beispielsweise Port 80 (allgemeiner Web-Datenverkehr) und Port 443 (TLS, sicherer Web-Datenverkehr).
Wenn der SSH-Server keine Webinhalte bereitstellt, können wir einen der Standardports ( 80 oder 443 ) anstelle von Port 22 verwenden. Es wird empfohlen, Port 443 zu verwenden, da dieser standardmäßig verschlüsselten Datenverkehr erwartet. Er verschlüsselt auch den ausgehenden Datenverkehr. Um diese Änderung vorzunehmen, müssen wir die SSH-Konfigurationsdatei ändern. Öffnen Sie die Datei in einem Texteditor:
|
1 |
sudo nano /etc/ssh/sshd_config |
SSH kann für seine Zwecke mehrere Ports verwenden. Scrollen Sie in der Konfigurationsdatei nach unten und suchen Sie den Port-Bereich:

Sobald die Änderungen vorgenommen wurden, speichern Sie die Datei und schließen Sie den Editor. Starten Sie den SSH-Dienst neu, um die Änderung anzuwenden:
|
1 |
sudo service ssh restart |
Um zu überprüfen, ob der neue Port funktioniert, versuchen Sie, eine Verbindung zum Remote-Server über den neuen Port herzustellen:
|
1 |
ssh <remote_username>@<remote_server> -p 443 |
Wenn die Verbindung erfolgreich war, können wir Port 443 sicher für das SSH-Tunneling verwenden. Hier ist der überarbeitete Befehl zum Einrichten des SOCKS-Tunnels:
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> -p 443 |
Hier weist das Flag -p SSH an, Port 443.
Fazit
In der heutigen Zeit gehören Privatsphäre und Sicherheit zu den größten Anliegen. Es gibt viele Möglichkeiten, sicher im Internet zu surfen, wenn Sie sich in einem unsicheren Netzwerk befinden. In den meisten Fällen bietet die Verwendung eines VPNs ausreichende Sicherheit für Ihren Netzwerkverkehr. Andererseits bietet Ihnen ein SOCKS-Tunnel die erforderliche Sicherheit, wenn Sie keinem VPN vertrauen können oder wollen. Ein SOCKS-Tunnel gibt Ihnen zudem die volle Kontrolle über die Einrichtung.
Viel Spaß beim Computing!
Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.