SSH-Keys für mehrere Linux Maschinen erzeugen

Ich möchte ganz gerne die SSH-Authentifizierung auf die Verwendung von SSH-Keys umstellen. Ich möchte diese SSH-Keys auf verschiedenen Linux Ubuntu Servern zum Einsatz bringen. Wie kann ich da vorgehen?

Bild des Benutzers codenovae

SSH-Keys erzeugen und installieren

Vote the answer: 
5
Average: 5 (1 vote)

SSH steht für Secure Shell und bezeichnet sowohl ein Netzwerkprotokoll als auch spezielle Programme, mit deren Hilfe man eine sichere und verschlüsselte Verbindung zwischen entfernten Systemen aufbauen kann. Die Verschlüsselung der Daten zwischen den Systemen ist mit 128-bit ausreichend komplex, um unbefugte Mitleser abzuwehren. Die bekanntesten Programme, die das SSH- Netzwerkprotokoll zur sicheren Übertragung von Daten verwenden sind wohl WinSCP und PuTTy. Diese Programme sind bei Server Administratoren häufig im Einsatz.

 

Bei der Public-Key-Authentification wird mittels SSH-Keygen oder häufig auch mittels PuTTygen ein Schlüsselpaar aus einem öffentlichen Schlüssel (public key) und einen privaten Schlüssel (private key) erzeugt. Der public key wird dabei im root-Verzeichnis des Servers unter ~/.ssh/authorized_keys abgelegt. Der private Schlüssel wird verschlüsselt und per Passwort oder Passphrase (Passwort aus mehreren Wörtern) auf den lokalen Rechner hinterlegt. Die Authentifizierung per SSH-Key in der Kombination mit einem Passwort bietet etliche Vorteile gegenüber einer einfachen Authentifikation mittels Passwort-Abfrage. Ein Passwort kann z.B. mit speziellen Keylogger-Programmen abgefangen werden. Dazu muss nur eines der miteinander verbundenen Systeme kompromittiert worden sein. Es gibt Malware, die ein Keylogger auf den PC installiert, um die Tastatur-Eingaben über das Internet an den Angreifer zu übermitteln. Der kann dann genau sehen mit welchen Passwörtern man sich bei verschiedenen Servern oder Services angemeldet hat. Des Weiteren weiß jeder erfahrene Webmaster, dass Brute Force Attacken permanent auf jeden standardgemäß aufgesetztem Server einhämmern. Dabei versucht ein Programm per rasend schnell wechselnden Benutzername / Passwort-Kombinationen die richtigen Anmeldedaten herauszufinden. Abhilfe schafft dort fail2ban. Damit lassen sich solche Attacken recht erfolgreich abwehren. Ein weiterer nicht zu unterschätzender Aspekt ist, dass das Passwort in einer Datei auf dem Server entweder als Klarname oder als Hash-Wert gespeichert ist. Gelangt ein Angreifer an diese Datei so kann er sich sofort am System per SSH anmelden. Selbst wenn der Angreifer nur in den Besitz des Hash-Wertes gelangt, so gibt es spezielle Software, die Zeichenkombinationen findet, die exakt dem Hash-Wert entsprechen. Meist verwenden Webmaster dasselbe Passwort für mehrere Maschinen und Services. In diesem Fall wären gleich mehrere Systeme und Services kompromittiert. Die Katastrophe wäre perfekt. Die Anmeldung per Passwort-Abfrage ist wesentlich unsicherer als die Verwendung von SSH-Keys in Kombination mit einem Passwort. In diesem Fall muss der Angreifer zum einen das Passwort kennen und zum anderen im Besitz des SSH-Keys sein. Speichert man zudem den SSH-Key auf einer verschlüsselten externen Festplatte (z.B.mit TrueCrypt), so kann dieser Schlüssel auch nur sehr schwer gestohlen werden. Die Gefahr, dass ein Angreifer in diesem Fall in den Besitz des SSH-Keys und des Passworts gelangt tendiert gegen Null.

Im weiteren Verlauf möchte ich zwei Methoden vorstellen, wie man ein Schlüsselpaar generieren kann.

1. SSH-Keyfile Pair mit PuTTYgen erzeugen:

Das Erzeugen eines PuTTY-SSH-Keys ist einfach. Bei Installation von PuTTy oder WinSCP unter Windows wird auch das Tool PuTTygen mit installiert. Dieses findet man, wenn man unter Windows das Startmenu öffnet und unter Programme den Eintrag PuTTy expandiert. Dort findet man auch das Tool PuTTygen. Ein Klick darauf öffnet das Programm.

PuTTygen Schlüsselpaar erzeugen

Dort kann man die Art der Signatur und die Bitlänge der zu erstellenden Schlüssel eingeben. RSA ist dabei standartgemäß angewählt. Diese Methode weist die höchste Kompatibilität auf. Bei RSA sollte die Bitlänge etwas größer eingestellt werden, damit die Sicherheit ausreichend hoch ist. Als Beispiel enthält der Algorithmus ECDSA sogenannte NIST Kurven. Was auch immer das genau sein mag, aber Kritiker befürchten, dass dort eine Hintertür für die NSA eingebaut sein könnte. Danach klickt man einfach auf "Generate" um den Schlüssel zu erzeugen. Durch Mausbewegungen hilft man den Algorithmus bei der Berechnung der Signatur auf die Sprünge.

PuTTygen Mausbewegungen

Im nächsten Schritt muss man noch ein Passwort oder eine Passphrase (Passwort aus mehreren Wörtern) eingeben.

PuTTygen Passwort festlegen

Sobald man das Passwort oder die Passphrase eingegeben hat, kann man den public key und den private key speichern. Dazu klickt man einfach auf "Save public key" oder auf "Save private key". Im obigen Fenster sieht man den Schlüssel in Klartext. Diesen Schlüssel muss man einfach kopieren und in ~.ssh/authorized_keys einfügen. Dazu öffnet man einfach den File authorized_keys mit einem beliebigen Texteditor wie MS Word oder WordPad.

 

Wenn man sich nun per SSH am Server anmelden möchte, so lädt man im SSH Programm einfach den privaten Schlüssel hoch und gibt das Passwort ein. Bei PuTTy sieht das folgendermaßen aus:

public key authentifikation with PuTTy

Um den öffentlichen Schlüssel auf mehreren Maschinen zu verwenden kopiert man den gleichen Textinhalt wie oben beschrieben einfach auf jeden Server in ~.ssh/authorized_keys. Die Anmeldung erfolgt dann immer mit privatem Schlüssel und dem Passwort oder der Passphrase.

 

Gewerblicher Benutzer: 
Nein