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: user@EXAMPLE.COM
Valabil începând cu expiră principalul serviciului
04.02.2022 01:05:29 04.02.2022 11:05:29 krbtgt/EXAMPLE.COM@EXAMPLE.COM
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/krb1.example.com@EXAMPLE.COM
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/krb2.example.com@EXAMPLE.COM
reînnoiește până la 05.02.2022 01:05:26, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96iar din krb2:
root@krb2:/# klist -e
Cache-ul biletelor: FILE:/tmp/krb5_cc_0.tkt
Principalul implicit: user@EXAMPLE.COM
Valabil începând cu expiră principalul serviciului
04.02.2022 00:53:45 04.02.2022 10:53:45 krbtgt/EXAMPLE.COM@EXAMPLE.COM
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/krb1.example.com@EXAMPLE.COM
reînnoiește până la 05.02.2022 00:53:41, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96care 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/krb2.example.com@EXAMPLE.COM" authzid="dn:uid=sync/krb2.example.com, cn=example.com,cn=gssapi,cn=auth@EXAMPLE.COM"
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.