ABSTRACT: genauere erklaerung von ssh und diskussion der risken. AUDIENCE: beginners SYSTEM: any unix SECTION: basic unix commands AUTHOR: mond COPYRIGHT: GNU Free Documentation Licence http://www.gnu.org/licenses/fdl.txt einig der CD leser benutzen ja ssh schon regelmaessig zum einlogen auf anderen computern. heute wollen wir und einwenig genauer mit diesem wichtigen programm beschaeftigen. nochmals zur widerhohlung: ssh -l maxmeier somehwere.over.the.rainbow.at oder: ssh maxmeier@somewhere.over.the.rainbow.at erlaubt einem das einlogen auf einem anderen rechner unter eben diesem usernamen (hier: maxmeier ) sofern man das passwort dafuer kennt. (ist der name am lokalen computer auch "maxmeier" so kann man die angabe des namens weglassen) der datenverkehr am netzwerk wird dabei verschluesselt. logt man das erste mal auf diesem rechner ein so erhaelt man eine warnung dass der andere computer unbekannt ist. akzeptiert man die verbindung dann mekrt sich ssh in der datei: .ssh/known_hosts unterhalb des homeverzeichnisses den schluessel dieses rechners. in zukunft wird eine verbindung nur noch akzeptiert wenn der schluessel mit dem gespeicherten uebereinstimmt. obwohl nun der datenverkehr uebers netzwerk verschluesselt ist sollte man sich keinesfalls in sicherheit wiegen. was sind die verbleibenden gefahren: 1.) fuehrt man das ssh auf einem rechner auf der nicht sicher ist (z.b ein oeffentliches terminal oder ein windows rechner in einem beliebigen firmen lan in dem outlook verwendet wir und das daher vermutlich extrem virenverseucht ist...etc..), so besteht immer die gefahr dass auf diesem computer ein programm laueft das alle tastendruecke mitprotokolliert oder dass dort eine veraendert version des ssh programms liegt die die passwoerter abspeichert und an hacker verschickt..etc.. d.h. ssh ist nicht sicher wenn es von einem unsicheren rechner aus aufgerufen wird. abhilfe: one-time-passwords entschaerfen die situation ein klein wenig aber sind auch kein totaler schutz. 2.) logt man das erste mal auf einem anderen rechner ein so ist der schluessel noch nicht bekannt. beim ersten einlogen koennte also zwischen dem lokalen computern und dem anderen auf dem wir einlogen wollen ein hacker sitzen der so tut als waere er der andere computer. ein "man-in-the-middle attack" waere also beim ersten einlogen moeglich. abhilfe: entweder die fingerprints des eigenen rechners merken oder die known_hosts systemweit fuer alle oft benutzten computer vorinstallieren 3.) ist der computer nicht sicher auf den man einlogt so kann dieser computer beim einlogen das passwort im klartext abspeichern. wenn du das selbe passwort auf mehreren verschiedenen computern verwendest sind dann die anderen computer auf denen du das selbe passwort hast auch gefaehrdet.. abhilfe: o unterschiedliche passwoerter verwenden. wenn schon nicht verschieden fuer jedes system dann zumindestens nach sicherheitslevel gruppiert. oder: o neuere versionen koennen das passwort mit einem protokoll namens SRP (secure remote passwort) ueberpruefen. dabei wir das passwort dem entfernten computer nie im klartext presentiert. (ist aber noch nicht sehr verbreitet) o man verwendet RSA schluessel. (darueber lernen wir ein anderes mal) zurueck zu praktischen dingen. beim aufrf von ssh kann man auch einen befehl angeben der am entfernten computer ausgefuehrt werden soll: ssh maxmeier@irgendwo.at fortune wuerde das programm fortune am anderen computer aufrufen anstatt sich dort einzulogen. damit ist es jetzt moeglich filter auch zwischen computern laufen zu lassen. z.b.: fortune | ssh maxmeier@irgendwo.at grep the >blabla.txt wuerde lokal "fortune" aufrufen. die ausgabe des programmes aber via ssh uebers netzwerk zum anderen computer schicken. dort das programm "grep" benutzen um alle zeilen zu suchen die das wort "the" enthalten und die ausgabe wuerde wieder via netzwerk zuruck zum eigenen computer geschickt und in der datei blabla.txt gespeiechert. so wuerde 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 soundcard wuerde 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 soundcard "hoert") auf den anderen compuer kopieren und dort mit dem befehl: cat - (der liest von standardeingabe und schreibt nach standardoutput) und wuerde die daten dort durch schreiben auf die spezielle datei "/dev/audio" dort am lautsprecher wieder ausgeben. man beachte die " anfuehrungszeichen in obigen befehl. anderenfalls wuerde die > umleitung am eigenen computer und nicht am entfernet ausgefuehrt. eine weitere nuetzliche funktion ist das ssh neben der login verbindung auch zusaetzliche "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 wuerde einem jetzt z.b. mit dem mail server von irgendwo.at verbinden. nur dass die daten jetzt durch den verschluesselten tunnel gehen. umgekehrt kann man wenn man -R statt -L verwendet auch ports am entfernten computer mit lokalen services verbinden. oft eine praktische moeglichkeit um zu restriktive firewalls zu ueberlisten. besonders praktisch: ssh -X irgendwo.at baut dir einen tunnel auf der grafische X11 programme umleitet. du kasnnst also z.b. am anderen rechner ein netscape oder xterm starten das die anzeige auf deiner eigenen X11 oberflaeche ausgibt.. aber vorsicht: man oeffnet damit auch eine zusaetzliche gefahr: root (oder ein hacker) auf dem computer auf den man einlogt koennte damit display oder die tastur vom eigenen rechner abhoeren... EXERCISES: diskutiere folgende fragen: * du sitzt an einem oeffentlichen windows terminal und hast dort das secure shell programm "putty" installiert. welchen gefahren bist du ausgesetzt? * du logst 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 zusaetzlichen gefahren dabei? REFERENCES: man ssh