Key-basierte SSH Login mit PuTTY
Transcription
Key-basierte SSH Login mit PuTTY
Key-basierte SSH Login mit PuTTY Diese Anleitung veranschaulicht, wie man ein private/public Key Paar generiert und verwendet um sich auf einem entfernten System mit SSH unter Verwendung von PuTTY einzuloggen. PuTTY ist ein SSH Client, der für Windows und Linux (obwohl es auf Windows Systemen gebrächlicher ist) verfügbar ist. Mit Key-basierte SSH Logins kannst Du die normale Benutzername/Passwort Login-Prozedur deaktivieren, was bedeutet, dass sich nur Leute mit einem gültigen private/public Key Paar anmelden können. Somit sind brute-force Attacken zwecklos, d.h. Dein System ist sicherer. Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert! 1 Vorbemerkung In dieser Anleitung verwende ich einen Windows Desktop um mich mit einem Linux SSH Server (Debian Sarge, IP Adresse: 192.168.0.100) zu verbinden. 2 Installation von PuTTY, PuTTYgen und Pageant auf dem Windows System Zuerst müssen wir PuTTY, PuTTYgen und Pageant auf unserem Windows System installieren. Wir müssen dazu nur die ausführbaren Dateien (.exe) runter laden und sie irgendwo speichern, z.B. auf dem Desktop. Wir brauchen sie nicht installieren, da sie Standalone-Anwendungen sind. Um sie zu starten, brauchen wir sie nur anzuklicken (Doppelklick). Lade folgende Dateien von der PuTTY Download Page und speichere sie auf Deinem Windows System, z.B. auf dem Desktop: http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe http://the.earth.li/~sgtatham/putty/latest/x86/pageant.exe 3 Erstelle ein Profil mit Einstellungen für unseren Server In PuTTY kannst Du Profile für Verbindungen zu Deinen zahlreichen SSH Servern erstellen. Du musst die Einstellungen also nicht noch einmal eingeben, wenn Du Dich erneut mit einem bestimmten Server verbinden möchtest. Lass uns ein Profil für unseren 192.168.0.100 Server erstellen. Starte PuTTY indem Du auf dessen ausführbare Datei klickst (Doppelklick). Nun befindest Du Dich in der Kategorie Session (siehe linke Seite des Screenshots). Gib 192.168.0.100 unter Host Name (oder IP address) ein, gib 22 unter Port ein und wähle SSH unter Protocol: Gehe dann zu Connection → Data und lege einen Benutzernamen fest, mit dem Du Dich auf Deinem SSH Server unter Auto-login username anmelden möchtest. In dieser Anleitung verwende ich “root”: Gehe dann erneut zu Session. Gib unter Saved Sessions einen Namen für das Profil ein, z.B. 192.168.0.100 oder irgendeine andere Zeichenfolge, bei der Du weißt, für welchen Server das Profil ist. Klicke dann auf Save: Wenn Du PuTTY das nächste Mal verwendest, brauchst Du nur das entsprechende Profil aus der Saved Sessions Textarea auswählen, auf Load klicken und dann Open öffnen 4 Verbinde Dich mit dem SSH Server Nun können wir uns mit dem SSH Server verbinden, indem wir einfach auf Open klicken. Wenn Du Dich zum ersten Mal mit dem Server verbindest, erscheint eine Sicherheitswarnung. Das passiert, das PUTTY den Host Key des Servers noch nicht kennt. Es ist also sicher auf Yes zu klicken (wenn das später noch mal passiert, kann es bedeuten, dass ein anderer Server gerade unter der gleichen IP Adresse läuft, oder dass jemand eingebrochen ist und den Key geändert hat.) Wir haben die Benutzernamen gespeichert, mit dem wir uns in unseren Profileinstellungen verbinden, wir müssen ihn hier also nicht noch einmal eingeben. Wir müssen nur das Passwort des Benutzers bestimmen: Das war der “normale” Weg sich anzumelden, d.h. mit einem Benutzernamen und einem Passwort. Wenn jemand anderes den Benutzernamen und das Passwort kennt, kann er/sie sich ebenfalls anmelden. Wenn Du also schwache Passwörter hast und/oder Opfer eine brute-force Attacke bist, kann das ein Problem werden. Lass uns das jetzt ändern. 5 Ein privates/öffentliches Key Paar generieren Wir können PuTTYgen verwenden, um ein private/public Key Paar zu erzeugen. Starte es indem Du auf dessen ausführbare Datei klickst (Doppelklick). Pass auf, dass Du SSH-2 RSA unter Type of key to generate wählst und 1024 als die Number of bits in a generated key definierst. Klicke dann auf Generate: Bewege bitte den Cursor über das leere Feld während der Erstellung des Keys um eine gewissen Zufälligkeit zu erzeugen: Jetzt ist ein private/public Key Paar entstanden. Unter Key comment kannst Du irgendeinen Kommentar eingeben; normalerweise verwendet man hier seine E-Mail Adresse. Lege dann eine Key passphrase fest und wiederhole sie unter Confirm passphrase. Du brauchst dieses Passwort um Dich bei SSH mit Deinem neuen Key einzuloggen. Klicke dann auf Save publick key und speichere ihn an einem sicheren Ort auf Deinem Computer. Du kannst Dir einen Dateinamen und eine Dateiendung aussuchen, aber es sollte etwas sein, dass Dir zeigt, für welches System es ist. Klicke dann auf Save private key. Du kannst es am gleichen Ort wie den public Key speichern - es sollte ein Ort sein, auf den nur Du zugreifen kannst und den Du nicht verlieren kannst! (Wenn Du die Keys verlierst und Benutzernamen/Passwort Logins deaktivert hast, kannst Du Dich nicht mehr anmelden!) Du kannst wieder einen Dateinamen auswählen, aber dieses Mal muss die Endung .ppk sein: Kopiere dann den public Key aus dem PuTTYgen Fenster: 6 Speichere den Public Key auf dem Server Melde Dich dann auf Deinem SSH Server (wenn Du die vorherige SSH Session bereits beendet hast) an, immer noch mit dem Benutzernamen und Passwort, und füge den public Key in die Datei ~/.ssh/authorized_keys2 (in einer Zeile!) wie folgt ein: mkdir ~/.ssh chmod 700 ~/.ssh vi ~/.ssh/authorized_keys2 ssh-rsa AAAAB3NzaC1yc2EA[...]Lg5whU0zMuYE5IZu8ZudnP6ds= myname@example.com Diese Datei darf nur von diesem Benutzer beschreibbar/lesbar sein, also führen wir dies aus chmod 600 ~/.ssh/authorized_keys2 7 Hänge den Private Key an das PuTTY Profil an Starte nun PuTTY erneut und lade das Profil Deines SSH Servers (192.168.0.100): Gehe dann zu SSH → Auth und klicke auf Browse: Durchsuche Dein Dateisystem und wähle Deinen zuvor erstellen private Key aus: Gehe dann erneut zu Session und klicke auf Save: Jetzt haben wir den private Key an unser 192.168.0.100 PuTTY Profil angehängt. 8 Unser erster Key-basierter Login Nun ist alles für unseren ersten Key-basierten Login auf unserem SSH Server bereit. Klicke auf Open: Wie Du sehen kannst, wird nun der public Key für die Authentifizierung verwendet und Du wirst nach dem Passwort gefragt (welches Du in Kapitel 5 festgelegt hast): 9 Benutzername/Passwort Logins deaktivieren Bis jetzt kannst Du Dich mit Deinem private/public Key Paar und immer noch mit Benutzername/Passwort Logins anmelden. Wenn jemand also keinen private Key seiner PuTTY Session hinzufügt, wird er nach einem Benutzernamen und Passwort gefragt. Um also eine größere Sicherheit zu erzeugen, müssen wir Benutzernamen/Passwort Logins deaktivieren (das solltest Du nur tun, wenn Du weißt, dass Deine Key-basierte Logins funktionieren, denn wenn sie das nicht tun und Du Benutzername/Passwort Logins deaktivierst, dann hast Du ein Problem…). Um Benutzername/Passwort Logins zu deaktivieren, müssen wir die sshd Konfigurationsdatei modifizieren. Auf Debian/Ubuntu Systemen ist das /etc/ssh/sshd_config. Du solltest Protocol auf 2 (1 ist unsicher und sollte nicht verwendet werden!), PasswordAuthentication auf no und UsePAM auf no (oder die UsePAM Zeile auskommentieren) setzen, z.B. wie folgt: vi /etc/ssh/sshd_config Protocol 2 PasswordAuthentication no UsePAM no Starte sshd dann neu. Auf Debian/Ubuntu kannst Du es wie folgt tun: /etc/init.d/ssh restart Wenn Du nun eine PuTTY Session öffnest, ohne dass Dein private Key angehängt ist, dürftest Du nicht mehr in der Lage sein Dich anzumelden.