SSH > Public Key Authentication

Wie ich bereits im letzten Artikel Linux > SSH optimal schützen bekannt gegeben habe, geht es in dieser Woche um die Public Key Authentifizierung mit SSH. Bevor wir anfangen die Schlüssel zu generieren, gibt es nochmal eine kleine Einführung was die PKA überhaupt ist.

Bei der PKA werden zwei Schlüssel angelegt, ein öffentlich und ein privater Schlüssel. Der öffentliche Schlüssel wird auf dem Server abgelegt und der private Schlüssel verbleibt bei uns auf dem lokalen Rechner. Jetzt ist es möglich – statt wie bisher mit einem Passwort – den privaten Schlüssel zur Anmeldung via SSH zu verwenden.
Mit dieser Authentifizierungsmethode ist es dem Angreifer nicht mehr möglich mittels Bruteforce oder Wörterbuch-Attacke den SSH-Zugang des Servers zu knacken. Selbst wenn jemand an den privaten Schlüssel gelangt, reicht es nicht aus, um auf den Server zuzugreifen, da zusätzlich noch ein Schlüsselwort benötigt wird. Kurzum, dieses Verfahren bietet einen top Schutz für SSH.

So, genug Einführung. Jetzt gilt es das alles in die Praxis umzusetzen.

Da ich hauptsächlich unter Windows arbeite, müssen erstmal einige zusätzliche Tools runtergeladen werden. Das Programm PuTTY sollte bereits bekannt sein, aber der Entwickler hat netterweise auch alle anderen benötigten Tools zur PKA zum Download bereitgestellt. Als da wäre:

  • PuTTYgen
    Dieses Programm generiert die Schlüssel.
  • Pageant
    Damit kann das Schlüsselwort abgespeichert werden.

Also beides runterladen und dann geht′s ab zu…

Schritt 1 – Schlüssel generieren

puttygen.exe öffnen und den Generate-Button betätigen. Wer möchte kann zuvor noch die Bit-Einstellung auf 2048 hochstellen, aber die voreingestellten 1024 reichen meiner Meinung nach schon aus.

Als nächstes wie wild mit der Maus in dem großen freien Feld unterhalb des Lade-Balkens wirbeln bis der Balken voll ist. Das ist der Zusatzfaktor bei der Generierung der Schlüssel.

Jetzt noch ein Schlüsselwort eintragen und über die beiden Save-Buttons die zwei Schlüsseldateien abspeichern.

Hinweis: Das Schlüsselwort kann auch frei gelassen werden, die Sicherheit sinkt dadurch allerdings, weil dann der private Schlüssel zur Authentifizierung ausreicht.

Schritt 2 – Public Key auf dem Server ablegen

In diesem Schritt authentifizieren wir uns hoffentlich zum letzten Mal über den „normalen“ Weg via SSH zum Server. Also PuTTY öffnen und eine SSH-Verbindung zum Server aufbauen. Anschließend in das Home-Verzeichnis des Benutzers wechseln, über den später die PKA möglich sein soll.

Kleiner Tipp: Wer Umlaute-Probleme über PuTTY hat, kann unter Window -> Translation das Character Set auf UTF-8 umstellen. Das sollte das Umlaut-Problem beseitigen.

Dann ein neues Verzeichnis .ssh anlegen und dort eine Datei authorized_keys2 erstellen. Danach noch die Rechte der Datei so umstellen, dass nur der Besitzer lesen und schreiben darf.

root@server:/# cd ~
root@server:~# mkdir .ssh
root@server:~# cd .ssh
root@server:~/.ssh# touch authorized_keys2
root@server:~/.ssh# nano  authorized_keys2
root@server:~/.ssh# chmod 700 authorized_keys2

Die Datei authorized_keys2 soll nun den Inhalt aus dem vorhin generierten öffentlichen Schlüssel bekommen. Wichtig dabei ist, alle Kommentare aus der Datei zu entfernen und nur die kryptische Zeichenkette zu übernehmen. Davor kommt dann noch der Hinweis ssh-rsa und die Datei kann abgespeichert werden. Orientiert euch am besten an dem folgenden Bild:

Tipp: In PuTTYgen erscheint nach der Schlüsselgenerierung in dem oberen Feld genau die Zeichenkette, die auf dem Server abgelegt werden muss.

Schritt 3 – Authentifizierung mit dem Private Key

Jetzt, da sich der öffentliche Schlüssel auf dem Server befindet, können wir uns erstmals mit dem privaten Schlüssel anmelden. Also wieder PuTTY öffnen, nur dieses Mal unter Connection > SSH > Auth > Authentication parameters den Pfad zum privaten Schlüssel angeben.

Anschließend wird PuTTY nochmal nach dem Schlüsselwort fragen, das bei der Schlüsselgenerierung angegeben wurde und schon können wir wieder normal auf den Server zugreifen. Aber nicht sofort schließen, denn wir kommen noch zu…

Schritt 4 – Passwort-Authentifizierung deaktivieren

Damit sich der ganze Aufwand überhaupt gelohnt hat, müssen wir natürlich noch die alte Authentifizierungsmethode mit dem normalen Passwort deaktivieren. Die Umstellung gestaltet sich sehr simpel. Öffnet die SSH-Konfigurationsdatei /etc/ssh/sshd_config auf dem Server und ändert dort den Wert für PasswordAuthentication auf no. Falls der Konfigurationswert nicht vorhanden ist, könnt ihr ihn einfach hinzufügen. Dann noch den den SSH-Dienst mit dem Befehl /etc/init.d/ssh restart neustarten. Testen und fertig – der SSH-Zugang ist jetzt sicher.

Schritt 5 – Schlüsselwort abspeichern (optional)

Jetzt, wo die Authentifizierung gesichert ist, kann man es sich auch erlauben das Schlüsselwort abzuspeichern. Immerhin ist es viel bequemer wenn man sich komplett ohne Passwort am Server anmelden kann. Und dafür kommt das zweite Tool zum Einsatz: Pageant.exe.

Startet also das Programm Pageant.exe (PuTTY Authentication Agent) und auf eurem Rechner sollte unten Rechts in der Taskleiste ein neues Symbol erscheinen. Rechtsklick darauf, Add Key wählen und den Pfad zum privaten Schlüssel angeben. Jetzt nochmal das Schlüsselwort eingeben und wenn ihr euch jetzt erneut mit PuTTY via SSH am Server anmeldet, braucht ihr das Schlüsselwort nicht mehr angeben.

Schritt 6 – Privaten Schlüssel in MacOSX oder Linux nutzen (optional)

Wer den mit PuTTYgen generierten privaten Schlüssel unter MacOSX bzw. Linux nutzen möchte, der muss noch eine Kleinigkeit beachten, denn die normale Schlüsseldatei (.ppk-Datei) kann hier nicht verwendet werden. Ein verwendbarer privater Schlüssel lässt sich aber ebenfalls mit PuTTYgen generieren. Laded den privaten Schlüssel erneut über den Load-Button und wählt im Menü Conversions > Export OpenSSH key. Gebt der neuen Datei den Namen id_rsa.

Anschließend die Datei auf das Mac/Linux System kopieren und in das Home-Verzeichnis einen neuen Ordner .ssh anlegen. Dann den privaten Schlüssel id_rsa in das neue Verzeichnis verschieben und ganz normal via SSH am Server anmelden. Je nach System kann das Schlüsselwort ohne Zusatz-Tool sofort abgespeichert werden. Bitte beachten: Der private Schlüssel darf nur Besitzer-Rechte bekommen.

mac:~# mkdir .ssh
mac:~# mv Documents/id_rsa .ssh/
mac:~# chmod 700 .ssh/id_rsa
mac:~# ssh root@192.168.0.100

Schreibe einen Kommentar

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