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

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 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.

AA_hole_atirme_sxc_1069988.jpg

© Atirme, sxc.hu

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
Tip a friend    Druckansicht Bookmark and Share
Kommentare

2609 Hits
Wertung: 82 Punkte (8 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

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

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...