Zertifikatsbasierten Login für Hauptbenutzer einrichten

Im letzten Teil haben wir uns den Hauptbenutzer ‚ myadm‘ eingerichtet. Mit diesem Benutzer können wir uns nun per SSH auf dem Server anmelden und per ’sudo‘ mit ‚root‘ Rechten an dem Server arbeiten.

Im nächsten Schritt wollen wir das Konto so umstellen, dass der Login mit einem Zertifikat (Zertifikat = ein Art elektronischer Ausweis) erfolgen kann. In einem späteren Schritt ändern wir die SSH Konfiguration so, dass der Login nur noch mit Hilfe eines Zertifkats möglich ist.

Dadurch muss das Passwort für den Hauptbenutzer in Zukunft nicht mehr übertragen werden. Dadurch kann das Passwort auch nicht ‚man in the middle‘ Attacken abgefangen werden. Zusätzlich ist das Zertifkat über ein Passwort gesichert, welches ich aber nur lokal (also auf meinem Rechner) eingeben muss.

Zertifkat für SSH erstellen (private & public key)

Falls Ihr keine eigene PKI-Infrasruktur für die Erstellung und Verwaltung von Zertifikaten betreibt, wird es vermutlich reichen, wenn Ihr das Zertifikat selbst erstellt. In dem Beispiel gehe ich davon aus, dass Ihr ein Zertifikat für den Benutzer ‚myadm‘ einrichten wollt. Dazu öffnet Ihr ein Terminal und haut mal folgenden Befehl raus:

ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/myadm/.ssh/id_rsa): /home/myadm/.ssh/myadm
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/myadm/.ssh/myadm.
Your public key has been saved in /home/myadm/.ssh/myadm.pub.
The key fingerprint is:
SHA256:3X+IXJNfrCRGQPkDs3lpfW5WEgqfI6+UKJ23fZ+gdbA martin@cof0004
The key's randomart image is:
+---[RSA 4096]----+
| .o. |
| =. . |
| O.= . |
| .+o@ ooo|
| .So.++=++| | . + +o.o==|
| . o +oE++o|
| o + +..|
| . . o.|
+----[SHA256]-----+

Bitte das Passwort nicht einfach leer lassen nur weil ‚key-gen‘ sagt es sei optional! Okay, im Ergebnis habt Ihr jetzt zwei neue Dateien im Verzeichnis ‚/home/myadm/.ssh‘ liegen:

myadm – dies ist der private Schlüssel des Zertifkates und wird nie, nie, aber wirklich niemals aus der Hand gegeben!

myadm.pub – ist der öffentliche Teil des Schlüssels, der aber nur mit dem’private key‘ zusammen genutzt werden kann.

Für die Nutzung des privaten Schlüssels ist dann noch das Passwort erforderlich.

SSH Anmeldung mit Zertifkat

Damit sich unser frisch gebackener Admin ‚myadm‘ auch mit dem Zertifkat an dem Server anmelden kann, müssen wir den öffentlichen teil des Zertifkates (also im Beispiel die Datei ‚myadm.pub‘ noch im Benutzerverzeichnis auf dem Server hinterlegen. Das geht ganz einfach mit dem Befehl:

ssh-copy-id -i ~/.ssh/<ZERTIFIKAT>.pub <BENUTZERNAME>@<SERVERNAME>

Der befehl fragt nun nach dem Passwort des Benutzers <BENUTZERNAME> und kopiert dann den öffentlichen Schlüssel des Zertifikats in die Datei ‚/home/<BENUTZERNAME>/.ssh/authorized_keys‘ auf dem Server.

Test

Sehr Wichtig: Nun testen ob die Anmeldung mittels Zertifikat funktioniert!

Dazu öffnet Ihr bitte ein zweites Terminal und versucht Euch mit folgendem Befehl anzumelden.

ssh -i ~/.ssh/<ZERTIFIKAT>.pub <BENUTZERNAME>@<SERVERNAME> 

Nun sollte ’ssh‘ nach Eurem Passwort für die Nutzung den privaten Teil des Schlüssels fragen und sich anschließend sofort automatisch anmelden. Es ist für die nächsten Schritte sehr, sehr wichtig, dass Ihr diesen Zugang testet! Wir stellen nämlich die Konfiguration so um dass man sich zukünftig nur noch mit einem gültigen Zertifikat anmelden kann und es besteht die Gefahr, dass Ihr Euch komplett von dem Server ausschließt…..

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>