LDAP Syncrepl mit Kerberos-Authentifizierung

LDAP Syncrepl mit Kerberos-Authentifizierung

Ich versuche, mit syncrepl einen Replikationsserver für LDAP einzurichten. Ich möchte Kerberos zur Authentifizierung des Verbrauchers verwenden, da wir es eingerichtet haben und es sicherer erscheint. Die Datenbankdefinitionen für meinen Anbieter und Verbraucher finden Sie unten.

Wenn ich den Verbraucher starte, erhalte ich diesen Fehler:

GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information 
(Credentials cache file '/tmp/krb5cc_55' not found)

Ich denke, das bedeutet, dass der Verbraucher kein gültiges TGT hat. Wie konfiguriere ich den Verbraucher, damit er ein gültiges TGT erhält? Ich habe einige ältere Quellen gelesen, die die Verwendung von k5start oder eines Cron-Jobs empfehlen. Ist das immer noch die richtige Vorgehensweise?

Die Manualpages von slapd.conf geben an, dass authcidund authzidin Verbindung mit verwendet werden können bindmethod=sasl, aber es wird nicht angegeben, wie diese formatiert werden sollen. Soll ich hier einen DN oder einen Kerberos-Principal oder vielleicht etwas anderes angeben? Muss ich diese angeben?

Ich danke Ihnen für Ihre Hilfe

Verbraucherkonfiguration:

database        bdb
suffix          "dc=example"
rootdn          "uid=someuser,cn=realm,cn=gssapi,cn=auth"
directory       /var/lib/ldap
dirtyread
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
syncrepl rid=1
    provider=ldap://provider.realm
    type=refreshAndPersist
    starttls=yes
    searchbase="dc=example"
    schemachecking=off
    bindmethod=sasl
    saslmech=gssapi
    retry="10 +"

Anbieterkonfiguration

database        bdb
suffix          "dc=example"
rootdn          "uid=someuser,cn=realm,cn=gssapi,cn=auth"
directory       /var/lib/ldap
dirtyread
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100

Antwort1

Ich denke, das bedeutet, dass der Verbraucher kein gültiges TGT hat.

Ja, das ist genau, was es bedeutet.

Wie konfiguriere ich den Verbraucher, um ein gültiges TGT zu erhalten? Ich habe einige ältere Quellen gelesen, die die Verwendung von k5start oder eines Cron-Jobs empfehlen. Ist das immer noch die richtige Vorgehensweise?

Bei cron bin ich mir nicht sicher, aber k5start ist trotzdem eine gute Methode.

Das neue MIT Kerberos unterstützt jedoch eine integrierte Methode namensClient-Keytab-Initiierung, das viel einfacher einzurichten ist: Fügen Sie es einfach $KRB5_CLIENT_KTNAMEzur slapd-Umgebung hinzu und richten Sie es auf dieselbe Datei wie $KRB5_KTNAME. (Dies setzt voraus, dass Sie ein separates Keytab für haben ldap/*. Das sollten Sie.)

Und schließlich können Sie slapd anweisen, gss-proxy zu verwenden, was wie ssh-agent für Kerberos ist. Richten Sie GSS_USE_PROXY=1/etc/gssproxy ein und konfigurieren Sie es so, dass slapd sowohl als Initiator (Client) als auch als Akzeptor (Server) erkannt wird.

In den Manualpages von slapd.conf steht, dass authcid und authzid in Verbindung mit bindmethod=sasl verwendet werden können, aber es wird nicht angegeben, wie diese formatiert werden sollen. Soll ich hier einen DN oder einen Kerberos-Principal oder vielleicht etwas anderes angeben? Muss ich diese angeben?

Ich kann mich nicht erinnern, welchen Zweck dieAuth-IDdient mit GSSAPI (falls überhaupt vorhanden) – Wenn ich mich richtig erinnere, verwendet dieser Mechanismus automatisch die aus Ihrem Ticket ermittelte Identität, sodass Sie diese nicht manuell angeben müssen.

Auf der akzeptierenden Seite konvertiert slapd den empfangenen Kerberos-Prinzipal in einen Pseudo-DN wie uid=foo@realm,cn=gssapi,cn=auth, und Sie können ihn direkt in den ACLs verwenden oderAuthz-regulärer Ausdruck(auch bekannt alsolcAuthzRegexp), um es in einen schöneren DN zu übersetzen.

In der Zwischenzeit,AuthZIDfunktioniert unabhängig vom Mechanismus auf die gleiche Weise. Es ist optional, aber wenn Sie es angeben, muss es entweder ein DN mit dem Präfix sein dn:oder ein Benutzername mit dem Präfix u:. (Benutzernamen werden hier, wie Authcids, in einen Pseudo-DN umgewandelt und durchlaufenolcAuthzRegexp, und der resultierende DN wird verwendet.)

Wenn die Richtlinien es zulassen, erteilt Ihnen slapd die Berechtigungen, die die Authzid hat. (Das ist wie sudo für LDAP.)

Antwort2

Ich habe Syncrepl mit Kerberos-Authentifizierung mit der folgenden Konfiguration zum Laufen gebracht.Diese Internetseiteüber nslcd.conf heißt es, dass dies authziddie Form „dn:<distinguished name>“ oder „u:<user name>“ haben sollte. Ich habe auch k5start verwendet, um eine Cache-Datei für someuser@REALMat zu erstellen /tmp/krb5cc_55, und habe dies getan chown ldap:ldap. Beachten Sie, dass 55 die LDAP-UID ist; ich bin mir jedoch nicht sicher, ob es notwendig ist, die Datei so zu benennen. In meiner Providerkonfiguration habe ich someuserals angegeben rootdn, um Zugriff auf die gesamte Datenbank zu ermöglichen.

Ich möchte nur klarstellen, dass dies bei mir funktioniert hat. Meine Kenntnisse von LDAP sind jedoch begrenzt. Daher kann ich nicht garantieren, dass es auch anderswo funktioniert. Außerdem weiß ich nicht, ob alles in dieser Konfiguration erforderlich ist.

syncrepl rid=1
    provider=ldap://provider.realm
    type=refreshAndPersist
    starttls=yes
    searchbase="dc=realm"
    schemachecking=off
    retry="10 +"
    tls_cacert="/path/to/ca.crt"
    bindmethod=sasl
    saslmech=gssapi
    authcid="someuser@REALM"
    authzid="uid=someuser,cn=realm,cn=gssapi,cn=auth"

verwandte Informationen