Sshuttle

Manchmal genügt jedoch ein SOCKS-Proxy nicht den Anforderungen, oder der Einsatz eines Proxys erweist sich als zu umständlich für die gewünschte Funktion. OpenSSH bietet zwar seit einigen Versionen ebenfalls die Möglichkeit, mit Bordmitteln einen TUN/TAP-basierten VPN-Tunnel aufzubauen, braucht dazu aber auf beiden Seiten des Tunnels Root-Rechte: Sie müssen die SSH-Verbindung also als root starten.

Dabei liegt es in der Verantwortung desjenigen, der einen solchen Tunnel aufbaut, sich um das korrekte Netzwerk-Setup zu kümmern – entweder mittels selbst geschriebener Skripte oder manuell. In diesem Fall kann es passieren, dass es zu Problemen mit dem TCP-über-TCP kommt [8], also die Mechanismen zum Regeln "äußeren" TCP-Verbindung den Betrieb der geschachtelten, "inneren" TCP-Verbindung stören.

Einfacher und mit wesentlich weniger heftigen Anforderungen geht es mit Sshuttle [9], das ein Zwischending zwischen VPN und Port-Weiterleitung verwendet. Der Name ist ein Wortspiel aus SSH und Shuttle, wobei Letzteres im Englischen für Zubringer oder Pendelverkehr steht. Sshuttle braucht zwar auf dem lokalen Rechner nach wie vor Root-Rechte, um per Iptables mittels Redirect-Regeln das notwendige Routing automatisch einzurichten, kommt aber dabei problemlos mit sudo oder su klar.

Der große Vorteil von Sshuttle: Wie der SOCKS-Proxy braucht es auf dem entfernten Rechner keine Root-Rechte. dort muss lediglich eine Python-Installation vorliegen, Sshuttle selbst braucht nicht installiert zu sein. Es überträgt sich per SSH selbst und wird vom Python-Interpreter auf dem entfernten Rechner direkt ausgeführt.

Von außen wirkt Sshuttle ähnlich wie ein VPN. Ohne dass man jede einzelne Verbindung vorher konfigurieren muss, tunnelt es beliebige (TCP-)Verbindungen auf eine auf der Kommandozeile angegebene Menge von IP-Bereichen. Intern funktioniert es jedoch eher wie ein transparenter Proxy oder eine dynamische SSH-Port-Weiterleitung – es kann wie der SOCKS-Proxy nur TCP-Sitzungen und DNS weiterleiten.

Allerdings baut Sshuttle die Pakete der TCP-Verbindungen vor dem Tunnel lokal wieder zusammen, überträgt deren Daten als Datenstrom durch den SSH-Tunnel und macht am entfernten Ende des Tunnels wieder TCP-Verbindungen daraus. Damit umgeht es die oben angeschnittene TCP-über-TCP-Problematik: Solange die Daten durch den Tunnel übertragen werden, gibt es keine zweite Verstopfungserkennung.

Eine weitere nette Eigenschaft: Sshuttle kann die lokale /etc/hosts mit den auf dem entfernten Rechner gefundenen Einträgen aus der dortigen /etc/hosts-Datei erweitern kann. Dies erledigt die Option --auto-hosts. Alternativ leiten Sie mit der Option --dns auch DNS-Abfragen durch den Tunnel.

Sshuttle-Sitzung

Listing 2 zeigt den Ablauf eines Verbindungsaufbaus aus einem LAN mit dem IP-Bereich 192.168.1.* mit einem extern per SSH erreichbaren Rechner in einem anderen LAN mit dem selben IP-Bereich. Dazu müssen Sie das lokale Gateway (192.168.1.1) aus der Weiterleitung ausschließen.

Listing 2

$ sshuttle --dns --verbose --remote=anderer.rechner --exclude=192.168.1.1/32 192.168.1.0/24
Starting sshuttle proxy.
Listening on ('127.0.0.1', 12300).
DNS listening on ('127.0.0.1', 12300).
[local sudo] Password:
firewall manager ready.
c : connecting to server...
 s: latency control setting = True
c : connected.
Connected.
 s: available routes:
 s:   192.168.1.0/24
firewall manager: starting transproxy.
>> iptables -t nat -N sshuttle-12300
>> iptables -t nat -F sshuttle-12300
>> iptables -t nat -I OUTPUT 1 -j sshuttle-12300
>> iptables -t nat -I PREROUTING 1 -j sshuttle-12300
>> iptables -t nat -A sshuttle-12300 -j RETURN --dest 192.168.1.1/32 -p tcp
>> iptables -t nat -A sshuttle-12300 -j REDIRECT --dest 192.168.1.0/24 -p tcp --to-ports 12300 -m ttl ! --ttl 42
>> iptables -t nat -A sshuttle-12300 -j RETURN --dest 127.0.0.0/8 -p tcp
>> iptables -t nat -A sshuttle-12300 -j REDIRECT --dest 192.168.1.1/32 -p udp --dport 53 --to-ports 12300 -m ttl ! --ttl 42

In Listing 3 sehen Sie, was Sshuttle macht, wenn Sie eine SSH-Verbindung zu einem Rechner im entfernten LAN auf- und wieder abbauen. Mit c markiert die Software alle Ausgaben des lokalen Clients, mit s die Meldungen des entfernten Servers. Über [Strg]+[C] beenden Sie Sshuttle und damit seine eigene SSH-Verbindung sowie den Tunnel wieder (Listing 4).

Listing 3

c : DNS request from ('192.168.1.101', 55245): 41 bytes
c : Accept: 192.168.1.101:38221 -> 192.168.1.131:22.
c : DNS request from ('192.168.1.101', 36978): 27 bytes
c : DNS request from ('192.168.1.101', 36978): 27 bytes
 s: warning: closed channel 2 got cmd=STOP_SENDING len=0
 s: SW'unknown':Mux#2: deleting (1 remain)
 s: SW#7:192.168.1.131:22: deleting (0 remain)

Listing 4

firewall manager: undoing changes.
>> iptables -t nat -D OUTPUT -j sshuttle-12300
>> iptables -t nat -D PREROUTING -j sshuttle-12300
>> iptables -t nat -F sshuttle-12300
>> iptables -t nat -X sshuttle-12300
c :
c : Keyboard interrupt: exiting.
c : SW#8:192.168.1.101:38221: deleting (1 remain)
c : SW'unknown':Mux#2: deleting (0 remain)

Neben dem Einsatz im Vordergrund bietet Sshuttle mit der Option --daemon die Möglichkeit für den Einsatz als Daemon im Hintergrund. Alle Meldungen der Software landen dann im Syslog.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Quick-and-Dirty-Tunnel mit SSH und Sshuttle
    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.
  • Mit SSH einen SOCKS-Proxy einrichten
    Wer im Büro oder an der Hochschule Zugriff auf besondere Web-Angebote hat, kann diese auch von zu Hause aus nutzen, wenn ein Büro-/Uni-Rechner via SSH erreichbar ist. Wir zeigen, wie Sie SSH, Firefox und weitere Programme passend konfigurieren.
  • Neues auf der Heft-DVD
  • Aber sicher!
    Sicheres Arbeiten auf entfernten Rechnern und verschlüsselte Datenübertragung – das alles und noch viel mehr bietet SSH.
Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 3 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...