So leiten Sie Webdatenverkehr sicher ohne VPN mithilfe eines SOCKS-Tunnels weiter

Einführung

Manchmal befinden Sie sich in einem unsicheren Netzwerk oder verfügen über eine zu restriktive Firewall und müssen auf eine Website zugreifen. Sie möchten sicherstellen, dass niemand in der Mitte den Verkehr beobachtet.

Eine Lösung ist VPN, aber viele VPNs erfordern spezielle Client-Software auf Ihrem Computer, für dessen Installation Sie möglicherweise keine Rechte haben.

Wenn Sie nur das Surfen im Internet sichern möchten, gibt es eine einfache Alternative: einen SOCKS 5-Proxy-Tunnel.

Ein SOCKS-Proxy ist im Grunde genommen ein SSH-Tunnel, in dem bestimmte Anwendungen ihren Datenverkehr über den Tunnel an den Server weiterleiten. Auf der Serverseite leitet der Proxy den Datenverkehr an das allgemeine Internet weiter. Im Gegensatz zu einem VPN muss ein SOCKS-Proxy App für App auf dem Clientcomputer konfiguriert werden, kann jedoch ohne spezielle Clientagenten eingerichtet werden.

Solange Sie ein Droplet mit SSH-Zugriff haben, können Sie es als SOCKS-Proxy-Endpunkt verwenden. In diesem Tutorial verwenden wir ein Ubuntu 14.04-Droplet als Proxy und den Firefox-Webbrowser als Client-Anwendung. Am Ende dieses Tutorials sollten Sie in der Lage sein, Websites sicher durch den Tunnel zu durchsuchen.

Voraussetzungen

Wie oben erwähnt, ist als Erstes ein Server erforderlich, auf dem eine Linux-Variante wie Ubuntu 14.04 ausgeführt wird. Https://www.digitalocean.com/community/tutorials/how-to-connect-to-your-droplet-with- ssh [SSH-Zugriff].

  • Server bereitstellen (in diesem Beispiel wird Ubuntu 14.04 verwendet)

Auf Ihrem eigenen lokalen Computer ist etwas mehr Setup erforderlich. Dazu müssen Sie ein oder zwei Software-Teile herunterladen.

Mit Firefox können Sie den Proxy nur für Firefox einrichten, anstatt einen systemweiten Proxy einzurichten.

PuTTY wird verwendet, um den Proxy-Tunnel für Windows-Benutzer einzurichten. Benutzer von Mac OS X oder Linux haben die Tools zum Einrichten des Tunnels vorinstalliert.

Schritt 1 (Mac OS X / Linux) - Einrichten des Tunnels

Erstellen Sie auf Ihrem * lokalen * Computer einen SSH-Schlüssel. Wenn Sie bereits einen SSH-Schlüssel haben, können Sie diesen verwenden.

Obwohl es eine gute Praxis ist, Ihrem SSH-Schlüssel eine Passphrase zu geben, lassen wir in diesem Lernprogramm die Passphrase leer, um spätere Probleme zu vermeiden.

Stellen Sie beim Einrichten des Schlüssels sicher, dass Sie ihn zu den autorisierten Schlüsseln für den Benutzer sudo auf dem Server hinzufügen (in diesem Beispiel ist dies der Benutzer * sammy *).

Öffnen Sie ein Terminalprogramm auf Ihrem Computer. Unter Mac OS X ist dies Terminal unter Programme> Dienstprogramme.

Richten Sie den Tunnel mit diesem Befehl ein:

ssh -D  -f -C -q -N @
  • Erklärung der Argumente *

  • + -D +: Sagt SSH, dass wir einen SOCKS-Tunnel auf der angegebenen Portnummer wollen (Sie können eine Zahl zwischen 1025-65536 wählen)

  • + -f +: Verzweigt den Prozess in den Hintergrund

  • + -C +: Komprimiert die Daten vor dem Senden

  • + -q +: Verwendet den stillen Modus

  • + -N +: Weist SSH an, dass kein Befehl gesendet wird, sobald der Tunnel aktiv ist

Stellen Sie sicher, dass Sie "+ @ +" durch Ihren eigenen sudo-Benutzer und die IP-Adresse oder den Domainnamen des Servers ersetzen.

Sobald Sie den Befehl eingegeben haben, werden Sie ohne Anzeichen von Erfolg oder Misserfolg sofort wieder zur Eingabeaufforderung geführt. Das ist normal.

Stellen Sie mit dem folgenden Befehl sicher, dass der Tunnel aktiv ist:

ps aux | grep ssh

Sie sollten eine Zeile in der Ausgabe wie folgt sehen:

Ausgabe

sammy       0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N [email protected]

Sie können Ihre Terminal-Anwendung beenden und der Tunnel bleibt bestehen. Das liegt daran, dass wir das Argument "+ -f +" verwendet haben, mit dem die SSH-Sitzung in den Hintergrund gestellt wurde.

  • Hinweis: * Wenn Sie den Tunnel beenden möchten, müssen Sie die PID über "+ ps " abrufen und den Befehl " kill +" verwenden, den wir Ihnen später zeigen.

Schritt 1 (Windows) - Einrichten des Tunnels

Öffnen Sie PuTTY.

Wenn Sie es noch nicht installiert haben, laden Sie PuTTY herunter und speichern Sie es, wo Sie möchten. Für die Installation von PuTTY sind keine Administratorrechte erforderlich. lade einfach die + .exe + herunter und starte sie.

Führen Sie die folgenden Schritte aus, um den Tunnel einzurichten:

  1. Fügen Sie im Abschnitt * Sitzung * den * Hostnamen (oder die IP-Adresse) * Ihres Servers und den * SSH-Port * (normalerweise 22) hinzu: https://assets.digitalocean.com/articles/socks5/wXDz8J7. png [Putty Sessions]

  2. Navigieren Sie links zu: * Verbindung> SSH> Tunnel *

  3. Geben Sie eine beliebige * Quellport * -Nummer zwischen 1025 und 65536 ein. In diesem Beispiel wurde das Port-Image verwendet: https://assets.digitalocean.com/articles/socks5/ZLPgf4V.png [Putty Connection> SSH> Tunnel]

  4. Aktivieren Sie das Optionsfeld * Dynamisch *

  5. Klicken Sie auf die Schaltfläche * Hinzufügen *

  6. Gehe zurück zu * Session * auf der linken Seite

  7. Fügen Sie unter * Gespeicherte Sitzungen * einen Namen hinzu und klicken Sie auf die Schaltfläche * Speichern *

  8. Klicken Sie nun auf die Schaltfläche * Öffnen *, um die Verbindung herzustellen

  9. Geben Sie Ihren sudo-Benutzernamen und Ihr Server-Passwort ein, um sich anzumelden

Sie können das PuTTY-Fenster jetzt minimieren, aber nicht schließen. Ihre SSH-Verbindung sollte offen sein.

  • Tipp: * Sie können Ihren sudo-Benutzernamen (* sammy *) und Ihren SSH-Schlüssel für dieselbe Sitzung speichern, indem Sie https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with folgen -putty-on-digitalocean-droplets-windows-users [PuTTY SSH-Schlüsselanweisungen]. Dann müssen Sie Ihren Benutzernamen und Ihr Passwort nicht jedes Mal eingeben, wenn Sie die Verbindung öffnen.

Schritt 2 - Firefox für die Verwendung des Tunnels konfigurieren

Nachdem Sie über einen SSH-Tunnel verfügen, müssen Sie Firefox für die Verwendung dieses Tunnels konfigurieren. Denken Sie daran, dass Sie eine lokale Anwendung verwenden müssen, die den Tunnel nutzen kann, damit ein SOCKS 5-Tunnel funktioniert. Firefox macht den Trick.

Dieser Schritt ist für Windows, Mac OS X und Linux identisch.

Stellen Sie sicher, dass Sie die * Portnummer * haben, die Sie in Ihrem SSH-Befehl oder in PuTTY verwendet haben. Wir haben im OS X / Linux-Beispiel und im Windows-Beispiel verwendet, oder Sie haben möglicherweise einen anderen Port verwendet.

(Die folgenden Schritte wurden mit Firefox Version 39 ausgeführt, sollten jedoch mit anderen Versionen funktionieren, obwohl die Positionen der Optionen möglicherweise unterschiedlich sind.)

  1. Klicken Sie oben rechts auf das Hamburger-Symbol, um auf das Menü von Firefox zuzugreifen: image: https: //assets.digitalocean.com/articles/socks5/bjh8Dh1.png [Firefox-Einstellungen]

  2. Klicken Sie auf das Symbol * Einstellungen * oder * Optionen *

  3. Navigieren Sie zum Abschnitt * Erweitert *

  4. Klicken Sie auf die Registerkarte * Netzwerk *: https://assets.digitalocean.com/articles/socks5/k4DKcdA.png [Firefox Advanced Preferences]

  5. Klicken Sie auf die Schaltfläche * Einstellungen * unter der Überschrift * Verbindung *. Ein neues Fenster wird geöffnet

  6. Aktivieren Sie das Optionsfeld für die * manuelle Proxy-Konfiguration: * image: https://assets.digitalocean.com/articles/socks5/70cwU1N.png [Firefox-Proxy-Einstellungen]

  7. Geben Sie * localhost * für den * SOCKS-Host * ein

  8. Geben Sie dieselbe * Port * -Nummer von Ihrer SSH-Verbindung ein. Auf dem Bild sehen Sie, dass wir ** eingegeben haben, um den Anweisungen von Windows zu entsprechen

  9. Klicken Sie auf die Schaltfläche * OK *, um Ihre Konfiguration zu speichern und zu schließen

Öffnen Sie jetzt eine weitere Registerkarte in Firefox und surfen Sie im Internet! Sie sollten auf sicheres Durchsuchen Ihres SSH-Tunnels eingestellt sein.

  • Optional: * Um zu überprüfen, ob Sie den Proxy verwenden, kehren Sie zu den * Netzwerk * ​​-Einstellungen in Firefox zurück. Versuchen Sie, eine andere Portnummer einzugeben. Klicken Sie auf * OK *, um die Einstellungen zu speichern. Wenn Sie jetzt versuchen, im Internet zu surfen, sollte eine Fehlermeldung angezeigt werden * Der Proxy-Server lehnt Verbindungen ab *. Dies zeigt, dass Firefox den Proxy und nicht nur die Standardverbindung verwendet. Stellen Sie die richtige Portnummer wieder her und Sie sollten wieder in der Lage sein, zu browsen.

  • Zurück zum normalen ungesicherten Surfen in Firefox: *

Wenn Sie die Privatsphäre des SSH-Tunnels nicht mehr benötigen, kehren Sie in Firefox zu den Proxy-Einstellungen * Netzwerk * ​​(* Einstellungen> Erweitert> Netzwerk> Einstellungen *) zurück.

Klicken Sie auf das Optionsfeld für * System-Proxy-Einstellungen verwenden * und klicken Sie auf * OK *. Firefox durchsucht nun Ihre normalen Verbindungseinstellungen, die wahrscheinlich ungesichert sind.

Wenn Sie den Tunnel nicht mehr benutzen, müssen Sie auch den Tunnel beenden, was wir im nächsten Abschnitt behandeln.

Wenn Sie den Tunnel häufig verwenden möchten, können Sie ihn für eine spätere Verwendung offen lassen. Beachten Sie jedoch, dass er möglicherweise von selbst beendet wird, wenn er zu lange inaktiv ist oder wenn Ihr Computer in den Energiesparmodus wechselt oder sich ausschaltet.

Schritt 3 (Mac OS X / Linux) - Tunnel schließen

Wenn Sie den Tunnel schließen, kann Firefox den Proxy nicht mehr durchsuchen.

Der Tunnel, den wir zuvor auf unserem lokalen Computer erstellt haben, wurde in den Hintergrund verschoben. Wenn Sie also das Terminalfenster schließen, das Sie zum Öffnen des Tunnels verwendet haben, wird er nicht beendet.

Um den Tunnel zu beenden, müssen wir die Prozess-ID (PID) mit dem Befehl + ps + identifizieren und sie dann mit dem Befehl + kill + beenden.

Lassen Sie uns nach allen aktiven "+ ssh +" - Prozessen auf unserer Maschine suchen:

ps aux |grep ssh

Suchen Sie die Zeile, die dem zuvor eingegebenen Befehl zum Erstellen des Tunnels entspricht. Hier einige Beispiele für die Ausgabe:

Ausgabe

sammy       0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N [email protected]

Am Anfang der Zeile in einer der ersten beiden Spalten befindet sich eine 3-5-stellige Zahl. Dies ist die PID. Oben ist die Beispiel-PID von hervorgehoben.

Nachdem Sie nun die PID kennen, können Sie den Tunnel mit dem Befehl "+ kill +" herunterfahren. Verwenden Sie Ihre eigene PID, wenn Sie den Prozess beenden.

sudo kill

Wenn Sie nun den Verbindungsprozess automatisieren möchten, fahren Sie mit Schritt 4 fort.

Schritt 3 (Windows) - Schließen des Tunnels

Wenn Sie den Tunnel schließen, kann Firefox den Proxy nicht mehr durchsuchen.

Schließen Sie das PuTTY-Fenster, mit dem Sie den Tunnel erstellt haben. Das ist es!

In Windows ist es nicht einfach, den Verbindungsvorgang zu automatisieren, aber PuTTY und Firefox können die zuvor eingegebenen Einstellungen speichern. Öffnen Sie die Verbindungen also einfach erneut, um den Tunnel wieder zu verwenden.

Schritt 4 (Mac OS X / Linux) - Erstellen von Verknüpfungen für die wiederholte Verwendung

Für OS X- oder Linux-Systeme können wir einen Alias ​​erstellen oder ein Skript erstellen, um den Tunnel schnell für uns zu erstellen. Es gibt zwei Möglichkeiten, den Tunnelprozess zu automatisieren.

Hinweis: Diese Verknüpfungsmethoden erfordern beide eine passwortlose / passwortlose SSH-Schlüsselauthentifizierung beim Server!

Klickbares BASH-Skript

Wenn Sie möchten, dass ein Symbol doppelt klickt und der Tunnel gerade startet, können wir ein einfaches BASH-Skript erstellen, um die Aufgabe zu erledigen.

Wir sorgen dafür, dass das Skript den Tunnel einrichtet und Firefox startet, obwohl Sie die Proxy-Einstellungen beim ersten Mal noch manuell in Firefox hinzufügen müssen.

  • Unter OS X * befindet sich die Firefox-Binärdatei, die wir über die Befehlszeile starten können, in "+ Firefox.app ". Vorausgesetzt, die App befindet sich im Ordner "Programme", befindet sich die Binärdatei unter " / Programme / Firefox.app / Contents / MacOS / Firefox +".

  • Wenn Sie Firefox auf Linux-Systemen * über ein Repository installiert haben oder es vorinstalliert ist, sollte der Speicherort "+ / usr / bin / firefox " sein. Sie können jederzeit den Befehl " which firefox +" verwenden, um herauszufinden, wo sich dieser auf Ihrem System befindet.

Ersetzen Sie im folgenden Skript den Pfad zu Firefox durch den für Ihr System geeigneten.

Erstellen Sie mit einem Texteditor wie + nano + eine neue Datei:

nano ~/socks5.sh

Fügen Sie die folgenden Zeilen hinzu:

socks5.sh

#!/bin/bash
ssh -D  -f -C -q -N
&
  • Ersetzen Sie ++ durch Ihre gewünschte Portnummer (diese sollte mit der in Firefox angegebenen übereinstimmen)

  • Ersetzen Sie ++ durch Ihren SSH-Benutzer und Hostnamen oder Ihre IP

  • Ersetzen Sie "++" durch den Pfad zur Firefox-Binärdatei

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 ausgeführt wird, wenn Sie darauf doppelklicken. Geben Sie in der Befehlszeile den folgenden Befehl ein, um unter Verwendung Ihres eigenen Skriptpfads Ausführungsberechtigungen hinzuzufügen:

chmod +x

Unter OS X müssen Sie möglicherweise einen zusätzlichen Schritt ausführen, um Mac OS X mitzuteilen, dass eine "+ .sh +" - Datei wie ein Programm ausgeführt und nicht in einem Editor geöffnet werden soll.

Klicken Sie dazu mit der rechten Maustaste auf Ihre Datei + socks5.sh + und wählen Sie * Get Info *.

Suchen Sie den Abschnitt * Öffnen mit: *. Wenn das Dreieck nicht nach unten zeigt, klicken Sie darauf, um das Dropdown-Menü anzuzeigen. Xcode ist möglicherweise als Standard-App festgelegt. image: https://assets.digitalocean.com/articles/socks5/8TJ7dvX.png [Info abrufen]

Ändern Sie es in * Terminal.app *. Wenn Terminal.app nicht aufgeführt ist, wählen Sie "Andere" und navigieren Sie zu "Anwendungen"> "Dienstprogramme"> "Terminal.app".

Um Ihren SOCKS-Proxy jetzt zu öffnen, doppelklicken Sie einfach auf die Datei + socks.sh +.

(Nach der Ausführung wird das Skript nicht zur Eingabe eines Kennworts aufgefordert. Wenn Sie zuvor Ihren SSH-Schlüssel so eingerichtet haben, dass eine Passphrase erforderlich ist, schlägt das Skript automatisch fehl.)

Das Skript öffnet ein Terminalfenster, startet die SSH-Verbindung und startet Firefox. Sie können das Terminalfenster jederzeit schließen. Solange Sie die Proxy-Einstellungen in Firefox beibehalten haben, können Sie Ihre sichere Verbindung durchsuchen.

Befehlszeilen-Alias

Wenn Sie sich häufig in der Befehlszeile befinden und den Tunnel aufrufen möchten, können Sie einen BASH-Alias ​​erstellen, der die Aufgabe für Sie erledigt.

Der schwierigste Teil beim Erstellen eines Alias ​​ist, herauszufinden, wo der Alias-Befehl gespeichert werden soll.

Verschiedene Linux-Distributionen und OS X-Versionen speichern Aliase an verschiedenen Orten. Am besten suchen Sie nach einer der folgenden Dateien und suchen nach "+ alias +", um zu sehen, wo andere Aliase gerade gespeichert werden. Möglichkeiten umfassen

  • + ~ / .bashrc +

  • + ~ / .bash_aliases

  • + ~ / .bash_profile +

  • + ~ / .profile +

Wenn Sie die richtige Datei gefunden haben, fügen Sie diesen Alias ​​unter den bereits vorhandenen oder am Ende der Datei hinzu.

bashrc
alias socks5='ssh -D  -f -C -q -N  &&  &'
  • Ersetzen Sie ++ durch Ihre gewünschte Portnummer (diese sollte mit der in Firefox angegebenen übereinstimmen)

  • Ersetzen Sie ++ durch Ihren SSH-Benutzer und Hostnamen oder Ihre IP

  • Ersetzen Sie "++" durch den Pfad zur Firefox-Binärdatei

Ihre Aliase werden nur geladen, wenn Sie eine neue Shell starten. Schließen Sie daher Ihre Terminalsitzung und starten Sie eine neue.

Wenn Sie jetzt Folgendes eingeben:

socks5

Dieser Alias ​​richtet Ihren Tunnel ein, startet Firefox für Sie und bringt Sie zur Eingabeaufforderung zurück.

Stellen Sie sicher, dass Firefox weiterhin den Proxy verwendet. Sie können jetzt sicher surfen!

Schritt 5 (Optional) - Fehlerbehebung: Durch Firewalls

Wenn Ihre Verbindung funktioniert, können Sie loslegen und mit dem Lesen aufhören.

Wenn Sie jedoch festgestellt haben, dass Sie aufgrund einer restriktiven Firewall keine SSH-Verbindung herstellen können, wird Port 22, der zum Erstellen des Tunnels erforderlich ist, wahrscheinlich blockiert.

Wenn Sie die SSH-Einstellungen des Proxyservers steuern können (mit Superuser-Zugriff auf ein DigitalOcean-Droplet können Sie dies tun), können Sie festlegen, dass SSH einen anderen Port als 22 überwacht.

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

Abgesehen von dem fragwürdigen Plan, Port-Scans mit einem Tool wie ShieldsUP! Auszuführen (fragwürdig, da Ihr lokales Netzwerk dies möglicherweise als Angriff ansieht), ist es am besten, Ports auszuprobieren, die normalerweise übrig bleiben öffnen.

Zu den häufig geöffneten Ports gehören * 80 * (allgemeiner Webverkehr) und * 443 * (SSL-Webverkehr).

Wenn Ihr SSH-Server keine Webinhalte bereitstellt, können wir SSH anweisen, einen dieser Webports anstelle des Standardports 22 für die Kommunikation zu verwenden. * 443 * ist die beste Wahl, da an diesem Port voraussichtlich verschlüsselter Datenverkehr vorliegt und unser SSH-Datenverkehr verschlüsselt wird.

Von einem nicht durch eine Firewall geschützten Standort aus können Sie SSH in das DigitalOcean Droplet einbinden, das Sie für den Proxy verwenden. (Oder verwenden Sie die integrierte https://www.digitalocean.com/community/tutorials/anwendung-der-digitalocean-konsole, um auf Ihre Tröpfchenkonsole zuzugreifen.) Möglicherweise möchten Sie dies nicht tun, wenn Sie befürchten, dass Ihr Web-Traffic überwacht wird.)

Bearbeiten Sie die SSH-Einstellungen des Servers:

sudo nano /etc/ssh/sshd_config

Suchen Sie nach der Zeile "+ Port 22 +".

Wir können entweder + 22 + vollständig ersetzen (was ohnehin eine gute SSH-Härtungstechnik ist) oder einen zweiten Port hinzufügen, an dem SSH lauscht.

Wir möchten, dass SSH an mehreren Ports empfangsbereit ist, und fügen daher unter "+ Port 22 " eine neue Zeile mit der Aufschrift " Port 443 +" hinzu. Hier ist ein Beispiel:

sshd_config

. . .

Port 22


. . .

Starten Sie SSH neu, damit die gerade bearbeitete SSH-Konfiguration erneut geladen wird.

Abhängig von Ihrer Distribution kann der Name des SSH-Server-Daemons unterschiedlich sein, es ist jedoch wahrscheinlich, dass er "+ ssh " oder " sshd +" lautet. Wenn einer nicht funktioniert, probieren 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, für den Fall, dass Sie sich versehentlich ausgesperrt haben) und verwenden Sie SSH, um den neuen Port zu verwenden.

ssh  -p 443

Wenn Sie erfolgreich sind, können Sie sich jetzt von beiden Shells abmelden und Ihren SSH-Tunnel über den neuen Port öffnen.

ssh -D  -f -C -q -N  -p 443

Das ist es! Die Firefox-Einstellungen sind identisch, da sie nicht vom SSH-Port abhängen, sondern nur vom Tunnel-Port (oben).

Fazit

Öffnen Sie einen SOCKS 5-Tunnel, um durch einen sicheren SSH-Tunnel zu blättern, wann immer Sie eine einfache Möglichkeit benötigen, um vor neugierigen Blicken sicher auf das Web zuzugreifen.