您如何为 OpenLDAP 设置密码哈希?

Cpp*_*ner 7 openldap ldap

我在 Ubuntu 12.04 上有以下版本:

OpenLDAP: slapd  (Sep 19 2013 22:49:31) $
buildd@batsu:/build/buildd/openldap-2.4.28/debian/build/servers/slapd
Run Code Online (Sandbox Code Playgroud)

OpenLDAP 现在提供 SSHA 作为默认哈希。我想使用不同的哈希。然而,旧的教程基于编辑/etc/ldap/slapd.conf,在较新版本的 OpenLDAP 中已经消失。我应该更改哪个文件?

Cpp*_*ner 11

好的。我在 IRC 和阅读手册页的帮助下发现了这一点。

假设您不想重新创建任何东西,只想将密码哈希添加到现有的 LDAP 后端,并且您正在运行 Ubuntu(这仅在 Ubuntu 机器上测试,但该方法应该与操作系统无关):

我们将ldapmodify用于添加、修改和删除条目。

第 1 步:创建 test.conf

我们将创建一个名为的文件test.conf并添加以下内容:

dn: olcDatabase={-1}frontend,cn=config
add: olcPasswordHash
olcPasswordHash: {CRYPT}
Run Code Online (Sandbox Code Playgroud)

dn如果您有不同的数据库,则不同。我一开始不知道该放在哪里,所以我模拟了:

sudo su            # do this as root
cd /etc/ldap/
mkdir test.d
slaptest -f test.conf -F test.d
Run Code Online (Sandbox Code Playgroud)

最后一个命令将转换现有的test.conf(我的名字在著名的老的slapd.conf)为新的cn=config格式。

如果您找到treetest.d目录,并且如果您阅读每个 ldif 文件,您将准确找到要修改的文件。在我的情况下(可能适用于所有 Ubunut 用户),它将是olcDatabase={-1}frontend.ldif.

另一件事是cn=config。这是因为该 ldif 文件存在于cn=config目录下。

这是找出属性应该属于哪里的好方法。

第 2 步:运行 ldapmodify

root@test32giab:/etc/ldap# ldapmodify -Y EXTERNAL -H ldapi:/// -f test.conf

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={-1}frontend,cn=config"
Run Code Online (Sandbox Code Playgroud)

如果您现在检查 ldif 文件,它应该具有olcPasswordHash属性。

如果要指定散列的格式,可以这样做。假设您遵循前两个步骤,您要么注释掉所有内容,要么从一个新文件开始。该文件需要包含以下几行:

dn: cn=config
add: olcPasswordCryptSaltFormat
olcPasswordCryptSaltFormat: $5$rounds=8000$%.16s
Run Code Online (Sandbox Code Playgroud)

使用相同的ldapmodify命令运行它。现在 LDAP 帐户将使用 SHA-256($6$即 SHA-512)加上 16-char long salt 进行散列并散列 8000 次。

dn条目是cn=config因为此值(基于我使用步骤 1 的模拟)在cn=config.ldif文件中。

要了解格式,请查看http://www.openldap.org/lists/openldap-technical/201305/msg00002.html

如果您正在尝试不同的格式,您可以尝试使用replace方法。所以文件看起来像这样。

dn: cn=config
replace: olcPasswordCryptSaltFormat
olcPasswordCryptSaltFormat: $5$%.16s
Run Code Online (Sandbox Code Playgroud)

现在我删除了 8000 次迭代。我认为默认情况下 SHA5-256-CRYPT 被散列 5000 次。

您可以通过执行man ldapmodify并向下滚动到手册页底部附近来阅读有关此内容的更多信息。