SSH authorized_keys mal anders verwalten
15
Juni
Wir haben viele Admins, die sich über ihre SSH Schlüssel per root an unsere RHEL Server direkt anmelden wollen. Das root Passwort ist keinem bekannt. Durch geeignete Log Optionen in der sshd_config können finger prints der Schlüssel, die sich anmelden protokolliert werden.
Die Verwaltung der authorized_keys auf so vielen Servern war aber immer etwas mühselig, bis wir auf die Idee gekommen sind, das ganze per RPM verwalten zu lassen. Den öffentlichen Schlüsselteil verpacken wir in ein RPM mit sprechendem Namen und verteilen dieses auf die entsprechenden Systeme.
Das Verfahren hat folgende Vorteile:
- Wenn ein Admin einen neuen Schlüssel erzeugt (weil Passphrase vergessen, Schlüssel kompromittiert, …), ist die Verteilung des neuen Schlüssels durch ein neues RPM mit höherer Versionsnummer sehr einfach über die Standard System Update Mechanismen (Satellite usw.) zu realisieren.
- Wer direkten Root Zugriff hat ist leicht über die RPM Paketliste zu erkennen.
- Scheidet ein Kollege aus, muss nur sein RPM überall deinstalliert werden und schon hat er keinen root Zugriff mehr auf die Systeme.
So funktionierts:
Das Spec File für das ssh rootkey RPM findet ihr hier: ssh-rootkey-_USERNAME_.spec
Einfach überall _USERNAME_ in einen sprechenden Namen austauschen, z.B. ssh-rootkey-hsimpson.spec und die SSHKEY_-Variablen mit den Schlüsselinformationen bestücken und das Spec file ist fertig.
Ein rpm -bb erzeugt dann das entsprechende RPM. Ab ins System Management Tool, auf die Systeme installiert und schon hat der Admin mit seinem Schlüssel Zugriff auf das System.

Hallo Roger
stimmt, Puppet wäre auch eine gute Möglichkeit die authorized_keys zu verwalten. Da wir aber sehr unterschiedliche Systeme hatten, auf die nur bestimmt Admins Zugriff haben durften, waren die authorized_keys weit davon entfernt kategorisiert oder gruppiert werden zu können. Daher haben wir uns für die RPM Methode entschieden. Aber danke trotzdem für den Tipp!
Für solche Anwendungsfälle finde ich ein automatisches Konfigurationsmanagement ganz praktisch.
Bei uns in der Firma habe ich Puppet (http://www.puppetlabs.com/puppet/) eingeführt, mit u. a. auch die authorized_keys Dateien beliebiger Benutzer verwaltet werden können. Wenn ein neuer Schlüssel in den Puppet Manifesten deklariert wird, haben alle Server innerhalb von spätestens 30 min (das ist die Default-Poll-Time) die aktuellen Daten. Ebenso geht es beim Entfernen eines Schlüsels.