我在 OpenLDAP 中对密码进行了哈希处理和加盐处理,以便通过 Linux 中的 PAM 登录。当哈希为 SHA-1(加盐或不加盐)类型或纯文本时,设置有效。在这些情况下,一切正常,用户可以使用这些凭据登录。
如果我切换到加盐的 SHA-256 (SSHA-256) 密码,则用户无法使用正确的密码登录。 pam_ldap 可能不理解 SHA-256?我找不到任何说明此限制的文档,但也找不到显示这是可能的配置示例。
我该怎么办?为 SHA-256 配置/编译 pam_ldap?使用 PAM 以外的其他东西吗?
我被迫使用加盐 SHA-256,因为凭据已经存在于另一个(领先的)数据存储中,并且必须同步到 OpenLDAP。
答案1
看到 CRYPT 函数了吗? https://www.redpill-linpro.com/techblog/2016/08/16/ldap-password-hash.html
OpenLDAP 直通身份验证
OpenLDAP 还可以使用外部进程来验证和散列密码。这些方案是:
CRYPT - 将使用操作系统的 crypt 库作为密码处理程序 SASL - 将使用 Cyrus SASL 作为密码处理程序 Cyrus SASL 上次更新是在 2012 年,但 CRYPT 是 POSIX API 的一部分,应该不断更新。那么 - CRYPT 能为我们提供最新的哈希值吗?
Crypt 来救援
事实证明,基于 Linux 的 glibc 版本的 crypt 通过在密码哈希中编码的附加版本控制方案(有时称为模块化 crypt 格式)支持附加加密方案:
1 - MD5 2a - Blowfish/bcrypt 5 - SHA-256 6 - SHA-512