根据开放 LDAP 为用户设置已散列的密码

根据开放 LDAP 为用户设置已散列的密码

让我描述一下我尝试配置的基础设施。centOS 上有一个 opne ldap 服务器(运行 slapd 2.4.40),作为几个盒子的分布式身份验证方法。

有没有办法修改用户(使用 ldif 文件和 ldapmodify)以使用已散列的密码进行更改?如何防止新散列不再被散列?

我尝试了很多 ldif 文件的变化,但都没有成功。有什么想法吗?

ldap 上的哈希配置是:

password-hash {CRYPT}
password-crypt-salt-format "$5$%.16s"

谢谢!

更新

@Sven 感谢您的回复。我尝试了您的解决方案(我之前也尝试过),似乎它一直在对密码进行哈希处理...我也更改了哈希方法。解决方法:假设我想为用户设置密码george - 将 ldap 配置更改为 SSHA

 password-hash {SSHA}
  • 重新启动 ldap 等

  • 哈希新密码:(testpassword)

    [root@vm ~]# slappasswd
    New password:
    Re-enter new password:
    {SSHA}I5CTI/dn+ppf/XA/Jjz6yu+LRfPWqBQW
    
  • 准备 ldif 文件

    [root@vm ~]# cat test.ldif dn: cn=george,dc=test,dc=com changetype: modify replace: userPassword userPassword: {SSHA}I5CTI/dn+ppf/XA/Jjz6yu+LRfPWqBQW

  • 使用以前的 ldif 更改用户

    [root@vm ~]# ldapmodify -c -a -f ./test.ldif -w 'rootpass!' -D "cn=root,dc=europa,dc=eu" modifying entry "dn: cn=george,dc=test,dc=com"

  • 检查更改是否应用成功

    [root@vm ~]# ldapsearch -x -w 'rootpass!' -D "cn=root,dc=test,dc=com" -b 
    "dc=test,dc=com" -s sub "(objectclass=*)" | grep george -A 3
    # george, test, com
    dn: cn=george,dc=test,dc=com
    loginShell: /bin/bash
    sn: Administrator
    sshPublicKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCr/fmBCVOx8io4dLnVeagN61ZW
    --
    cn: george
    homeDirectory: /home/george
    gidNumber: 33222
    uid: george
    userPassword:: e1NTSEF9c0s1QVRZYXVoSFpIdld5bzJTaVp0czlhVTFUNnJBdVM=
    

我认为用户修改密码后,哈希密码应该在搜索时出现在用户密码中,对吗?

但 :

    {SSHA}I5CTI/dn+ppf/XA/Jjz6yu+LRfPWqBQW !=  
    e1NTSEF9c0s1QVRZYXVoSFpIdld5bzJTaVp0czlhVTFUNnJBdVM=

之后我想如果它被编码了(例如 Base64)

但它也有不同之处:

    [root@ldap01-prototype:~ ] $ echo {SSHA}I5CTI/dn+ppf/XA/Jjz6yu+LRfPWqBQW > 
    test;base64 test
    e1NTSEF9STVDVEkvZG4rcHBmL1hBL0pqejZ5dStMUmZQV3FCUVcK

答案1

此更改操作应使用预加密的密码(1234在本例中)。请注意{CRYPT}前缀,它告诉 OpenLDAP 使用标准CRYPT库来验证密码,而不是像这样的内部方法{SSHA}

dn: uid=johndoe,ou=users,dc=example,dc=com
changetype: modify
replace: userPassword
userPassword: {CRYPT}$6$NxKjjJP/Jlf$TrtCUMfi1uUpZDtYYvtFO2DlMsxntZ1ulzrTppJkqAZbX1Nv4WhdJ4vJbZcQDyWZVeGadtVQjqUHNZMT1FP8d0

注意:使用{CRYPT}实际上只是暂时的迁移帮助/etc/shadow。最好使用{SSHA}OpenLDAP 密码。请参阅学习如何生成这些。

相关内容