LDAP die richtige Wahl?

0

Daher suche ich nach einer Lösung für den Zugriff auf zahlreiche Server mit SSH-Schlüsselautorisierung und bin auf die Verwendung von LDAP hingewiesen worden. Ich wollte den Anwendungsfall vorstellen und prüfen, ob LDAP anwendbar ist und ob Vorschläge oder Hilfe angebracht werden.

Wäre 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, das oben Genannte zu tun, aber ich konnte nirgendwo finden, wo es für bestimmte Server ist.

Ist auch openLDAP das Beste, ich habe versucht, dies einzurichten und stoße auf verschiedene Probleme wie Prüfsumme für Konfigurationsdateien usw.

ghost3h
quelle

Antworten:

0

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.)

Sie können dies also erreichen, aber die eigentlichen Berechtigungsprüfungen werden sshd-seitig durchgeführt (der Dienst entscheidet selbst, ob Benutzer akzeptiert werden oder nicht). Unter Linux geschieht dies normalerweise im PAM-Modul der LDAP-Client-Software (entweder nslcd oder sssd).

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

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

Also während es ist möglich Um die LDAP-Software so zu konfigurieren, dass sie keine Schlüssel zurückgibt (da sie bereits weiß, dass der Benutzer später abgelehnt wird), funktionieren LDAP-Clients standardmäßig nicht und sind möglicherweise schwieriger zu implementieren.

Stattdessen ist es normal, dass der LDAP-Server würde immer Geben Sie die SSH-Schlüssel zurück, die der sshd während der Authentifizierungsphase akzeptieren würde - denn wenn der Benutzer dies nicht darf benutzen dem Server werden sie in der Autorisierungsphase ohnehin abgelehnt.

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

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

Wie oben erwähnt, kann es einfacher sein, das Abrufen von Schlüsseln von der Autorisierung zu trennen.

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

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

  2. Konfigurieren Sie eine AuthorizedKeysCommand in sshd_config, um die Schlüssel von LDAP abzurufen. Wenn Sie sich früher für SSSD entschieden haben, ist hierfür ein Hilfsprogramm integriert. Andernfalls müssen Sie möglicherweise Ihre eigenen schreiben.

stoßen auf verschiedene Probleme wie Prüfsumme für Konfigurationsdateien usw.

OpenLDAP hat zwei Konfigurationsformate:

  • Eine einfache Textdatei slapd.conf, die direkt bearbeitet werden kann und nicht Prüfsummen haben.
  • Das LDAP-basierte cn=config, die - obwohl in Form von LDIF-Textdateien auf der Festplatte gespeichert - nicht direkt bearbeitet werden sollen. Sobald Sie eine cn = config erstellt haben, sollten Sie dies tun alles Bearbeitung über LDAP selbst (oder über slapadd wenn erforderlich).

Sie haben Prüfsummen gefunden, als Sie sich die 2. Variante angesehen haben. Ich kann nur davon ausgehen, dass sie als Abschreckung gegen direkte Bearbeitung da sind (es ist aber nicht unmöglich sollte nicht (außer in Notfällen).

grawity
quelle
Meine Æ-DIR , basierend auf OpenLDAP, verfügt über ACLs, die den Zugriff auf den im Benutzereintrag gespeicherten SSH-Schlüssel für den Fall untersagen, dass dieser ungültig ist Login-Beziehung zwischen einem Dienst / Host und einem Benutzer (indirekt über Gruppenmitgliedschaften).
Michael Ströder
0

LDAP verwaltet viele Aspekte des Netzwerks und kann auch zum Speichern von SSH eingerichtet werden öffentliche Schlüssel. Dies erfordert, dass der SSH-Client für die Abfrage von LDAP konfiguriert ist für die erforderlichen Informationen.

Anweisungen zum Einrichten finden Sie im Artikel Serverfehler SSH-Schlüsselauthentifizierung über LDAP in Bezug auf:

  • 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 sshd_config um auf das Skript aus dem vorherigen Schritt zu verweisen

LDAP fungiert in diesem Fall nur als Datenbank mit Zugriffskontrollen. Sie können ähnliche Ergebnisse ohne LDAP mit verschiedenen anderen Arten von Produkten erzielen, von Firewalls für Unternehmen bis hin zu anspruchsvollen Verwaltungsangeboten Single-Sign-On-Lösungen.

Wenn Sie andere Produkte als LDAP verwenden möchten, ist die Liste sehr lang. Ich würde raten, die Dienste eines Unternehmens oder eines Beraters in Anspruch zu nehmen, der funktioniert im Bereich der Netzwerksicherheit. Die richtige Lösung für Sie hängt davon ab von vielen Faktoren, wie Ihrem geografischen Standort, der verfügbaren Ausrüstung, und nicht zu vergessen, Budget.

harrymc
quelle