我在 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
。希望这可以帮助到某些人。