| |
|
|
| |

ssh again
Nochmals zur Wiederhohlung:
ssh -l maxmeier somehwere.over.the.rainbow.at
oder:
ssh maxmeier@somewhere.over.the.rainbow.at
erlaubt einem das Einloggen auf einem anderen Rechner unter eben diesem
Benutzernamen (hier: maxmeier ) sofern man das Passwort dafür kennt.
(ist der Name am lokalen Computer auch "maxmeier" so kann man die Angabe des
Namens weglassen)
Der Datenverkehr am Netzwerk wird dabei verschlüsselt. Loggt man das erste
mal auf diesem Rechner ein, so erhält man eine Warnung, dass der andere
Computer unbekannt ist. Akzeptiert man die Verbindung, dann merkt sich das ssh
in der Datei:
~/.ssh/known_hosts
unterhalb des Homeverzeichnisses den Schlüssel dieses Rechners. In
Zukunft wird eine Verbindung nur noch akzeptiert, wenn der Schlüssel
mit dem gespeicherten übereinstimmt.
Obwohl nun der Datenverkehr übers Netzwerk verschlüsselt ist,
sollte man sich keinesfalls in Sicherheit wiegen. Was sind die verbleibenden
Gefahren?
1.) Führt man das ssh auf einem Rechner aus, der nicht sicher ist,
so besteht immer die Gefahr, dass auf
diesem Computer ein Programm laüft, das alle
Tastendrücke mitprotokolliert oder, dass dort eine veränderte
Version des ssh-Programms liegt, die die Passwörter abspeichert und an
Hacker verschickt..etc..
D.h. ssh ist nicht sicher, wenn es von einem unsicheren Rechner aus aufgerufen
wird.
Abhilfe: Einmal-Passwörter entschärfen die Situation ein klein wenig
aber sind auch kein totaler Schutz.
2.) Loggt man das erste Mal auf einem anderen Rechner ein, so ist der
Schlüssel noch nicht bekannt. Beim ersten einloggen könnte also
zwischen dem lokalen Computer und dem anderen auf dem wir einloggen wollen
ein Hacker sitzen der so tut als wäre er der andere Computer.
Eine "man-in-the-middle"-Attacke wäre also beim ersten einloggen
möglich.
Abhilfe: Entweder die Fingerprints des eigenen Rechners merken oder die
known_hosts systemweit für alle oft benutzten Computer
vorinstallieren
.
3.) Ist der Computer nicht sicher auf den man einloggt, so kann dieser
Computer beim einloggen das passwort im Klartext abspeichern. Wenn du
dasselbe Passwort auf mehreren verschiedenen Computern verwendest,
sind dann die anderen Computer auf denen du das selbe Passwort hast auch
gefährdet..
Abhilfe:
Unterschiedliche Passwörter verwenden. Wenn schon nicht verschiedene
für jedes System, dann zumindestens nach Sicherheitslevel gruppiert.
Neuere Versionen können das Passwort mit einem Protokoll namens SRP
(secure remote passwort) überprüfen. Dabei wird das Passwort dem
entfernten Computer nie im Klartext präsentiert.
(ist aber noch nicht sehr verbreitet)
Man verwendet RSA-Schlüssel. Darüber lernen wir ein anderes mal.
Zurück zu den praktischen Dingen.
Beim Aufruf von ssh kann man auch einen Befehl angeben, der am entfernten
Computer ausgeführt werden soll:
ssh maxmeier@irgendwo.at fortune
würde das Programm fortune am anderen Computer aufrufen, anstatt sich
dort einzuloggen.
Damit ist es jetzt möglich Filter auch zwischen Computern laufen zu lassen.
z.B.:
fortune | ssh maxmeier@irgendwo.at grep the >blabla.txt
würde lokal "fortune" aufrufen. Die Ausgabe des Programmes aber via ssh
übers Netzwerk zum anderen Computer schicken. Dort das Programm "grep"
benutzen, um alle Zeilen zu suchen, die das Wort "the" enthalten und die
Ausgabe würde wieder via netzwerk zurück zum eigenen Computer
geschickt und in der Datei blabla.txt gespeichert werden.
So würde zum Beispiel:
ssh irgendwo.at cat blabla.txt > blibli.txt
eine Kopie der Datei blabla.txt vom anderen Computer auf den lokalen
Computern in die Datei blibli.txt schreiben.
Hat man Zugriff auf eine Soundkarte, würde der Befehl
cat /dev/audio | ssh irgendwo.at "cat - > /dev/audio"
alle Daten die aus der speziellen Datei /dev/audio gelesen werden
(dort hat man Zugriff auf das, was der Computer via Soundkarte "hört")
auf den anderen Computer kopieren und dort mit dem Befehl:
cat -
(der liest von Standardeingabe und schreibt nach Standardausgabe)
und würde die Daten dort durch Schreiben auf die spezielle Datei
"/dev/audio" dort am Lautsprecher wieder ausgeben.
Man beachte die Anführungszeichen in obigen Befehl.
Anderenfalls würde die Umleitung am eigenen Computer und nicht am
entfernten ausgeführt.
Eine weitere nützliche Funktion ist, dass ssh neben der Login-Verbindung
auch zusätzliche "Tunnel" zwischen den Computern aufbauen kann.
z.B.:
ssh -L 7000:irgendwo.at:25 maxmeier@irgendwo.at
macht einen Tunnel vom lokalen Port 7000, der mit dem anderen Computer Port 25
verbunden ist.
telnet 7000 localhost
würde einen jetzt z.B. mit dem Mailserver von irgendwo.at verbinden.
Nur, dass die Daten jetzt durch den verschlüsselten Tunnel gehen.
Umgekehrt kann man wenn man -R statt -L verwendet, um auch Ports am
entfernten Computer mit lokalen Services zu verbinden. Oft eine praktische
Möglichkeit, um zu restriktive Firewalls zu überlisten.
Besonders praktisch:
ssh -X irgendwo.at
Das baut dir einen Tunnel auf, der grafische X11-Programme umleitet.
Du kannst also z.B. am anderen Rechner ein netscape oder xterm starten, das
die Anzeige auf deiner eigenen X11-Oberfläche ausgibt..
Aber Vorsicht: man öffnet damit auch eine zusätzliche Gefahr:
root (oder ein hacker) auf dem Computer, auf dem man einloggt, könnte
damit dein Display oder die Tastatur von deinem Rechner abhören...
EXERCISES:
Diskutiere folgende Fragen:
* Du sitzt an einem öffentlichen Windows-Terminal und hast dort das
Secure Shell Programm
"putty"
installiert. Welchen Gefahren bist du ausgesetzt?
* Du loggst von deinem sicheren Notebook daheim aus auf einem Rechner ein,
der vermutlich von einem Hacker besetzt ist. Welche Information gibst du
dadurch preis?
* Versuche mit ssh -X grafische Programme auf einem anderen Computer zu
benutzen. Was sind die zusätzlichen Gefahren dabei?
REFERENCES:
man ssh
|
|
| |
|
|
|