Möge die SSH-Macht mit dir sein, um Brute-Force-Attacken abzuwehren!
Was bedeutet überhaupt Server-Authentifizierung mit Zertifikat über SSH?
Die Public-Key-Authentifizierung ist eine Authentifizierungsmethode, die unter anderem von SSH und OpenSSH verwendet wird, um Benutzer mit Hilfe eines Schlüsselpaars, bestehend aus privatem und öffentlichem Schlüssel, mit einem Server zu verbinden.
In diesem Blog will ich Ihnen näher bringen wie sich eine SSH-Verbindung mit Schlüsseln einrichten lässt. Die SSH-Verbindung mit Schlüsseln ist wesentlich sicherer als die mit Passwörtern. Bei dieser Verbindung ist es kaum bis unmöglich sich mit Brute-Force-Attacken rein zu hacken und so das Passwort ausfindig zu machen.
Hier werde ich zuerst zeigen, wie man sich mit dem Private-Key unter Linux mit dem SSH-Befehl verbindet. Danach werde ich für die Windows-User erklären, wie ein vorhandener Schlüssel in Verbindung mit dem SSH-Client "PuTTY" verwendet werden kann.
SSH
Um mich nicht immer mit meinem Passwort auf dem Server anmelden zu müssen, bietet das SSH-Protokoll die Authentifizierung über einen öffentlichen Schlüssel (SSH Public-Key-Authentifizierung). Dafür wird ein Private-Key auf dem eigenen Rechner gespeichert und ein Public-Key auf dem Server hinterlegt.
Mit dem Public-Key kann man sich dann automatisch anmelden. Hier fällt der interaktive Dialog zur Kennworteingabe weg. Damit dies funktioniert wird auf der User-Seite mit Hilfe des eigenen privaten Schlüssels eine Signatur erzeugt, welche auf der Serverseite mit dem dort hinterlegten öffentlichen Schlüssel des Users verifiziert wurde.
SSH-Key erzeugen/ generieren
ssh_keygen bzw. puttygen
Public-Key auf dem Linux-Server einpflegen
Home-Ordner vom Benutzer .ssh/authorized_keys
Per SSH am Server anmelden unter macOS und Linux
Unter Linux und macOS ist bereits der OpenSSH Client verfügbar und kann mit dem Terminalprogramm gestartet werden. Für eine Verbindung zum Server wird eine IP-Adresse oder der Hostname des Servers benötigt.
Führt man den folgenden Befehl aus:
ssh username@IP-Adresse
Wenn man sich das erste Mal auf einem Server anmeldet und noch keinen non-root User angelegt hat, meldet man sich als User “root” an.
So würde man sich beispielsweise mit dem Root-User auf dem Server mit der IP-Adresse 177.0.01 einloggen:
ssh root@177.0.01
Bestätige den Befehl mit “Enter”, um die Verbindung herzustellen. Je nachdem ob man einen SSH-Key oder ein Passwort verwendet, wird dies im letzten Schritt noch abgefragt.
Per SSH am Server anmelden unter Windows
Anders als bei Linux und Mac steht unter Windows kein vorinstallierter SSH-Client zur Verfügung. Ein häufig genutzter SSH-Client ist das Programm PuTTy.
PuTTy: Anmeldung per Private-Key-Authentifizierung
Um eine einfache SSH-Session zu starten, wird nach dem Öffnen des Programms unter “Host-Name” die IP-Adresse des Servers eingegeben. In den Einstellungen unter “Connection > Data” im Feld “Auto-login Username” wird der Benutzername eingegeben. Im nächsten Schritt wird unter “Connection > SSH > Auth” der eigene Private-Key ausgewählt und hinzugefügt. Abschliessend wird per Klick auf “Open” die Verbindung aufgebaut. Die Anmeldedaten lassen sich für jede einzelne Session auch als Profil speichern.
Hier sollte nun eine Prompt ähnlich wie “root@servername:~#” zu sehen sein. Jetzt ist eine SSH-Session zum jeweiligen Server aufgebaut. Mit “Exit” kann die aktive Session wieder beendet werden.
PuTTy: Anmeldung per Public-Key-Authentifizierung
Die bei SSH standardmässig aktive Passwortabfrage ist nur eine Möglichkeit der Authentifizierung. Sicherer ist die Identifikation über die Public-Key-Authentifizierung. Bei Putty dient das Tool PuTTY Key Generator zum Erzeugen von RSA- oder DSA-Schlüsselpaaren.
Zum Erzeugen eines RSA-Schlüsselpaares genügt ein Klick auf die Schaltfläche “Generate”. Wer DSA- oder SSH1-RSA-Schlüssel benötigt, kann den entsprechenden Typ unten im Dialog markieren.
Schlüsselpaar erzeugen und speichern
Nach der Schlüsselgenerierung gibt man bei Key passphrase das gewünschte Passwort ein. Zum Speichern des Public- und Private-Key auf dem Client stehen die beiden gleichnamigen Schaltflächen zur Verfügung. Das Speichern des Public-Key ist nicht zwingend, weil sich dieser jederzeit aus dem privaten Schlüssel errechnen lässt.
Der Name und der Pfad sind im Windows-Dialog frei wählbar, allerdings hat sich für den Putty-Schlüssel die Endung .ppk angepasst, um auf das vom Linux-Standard abweichende Format hinzuweisen. Im Menü Conversions ist es aber möglich, vorhandene OpenSSH-Keys zu importieren (bzw. Putty-Keys zu exportieren), weil Putty OpenSSH-Keys nicht akzeptiert.
Fazit
Mit der zertifikatsbasierten Authentifizierung können Brute-Force-Attacken sehr wirkungsvoll aufgehalten werden. Wichtig ist, dass der Private-Key geheim bleibt und mit einem Passwort versehen ist.
Wenn man gelernt hat, wie man eine Verbindung via SSH aufbaut, ist die volle Kontrolle über den jeweiligen Server gegeben. Zusätzlich ist die Kommandozeile ein mächtiges Tool mit der Sie die Kontrolle über alles behalten (können).