hampft!

ssh Tunnels

ssh Tunnels. Dass man mit ssh eine Menge lustiger Dinge tun kann, sollten wir hier alle bereits wissen. Die verschlüsselte Verbindung zu einem Server per slogin ist absolut unverzichtbar für jeden, der einen remote Server administrieren muss, scp tut dann den Rest./p>

Kommen wir zu einem weiteren wichtigen Anwendungsfall: ssh Tunnel. Szenario: auf meinem entfernen Server läuft MySQL, MyPHPadmin will ich aus religösen Gründen nicht einsetzen und das Kommandozeilentool kann zwar alles, aber es ist mir echt zu grottig. Macht ja nix, bei MySQL gibt es das unendlich komfortable Tool MyCC. Alternativ gibt es auch ein natives Windows-Tool für die Admins, die auf ihrem Desktop den Redmonder Auswurf dulden.

Problem mit diesen Tools: SQL will man nicht im Internet anbieten, und das zugrundeliegende Protokoll ist offen wie ein Scheunentor, das Abhören einer Verbindung ist noch das kleinste Problem. Man kann zwar MySQL per Parameter --bind-address 127.0.0.1 beibiegen, keine Verbindungen von aussen einzugehen, aber dann kommt man mit den komfortablen Tools nicht mehr ran.

Die Lösung: ein ssh Tunnel: sowohl der Windows-ssh-client putty als auch die Linux-Implementierung beherrschen Tunnels. Einfach gesprochen passiert folgendes: der ssh-Client öffnet eine verschlüsselte Verbindung zu dem ssh-Server auf dem Serversystem, gleichzeitig lauscht der gestartete Client auf einem frei definierbaren Port des lokalen Systems. Wenn man nun auf diesen Port connectet, spricht man den ssh-Client auf dem lokalen System an, der reicht das an den Server weiter und der ssh-Server auf dem Serversystem macht dann seinerseits einen Connect auf den MySQL-Port. Das heisst, f?r das MyCC-Tool sieht es so aus, als wäre die Datenbank auf dem lokalen System, für den MySQL-Server sieht es so aus als käme die Anfrage direkt vom Server. Die Leitung dazwischen ist verschlüsselt.

Praxis: auf dem Client ausführen:

ssh -L 6666:localhost:3306 user@server

Nach der üblichen Anmeldeprozedur hat man dann eine Shell auf dem Server. Das Fenster kann man nun vergessen...

Jetzt auf dem Client das Administrationstool starten, als Konfiguration gibt man an:

Datenbankserver: localhost
Port: 6666

Das Verfahren ist natürlich für jeden Service anwendbar. Man kann so sogar eine ssh-Verbindung über ssh Tunneln. Ist zwar hirnrissig, eine verschlüsselte Verbindung über einen verschlüsselten Tunnel zu machen, aber gehen tut es.

Nun muss man sich zwar immer noch vor Leuten in Acht nehmen, die mitlauschen wollen, aber jetzt ist es ungleich schwerer: Der Angreifer braucht jetzt umfassende Rechte auf dem Client- oder Serversystem (und dann ist sowieso schon alles rum), oder er muss einen "Man in the Middle" Attack fahren.

Und das nächste mal erzähle ich Euch, wieso ein Man-in-the-Middle gar nicht so schwer ist...


hampft! ->