SSH als sicheren Netzwerk-Tunnel nutzen

SSH kann wirklich eine ganze Menge, u.a. entfernte Shell-Sessions aufbauen, Dateien übertragen (scp/sftp) oder X-Anwendungen auf den eigenen X-Server umleiten. Dabei wird der komplette Traffic verschlüsselt und optional auch komprimiert.

Vor kurzem habe ich auch herausgefunden, dass sich SSH wie ein SOCKS-Proxy verhalten kann, d.h. Traffic der darüber geht, wird an einen entfernten Rechner weitergeleitet (getunnelt) und die Verbindung von dort aus aufgebaut. Sinn macht das z.B. bei öffentlichen ungesicherten WLAN-Hotspots, wo nicht verschlüsselte Verbindungen (HTTP, IMAP, POP3 ohne SSL-Verschlüsselung) problemlos abgehört werden können. Aber auch in anderen Netzwerken, denen man nicht 100%ig trauen kann oder welchen mit sehr restriktiven Firewall-Regeln kann man damit sichere Verbindungen nach draußen aufbauen.
Voraussetzung ist allerdings, dass man auf einem Server Shell-Zugriff besitzt (siehe auch hier).

Der Befehl zum Aufbauen des Tunnels lautet dann:

ssh -fND 1234 user@server

Nach erfolgreicher Authentifizierung (via Passwort, Zertifikat oder beidem) geht SSH in den Hintergrund und wartet auf Port 1234 auf eingehende Verbindungen. Programme mit Proxy Support (wie z.B. Firefox, Thunderbird) können jetzt über localhost:1234 abhörsichere Verbindungen aufbauen.

Für Programme ohne SOCKS Support gibt es jedoch auch eine Lösung, um den SSH-Tunnel zu nutzen: tsocks.
Tsocks ersetzt beim jeweiligen Programm die aufgerufenen connect() Systemcalls durch eine eigene Funktion mit Unterstützung für SOCKS-Proxies.
So ist es möglich mit den beiden Tools SSH und tsocks den gesamten Netzwerktraffic sicher über einen vertrauenswürdigen Server zu leiten.

Mit etwas mehr Aufwand ist es dann sogar möglich bei kostenpflichtigen Hotspots eine Verbindung ins Internet aufzubauen, indem die SSH-Verbindung wiederum über DNS getunnelt wird (vorausgesetzt DNS-Lookups sind möglich).
Eine genauere Erklärung und Anleitung gibt es auf dnstunnel.de.