Kerberos- und LDAP-komplexe Beziehung

1079
adrin

Ich habe Probleme, die Beziehung zwischen LDAP und Kerberos (konzeptuell) zu verstehen.

Ich verstehe LDAP als Verzeichnisdienst und Kerberos als Authentifizierungsdienst.

Wir wissen auch, dass LDAP auch Kennwörter speichern kann. Das Design von LDAP ist jedoch ein öffentlich zugängliches Verzeichnis, das nicht zum Speichern vertraulicher Informationen geeignet ist. Aus diesem Grund wird es bevorzugt, die Authentifizierung an einen anderen Dienst wie Kerberos zu delegieren.

Was ich jetzt nicht verstehe, sind diese zwei Fragen:

  1. An welchen Server senden Clients ihre Anfrage, wenn ein Benutzer versucht, sich anzumelden? Meine Intuition sagt mir, dass dies der Kerberos-Server sein muss. Wenn ja, wo kommt der LDAP-Server an?
  2. Wo legt der Sysadmin Berechtigungen fest? In diesem Fall sagt mir meine Intuition LDAP. Ich kann mir vorstellen, dass es für jedes System und / oder jeden Dienst einen Eintrag geben könnte, auf den Benutzer über Gruppenmitgliedschaften oder direkt Zugriff erhalten werden. Wenn ja, bedeutet dies, dass der LDAP-Server (über eine Schnittstelle wie phpLDAPadmin) Gruppen und Benutzer entsprechend im Kerberos-Server festlegt?

Ich bin besonders verwirrt, weil ich in beiden Dokumentationen die Verbindung zwischen LDAP und Kerberos sehe. LDAP spricht über die Authentifizierung Kerberos zum Delegieren von hier, und Kerberos spricht über LDAP mit als Backend hier .

Alle Dokumentationen, die ich gelesen habe, scheinen Teile eines Puzzles zu sein, das ich nicht zusammenstellen kann. Ich weiß es zu schätzen, wenn jemand erklären könnte, wie es geht.

1

3 Antworten auf die Frage

2
Willie

Oh, es ist lange her. Mal sehen, woran ich mich erinnern kann.

Ja, das kann auf jeden Fall verwirrend sein, da Sie Kerberos zur Authentifizierung für LDAP verwenden können und Kerberos auch LDAP als Backend verwenden kann. Obwohl es sich nicht um dasselbe handelt, ist es oft schwer zu unterscheiden, worüber man gerade spricht, wenn man danach sucht. Ich kann nur über LDAP sprechen, das Kerberos für die Authentifizierung verwendet, da ich keine Erfahrung damit gemacht habe.

  1. Ihre Intuition hat Recht, dass der Kerberos-Server verwendet wird. Nach meinem Verständnis fordert der Client ein TGT vom Kerberos-Server für den LDAP-Server an (unter Verwendung des Dienstprinzipalnamens "ldap/hostname@DOMAIN.NAME" oder ähnlich). Damit kann sich der Client beim LDAP-Server anmelden, da er das Ticket validieren kann. Das Clientkennwort selbst wird niemals an den LDAP-Server gesendet.
  2. Dies ist, wenn Sie LDAP als Backend für Kerberos verwenden. Sie können hier ein LDAP-Verzeichnis verwenden, um Attribute und Werte für verschiedene Zwecke zu speichern. Sie müssen LDAP natürlich nicht als Backend für Kerberos verwenden.

Die Dinge werden noch schwieriger, wenn sie anfangen, über SASL zu sprechen, da es schwierig ist zu sagen, ob sie am Front-End oder am Back-End von LDAP über SASL sprechen. Werden die Clients also zur Authentifizierung bei LDAP verwendet? Oder wird es von LDAP verwendet, um das Kennwort an eine andere Authentifizierungsquelle weiterzugeben? Nur ein paar Vorsichtsmassnahmen.

Nebenbei: Es ist möglich, ein einfaches Binden mit LDAP zu verwenden. Senden Sie das Kennwort an den LDAP-Server, der das Kennwort an eine andere Authentifizierungsquelle (wie Kerberos) weiterleitet. Wenn Sie so etwas tun, ist es nett, weil das Kennwort selbst nicht in LDAP gespeichert ist. Da es sich bei einer einfachen Bindung jedoch um Klartext handelt, sollten Sie sicherstellen, dass TLS zwischen dem Client und dem LDAP-Server verwendet wird.

Hoffe das hilft nur ein bisschen. Klingt, als hätten Sie im Grunde die richtige Idee.

1
Iain Conochie

Ihre Intuition ist in beiden Fällen auf Kurs. Nehmen wir beide Fragen nacheinander an.

  1. Hier ist der Kerberos-Dienst das Authentifizierungssystem . Der Client erhält ein verschlüsseltes Ticket vom Kerberos-Server (bei erfolgreicher Authentifizierung natürlich) und zeigt dieses dann dem Server an, um zu zeigen, dass er authentifiziert ist.
  2. Der LDAP-Dienst ist hier das Berechtigungssystem . Benutzerinformationen werden in dem Verzeichnis gespeichert (z. B. UID / GID usw.). Im Wesentlichen ersetzt dies die Informationen in / etc / passwd. Der ldap-Server aktualisiert keine Informationen auf dem Kerberos-Server.
0
Shane

Das hängt wirklich von Ihrem Setup ab. Ich habe schon eine Weile damit gerungen, aber ich bin kein Experte.

Für einen Systemadministrator kann die Beziehung zwischen LDAP und Kerberos so einfach sein wie eine Maschine, die beide verwendet. Ihr Setup könnte so einfach sein wie die Verwendung von LDAP als Quelle für / etc / passwd und / etc / group über nsswitch.conf (und ein Plugin wie nss-pam-ldapd von archlinux repo), wobei das userPassword-Attribut in LDAP als Ausrufezeichen verbleibt Punkt oder Stern (bedeutet kein Passwort und keine Anmeldefähigkeit).

Ein Kerberos-KDC, das die Kennwortauthentifizierung für beliebige Computer bereitstellt, bei denen sich die System-Login-Integration je nach dem angebotenen Dienst unterscheidet. Wenn es sich beispielsweise um einen Remote-Computer handelt, der nur Zugriff über ssh benötigt, stellt LDAP immer noch die gleichen Informationen bereit wie überall, Kerberos jedoch nur wenige Zeilen in den ssh-Konfigurationsdateien. Auf einem anderen System, bei dem eine vollständige Login-Integration erforderlich ist, kann dies zu einem RIESIGEN Ärger werden, da viele Änderungen an der PAM-Konfiguration erforderlich sind. Dies ist bei RHEL-Clients mit authconfig problemlos möglich, aber Sie sollten an anderer Stelle große Kopfschmerzen haben, es sei denn, Sie sind mit PAM vertraut. Das Positive an der Verwendung von PAM ist jedoch, dass die meisten Programme (wie ssh) PAM verwenden können, sodass Sie sich nicht mehr um die ssh config kümmern müssen.

Mit anderen Worten: Wenn KDC nicht verfügbar ist, akzeptiert das System Ihr Passwort niemals richtig (oder weiß nicht, dass Sie aufgrund von LDAP ein Benutzer sind). Wenn der LDAP-Server ausgefallen ist, wird das System den Eindruck haben, dass Ihr Benutzername nicht funktioniert. t existieren.

@adrin die 'Berechtigungen' können im Systemintegrationsteil enthalten sein. Wenn Sie nber (Linux / Unix) verwenden, um Kerberos-Authentifizierung in die Autorisierung des Systems zu integrieren, können Sie einige Berechtigungszuordnungen in /etc/nsswitch.conf [http://arthurdejong.org/nss-pam-ldapd/] vornehmen Weitere Mapping-Optionen finden Sie unter [https://help.ubuntu.com/community/LDAPClientAuthentication]. Shane vor 9 Jahren 0