![如何定义 ldappasswd 使用的密码保护方案(例如哈希函数)?](https://linux22.com/image/790240/%E5%A6%82%E4%BD%95%E5%AE%9A%E4%B9%89%20ldappasswd%20%E4%BD%BF%E7%94%A8%E7%9A%84%E5%AF%86%E7%A0%81%E4%BF%9D%E6%8A%A4%E6%96%B9%E6%A1%88%EF%BC%88%E4%BE%8B%E5%A6%82%E5%93%88%E5%B8%8C%E5%87%BD%E6%95%B0%EF%BC%89%EF%BC%9F.png)
我使用的是 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} |