Come testare ldap che si autentica con Kerberos

2

Voglio testare una directory ldap con ldapsearch . Nessuna password è memorizzata nella directory LDAP. Le password degli account sono memorizzate in Kerberos e LDAP contiene un puntatore al principal Kerberos. Il ldap ha un attributo userPassword

Attribute Name: 'userPassword'
OID:    2.5.4.35
URN:    urn:oid:2.5.4.35
Multiple Values:    Multi-valued (treated as Single-valued) 

Ho provato a cercare un utente con il comando

$ ldapsearch -vvv -x -D 'cn=xxxxxx,ou=xxx,dc=xxxx,dc=xxx' -h 'xxxxxxxx.xxxx.xxx' -W
ldap_initialize( ldap://xxxxxxxx.xxxx.xxx )
Enter LDAP Password:
ldap_bind: Invalid credentials (49)

Sembra che il server ldap non possa ottenere le credenziali poiché non memorizza le password. La ricerca può essere fatta in queste circostanze? Come autenticare gli accessi usando ldap via kerberos?

    
posta user2196452 11.08.2014 - 05:42
fonte

1 risposta

2

Qui ci sono due possibili metodi di autenticazione:

  1. "Falso" Kerberos, in cui il server LDAP riceve una password semplice e la controlla cercando di ottenere un TGT usando quella password. Affinché funzioni con OpenLDAP, è necessario:

    • L'attributo userPassword deve essere impostato sul valore speciale {SASL}user@REALM (con l'attuale capitale Kerberos ovviamente). Il testo dopo {SASL} è il nome utente che OpenLDAP assegnerà a libsasl, insieme alla password ricevuta.

    • libsasl deve essere configurato per utilizzare saslauthd come meccanismo di controllo della password, inserendo quanto segue in /usr/lib/sasl2/slapd.conf :

      pwcheck_method: saslauthd
      

      E un'altra linea per offrire il meccanismo PLAIN SASL:

      mech_list: plain
      
    • Sul server stesso, il demone saslauthd deve essere in esecuzione (fa parte di libsasl, di solito il pacchetto "cyrus-sasl" o "sasl2-bin"). Questo demone esegue la verifica della password effettiva per conto di OpenLDAP o di altri server.

    • Il daemon saslauthd deve anche essere configurato per utilizzare Kerberos 5 utilizzando ‑a kerberos5 come opzione della riga di comando.

    Con questo, dovresti essere in grado di usare la tua password Kerberos con un semplice binding ( ldapsearch ‑x ‑D ... ‑W ) o un binding PLAIN SASL ( ldapsearch ‑Y PLAIN ). È comunque ancora "finto", in quanto non sfrutta le funzionalità di Kerberos per proteggere la password attraverso la rete.

  2. "Reale" Kerberos, in cui il server LDAP riceve un ticket Kerberos e lo confronta con il keytab locale, senza dover mai rivelare la password. Affinché funzioni con OpenLDAP, è necessario:

    • Il keytab del sistema deve avere le chiavi per il ldap/fqdn@REALM principal, dove fqdn deve corrispondere al DNS inverso dell'indirizzo IP del server. Puoi utilizzare il comando ktadd in kadmin per estrarre le chiavi in un keytab.

    • Il keytab deve essere accessibile anche da OpenLDAP (di solito l'account ldap o slapd ). (Se necessario, puoi usare un file keytab separato dal sistema, in questo caso, OpenLDAP deve avere la variabile di ambiente $KRB5_KTNAME che punta al keytab dedicato.)

    • libsasl sul server deve essere configurato per offrire i meccanismi GSSAPI e / o GS2-KRB5. Di solito è l'impostazione predefinita, ma potrebbe avere bisogno di mettere quanto segue in /usr/lib/sasl2/slapd.conf :

      mech_list: gs2-krb5 gssapi plain
      

      Poiché non c'è alcuna verifica della password sul server, saslauthd è facoltativo.

    Con questo, dovresti essere in grado di kinit su un client e utilizzare il ticket ottenuto con SASL GSSAPI bind ( ldapsearch -Y GS2-KRB5 o ldapsearch -Y GSSAPI ).

risposta data 06.10.2014 - 13:31
fonte

Leggi altre domande sui tag