Home / LinuxUser / 2012 / 05 / Quick-and-Dirty-Tunnel mit SSH und Sshuttle

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

„Klickbunt auf dem Server? Warum nicht, wenn's hilft!"
(220 Punkte bei 8 Stimmen)
KDE 4.10.2, Gnome 3.6 und mehr
(143 Punkte bei 5 Stimmen)
Google schmeißt Jabber raus ...
(121 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

Sicherer Durchgang

Quick-and-Dirty-Tunnel mit SSH und Sshuttle

23.04.2012 Für den schnellen Zugriff von unterwegs auf private Daten ist ein VPN oft überdimensioniert. Das geniale kleine Tool Sshuttle dagegen durchtunnelt unsichere Netze auch ohne langwierige Vorbereitungen auf dem Server.

Beim Fernzugriff über unsichere Transportwege wie das Internet lauern Gefahren: Das Abhören von WLAN-Verbindungen an öffentlichen Zugangspunkten stellt für einen Angreifer kaum ein Problem dar. Der Markt hält daher unzählige Lösungen und Produkte parat, um aus der Ferne sicher auf den eigenen Arbeitsplatz oder Server zuzugreifen. Wie komplex das dabei zum Einsatz kommende Instrumentarium ausfällt, hängt von Einsatzart und Sicherheitsbedürfnis ab – also primär von der Frage, was man unter "zugreifen" versteht, also welche Protokolle es im Einzelnen zu tunneln gilt. Klassische VPNs auf Basis von IPSec oder SSL (OpenVPN) bieten hier maximale Transparenz, die man aber mit minimaler Flexibilität erkauft.

Mit einem VPN nutzen Sie die Ressourcen des entfernten Rechners genau so, als säßen Sie direkt davor. Sie greifen dann nach Belieben auf lokale Verzeichnisse, Netzwerkfreigaben und Drucker des entfernten Rechners zu. Beim Aufruf einer Webseite wie www.meineip.de verhält sich der PC im Internet-Café exakt so, als wäre er der entfernte Rechner. VPNs erreichen diesen Grad an Transparenz, indem sie das komplette Netzwerk durch den aufgebauten Tunnel schicken, also sämtliche OSI-Layer und gegebenenfalls auch den DNS-Dienst. Einfache Fernzugriffslösungen auf Proxy-Basis tunneln dagegen je nach Einsatzzweck nur bestimmte Protokolle, etwa HTTP(S).

Allerdings ist ein VPN technisch aufwendig und mitunter relativ langsam. Für das angenommene Ad-hoc-Szenario scheiden VPNs jedoch aus: Sie bestehen stets aus je einer Server- und Client-Komponente und erfordern ein vorheriges Konfigurieren, in deren Verlauf Sie beispielsweise die virtuellen Netzwerkschnittstellen einrichten sowie die erforderlichen Nutzerrechte konfigurieren müssen.

SSH-Tunnel

Möchten Sie mit wenig Aufwand und zudem ad hoc auf einen entfernten Rechner zugreifen, gibt es noch eine Reihe anderer Verfahren, die etwa auf SSH oder Tsocks (siehe Kasten "Dynamic Forwarding mit SSH") basieren und im Einzelnen relativ umständlich ausfallen, wie etwa der doppelte SSH-Tunnel.

Nicht jeder Linux-Nutzer weiß, dass SSH nicht nur ein sicheres, verschlüsseltes Login auf einem entfernten Rechner ermöglicht, sondern auch verschiedene Tunnel-Arten beherrscht. So können Sie mit SSH (beinahe) beliebige andere Protokolle absichern, wozu die SSH-Funktion des Port Forwarding zum Einsatz kommt. Mit SSH-Portforwarding (siehe Kasten "Tunnelbau mit SSH") leiten Sie SSH-Verbindung um, wobei SSH selbst als Proxy fungiert: Auf der einen Seite des Tunnels nimmt es die Verbindung entgegen und stellt sie auf der anderen Seite zum adressierten Server durch, dem Verbindungsendpunkt. Das funktioniert allerdings nur für ein explizit angegebenes Protokoll.

Seit der Version 4.3 von OpenSSH können Sie zudem auch ein vollwertiges VPN als Layer-2- oder Layer-3-Tunnel mit virtuellen Netzwerk-Adaptern (TUN/TAP-Interfaces) aufbauen. Dazu müssen Sie jedoch auf Server- und Client-Seite die entsprechenden TUN/TAP-Devices durch Laden der zugehörigen Kernel-Module einrichten, zudem erweist sich TCP-over-TCP als umständliche und daher eher langsame Angelegenheit. Mit dem neuen Tool Sshuttle kommen Sie dagegen schneller ans Ziel.

Dynamic Forwarding mit SSH

Mit der Dynamic-Option -D verhält sich der SSH-Client wie ein SOCKS-Server (SOCKS-Proxy). Daher ist Dynamic Port Forwarding nützlich, wenn Sie via SSH von einem öffentlichen WLAN-Hotspot über einen gesicherten Tunnel lediglich auf einen einzelnen Dienst des entfernten Rechners zugreifen möchten. Dabei muss es sich allerdings um einen Dienst handelt, für den es einen passenden SOCKS-Client gibt, etwa den Webbrowser. Sie tragen dann in dessen Verbindungsoptionen den lokalen SSH-Client als SOCKS-Proxy mit der frei wählbaren Portnummer ein. Der Aufbau des Tunnels zum entfernten Sshd erfolgt dann mit

$ ssh -D Port Nutzer@Ziel-Host

Möchten Sie nur auf eine Web-Anwendung des entfernten PCs zugreifen, bietet SSH Dynamic Portforwarding also eine ideale Lösung. Möchten Sie andere Dienste auf diese Weise via SSH tunneln, gilt es zu beachten, dass manche Programme keine SOCKS-Proxies unterstützen. In einem solchen Fall können Sie den Wrapper Tsocks installieren.

Tunnelbau mit SSH

SSH kann nicht nur ein sicheres Shell-Login auf einem entfernten Server zu Verfügung zu stellen, sondern sichert mithilfe der Port-Forwarding-Option auch beliebige andere Protokolle ab, wobei SSH als Proxy fungiert. Das ist zwar kein vollwertiger VPN-Ersatz, weil es nur die angegeben Protokolle umleitet, reicht aber für viele Szenarien aus. Das SSH-Portforwarding kennt die zwei Betriebsarten Local Port Forwarding und Remote Port Forwarding. Die Richtung des Tunnelsbaus geben Sie mit den Parametern -L und -R an. Local Port Forwarding leitet eine Verbindung, die an einem frei wählbaren lokalen Client-Port eintrifft, durch den sicheren SSH-Tunnel auf einen Port eines entfernten Servers um:

# ssh User@Ziel-Host -L Port:Ziel-Host:Ziel-Port

So tunneln Sie beispielsweise eine unsichere FTP-Verbindung auf Port 21 über eine sichere SSH-Verbindung, sofern auf dem entfernten Rechner ein FTP- und der SSH-Server (sshd) laufen. Der Verbindungsaufbau beim Local Portforwarding sieht dann so aus wie in Zeile 1 von Listing 1. Mit diesem Kommando bauen Sie am Client-Rechner eine sichere SSH-Verbindung als Benutzer drilling zum entfernten Rechner www.thomas-drilling.de auf. Dabei lauscht der SSH-Client außerdem auf sämtliche Anfragen, die auf dem lokalen Port 5555 eingehen, und leitet diese zum entfernten Rechner www.thomas-drilling.de auf Port 21 um. Steht der Tunnel, starten Sie in einer zweiten Terminal-Sitzung den FTP-Client mit der Zieladresse localhost und dem Port Ziel-Port (Listing 1, Zeile 2).

Listing 1

$ sudo ssh drilling@www.thomas-drilling.de -L 5555:www.thomas-drilling.de:21
$ sudo ftp localhost 5555

Beispielszenario

Stellen Sie sich vor, Sie möchten von einem öffentlichen WLAN-Hotspot aus mit maximaler Transparenz und möglichst geringem Aufwand sicher auf Ihren Arbeitsrechner in der Firma oder auf den privaten Server zugreifen. Der entfernte Server stellt allerdings kein VPN zur Verfügung, oder lediglich eine VPN-Lösung, die komplexe (IPSec) beziehungsweise umständliche Protokolle (PPTP) benutzt, für die Sie keinen passenden Client zur Hand haben.

SSH-Portforwarding möchten Sie aus den oben genannten Gründen auch nicht verwenden. Das im Kasten "TUN/TAP-Tunnel" geschilderte SSH-Tunnel-Feature können Sie ebenfalls nicht nutzen: Zum Einen ist es per Default in OpenSSH auf dem Server deaktiviert, zum Anderen haben Sie weder auf dem Server noch auf dem Client die Möglichkeit, Kernel-Module für TUN- und oder TAP-Devices nachzuladen. Sie stehen damit vor dem gleichen Problem wie zahlreiche Admins beim Thema Traffic-Tunneling in öffentlichen Netzen: Diese verwenden im Normalfall entweder ein VPN, einen SSH-Tunnel oder diverse Proxy-Lösungen, die allesamt port- oder protokollbasiert funktionieren und ein im Einzelfall sehr komplexes Einrichten erfordern.

Zwar verfügt ein Admin in der Regel sowohl über das notwendige Fachwissen als auch über die administrativen Voraussetzungen. Dennoch dürfte sich auch der Fachmann über eine Lösung freuen, die so elegant und einfach funktioniert wie das relativ neue Tool Sshuttle [1] des kanadischen Studenten Avery Pennarun. Sshuttle erfordert auf dem Server nichts weiter als ein SSH-Benutzerkonto (also nicht notwendigerweise root) und Python.

TUN/TAP-Tunnel

OpenSSH ermöglicht es ab der Version 4.3 mit Hilfe der Option -w ein vollwertiges VPN mit einem Layer-2- oder Layer-3-Tunnel mit virtuellen Netzwerk-Adaptern (TUN/TAP-Interfaces) aufzubauen. Allerdings scheidet dieses Verfahren für das vorliegende Beispiel aus, weil es auf Server- und Client-Seite ein Aufsetzen der entsprechenden TUN/TAP-Devices durch Laden der zugehörigen Kernel-Module erfordert. Weiterhin setzt es voraus, dass in der Konfiguration des SSH-Daemons auf dem Server die Option PermitTunnel yes aktiviert ist, was per Default nicht der Fall ist. Die Befehle zum Aufsetzen der virtuellen Netzwerkadapter auf Server und Client sowie den Aufbau des Tunnels via SSH vom Client aus zeigt Listing 2.

Listing 2

# Client
$ sudo ifconfig tun0 10.0.2.1 netmask 255.255.255.252
# Server (IP-Adresse auf dem Zielrechner)
$ sudo ifconfig tun0 10.0.2.2 netmask 255.255.255.252
$ sudo route add -host Ziel-Host dev eth0
# Verbindungsaufbau
$ ssh -l User -p Sshd-Port -w0:0 Ziel-Host
Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

1776 Hits
Wertung: 82 Punkte (8 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

title_2013_06

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Emacs als Psychologe
Emacs als Psychologe
Tim Schürmann, 21.05.2013 11:49, 0 Kommentare

Wer beim Schreiben in Emacs nicht mehr weiter weiß oder schier an einer Programmieraufgabe verzweifelt, der kann den eingebauten Psychologen um Rat fragen.

1966 entwickelte der Infor...

Aktuelle Fragen

Kontakt via QR code hinzufügen
Herman Sproesser, 17.05.2013 17:46, 3 Antworten
Hi hab in der aktuellen ausgabe 06.2013 den artikel über QR Codes gelesen. Ich hab nartürlich...
Dateimanager Dolphin, wo legt er die Datei Kommentare ab?
Uwe Heine, 16.05.2013 15:19, 1 Antworten
Suse Linux 12.1 - KDE 4.7.2 / Dolphin 1.7. Ich habe bei vielen Dateien über Dolphin Kommentare...
wie baut man Kernel Module so, dass sie mit jedem Kernel laden?
GoaSkin , 22.04.2013 10:22, 1 Antworten
Hallo, baut man anhand eines Kernel-Sources Module, nutzt Linux im Normalfall eine strikte V...
Problem beim Installieren von SuSe 12.3
Georg Prokert, 14.04.2013 00:04, 16 Antworten
Hallo, auf meinem neuem Laptop (Acer Aspire V3-771, Intel Core i5-3230 M, Intel HD Graphics 4...
lvm wieder loswerden
Peter Dibbern, 11.04.2013 16:28, 4 Antworten
Ich habe sämtliche alten Kisten ausgeschlachtet und aus der Teilen einen Rechner zusammengeschrau...