Aus LinuxUser 09/2012

Beinahe-VPN per SSH

© fckncg, 123RF

Schlichter Tunnel

Der in OpenSSH eingebaute SOCKS-Proxy und das auf SSH aufbauende Python-Programm Sshuttle springen in die Bresche zwischen einfachem Port-Forwarding und einem vollwertigen VPN.

Transparente Netzwerk-Verbindungen via Tunnel in ein virtuelles privates Netz (VPN) helfen nicht nur, wenn Sie sich als Mitarbeiter von zu Hause oder beim Außentermin in das interne Netzwerk einer Firma einklinken möchten. Sie eignen sich auch, um ohne HTTPS-Verschlüsselung in offenen WLANs zu surfen, auf Rechner hinter dem NAT-Router zu Hause zu zugreifen oder überhaupt erst ins Internet zu gelangen.

Einen eigenen VPN-Server aufzusetzen setzt selbst mit OpenVPN [1] zumindest entsprechende Kenntnisse voraus, viel Zeit und vor allem einen Server, der die Möglichkeit bietet, den VPN-Endpunkt einzurichten [2]. Dazu brauchen Sie in fast allen Fällen Root-Rechte auf dem Server, und gerade die stehen selten bereit.

Ein Rechner, der ein Login per SSH (Secure Shell, heute meist in Form der OpenSSH-Implementation [3]) erlaubt, lässt sich jedoch einfach organisieren – und das reicht oft schon für ein rudimentäres VPN aus.

SOCKS-Proxy mit SSH

Das Protokoll SOCKS [4] erlaubt es prinzipiell, beliebige Client-Server-Protokolle über einen Proxy-Dienst zu tunneln. OpenSSH als SSH-Client bringt bereits seit langer Zeit einen solchen generischen SOCKS-Proxy mit. Es leitet alle über diesen Proxy gemachten Verbindungen über einen Tunnel zur Endstelle der SSH-Verbindung auf den entfernten Rechner weiter. Dazu braucht am anderen Ende nicht einmal ein OpenSSH-Server laufen: Es genügt ein schlanker Dropbear-SSH-Server [5], wie man ihn oft auf WLAN-Routern mit OpenWRT [6] findet.

Das ermöglicht es bereits, über einen SSH-Tunnel Webseiten in einem Intranet anzusteuern oder unverschlüsselt in einem offenen WLAN zu surfen, ohne dass jemand im selben Netzwerk mitliest, wohin Sie surfen oder welche Dateien Sie herunterladen. Das klappt bereits nur mit Bordmitteln von OpenSSH und ohne besondere Berechtigungen auf dem entfernten Rechner.

Das Bereitstellen eines SOCKS-Proxys erledigen Sie bei OpenSSH über den Parameter -D und die Angabe der vom Proxy zu verwendenden Port-Nummer (üblicherweise 1080):

$ ssh -D 1080 Host

Das aktiviert den SOCKS-Proxy zusätzlich zum normalen Shell-Login auf dem entfernten Rechner.

Möchten Sie ausschließlich den SOCKS-Proxy nutzen und keine Shell auf dem entfernten Rechner starten, so empfehlen sich zusätzlich die Optionen -N und -f: Erstere bewirkt, dass keine Shell auf dem entfernten Rechner startet, und Letztere, dass SSH nicht im Vordergrund arbeitet und somit die lokale Shell wieder freigibt.

Eine weitere nützliche Option ist -o ExitOnForwardFailure=yes. Sie sorgt dafür, dass SSH die Verbindung wieder abbaut, wenn es den SOCKS-Proxy nicht einrichten konnte. Der Fall tritt ein, wenn der lokale Port bereits belegt ist, weil schon ein SOCKS-Proxy auf dem lokalen Rechner läuft.

Konfiguration

Viele Anwendungen bieten die Möglichkeit, direkt auf einen SOCKS-Proxy zuzugreifen, etwa der Webbrowser Firefox (Abbildung 1) oder das Chat-Programm Pidgin (Abbildung 2). Oft, aber nicht immer, ist die für SOCKS-Proxies übliche Portnummer 1080 voreingestellt.

Abbildung 1: Firefox bietet die Möglichkeit, über einen SOCKS-Proxy ins Netz zu gehen.
Abbildung 1: Firefox bietet die Möglichkeit, über einen SOCKS-Proxy ins Netz zu gehen.
Abbildung 2: Bei Bedarf wickeln Sie die Kommunikation von Pidgin über den SOCKS-Proxy von OpenSSH ab.
Abbildung 2: Bei Bedarf wickeln Sie die Kommunikation von Pidgin über den SOCKS-Proxy von OpenSSH ab.

Unterstützt eine Applikation nur Version 4 des SOCKS-Protokolls, so löst das Programm die Namen der Rechner immer lokal auf dem Rechner auf. Version 5 des SOCKS-Protokolls unterstützt dagegen das Weiterleiten von DNS-Anfragen und IPv6-Verbindungen über den Proxy.

Bietet eine Software keinen direkten Support für einen SOCKS-Proxy, verhilft ihr in den meisten Fällen das Helferprogramm Tsocks [7] zu den entsprechenden Fähigkeiten. Dieser Helfer biegt durch vorhergehendes Laden einer bestimmten Bibliothek alle Systemaufrufe zum Aufbau einer TCP/IP-Verbindung auf einen SOCKS-Proxy um (Listing 1).

Listing 1

$ ssh -D 1080 -f -o ExitOnForwardFailure=yes -N 192.0.2.42
$ lynx -dump http://checkip.dyndns.org/
   Current IP Address: 192.0.2.23
$ tsocks lynx -dump http://checkip.dyndns.org/
00:14:56 libtsocks(398): Call to connect received on completed request 3
   Current IP Address: 192.0.2.42
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
LinuxUser 09/2012 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: