Frage Zentralisiertes Managementsystem für SSH-Schlüssel?


Wir suchen nach einer schlüsselbasierten Verwaltung von SSH-Logins und fragen uns, ob es Systeme zur Verwaltung von Schlüsseln gibt, mit denen wir die Access Keys weltweit zentral verwalten können.

Das System sollte im Idealfall die Ausgabe von Schlüsseln pro Client ermöglichen und diese bei Bedarf widerrufen, indem die Schlüssel der Server-Maschine während des Betriebs aktualisiert werden.

Kennt jemand solch ein System, entweder kommerziell oder Open Source?

HINWEIS: Um dies zu verdeutlichen, benötigen wir die Schlüsselverwaltung für ziemlich viele Cloud-Server (EC2-ähnlich) und eine kleine Anzahl von Servicebenutzern. Ich denke, LDAP + Patch suggerieren unten könnte der richtige Weg sein.


27
2017-08-23 20:06


Ursprung


Ist es nur ich, der denkt, dass "private Schlüssel und Cloud" wie "trink and drive" sind? Beide machen sich lustig, gehen aber nie zusammen. - mailq
"Cloud" ist wahrscheinlich das falsche Wort - es klingt wie das, was sie wollen, ist eine zentralisierte Authentifizierung mit weltweiter Konsistenz. - voretaq7
Hallo. Genau - das wonach wir suchen. - SyRenity
Ich habe mit diesem Problem mit einigen meiner Kunden hybride Umgebungen gekämpft. Es stellt sich auch die Frage, wo die OPenLDAP oder die zentrale Instanz in einer Cloud-Bereitstellung bleiben soll. Ich habe Webmin aller Dinge als Schlüsselmanagement-Tool und ein Kochbuch verwendet, um Schlüssel zu Knoten zu synchronisieren. - Tom H
Userify deckt ab, was Sie suchen (siehe serverfault.com/questions/647797/ ...) - Jamieson Becker


Antworten:


Es gibt viele Möglichkeiten, dies zu tun. LDAP-Schlüsselspeicher wurde ein paar Mal erwähnt, und ich habe das getan, und es funktioniert, soweit es geht. LDAP hat jedoch eigene Management-Kuriositäten, die einige Lernerfahrungen erfordern.

Ich bin ein großer Fan von einfachen, robusten Servern, die nur minimale externe Netzwerkabhängigkeiten für einfache Dinge wie die Authentifizierung von Administratoren haben, also lehne ich mich einer wesentlich robusteren SSH-Schlüsselverteilungsstrategie zu - das Konfigurationsmanagementsystem kümmert sich darum. Jeder öffentliche Schlüssel wird im Konfigurationsverwaltungssystem gespeichert, und wo immer sich die Person anmelden muss, wird ihr Schlüssel hinzugefügt. Das Config-System weiß auch, dass nicht angegebene Schlüssel entfernt werden. Wenn jemand den Server verlässt oder sich der Schlüssel ändert, ist es einfach, die Schlüsselkonfiguration zu entfernen. Bei der nächsten Ausführung des Konfig-Systems wird der Schlüssel entfernt.


8
2017-08-23 22:19



Dieser Ansatz ist sicherlich gut, und Womble weist darauf hin, dass es einen Vorteil darin hat, dass Server für den Fall, dass LDAP nicht verfügbar ist, weiterhin verfügbar sind (Jedes LDAP-unterstützte System sollte es wagen, zu sagen Muss) haben mindestens einen Benutzer, dessen Schlüssel wie Womble ausgedrückt werden. Der Nachteil ist, dass Sie einen Config-Lauf ausführen müssen, um Benutzer zu autorisieren. Kein Problem für ein "Notfallkonto" mit nur wenigen autorisierten Benutzern. Größeres Problem für eine große Anzahl von Accounts :) - voretaq7
Sie müssen sowieso eine Möglichkeit haben, Massenkonfigurationsläufe auszulösen, also sollte es für eine Kontoänderung keine große Sache sein. - womble♦
Ich stimme zu, bedauerlicherweise Geschäftsbedürfnisse / Mentalitäten nicht: Paranoia an vielen Orten (einschließlich meiner) diktiert, dass Config-Pushs außerhalb der Geschäftszeiten stattfinden, aber neue Mitarbeiter / Abgänge können jederzeit passieren: - / - voretaq7
Sie sind also froh, dass Sie für einen Geschäftstag etwas kaputt gemacht haben, nur weil Sie während des Tages keinen Config-Push ausführen können? Nur weil es üblich ist, heißt das nicht, dass es nicht dumm ist. - womble♦
Hallo. Eine gute Idee wäre zum Beispiel Puppet zu benutzen? - SyRenity


Schlüsselpaare sollten vom Benutzer generiert werden.

Der Benutzer behält die private Hälfte - Sie sollten es nie sehen. Wenn Sie den privaten Schlüssel von jemandem in einer Form haben, in der Sie ihn lesen / benutzen können, tun Sie die Sicherheit falsch.

Die öffentliche Hälfte wird dir gegeben (durch welchen Mechanismus auch immer du möchtest: Webformular, E-Mail, Gib mir-auf-einer-CD), um zentralisiert zu werden wie du willst. Einige Orte speichern die öffentlichen Schlüssel in LDAP. Andere drängen hinaus authorized_keys Dateien mit ihrem Bereitstellungssystem.


In meiner Umgebung geben Benutzer, die Shell-Zugriff benötigen, ihre öffentlichen Schlüssel. Diese Schlüssel werden unserem LDAP-System hinzugefügt, und sshd Konsultiert die öffentlichen Schlüssel, die für jeden Benutzer aufgelistet sind, um sie zu authentifizieren, über die LDAP Public Key-Patch.
Wenn jemand einen zusätzlichen Schlüssel hinzufügen oder einen vorhandenen Schlüssel widerrufen muss, wird dies einem Administrator mitgeteilt, und wir kümmern uns darum. Schließlich, wenn wir skalieren, werde ich ein System implementieren, das es den Leuten ermöglicht, ihre eigenen öffentlichen Schlüssel zu drehen.

Jeder unserer Standorte verfügt über zwei LDAP-Server, die mit der LDAP-Replikation auf unseren Master synchronisiert sind und die Daten an jedem Standort konsistent (und zugänglich) halten.


Alles, was ich beschrieben habe, kann mit Open-Source-Software gemacht werden. Es gibt auch kommerzielle Produkte, die das Gleiche tun.
Sie müssen die verfügbaren Optionen genauer erforschen und entscheiden, welche für Ihre Umgebung am besten geeignet sind. Wenn Sie weitere (spezifischere) Fragen haben, können wir wahrscheinlich hilfreicher sein.


23
2017-08-23 20:21



Sie schlagen also vor, eine LDAP-Infrastruktur mit gepatchtem OpenSSH zu verwenden, die mit LDAP funktioniert? Wie gut skaliert das in der Produktion? Kann es eine große Anzahl von Maschinen unterstützen? Wir müssen nur eine kleine Anzahl von Servicebenutzern unterstützen. - SyRenity
@SyRenity: LDAP unterstützt Replikation und Clustering, so dass es sehr gut skaliert - Hubert Kario
@SyRenity Theoretisch können Sie eine unbegrenzte Anzahl von Maschinen an einer unbegrenzten Anzahl von Standorten unterstützen (denken Sie an "Wirklich große Active Directory-Bereitstellung" - AD ist im Grunde LDAP mit einigen modischen Accessoires). Für Service-Benutzer ist mein Vorschlag, sie in Ihrer Umgebung zu standardisieren und standardisiert auszugeben /etc/passwd und /etc/group Dateien (erlaubt den Maschinen normal zu arbeiten und die zugehörigen Dienste zu starten / laufen, auch wenn LDAP nicht verfügbar ist) - voretaq7
@ Voretaq7 Bedeutung der Service-Benutzer werden getrennt von LDAP verwaltet, über die Konfigurations-Management? - SyRenity
@SyRenity ja - und noch wichtiger verfügbar für die Dienste, die sie verwenden, wenn LDAP inaktiv ist. Planen Sie Fehler oder Sie werden Katastrophen erleben. - voretaq7


Keypairs sollten nicht irgendwo, sondern auf dem Computer jedes Benutzers generiert werden. Private Schlüssel werden aus einem bestimmten Grund als solche bezeichnet.

Das heißt, ich könnte einen Anwendungsfall für eine Art zentrales Repository der öffentlichen Schlüssel der Benutzer sehen. Eine Möglichkeit wäre, öffentliche Schlüssel in OpenLDAP zu speichern - neuere Versionen von OpenSSH können Schlüssel aus LDAP lesen.


9
2017-08-23 20:22



Ist der LDAP-Public-Key-Code in der OpenSSH-Hauptversion jetzt vorhanden? Ich kenne nur den LPK-Patch (für den ich bürgen kann - er funktioniert super). Auch +1, um private Schlüssel privat zu halten. - voretaq7
@ Voretaq7 Ich glaube, ich habe gehört, dass es in die Mainline verschmolzen wurde, aber das habe ich selbst noch nicht verifiziert. Wir machen gemeinsame Home-Verzeichnisse über NFS, damit kümmert sich unsere Schlüsselverteilung für uns. - EEAA
+1 Nun, das wusste ich nicht. das würde mir eine Menge Ärger ersparen. Das ist jetzt auf meiner Liste der Dinge, die man sich ansehen sollte. - Tom H


Ich weiß, dass dies eine etwas ältere Frage ist, aber Google gibt es ziemlich hoch an, wenn man nach solchen Dingen sucht.

Für diejenigen von uns, die neben LDAP eine Lösung suchen, habe ich das Projekt "SKM" gefunden: https://sites.google.com/site/jeromeboismartel/code-s-corner/ssh-key-management-with-skimp


1
2017-09-05 00:22





Es gibt viele großartige kommerzielle und Open-Source-Lösungen wie Userify [1] (wo ich arbeite), Universal Key Manager [2], SSH Key Box [3] usw. Es hängt davon ab, was Ihre Bedürfnisse sind und wenn Sie es sind Suchen Sie nach etwas, das die Verwaltung zentralisiert und den Betrieb dezentralisiert (damit Ihre Server nicht auf eine zentrale Autorität angewiesen sind, sich anzumelden ... in diesem Fall können Sie sich möglicherweise nicht bei einem Ihrer Server anmelden, wenn Sie z LDAP-Server ist ausgefallen!)

  1. https://userify.com

  2. https://www.ssh.com/products/universal-ssh-key-manager/

  3. https://www.sshkeybox.com

Siehe auch diese Slant-Diskussion:

https://www.slant.co/topics/8010/~managers-for-ssh-keys


1
2017-11-09 23:42