使用 bcrypt 密码哈希算法和 OpenLDAP(slapd)

使用 bcrypt 密码哈希算法和 OpenLDAP(slapd)

我在 Debian 9 上有一个 OpenLDAP LDAP 服务器(通过 slapd 包,v2.4.44)。我们使用 crypt 进行密码验证。当前方案是 SHA512:。$5$...设置
与这个问题中描述的差不多:如何在 pam_ldap 中使用来自 OpenLDAP 的 SHA-256 散列(和加盐)密码?(并参见https://en.wikipedia.org/wiki/Crypt_(C)

我在想我会尝试从 SHA512 升级到 bcrypt(blowfish hashes,$2y$...),因为它们更难破解。

crypt 后端的妙处在于方案保存在密码本身中。因此,要测试 bcrypt,我只需登录 LDAP 浏览器,将自己的密码更改为{CRYPT}$2y$10$...$,然后使用在线工具生成哈希值即可。

但是,如果我现在尝试使用该帐户登录,它会说我的凭据无效。

顺便说一下,通过上述过程,我可以成功将哈希更改为其他类型,并且仍然可以登录。似乎 bcrypt 无法被识别,但我希望有这个选项。

那么,我还需要做什么才能让 OpenLDAP 与 bcrypt 一起工作?

答案1

我让它工作了。看来的发布版本libcrypt根本不支持 bcrypt。

下列的这篇博客来自 2019 年,我下载并构建了一个libcrypt包含 bcrypt 的扩展(并且向后兼容)

我将复制以下步骤以防博客消失:

  • 克隆或下载libxcrypt库:https://github.com/besser82/libxcrypt(我有版本 4.4.3
  • 使用以下命令构建源代码:
    $ ./bootstrap && ./configure && make
    • 您可能需要软件包autoconfautomake和(有关详细说明libtoolpkg-config请参阅 repo Readme)
  • 安装新编译的libcrypt
    $ cp ./.libs/libcrypt.so.1.1.0 /lib/x86_64-linux-gnu
  • 备份旧内容libcrypt
    $ cd /lib/x86_64-linux-gnu && cp libcrypt.so.1 libcrypt.so.1.0.0
  • 现在将其替换libcrypt为新版本的链接:
    $ rm libcrypt.so.1 && ln -s libcrypt.so.1.1.0 libcrypt.so.1

警告:如果libcrypt丢失或损坏,您的系统将无法执行任何身份验证!包括登录和sudo ...命令。因此,请确保一次性替换文件,并做好完全锁定的准备

经过这些更改,{CRYPT}$2y$...哈希值已被接受!
我使用 PHPcrypt()函数来创建新的密码哈希值。

答案2

OpenLDAP 有一个非官方的 bcrypt 模块,网址为https://github.com/wclarie/openldap-bcrypt/

然而,我强烈建议使用包含对 Argon2 密码哈希支持的 OpenLDAP 版本。

相关内容