Centos

針對打開的 ldap 為使用者設置已經散列的密碼

  • January 10, 2019

讓我描述一下我正在嘗試配置的基礎架構。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 中使用密碼。看到這個來了解如何生成這些。

引用自:https://serverfault.com/questions/948272