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.