SSH Keys verwalten

Ich finde ein ssh-keymanager ist sinnvoll wenn man mehrere Benutzer und Linuxserver verwalten muss. Angenommen man hat um die 40 Entwickler die auf bis zu 100 verschiedene Server zugreifen müssen. Für jeden Entwickler ein Benutzerkonto auf dem jeweiligen System zu erstellen ist sehr zeitaufwendig und bedarf auch einer guten Dokumentation. Meine Idee ist es ein Benutzerkonto zu erstellen zum Beispiel ewl , unter diesem Benutzer können sich alle Entwickler anmelden. Vorraussetzung ist das der Publickey des Entwickler in der authorized_keys hinterlegt wurde. Das hinterlegen des Keys würde in diesem Fall der ssh-keymanager übernehmen.

Installation
Die Inbetriebnahme des ssh-keymanagers ist recht einfach. Den Ordner entpacken und in ein entsprechendes Verzeichniss ablegen, auf den der Apache zugreifen kann. Eine Mysqldatenbank erstellen, den mitgelieferten Dump einspielen und die Zugangsdaten in der inc/connect.inc.php hinterlegen. Nun die Webseite aufrufen und mit admin / itbasic anmelden.

Damit die Keys verteilt werden können muss der Apache Benutzer in der Lage sein eine shell auszuführen, gegebenenfalls muss dafür die /etc/passwd angepasst werden. Zusätzlich muss unter dem Apache Benutzer ein Public key erstellt werden, dieser wird in der Mysqldatenbank(Tabelle systemkey) hinterlegt.

Host und Linuxbenutzer anlegen
Ein neuer Host wird über „Host => hinzufügen“ hinzugefügt, wichtig ist hierbei das die korrekte IP Adresse angegeben wird. Nachdem der Host angelegt wurde, kann über „Host => anzeigen“ ein neuer Linuxbenutzer für den Host angelegt werden. Der Linuxbenutzer muss nun jedoch noch manuell auf dem eigentlichen System angelegt werden und der zuvor erstellte public key des Apache muss in der authorized_keys abgelegt werden.
Bevor der erste Abgleich der Keys stattfinden kann, muss man sich über den Apache Benutzer an dem neuen Host anmelden. Durch die Anmeldung wird der Neue Host zu den known_hosts hinzugefügt.

Benutzer / Benutzergruppe
Unter Benutzer gibt es die Möglichkeit einen neuen Benutzer anzulegen bzw sich alle Benutzer anzuzeigen zu lassen.
Für die einfachere Verwaltung können Benutzer zu Gruppen zusammengefasst werden, diese Benutzergruppe wird dann dem entsprechendem Linuxbenutzer zugewiesen.

Abgleich
Unter Abgeich => Systemkey wir lediglich für den einfachen Zugriff der Public Key des Apache Benutzers dargestellt.
Bei dem Punkt anzeigen werden alles Linuxbenutzer aufgelistet die aktualisiert werden müssen. Ändert zum Beispiel ein Benutzer seinen Public Key, wird der entsprechende Linuxbenutzer hier aufgeführt. Ein klick auf den Pfeil stößt den Abgleich der Keys an.

Das Layout könnte man sicherlich noch überarbeiten, aber ich denke fürs erste sollte es reichen. Wenn jemand einen Fehler findet oder einen Änderungswunsch hat, einfach eine email schreiben.

 

Serverübersicht

 

Benutzerübersicht

 

Download

Kleine Anmerkung
Da meine grafischen Fähigkeiten leider nur reichen um Bilder mit Hilfe von Gimp zurechtzuschneiden, benutze ich folgende Buttons: http://fortawesome.github.io/Font-Awesome/

5 Gedanken zu „SSH Keys verwalten

  1. StammelStammel

    >“…Angenommen man hat um die 40 Entwickler die auf bis zu 100 verschiedene Server zugreifen müssen. Für jeden Entwickler ein Benutzerkonto auf dem jeweiligen System zu erstellen ist sehr zeitaufwendig und bedarf auch einer guten Dokumentation…“

    Lösung:
    http://de.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol

    Konkret:
    http://www.openldap.org/

    Ein Account für alle Entwickler? Wie gewährleistet man dann eine Zugriffskontrolle ? Wozu gibt es wohl Accounting – Gut zu wissen, dass man sich das offentsichtlich sparen kann.

    ssh-keys verwaltet man auch nicht mit einem obskuren Keymanager mit schnuckeligem Webinterface den man von sonst wo her hat.
    Und warum macht nicht einfach jeder der 40 Entwickler ein ssh-copy-id ? Dann sind die keys authorisiert und zusammengetragen. Man kann natürlich auch erst alle Sammeln und dann von Hand zu Fuß zusammentragen. Was passiert wenn ein Witzbold die Authenfizierung der anderen entfernt ? Fängst du dann von vorne an?
    Wahrscheinlich liegen bei dem Webinterface hinterher die Key im Cache… Nene …

    Antworten
    1. hermann Beitragsautor

      Wenn ich openldap einsetze muss ich die Möglichkeit haben alle Server über eine zentrale Instanz zu verwalten, das ist jedoch leider nicht immer möglich.

      Und ja es kann vorkommen das sich zum Beispiel Entwickler unter ein und dem selben Account auf einem System anmelden müssen. Wenn zum Beispiel eine Tomcatanwendung unter dem Benutzer Tomcatuser1 läuft, wäre es schon ratsam Änderungen im Namen des Benutzers durchzuführen um eventuelle Rechteprobleme vorzubeugen. Wegen dem ssh-copy-id gebe ich dir Recht, das wäre eine gute Möglichkeit die sshkeys auf den Server zu kopieren. Nur wie sieht es aus wenn ich die Keys wieder entfernen muss?

      Das generell ein sshkey Manager Überflüssig ist würde ich nicht sagen, immerhin scheint es einen Markt dafür zu geben da man einen sshkey Manager auch als Softwarelösung kaufen kann.

      Antworten
      1. dakira

        Wenn ich openldap einsetze muss ich die Möglichkeit haben alle Server über eine zentrale Instanz zu verwalten, das ist jedoch leider nicht immer möglich.

        Nein wirklich. Du solltest dich mit LDAP auseinander setzen. Das lässt sich an alles mögliche anbinden und spart dir am Ende unendlich viel Arbeit. Du kannst doch einen zentralen LDAP-Server hinstellen und jedem Server sagen, dass er auch Benutzer von dort zulassen soll. Wenn du auf den entspr. Servern Benutzer anlegen kannst, kannst du auch LDAP einrichten.

        Wenn zum Beispiel eine Tomcatanwendung unter dem Benutzer Tomcatuser1 läuft,

        Dann sollte sich niemand als dieser user anmelden sondern mit seinem user die entsprechenden Rechte haben.

        Antworten
  2. Ben F

    Wenn zwei Entwickler einen Account nutzen müssen, gibt man ihnen individuelle Accounts und via sudo das Recht für „su – gemeinsamer_account“. So bleibt nachvollziehbar wer was geändert hat.

    Mit einem Tool wie Ansible sind auch 40 Accounts auf 100 Servern in ca. 5 Minuten angelegt.

    Antworten

Schreibe einen Kommentar

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