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