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.
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.
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.
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:
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:
Anschliessend passen wir noch die Rechte auf die Datei an:
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:
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.
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