SSH Login mit privatem Schlüssel absichern

SSH Login mit privatem Schlüssel absichern…

Um die Sicherheit bei der Anmeldung an linuxbasierten Systemen (bei mir derzeit ausschließlich die Rechnerchen der Pi Serie), bietet es sich an, die Authentifizierung um eine Zertifikats basierte zu erweitern. Dafür ist zunächst das Generieren eines entsprechenden Schlüsselpaares erforderlich.

Das Schlüsselpaar besteht aus einem privaten sowie einem öffentlichen Schlüssel. Der öffentliche Schlüssel dieses Schlüsselpaares liegt auf dem “Server” (Linux System), der private Schlüssel hingegen wird auf den Client (Rechner von dem aus zugegriffn werden soll) hinterlegt.

Aber der Reihe nach… Zunächst erstellen wir nach erfolgter Herstellung einer Remoteverbindung zum “Server” ein Schlüsselpaar.

Schlüsselpaar erzeugen
Schlüsselpaar erzeugen

 

 

Anschliessend wird ein 4096 bit umfassendes RSA Schlüsselpaar erstellt. Bei der Abfrage zu “passphrase” geben wir ein Kennwort für den Zugriff auf den privaten Schlüssel ein. Dieses sollte entsprechend lang und komplex gewählt werden.

KeyPair erstellen und passphrase setzen
KeyPair erstellen und passphrase setzen

 

 

 

 

 

 

 

 

 

Nunmehr wurden 2 Schlüssel im Unterordner .ssh erstellt. Zum einen der private Schlüssel – id_rsa – sowie den öffentlichen Schlüssel – id_rsa.pub-.

Den privaten Schlüssel, welchen wir zur Anmeldung auf dem Client benötigen, laden wir nun vom System herunter. Ich empfehle hier die Nutzung des kostenlosen Tools WinSCP.

Aus Sicherheitsgründen sollte der private Schlüssel (id_rsa) anschliessend auf dem Server wieder gelöscht werden. Dementsprechend vorsichtig sollte man dann aber auch mit dem “kopierten” Schlüssel umgehen und diesen sicher aufbewahren. Geht dieser verloren und die Authentifizierung ist auf eine ausschließlich Schlüssel basierte umgestellt, wird ein Zugriff auf das System schwieirig bis unmöglich.

privaten Schlüssel löschen
privaten Schlüssel löschen

 

 

 

Nachdem wir in das .ssh Verzeichnis im Home Verzeichnis des Pi Users gewechslt sind, löschen den privaten Schlüssel durch die Eingabe des folgenden Befehls:

2016-01-16_112413

 

Damit wir zukünftig in der Lage sind, uns mit dem privaten Schlüssel am System anzumelden, muss der öffentliche Schlüssel des Schlüsselpaares in der Datei authorized_keys hinterlegt werden. Diese Datei muss sich im Verzeichnis .shh im home des pi users befinden.

Um den öffentlichen Schlüssel in die Datei authorized_keys zu übernehmen, geben wir folgendes auf der Konsole ein:

Key übernehmen
Key übernehmen

 

 

Anschliessend passen wir noch die Rechte auf die Datei an:

2016-01-16_113016

 

 

Gegebenenfalls kann es erforderlich, den privaten Schlüssel in ein Clientkonformes Format zu konvertieren. Da ich ausschließlich den putty SSH Client einsetze, importiere ich in der regel zunächst den zuvor gesicherten Key und speichere dieses im ppk Format ab. Dieses kann man bequem über das kostenlose Tool puttyGen durchführen.

Ist dieses geschehen, passt man seine Anmeldung am jeweiligen System an, und hinterlegt den privaten Schlüssel. Ein erfolgreiches Lesen des privaten Schlüssels stellt sich dann wie folgt dar:

Login testen
Login testen

 

 

Um sicher zu gehen, dass auch alles funktioniert, geben wir hier nun die im Rahmen der Schlüsselgenerierung angegebene Passphrase ein.

Passt alles, erscheint der Consolencursor.

2016-01-16_113854

 

 

 

 

 

Abschliessend gehen wir nun her, und stellen auf dem Server die Authentifizierung dahingehend um, dass nur noch eine Schlüsselbasierte Anmeldung möglich ist.

Hierzu wechseln wir mit dem Befehl…

sudo nano /etc/ssh/sshd_config

in die SSH Dienst Konfiguration und suchen hier nach dem Eintrag

PasswordAuthentication yes

und ändern diese in

PasswordAuthentication no

ab.

Abschliessend starten wir den ssh Serverdienst einmal neu:

sudo service sshd restart