Forgot your password?

Forgot your username?

All about IT, Web and Development.
By users for users.

SSH Authentifizierung per Zertifikat unter Ubuntu



Mit der SSH Authentifizierung per Zertifikat lässt sich das Risiko von Brute Force Angriffen umgehen.

Ein Potentieller Angreifer müsste im Besitz des Private Keys und des dazugehörigen Passwortes sein um sich auf dem SSH Server einloggen zu können.



Schlüsselpaar / Zertifikate erzeugen


Bevor das Schlüsselpaar erzeugt werden kann, muss der OpenSSH Client installiert werden.

sudo apt-get install openssh-client

Anschließend kann das Schlüsselpaar erzeugt werden.

ssh-keygen -t rsa

Der Speicherort kann über die Eingabetaste bestätigt werden. Zur Sicherheit sollte hier ein Passphrase eingegeben werden. Dieser wird im Anschluss beim Aufbau der Verbindung eingegeben.



Wird ein leerer Passphrase eingegeben (mit Enter bestätigen) ist zur Authentifizierung kein Kennwort erforderlich. Hierdurch leidet allerdings die Sicherheit.

Bei Ubuntu und Debian bzw. nahezu jeder anderen Distribution liegen die Keys dann im Ordner .ssh des Homeverzeichnisses.


Konfiguration des Servers


Auf dem Zielsystem wird zunächst die Authentifizierung per Zertifikat aktiviert. Die Konfiguration des SSH-Servers befindet sich in der Datei /etc/ssh/ssh_config und kann z.B. mit dem Editor nano editiert werden.

sudo nano /etc/ssh/sshd_config
Hier müssen die folgenden Zeilen gesetzt sein um die Authentifizierung per Zertifikat zu erlauben.

RSAAuthentication yes
PubkeyAuthentication yes


Damit die Änderungen übernommen werden, wird der SSH-Dienst in Ubuntu bzw. Debian neu gestartet.

sudo service openssh-server restart


Zertifikat einspielen / Zugriff erlauben


Auf dem Client spielen wir jetzt das Zertifikat auf den Server ein. Am einfachsten geschieht dies über den Befehl ssh-copy-id.

ssh-copy-id -i ~/.ssh/id_rsa.pub benutzer@server

SSH fragt nun nach einer einmaligen Authentifizierung. Hier werden die Zugangsdaten des Benutzers (benutzer) auf dem Zielsystem (server) eingegeben.

Der Befehl ssh-copy-id hängt im Grunde nur den eigenen Public Key an die Datei ~/.ssh/authorized_keys auf dem Zielsystem / Server an. Bei Problemen kann man den Public Key auch manuell einspielen.

cat ~/.ssh/id_rsa.pub | ssh benutzer@server cat >> ~/.ssh/authorized_keys


Weiterführendes


Nach dem Austausch der Keys ist die Authentifizierung per Zertifikat möglich. Natürlich lassen sich jetzt noch einige Änderungen vornehmen bzw. Konfigurationen einsehen.


Passwort Authentifizierung deaktivieren


Um für weitere Sicherheit zu sorgen kann man die bisher genutzte Authentifizierung per Benutzername und Kennwort komplett deaktivieren.
Wichtig: Diese Option sollte erst nach dem Schlüsselaustausch gesetzt werden. Andernfalls sperrt man sich aus und bekommt lediglich über einen physischen Zugang wieder Zugriff auf das System.

Hierzu wieder in die Konfigurationsdatei /etc/ssh/sshd_config wechseln und die nachfolgende Zeile anpassen.

PasswordAuthentication no
UsePAM no


Abschließend den SSH-Dienst wieder neu starten um die Änderungen zu übernehmen.

sudo service openssh-server restart


Hinterlegte Keys einsehen


Um zu prüfen, welche Personen Zugriff auf den Server besitzen, kann man sich die Datei authorized_keys im SSH Verzeichnis des gewünschten Benutzers auf dem Server einsehen.

Hier wird in der Regel immer der Benutzer samt Host hinterlegt:

foxplex@example.com

Die Einträge beginnen immer mit ssh-rsa und stehen in einer Zeile. Jeder berechtigte Benutzer ist dabei durch einen Zeilenumbruch abgetrennt. Daher dürfen innerhalb eines Blocks keine Umbrüche vorhanden sein.


Fazit


Mit der Zertifikatsbasierten Authentifizierung kann man Brute Force Angriffen sehr wirkungsvoll entgegenwirken. Wichtig ist, dass der Private Key geheim bleibt und mit einem Passwort versehen ist.

Die Konfiguration unter Ubuntu und Debian gestaltet sich hierbei sehr einfach und übersichtlich.

Quellen: Ubuntu Logo

Michael Kostka

Fachinformatiker / Systemintegration
Ich schreibe hier regelmäßig zu den Themen Android, Web, Linux und Hardware.

Raspberry Pi Starter Kit
DataCloud

Leave a comment

I have read the privacy policy and agree to electronically store and process my input data to answer the request.