如何为 OpenLDAP 设置密码哈希?

如何为 OpenLDAP 设置密码哈希?

我在 Ubuntu 12.04 上有以下版本:

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

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

答案1

好的。我在 IRC 和阅读手册页的帮助下找到了答案。

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

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

步骤1:创建test.conf

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

dn: olcDatabase={-1}frontend,cn=config
add: olcPasswordHash
olcPasswordHash: {CRYPT}

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

sudo su            # do this as root
cd /etc/ldap/
mkdir test.d
slaptest -f test.conf -F test.d

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

如果您tree进入目录test.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"

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

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

dn: cn=config
add: olcPasswordCryptSaltFormat
olcPasswordCryptSaltFormat: $5$rounds=8000$%.16s

使用相同的命令运行此ldapmodify命令。现在 LDAP 帐户将使用 SHA-256($6$即 SHA-512)加上 16 个字符长的盐进行哈希处理,并进行 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

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

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

答案2

在这里补充 CPPLearner 的回答,因为我没有足够的声誉来发表评论。

下列内容test.conf应提供给ldapmodify

dn: olcDatabase={-1}frontend,cn=config
add: olcPasswordHash
olcPasswordHash: {CRYPT}

美联储test.conf应该ldaptest看起来像这样,也就是旧的slapd配置文件格式:

password-hash {CRYPT}

我的菜鸟头脑在 停留unknown directive <dn:> outside backend info and database definitions.了一段时间,因为我输入了错误的格式ldaptest。希望这可以帮助到某些人。

相关内容