我使用的是 OpenLDAP 2.6。当我通过以下方式设置对象密码时
ldappasswd -x -D <dn of root user> -W -S <dn of object whose pwd shall be set>
然后密码的某些哈希值最终会出现在属性中userPassword
。
使用什么哈希函数ldappasswd
?如何配置哈希函数?从外观来看,我认为它默认使用不再安全的 SHA1。
答案1
ldappasswd 使用什么哈希函数?
从技术上讲,没有——它只是调用“更改密码”LDAP 扩展操作,这会导致 LDAP服务器使用它认为合适的一些哈希函数(并将哈希存储在它认为合适的任何地方 - 不一定在用户密码中)。
因此,“更改密码”exop 使用的哈希是在服务器端配置的。对于 OpenLDAP,该olcPasswordHash
参数默认为“SSHA”(加盐迭代 SHA-1),类似于$1$
哈希。如果您想要更强大的算法,您可以选择{CRYPT}
使用系统的 crypt() 函数提供的任何哈希算法(即与 /etc/shadow 相同 - 如果操作系统使用 libxcrypt,则可能是 bcrypt 或 yescrypt,否则使用相同类型的加盐 SHA),或者 {ARGON2}
如果您安装了附加的 slapd-argon2 模块(它是 OpenLDAP 的一部分,但位于“contrib”树中)。
slapd配置文件 | cn=配置 |
---|---|
默认(迭代/加盐 SHA-1):password-hash {SSHA} |
默认:olcPasswordHash: {SSHA} |
如果正在使用 libxcrypt,则使用 yescrypt 的系统 crypt():(password-hash {CRYPT} password-crypt-salt-format $y$%.16s 未经测试,但我认为应该可行) |
使用 yescrypt 的系统 crypt():olcPasswordHash: {CRYPT} olcPasswordCryptSaltFormat: $y$.16s |
如果 slapd 模块可用,则使用 Argon2:moduleload argon2 password-hash {ARGON2} |
如果 slapd 模块可用,则使用 Argon2:olcModuleLoad: argon2 olcPasswordHash: {ARGON2} |