
03 Jan SSH-Keys sichern durch Verschlüsselung
Ich habe ja letztes Jahr schon mal darüber geschrieben, wie man einen OS X Server dazu bringt, dass eine entfernte Anmeldung mittels ssh nicht mehr mit (der nicht so sicheren) Name/Kennwort-Kombination, sondern nur mit ssh-Keys möglich ist.
Der wichtige SSH-Key ist normalerweise ~/.ssh/id_rsa – das ist der private Key. Den public Key (id_rsa.pub) brauchen wir nicht zu schützen, den darf jeder kennen, aber unser private Key ist heikel. Der darf nicht in falsche Hände geraten, denn der private Key wird ja beim Key-based login verwendet. Wenn jemand anderes Zugriff auf diesen Key hat, könnte dieser jemand über ssh ohne Kennwortabfrage auf alle ssh-Server zugreifen, auf die wir zuvor den public-Key kopiert haben, um key-based login zu ermöglichen.
Der Schutz des private Keys ist also extrem wichtig. Wenn man beim Erstellen aber keine Passphrase angegeben hat, liegt er einfach so unverschlüsselt rum. Und das ist nicht gut. Wenn wir ihn verschlüsseln wollen, geht das ganz einfach mit dem Kommando:
ssh-keygen -p
Daraufhin werden wir gefragt, welches keyfile wir mit einer Passphrase schützen wollen (Default ist wieder ~/.ssh/id_rsa). Danach geben wir zweimal das gewünschte Kennwort ein. Wenn alles klappt wie gewünscht, haben wir einen verschlüsselten ssh Key. Zur Überprüfung kann man mittels
cat ~/.ssh/id_rsa
sich den Key anzeigen lassen. Er sollte in etwa so beginnen:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
Tja, jetzt haben wir also einen verschlüsselten Key, was die Situation sicherer macht, aber natürlich fragt uns dann das System immer wenn wir ihn benutzen wollen, nach der Passphrase. Glücklicherweise müssen wir das nur einmal eintippen und können die Passphrase im Schlüsselbund sichern. Wenn der Schlüsselbund offen ist, kann ab dann der ssh-agent die Passphrase zum verschlüsselten ssh-Key automatisch vom Schlüsselbund bekommen. Damit haben wir sowohl den gleichen Komfort wie mit dem unverschlüsselten ssh-Key, d.h. ein login ist möglich, ohne dass ein Kennwort eingetippt werden muss und gleichzeitig haben wir die Sicherheit verbessert, weil wenn jemand den private Key unberechtigt kopiert, kann er damit nichts anfangen, da dieser verschlüsselt ist. Und der Login-Schlüselbund ist genau der richtige Ort, um Single-Sign-On Informationen zu sichern.
Single-Sign-On ist auch gleich ein Hinweis, dass es in manchen Situationen noch eine weitere Methode geben kann, die sogar noch besser ist, allerdings auch ein bischen komplizierter: SSH-Login mittels Kerberos. Aber das gibt dann einen eigenen Blogpost. Irgendwann.
Marco
Posted at 18:59h, 04 JuliHallo Andreas,
vielen Dank für diese wertvolle Information.
Ich hatte tatsächlich die # am Zeilenbeginn nicht gelöscht, jetzt funktioniert alles zu meiner Zufriedenheit.
Zudem vielen Dank für die umfassende Erklärung, so lernt man immer wieder etwas dabei!
Gruß
Marco
Marco
Posted at 18:27h, 01 JuliVielen Dank für diese beiden Artikel!
Erfolgreich habe ich meine OS X Mavericks-Server so einrichten können, dass eine Anmeldung mit SSH-Key möglich ist.
Zudem habe ich der Datei „/etc/sshd_config“ die Zeile „ChallengeResponseAuthentication“ modifiziert.
Dennoch ist es mir weiterhin möglich, mich auf die herkömmliche Art (Name/Passwort) anzumelden.
Welchen Fehler könnte ich meinerseits bei der Konfiguration gemacht haben?
Andreas Schenk
Posted at 12:46h, 04 JuliHallo Marco,
vermutlich hast Du zwar den Eintrag ChallengeResponseAuthentication auf no geändert, aber nicht die # am Zeilenbeginn gelöscht (steht auch nicht im Blogartikel). Das # markiert die Zeile als Kommentar. Daher sind eigentlich alle Zeilen des Config Files nur Kommentare und sshd greift auf die default Werte zurück, die zur leichteren Editierbarkeit als Kommentar dastehen. Möchte man also einen Wert ändern, muss die Zeile nicht mehr als Kommentar gesehen werden, also das # gelöscht werden. Und eben der Wert von yes auf no geändert werden.
Ich hoffe, das bringt Dich weiter.
Cheers,
Andreas