Установить уже хешированный пароль для пользователя против открытого 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
    Новый пароль:
    Повторно введите новый пароль:
     {SSHA} I5CTI / dn + ppf / XA / Jjz6yu + LRfPWqBQW
     
  • подготовить файл ldif

    [root @ vm ~] # cat test.ldif dn: cn = george, dc = test, dc = com changetype: изменить заменить: 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" изменение записи "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: Администратор
    sshPublicKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCr / fmBCVOx8io4dLnVeagN61ZW
     -
    сп: Джордж
    homeDirectory: / home / george
    gidNumber: 33222
    uid: Джордж
    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
0
задан 10 January 2019 в 16:16
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 . С OpenLDAP лучше использовать пароли {SSHA} . См. и , чтобы узнать, как их генерировать.

1
ответ дан 4 December 2019 в 15:47

Теги

Похожие вопросы