Corkscrew: So tunnelt man SSH durch HTTP-Proxies

In manchen Fällen kann es hilfreich sein, das Netzwerkprotokoll SSH durch eine HTTP-Verbindung zu tunneln. Mit der Software Corkscrew geht das im Handumdrehen. Aber Vorsicht: Sicherheitsrichtlinien dürfen nicht unterwandert werden.

Manche Umgebungen und ISPs haben sehr strenge Firewall-Richtlinien, die einem das Leben schwer machen können. In einigen Fällen sind diese Regeln absolut notwendig, in anderen vielleicht nicht so sehr. Wenn man in einer Umgebung arbeitet, die die Nutzung von SSH verbietet und die Verwendung eines http-Proxys erzwingt, kann man OpenSSH beibringen, mittels Corkskrew einen solchen Tunnel herzustellen.

In dem Artikel geht es keineswegs darum, das Umgehen einer Firewall zu propagieren. Richtlinien die das Aushebeln von Sicherheitsmaßnahmen verbieten oder ausgehenden SSH-Traffic explizit verhindern, müssen eingehalten werden. Allerdings gibt es oft drakonische Firewall-Richtlinien, die mehr Kummer als nötig verursachen. In diesen Fällen hilft eine Ausnamegenehmigung von den Verantwortlichen.

Wer sich seiner Fürsorge bewusst ist und eine Erlaubnis hat, kann Corkscrew anwenden, um SSH-Traffic durch einen HTTP-Proxyserver zu tunneln. Wer Corkscrew nicht in seiner Linux-Distribution findet, lädt sich die Quelldateien von der Corkscrew-Homepage herunter. Corkscrew ist ein HTTP-Tunnel-Programm, das keinerlei serverseitiger Modifikationen bedarf, um zu funktionieren. Es ist außerdem plattformunabhängig und funktioniert auf den meisten Client-Systemen.

Corkscrew lässt sich nach dem Auspacken mit den folgenden Befehlen kompilieren:

./configure
make

Danach kopiert man die resultierende Anwendung Corkscrew irgendwo möglichst in das eigene PATH-Verzeichnis, beispielsweise /usr/local/bin. Als Nächstes ist die SSH-Konfigurationsdatei (~/.ssh/config) zu bearbeiten und Folgendes hinzuzufügen:

Host somehost
Hostname somehost.example.com
ProxyCommand /usr/local/bin/corkscrew proxy.example.com 8080 %h %p

Den Hostnamen ersetzt man durch den Host, zu dem per SSH eine Verbindung hergestellt werden soll und „proxy.example.com“ durch den bestehenden http-Proxy. Eventuell muss auch der Port (8080) geändert werden, wenn der Proxy auf einen anderen Port hört (zum Beispiel Port 3128 bei Squid). OpenSSH wandelt transparent das %h in den Hostnamen (somehost.example.com) um, mit dem eine Verbindung hergestellt werden soll, sowie den entsprechenden Port (standardmäßig 22).

Die Zeile ProxyCommand fordert OpenSSH dazu auf, das Programm Corkscrew zu starten, um die eigentliche Verbindung zum SSH-Zielserver herzustellen. Es lassen sich Einträge für alle Hosts erstellen, mit denen eine Verbindung hergestellt werden soll. Zudem ist es möglich einen einfachen regulären Ausdruck oder den globalen Stern (*) in der Zeile Host zu verwenden (* fordert OpenSSH dazu auf, diese Host-Zeile für alle Verbindungen zu nutzen).

Wenn dies erledigt ist, sollte man ssh somehost ausführen und die Verbindung herstellen können, gerade so, als würde man die Verbindung direkt herstellen. Dabei ist zu bedenken, dass dies nicht unbedingt mit allen Proxys funktioniert. Der Proxy muss den Connect-Befehl unterstützen, der eine beliebige TCP-Verbindung mit einem anderen Host herstellt. Bei den meisten öffentlichen Proxies ist diese Funktion deaktiviert, damit Spammer ihn nicht für ihre eigenen Zwecke missbrauchen können.

Wer keinen geeigneten Proxy findet und seinen eigenen aufsetzen möchte, sollte nach Möglichkeit nur Connect-Befehle zum SSH-Port 22 erlauben. Auf jeden Fall sollten Verbindungen zum SMTP-Port 25 verboten werden, sonst kann man sich sicher sein, dass der Proxy bald durch Fremde für den Versand von Spam genutzt wird.

Ist die SSH-Verbindung einmal hergestellt, ist es möglich, mit den SSH-Portforwarding und Tunnelfunktionen weitere Verbindungen zu schaffen. Dass solche Verbindungen auch von Cyberkriminellen genutzt werden, um mithilfe von illoyalen Mitarbeitern unbemerkt von außen in Unternehmensnetze einzudringen, zeigt der Artikel Gefahr durch SSH: Portforwarding außer Kontrolle.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Corkscrew: So tunnelt man SSH durch HTTP-Proxies

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *