Rulez un server de autentificare Kerberos / LDAP de mulți ani. Datele Kerberos sunt stocate în LDAP. Acum, am un al doilea site și vreau să oglindesc serverul pe noul site. Practic funcționează, dar există un efect secundar ciudat. Fiecare server are un KDC și un LDAP care rulează. KDC vorbește cu LDAP folosind local ldapi:///.
Dacă folosesc KDC-ul original krb1.example.com
Mă pot autentifica la master LDAP și replica. Dacă folosesc KDC-ul replicat krb2.example.com
, încă mă pot autentifica la master LDAP, dar încercând replica pe care o obțin
Autentificarea SASL/GSSAPI a început
ldap_sasl_interactive_bind_s: Eroare locală (-2)
informații suplimentare: SASL(-1): eroare generică: Eroare GSSAPI: Eroare GSS nespecificată. Codul minor poate oferi mai multe informații (KDC nu are suport pentru tipul de criptare)
Ceea ce este ciudat, din moment ce krb2
este literalmente o clonă pe containerul LXC krb1
adicăconfigurațiile sunt identice sigure pentru modificările necesare pentru replicare. Dar și mai multă încurcătură este o privire în memoria cache a biletelor după ce ați încercat să interogați oricare dintre serverele LDAP. Cu un TGT de la krb1
root@krb2:/# klist -e
Cache-ul biletelor: FILE:/tmp/krb5_cc_0.tkt
Principalul implicit: [email protected]
Valabil începând cu expiră principalul serviciului
04.02.2022 01:05:29 04.02.2022 11:05:29 krbtgt/[email protected]
reînnoiește până la 05.02.2022 01:05:26, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
04.02.2022 01:05:42 04.02.2022 11:05:29 ldap/[email protected]
reînnoiește până la 05.02.2022 01:05:26, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
04.02.2022 01:05:53 04.02.2022 11:05:29 ldap/[email protected]
reînnoiește până la 05.02.2022 01:05:26, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
iar din krb2
:
root@krb2:/# klist -e
Cache-ul biletelor: FILE:/tmp/krb5_cc_0.tkt
Principalul implicit: [email protected]
Valabil începând cu expiră principalul serviciului
04.02.2022 00:53:45 04.02.2022 10:53:45 krbtgt/[email protected]
reînnoiește până la 05.02.2022 00:53:41, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
04.02.2022 00:53:47 04.02.2022 10:53:45 ldap/[email protected]
reînnoiește până la 05.02.2022 00:53:41, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
care nu are intrare pt ldap/krb2.example.com
din cauza erorii. Dar se pare că nu există nicio diferență între tipurile de criptare necesare. Deci, de ce se plânge?
În prezent, ambele servere LDAP se referă la krb1
. Dar, datorită replicării LDAP, toate cheile ar trebui să fie identice, adică o cheie de la krb1
ar trebui să fie la fel ca de la krb2
, nu ar trebui? Și dacă cheile de la krb1
funcționează pentru ambele servere LDAP, de ce cheia de la serverul replica funcționează doar pentru LDAP principal?
suported_enctypes
pentru tărâmul în ambele /etc/krb5kdc/kdc.conf
sunt supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
. Nu există directive enctype în niciunul /etc/krb5.conf
. Nu sunt ssf
configurație utilizată fie în LDAP. The krbPrincipalName
intrări pentru krb2
există atât în LDAP.
Chiar daca obtin TGT-ul de la krb2
și apoi comutați krb5.conf
la krb1
pentru biletul de serviciu, mă pot autentifica la LDAP activat krb2
.
OpenLDAP este în versiunea 2.4.47, Kerberos 1.17 pe ambele mașini (debian stabil în prezent).
Actualizați: S-a dovedit că replicarea este incompletă, adică krbPrincipalKey
nu este (în mod fiabil) replicat. Am verificat slapd
ieșire de depanare:
9 februarie 19:14:52 krb1 slapd[19560]: conn=1300 op=3 BIND authcid="sync/[email protected]" authzid="dn:uid=sync/krb2.example.com, cn=example.com,cn=gssapi,[email protected]"
9 februarie 19:14:52 krb1 slapd[19560]: conn=1300 op=3 BIND dn="cn=admin,dc=example,dc=com" mech=GSSAPI sasl_ssf=256 ssf=256
Asa de, sinprov
se leagă aparent ca cn=admin,dc=exemplu,dc=com
, ceea ce este destinat.Totuși, dacă o fac
root@krb1:~# ldapsearch -b 'cn=KERBEROS,dc=example,dc=com' -D 'cn=admin,dc=example,dc=com' -Wx 'krbPrincipalName=ldap/krb2.example.com@ EXAMPLE.COM'
atunci văd krbPrincipalKey
. Deci de ce nu este replicat?
repornesc slapd
pe krb2
cu optiuni -c rid=1,csn=0
, despre care am înțeles că ar trebui să sincronizeze întreaga bază de date. Dar din moment ce unele intrări au o cheie, iar altele nu, nu am încredere că acest lucru este adevărat.