Am enumerat utilizatorii cu parolele lor folosind ldapsearch
iar parolele nu sunt listate în text clar, dar confirmă asta cu adevărat că nu sunt stocate în text clar?
Da, nu, poate.
Cred ldapsearch
și de exemplu a suprapunerea politicii de parole nu înlocuiți parolele de text clar stocate cu o versiune criptată sau hashing în răspunsurile de căutare. Criptarea/hashing-ul parolelor cu text clar are loc numai atunci când parolele sunt setate/actualizate. Cred că în acest sens poți avea încredere în ce ldapsearch
iti arata.
Dar ambele ldapsearch
și slapcat
afişa Parolă de utilizator
în format codificat în base64. Un colon dublu ::
după ce numele atributului este folosit pentru a indica faptul că valoarea este codificată în bază64.
userPassword:: c2VjcmV0LXBhc3N3b3JkCg==
userPassword:: e1NTSEF9RGtNVHdCbCthLzNEUVR4Q1lFQXBkVXROWEdnZFVhYzMK
De fapt, nu veți ști până când nu decodați acel șir de caractere de bază64 dacă parola este hashing sau text clar. Dacă găsiți doar parole sub formă de {prefix hash} sare/valoare
:
userParola: {SSHA}DkMTwBl+a/3DQTxCYEApdUtNXGgdUac3
userParola: {SSHA}d0Q0626PSH9VUld7yWpR0k6BlpQmtczb
userParola: {CRYPT}$1$czBJdDqS$TmkzUAb836oMxg/BmIwN.1
userParola: {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==
userPassword: {SMD5}4QWGWZpj9GCmfuqEvm8HtZhZS6E=
atunci ești bun. Parolele fără un astfel de prefix sunt text simplu.
Doar verificarea fișierului de configurare nu este suficientă.
Într-adevăr. Când hashing/criptarea parolei este activată/schimbată, nici parolele de text clar existente, nici parolele existente criptate cu algoritmi diferiți nu sunt convertite.
Din câte știu, după modificarea politicii implicite de parolă, textul clar existent și parolele hashing cu alți algoritmi nici nu vor înceta să funcționeze, demonul ldap pur și simplu iterează prin toate mecanismele acceptate ori de câte ori se face o cerere de autentificare.
Pentru a inspecta conținutul datelor stocate efectiv în OpenLDAP, cel mai ușor este probabil exportarea bazei de date într-un format LDIF care poate fi citit cu slapcat
; extrageți toate valorile atributelor userPassword din acel LDIF și decodificați-le în base64.