你如何为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中没有了。 我应该更改哪个文件?

好的。 我从IRC的帮助和阅读manpage中得知了这一点。

假设您不想重新创build任何内容,只需在现有的LDAP后端添加password-hash,并且您正在运行Ubuntu(仅在Ubuntu机器上进行testing,但该方法应该与操作系统无关):

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

第1步:创buildtest.conf

我们将创build一个名为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.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" 

如果你现在检查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和scrolldown来阅读更多的关于这个手册页的底部。