針對打開的 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
此更改操作應使用預加密密碼(
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 中使用密碼。看到這個來了解如何生成這些。