
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 authcid
und authzid
in 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_KTNAME
zur 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 authzid
die Form „dn:<distinguished name>“ oder „u:<user name>“ haben sollte. Ich habe auch k5start verwendet, um eine Cache-Datei für someuser@REALM
at 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 someuser
als 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"