Die Sicherheit kann erhöht werden, wenn die Anmeldung nicht mehr über Benutzer und Passwort ermöglicht wird, sondern mit speziellen Schlüsseldateien. Dazu werden ein privater und ein öffentlicher Schlüssel benötigt. Der öffentliche Schlüssel wird einem bestimmten Benutzer zugeordnet, so ist die Anmeldung nur noch mit diesem Benutzer möglich. Der private Schlüssel ist auf jedem Client notwendig, der sich per SSH auf den Server verbinden will.
Eine Passwort-Eingabe (Passphrase) kann weiterhin verwendet werden, denn falls der private Schlüssel doch in die falschen Hände gerät, dann schützt zumindest noch diese Abfrage ein wenig.
Erstellen der Schlüsseldateien
Im ersten Schritt wird das Schlüsselpaar erstellt. Hierfür nutze ich das Tool PuTTY Key Generator (zur Downloadseite):
Anstatt 1024 würde ich eher zu 4096 bits raten, das habe ich im Screenshot etwas vermasselt…
Durch den Klick auf „Generate“ werden die Schlüssel erstellt, dafür muss die Maus in dem Fenster hin und her bewegt werden im Bereich „Key“. Nach einer kurzen Zeit sind die Schlüsseldateien erstellt. Nun ist es wichtig, dass noch eine Key passphrase definiert wird, hier empfehle ich ein min. acht Zeichen langes kryptisches Passwort bestehend aus Zahlen, Buchstaben und Sonderzeichen. Über die Schaltfäche „Save private key“ muss der private Schlüssel gespeichert werden. Diese ist notwendig, damit Ihr Euch später per SSH anmelden könnt.
Der Login soll auch nur für einen Benutzer möglich sein. Dafür verwenden wir den Benutzer, der zuvor als Alternativanmeldenutzer zum root-Benutzer angelegt worden ist. Falls Ihr den vorherigen Schritt nicht durchgeführt habt, solltet Ihr wissen, dass der sshuser für einen vorher angelegten Benutzer steht.
Schlüssel dem SSH-User zuweisen
Der öffentliche Schlüssel muss bei diesem Benutzer wie folgt hinterlegt werden (Wichtig: der Schlüssel darf nicht durch andere Benutzer eingesehen oder gar verändert werden, somit sollte der Anmeldebenutzer Inhaber der Datei sein und als einziger Schreib- und Leserechte besitzen):
su – sshuser mkdir /home/sshuser/.ssh/ touch /home/sshuser/.ssh/authorized_keys chmod 600 /home/sshuser/.ssh/authorized_keys
In die Datei „authorized_keys“ wird der Inhalt des öffentlichen Schlüssels rein kopiert, zum Beispiel per vi. Wichtig ist, dass Ihr den Key aus dem Bereich „Public key for pasting into OpenSSH authorized_keys file“ verwendet:
Die SSH-Konfigurationsdatei muss nun soweit editiert werden, dass die Anmeldung mit diesem Verfahren erlaubt wird. Dafür ist in der Datei /etc/ssh/sshd_config die folgende Zeile
PubkeyAuthentication no
nach
PubkeyAuthentication yes
zu ändern.
Die Konfiguration des SSH-Dienstes muss neu eingelesen werden, um die Änderung zu aktivieren:
service ssh reload
An dieser Stelle ist es sehr wichtig, dass das Verfahren getestet wird. Wird jetzt auch der Login mit normalen Passwort deaktiviert und funktioniert die Anmeldung per Schlüsseldateien nicht, dann habt Ihr Euch aus dem System ausgeschlossen.
Konfiguration des PuTTY-Client
In PuTTY wird die IP-Adresse oder der FQDN vom Servereingetragen:
Speichert diese Verbindung ab, da weitere Einstellungen notwendig sind. Unter „Connection → Data“ im Feld „Auto-login username“ ist der Benutzername einzutragen, mit dem der Login durchgeführt wird. Hier wählt Ihr den Benutzer, den Ihr für diesen Zugriff eingerichtet und den Key zugewiesen habt.
Der Private-Key in Form einer Datei wird unter „Connection → SSH → Auth“ im Feld „Private key file for authentication“ ausgewählt. Das ist die Datei, die Ihr im Putty Key Generator erstellt und gespeichert habt.
Mit diesen Einstellungen kann die Verbindung getestet werden. Es wird zum Login nur noch die „Passphrase“ abgefragt. Die restliche Anmeldung erfolgt automatisch.
Deaktivieren des Logins mit Benutzername und Passwort
Erst wenn die Anmeldung funktioniert kann der reine Login mit Benutzernamen und Passwort deaktiviert werden. Dafür ist die SSH-Konfigurationsdatei /etc/ssh/sshd_config zu editieren. In dieser Datei sind die Zeilen
PasswordAuthentication yes ChallengeResponseAuthentication yes
nach
PasswordAuthentication no
ChallengeResponseAuthentication no
abzuändern. Die Änderung wird aktiv, wenn die Konfiguration des SSH-Dienstes neu eingelesen wird:
service ssh reload