LDAP die richtige Wahl?

538
ghost3h

Ich suche also nach einer Lösung für den ssh-Schlüsselautorisierungszugriff auf zahlreiche Server und bin auf die Verwendung von LDAP hingewiesen worden. Ich wollte den Anwendungsfall vorstellen und sehen, ob LDAP anwendbar ist und Vorschläge oder Hilfe in Betracht gezogen werden könnten.

Ist es möglich, LDAP zu verwenden, um den Zugriff auf bestimmte Server pro Benutzer / Gruppe mithilfe von SSH-Schlüsseln einzuschränken. Ein Benutzer versucht also, auf eine Box zuzugreifen, die mit den Server- und Benutzerdetails an den LDAP-Server gesendet wird. Dies würde dann prüfen, ob diese Person Zugriff auf diesen Server hat, und möglicherweise den entsprechenden Schlüssel zurückgeben, um Zugriff zu gewähren.

Nach einigen Nachforschungen scheint es möglich zu sein, dies zu tun, aber ich konnte nirgends finden, wo es für bestimmte Server ist.

Außerdem ist openLDAP am besten zu verwenden. Ich habe versucht, dies einzurichten und einige Probleme wie Prüfsummen in Konfigurationsdateien usw. zu lösen.

0

2 Antworten auf die Frage

0
grawity

Ein Benutzer versucht also, auf eine Box zuzugreifen, die mit den Server- und Benutzerdetails an den LDAP-Server gesendet wird. Dies würde dann prüfen, ob diese Person Zugriff auf diesen Server hat

Ja und nein. Der Zweck eines LDAP-Servers besteht darin, Informationen zu speichern und keine willkürlichen Prüfungen durchzuführen. (Es ist nur eine Datenbank.)

So können Sie dies erreichen, aber die eigentlichen Berechtigungsprüfungen werden auf der sshd-Seite durchgeführt (der Dienst selbst entscheidet, ob Benutzer akzeptiert werden oder nicht). Unter Linux geschieht dies normalerweise innerhalb des zur LDAP-Clientsoftware gehörenden PAM-Moduls (entweder nslcd oder sssd).

und möglicherweise den korrelierenden Schlüssel zurückgeben, um Zugriff zu gewähren.

Beachten Sie den Unterschied zwischen Authentifizierung und Autorisierung. Erstere überprüft, wer der Benutzer ist. Letztere überprüft, was der Benutzer tun darf.

Es ist zwar möglich, die LDAP-Software so zu konfigurieren, dass keine Schlüssel zurückgegeben werden (da bereits bekannt ist, dass der Benutzer später abgelehnt wird), LDAP-Clients funktionieren jedoch nicht standardmäßig und sind möglicherweise schwieriger zu implementieren .

Stattdessen ist es normal, dass der LDAP - Server würde immer den SSH - Schlüssel kehrt die sshd sie während der Authentifizierungsphase akzeptieren würde - denn wenn der Benutzer nicht erlaubt ist, zu verwenden, um den Server, werden sie in der Genehmigungsphase ohnehin abgelehnt werden.

Die letztere Methode hat den Vorteil, dass sie unabhängig vom Authentifizierungsmechanismus gleich gut funktioniert. Unabhängig davon, ob der Benutzer sich mit einem Kennwort, einem SSH-Schlüssel oder einer Smartcard oder einem Kerberos-Token authentifiziert, werden sie alle gleich abgelehnt (oder akzeptiert).

Nach einigen Nachforschungen scheint es möglich zu sein, dies zu tun, aber ich konnte nirgends finden, wo es für bestimmte Server ist.

Wie oben erwähnt, kann es einfacher sein, den Schlüsselabruf von der Autorisierung zu trennen.

  1. Konfigurieren Sie die LDAP-Clientsoftware (SSSD oder nslcd), um Benutzerinformationen aus dem Verzeichnis abzurufen und die Berechtigung anhand einiger Regeln zu überprüfen. (Die traditionellste Methode ist die Verwendung von host:Attributen für Benutzerkonten.)

    Testen Sie, ob pam_sss von SSSD (oder pam_ldap von nslcd) die Berechtigungen mit Hilfe von überprüft pamtester sshd Someusername acct_mgmt.

  2. Konfigurieren Sie eine AuthorizedKeysCommandin sshd_config, um die Schlüssel von LDAP abzurufen. Wenn Sie SSSD zuvor ausgewählt haben, verfügt es über ein integriertes Hilfsprogramm. Andernfalls müssen Sie möglicherweise Ihre eigenen schreiben.

stoßen Sie auf verschiedene Probleme wie Prüfsumme in Konfigurationsdateien usw.

OpenLDAP hat zwei Konfigurationsformate:

  • Eine einfache Textdatei slapd.conf, die direkt bearbeitet werden kann und keine Prüfsummen enthält.
  • Die LDAP-basierte cn=configSoftware, die - obwohl sie in Form von LDIF-Textdateien auf der Festplatte gespeichert ist - nicht direkt bearbeitet werden soll. Nachdem Sie eine cn = config erstellt haben, sollten Sie die gesamte Bearbeitung über LDAP selbst (oder slapaddggf. über) vornehmen .

Sie haben Prüfsummen gefunden, als Sie sich die 2. Variante angesehen haben. Ich kann nur davon ausgehen, dass sie als Abschreckung gegen das direkte Editieren vorhanden sind (dies ist nicht unmöglich, sollte aber nur in Notfällen durchgeführt werden).

Mein [Æ-DIR] (https://ae-dir.com), basierend auf OpenLDAP, verfügt über ACLs, die den Zugriff auf den im Eintrag des Benutzers gespeicherten SSH-Schlüssel verbieten, falls keine gültige [Login-Beziehung] (https: / /www.ae-dir.com/docs.html#eer) zwischen einem Dienst / Host und einem Benutzer (indirekt über Gruppenmitgliedschaften). Michael Ströder vor 5 Jahren 0
0
harrymc

LDAP verwaltet viele Aspekte des Netzwerks und kann auch zum Speichern von öffentlichen SSH-Schlüsseln festgelegt werden. Dazu muss der SSH-Client so konfiguriert sein, dass er die erforderlichen Informationen von LDAP abfragt.

Anweisungen zum Einrichten dieses Verfahrens finden Sie im Artikel SSH-Schlüsselauthentifizierung über LDAP zu Serverfault:

  • Aktualisieren Sie LDAP, um das OpenSSH-LPK-Schema einzuschließen
  • Erstellen Sie ein Skript, das LDAP nach dem öffentlichen Schlüssel eines Benutzers abfragt
  • Aktualisieren Sie sshd_config, um auf das Skript aus dem vorherigen Schritt zu verweisen

LDAP funktioniert in diesem Fall nur als Datenbank mit Zugriffskontrollen. Sie können ähnliche Ergebnisse ohne LDAP mit verschiedenen anderen Produkttypen erzielen, die von Unternehmens-Firewalls bis hin zu einer ausgefeilten Administration mit Single Sign-On-Lösungen reichen.

Wenn Sie andere Produkte als LDAP verwenden möchten, ist die Liste sehr lang. Ich würde die Dienste eines Unternehmens oder Beraters empfehlen, das im Bereich Netzwerksicherheit arbeitet. Die richtige Lösung für Sie hängt von vielen Faktoren ab, z. B. von Ihrem geografischen Standort, der verfügbaren Ausrüstung und nicht vom Budget.