Estou usando o OpenLDAP 2.6. Quando eu defino a senha de um objeto via
ldappasswd -x -D <dn of root user> -W -S <dn of object whose pwd shall be set>
então algum hash da senha acaba no atributo userPassword
.
Qual função hash ldappasswd
usa? Como configuro a função hash? Pelo que parece, presumo que o padrão seja um SHA1 que não é mais seguro.
Tecnicamente nenhum - apenas invoca a operação estendida LDAP 'Alterar senha', que faz com que o servidor LDAP use alguma função hash que considere apropriada (e armazene o hash onde achar apropriado - não necessariamente em userPassword).
Portanto, o hash usado pela exop 'Alterar senha' é configurado no lado do servidor. Para OpenLDAP, esse é o
olcPasswordHash
parâmetro cujo padrão é "SSHA" (SHA-1 salgado e iterado), semelhante aos$1$
hashes. Se você quiser algo mais forte, você pode escolher{CRYPT}
usar quaisquer algoritmos de hash que a função crypt() do sistema forneça (ou seja, o mesmo que com /etc/shadow – possivelmente bcrypt ou yescrypt se o sistema operacional usar libxcrypt, caso contrário, o mesmo tipo de SHA salgado ), ou{ARGON2}
se você tiver o módulo slapd-argon2 adicional instalado (faz parte do OpenLDAP, mas está na árvore "contrib").password-hash {SSHA}
olcPasswordHash: {SSHA}
password-hash {CRYPT}
password-crypt-salt-format $y$%.16s
(não testado, mas acho que deve funcionar)
olcPasswordHash: {CRYPT}
olcPasswordCryptSaltFormat: $y$.16s
moduleload argon2
password-hash {ARGON2}
olcModuleLoad: argon2
olcPasswordHash: {ARGON2}