So verbergen Sie Ihren OpenVPN-Verkehr mit einem SSH-Tunnel
Sie sind also unserem Tutorial gefolgt So richten Sie Ihren eigenen VPN-Server mit OpenVPN und einem Amazon EC2-Server ein , und es hat großartig funktioniert. Bis es plötzlich blockiert wurde. Möglicherweise haben Sie die Instanz neu gestartet und eine neue IP-Adresse erhalten. Es funktioniert noch ein paar Tage lang wieder einwandfrei, dann wird es blockiert. Offenbar blockiert Ihr Büro, ISP oder Ihre Regierung aktiv OpenVPN-Server. Also, was machst du?
Einfache Firewalls blockieren Verbindungen basierend auf dem verwendeten Port und der Ziel-IP-Adresse. Fortgeschrittenere Firewalls verwenden jedoch Deep Packet Inspection (DPI) und/oder Stateful Packet Inspection (SPI), um zwischen verschiedenen Arten von Verschlüsselungsalgorithmen und VPN-Protokollen zu unterscheiden. Das bedeutet, dass sie den OpenVPN-Verkehr erkennen und ihn kennzeichnen können, sodass der Administrator den Server blockieren kann.
Es gibt drei Möglichkeiten, dies zu umgehen: einen Verschleierungs-Proxy, SSL-Tunneling und SSH-Tunneling. In diesem Tutorial werden wir Letzteres besprechen. SSH-Tunneling umhüllt Ihre bereits verschlüsselte Verbindung mit einer weiteren Verschlüsselungsebene, sodass die Firewall die Unterscheidung nicht treffen kann. Jede dieser Methoden sollte DPI- und SPI-Firewalls umgehen, die entweder von Unternehmen oder zensurintensiven Regierungen wie China eingerichtet wurden.
OpenVPN über SSH hat einige Nachteile. Erstens kommt es aufgrund der doppelten Verschlüsselung zu Leistungseinbußen. Zweitens kann der Fingerabdruck von OpenVPN beim Tunneln über SSH nicht mehr erkannt werden, aber einige Firewalls blockieren auch den SSH-Verkehr. Dies ist bei Diensten wie Netflix der Fall, die die Verwendung jeglicher Art von verschlüsseltem Proxy, OpenVPN, SSH oder anderen unterbinden. In diesem Fall empfehlen wir Sie Obfsproxy einrichten Stattdessen erscheint der verschlüsselte Datenverkehr normal und unverschlüsselt. Obfsproxy ist aus diesem Grund wesentlich leistungsfähiger, aber auch komplizierter einzurichten und auszuführen.
Leider funktioniert Obfsproxy in Kombination mit OpenVPN unseres Wissens derzeit nur auf einem Desktop. SSH-Tunneling kann auf einem Android- oder iOS-Mobilgerät verwendet werden.
In diesem Tutorial wird davon ausgegangen, dass Sie bereits einen funktionierenden OpenVPN-Server eingerichtet haben und über die OpenVPN-GUI oder die OpenVPN Connect-App eine Verbindung zu diesem herstellen können. Sie müssen außerdem in der Lage sein, eine SSH-Verbindung zu Ihrem Server herzustellen, indem Sie entweder Terminal auf einem Mac oder PuTTy oder eines davon verwenden viele PuTTY-Alternativen auf einem PC. Zu Demonstrationszwecken verwenden wir PuTTy. Wenn Sie nicht alles eingerichtet haben, lesen Sie bitte unsere vorheriges Tutorial .
OpenVPN über SSH auf einem PC einrichten
In unserem letzten Tutorial haben wir besprochen, wie man einen einfachen SSH-Proxy einrichtet, und diesen dann erweitert, um einen vollwertigen VPN-Server zu erstellen. Dieser Ansatz kombiniert beides, was bedeutet, dass Sie bereits über alles verfügen sollten, was Sie brauchen.
Öffnen Sie PuTTy und laden Sie Ihre VPN-Serverkonfiguration. Navigieren Sie in der Seitenleiste zu Verbindung > SSH > Tunnel. Stellen Sie sicher, dass D8080 in der Liste enthalten ist. Wenn nicht, geben Sie 8080 in „Quellport“ ein und aktivieren Sie „Auto“ und „Dynamisch“. Klicken Sie dann auf „Hinzufügen“. Sie haben jetzt einen SSH-Proxy, der über Port 8080 läuft. Sie können dies als separate Sitzungskonfiguration speichern, wenn Sie wieder auf der Registerkarte „Sitzung“ der Navigationsstruktur möchten.
Klicken Sie auf Öffnen und melden Sie sich bei Ihrem Server an. Denken Sie daran, dass der Benutzername auf dem neueren Amazon Linux AMI „ec2-user“ lautet.
Navigieren Sie zu Ihrer openvpn.conf-Datei und überprüfen Sie den Inhalt mit diesen Befehlen
|_+_|
Daraufhin sollte der Inhalt Ihrer OpenVPN-Serverkonfigurationsdatei angezeigt werden. Es sollte so aussehen:
|_+_|
Wichtig ist, dass die zweite Zeile auf TCP und nicht auf UDP eingestellt ist. Wenn Sie es ändern müssen, können Sie es mit diesem Befehl bearbeiten:
|_+_|
Klicken Sie dann auf STRG+O (der Buchstabe „o“, nicht Null), um die Datei zu speichern, und dann auf STRG+X, um den Editor zu verlassen.
Client-Konfiguration
Navigieren Sie auf Ihrem lokalen Computer zu Ihren OpenVPN-Client-Konfigurationsdateien. Wenn Sie das Standardinstallationsverzeichnis verwendet haben, ist dies C:/Programme/OpenVPN/config.
Erstellen Sie eine Kopie Ihrer vorhandenen OpenVPN-Konfigurationsdatei aus dem letzten Tutorial oder erstellen Sie eine neue. Suchen Sie Notepad oder einen anderen Nur-Text-Editor und klicken Sie mit der rechten Maustaste darauf, um als Administrator auszuführen. Öffnen oder erstellen Sie Ihre neue Konfigurationsdatei, die wie folgt aussehen sollte:
|_+_|
Beachten Sie, dass die zweite „Remote“-Zeile „localhost“ anstelle der OpenVPN-Server-IP verwendet, plus die beiden Zeilen am Ende, die OpenVPN für die Verwendung eines SOCKS-Proxys konfigurieren. Alles andere ist wie zuvor.
Speichern Sie Ihre neue Konfigurationsdatei im Konfigurationsordner Ihres OpenVPN-Verzeichnisses.
Apps einrichten
Der letzte Schritt besteht darin, Ihre Apps so zu konfigurieren, dass sie den Proxy über Port 8080 verwenden. Dies ähnelt dem, was wir mit dem grundlegenden SSH-Proxy aus dem letzten Tutorial gemacht haben. Für viele Apps ist in den Einstellungen ein Proxy-Setup verfügbar, und einige erkennen ihn möglicherweise sogar automatisch. Wenn Sie es manuell einrichten müssen, benötigen Sie folgende drei Informationen:
- Host: 127.0.0.1
- Port: 8080
- Proxy-Typ: SOCKS5 (oder SOCKS v5)
Hier sind die Anweisungen für Firefox und Chrome:
In Firefox:
- Gehen Sie zu Extras > Optionen > Erweitert > Netzwerk > Verbindung > Einstellungen > Manuelle Proxy-Konfiguration
- Stellen Sie den SOCKS-Host auf 127.0.0.1 und den Port auf 8080 ein (oder auf was auch immer Sie den Tunnel-Port auf PuTTy eingestellt haben).
- Klicken Sie zum Speichern auf OK
Im Chrome Proxy Switchy
- Sobald Sie die Erweiterung installieren, sollte eine Setup-Seite angezeigt werden. Alternativ können Sie auch auf das Symbol oben rechts in Chrome und dann auf „Optionen“ klicken.
- Benennen Sie das Profil nach Belieben. Stellen Sie unter „Manuelle Konfiguration“ den SOCKS-Host auf 127.0.0.1 und den Port auf 8080 ein (oder auf was auch immer Sie den Tunnel-Port in PuTTy eingestellt haben. Lassen Sie alles andere leer.
- Klicken Sie auf „Speichern“ und dann erneut auf das Symbol, um Ihr Proxy-Profil auszuwählen.
Verbinden Sie sich nun zunächst mit PuTTy mit der oben genannten Konfiguration mit Ihrem Server und dann mit dem VPN unter Verwendung der neuen Konfigurationsdatei, die wir erstellt haben.
Sie sind jetzt mit OpenVPN über SSH mit dem Internet verbunden!
Handy, Mobiltelefon
Wir erklären Ihnen, wie Sie Ihren OpenVPN+SSH-Tunnel für Android anpassen, obwohl iOS nicht allzu viel anders sein sollte.
Bevor wir beginnen, gibt es ein paar Vorbehalte. Erstens funktioniert diese Methode nur beim Surfen im Internet. Denn im Gegensatz zu einem Desktop können Sie auf einem Standard-Android- oder iOS-Gerät nicht einfach Ports nach Belieben öffnen. Das bedeutet, dass die von anderen Apps verwendeten Ports nicht über den SSH-Proxy geleitet werden. Um dies zu umgehen, können Sie Ihr Gerät rooten oder jailbreaken und eine App wie ProxyDroid oder die Unix-Apps von Cydia verwenden, um den Proxy zu konfigurieren.
Das ist ein Tutorial für später. Lassen Sie uns es zunächst auf Standard-Android mit Firefox zum Laufen bringen. Sie müssen die folgenden Apps installieren:
- OpenVPN für Android (Hinweis: NICHT OpenVPN Connect, das bei der Authentifizierung wählerischer ist)
- ConnectBot oder eine gleichwertige SSH-Terminal-App (JuiceSSH ist gut, kostet aber extra für die Weiterleitung von Ports)
- Ein Dateimanager wie z Dateikommandant
- Feuerfuchs oder einen anderen Browser, mit dem Sie Proxys konfigurieren können
Sie benötigen außerdem eine Möglichkeit, Dateien von Ihrem Computer auf Ihr Telefon zu übertragen. Ein USB-Kabel ist in Ordnung. Ich habe den Synchronisierungsordner von IBackup verwendet.
Suchen Sie Ihren ovpn.key und die oben erstellte .ovpn-Konfigurationsdatei auf Ihrem Desktop und verschieben Sie sie auf den internen Speicher oder die SD-Karte Ihres Telefons. Verschieben Sie außerdem die von Ihrem Server-Host bereitgestellte PEM-Schlüsseldatei. Sie befindet sich wahrscheinlich am selben Ort wie Ihre PPK-Datei, die Sie zur Authentifizierung bei PuTTy verwenden. Wenn Sie es verloren haben, müssen Sie im Amazon EC2-Dashboard oder bei dem von Ihnen verwendeten Server-Hosting-Dienst ein neues erstellen.
Optional können Sie die standardmäßige .ovpn-Konfigurationsdatei herunterladen, die Sie zum Herstellen einer Verbindung ohne SSH verwenden. Dann können Sie Ihr VPN mit allen Apps statt nur mit dem Browser verwenden, und es ist hilfreich bei der Fehlerbehebung.
ConnectBot-Setup
Führen Sie ConnectBot auf Ihrem Telefon aus. Klicken Sie auf die drei Punkte in der oberen rechten Ecke und gehen Sie zu „Pubkeys verwalten“. Klicken Sie auf der nächsten Seite erneut auf die Punkte und dann auf Importieren. Dadurch sollte der von Ihnen installierte Dateimanager gestartet werden. Suchen Sie die PEM-Datei, die Sie gerade auf Ihr Telefon verschoben haben, und wählen Sie sie aus. Er sollte nun in der Liste der öffentlichen Schlüssel mit einem roten Schloss daneben erscheinen. Tippen Sie darauf, damit es grün wird. Klicken Sie auf die Schaltfläche „Zurück“, um zur Hauptseite von ConnectBot zurückzukehren.
Geben Sie im unteren Terminalfeld neben „ssh“ Ihre SSH-Details ein. Es sollte so aussehen:
|_+_|
Ersetzen
Wenn Sie die Verbindung erfolgreich hergestellt haben, drücken Sie erneut die drei Punkte und trennen Sie die Verbindung. Ihr Profil sollte auf dem Startbildschirm von ConnectBot gespeichert werden. Drücken Sie lange darauf, um ein Kontextmenü zu öffnen, und tippen Sie auf „Portweiterleitungen bearbeiten“. Tippen Sie auf der nächsten Seite auf die drei Punkte und wählen Sie „Portweiterleitung hinzufügen“.
Nennen Sie es, wie Sie möchten. Stellen Sie Typ auf Dynamisch (SOCKS) und Quellport auf 8080 ein (oder was auch immer in der SOCKS-Proxy-Zeile Ihrer OpenVPN-Konfigurationsdatei steht). Tippen Sie auf „Portweiterleitung erstellen“.
ConnectBot ist einsatzbereit, aber wir werden noch keine Verbindung herstellen. Lassen Sie uns zunächst OpenVPN einrichten.
OpenVPN für Android-Setup
Führen Sie OpenVPN für Android aus.
Klicken Sie oben rechts auf die quadratische Schaltfläche mit einem nach unten zeigenden Pfeil, um ein Profil zu importieren. Navigieren Sie zu Ihrer .ovpn-Konfigurationsdatei und wählen Sie sie aus. Klicken Sie auf der nächsten Seite auf die Schaltfläche „Auswählen“.
Navigieren Sie dieses Mal zu Ihrer ovpn.key-Datei und wählen Sie sie aus. Klicken Sie unten rechts auf die gelbe Schaltfläche „Speichern“.
Ihr neues Profil sollte nun in der Liste auf dem Startbildschirm der App erscheinen.
Bevor wir eine Verbindung herstellen, überprüfen wir noch einmal die Firewall unseres Servers. Melden Sie sich bei AWS an, wählen Sie Instanzen aus und markieren Sie Ihren OpenVPN-Server. Klicken Sie im Feld Sicherheitsgruppen auf die für diese Instanz verwendete Gruppe. Klicken Sie mit der rechten Maustaste darauf und wählen Sie „Eingehende Regeln bearbeiten“.
Fügen Sie benutzerdefinierte TCP-Regeln für die Ports 22, 1194 und 8080 hinzu und passen Sie diese nach Bedarf an Ihre persönliche Konfiguration an.
Jetzt ist es an der Zeit, eine Verbindung herzustellen. Öffnen Sie zuerst ConnectBot. Tippen Sie auf das Profil, das wir gerade erstellt haben, um eine SSH-Verbindung zu Ihrem Server herzustellen. Stellen Sie sicher, dass der Pubkey aktiviert ist, sonst erhalten Sie eine Fehlermeldung bezüglich eines Passworts. Nachdem Sie erfolgreich eine Verbindung hergestellt haben, wechseln Sie zur OpenVPN-App. Tippen Sie dort auf Ihr Profil, um eine Verbindung herzustellen.
Am Ende des OpenVPN-Protokolls, das beim Herstellen einer Verbindung angezeigt wird, sollte die Meldung „VERBUNDEN, ERFOLGREICH“ angezeigt werden.
Beachten Sie, dass Sie diese Anmeldeinformationen jeweils nur auf einem Gerät verwenden können, da wir dieselben .pem- und .key-Dateien wie auf unserem Desktop verwenden. Stellen Sie zunächst sicher, dass Sie nicht mit Ihrem Desktop verbunden sind. Wenn Sie auf mehreren Geräten gleichzeitig eine Verbindung herstellen möchten, müssen Sie für jedes Gerät neue Anmeldeinformationen (.key und .pem) generieren.
Konfigurieren Sie Firefox für die Verwendung eines Proxys
Schließlich müssen wir Firefox für die Verwendung des Proxys konfigurieren. Chrome und Safari auf Mobilgeräten verfügen nicht über Proxy-Konfigurationsoptionen, weshalb wir Firefox empfehlen. Sie können versuchen, den Proxy in den WLAN-Einstellungen einzurichten, müssen diese dann jedoch jedes Mal ändern, wenn Sie eine Verbindung ohne Proxy herstellen möchten.
Geben Sie in der Firefox-URL-Leiste „about:config“ ein. Geben Sie in der Suchleiste auf dieser Seite „network.proxy“ ein. Dadurch werden alle Felder angezeigt, die uns interessieren. Geben Sie die folgenden Einstellungen in die angegebenen Felder ein:
- network.proxy.socks: 127.0.0.1
- network.proxy.socks_port: 8080 (oder was auch immer Sie in Ihrer OpenVPN-Konfiguration und ConnectBot festgelegt haben)
- network.proxy.type: 1
Das sollte den Browser-Verkehr von Firefox über OpenVPN und SSH leiten. Sie können jetzt von einem mobilen Gerät aus über ein VPN im Internet surfen, ohne Angst vor Deep Packet Inspection haben zu müssen!
Wenn Sie eine Verbindung über den SSH-Proxy ohne OpenVPN herstellen möchten, stellen Sie einfach mit ConnectBot eine SSH-Verbindung zu Ihrem Server her und stellen Sie keine Verbindung mit OpenVPN her. Umgekehrt können Sie Ihre grundlegende Nicht-SSH-.ovpn-Konfigurationsdatei in die OpenVPN-App importieren und eine Verbindung mit diesem SSH-Proxy herstellen.