ldappasswd에서 사용되는 비밀번호 보호 체계(예: 해시 함수)를 정의하는 방법은 무엇입니까?

ldappasswd에서 사용되는 비밀번호 보호 체계(예: 해시 함수)를 정의하는 방법은 무엇입니까?

OpenLDAP 2.6을 사용하고 있습니다. 다음을 통해 객체의 비밀번호를 설정할 때

ldappasswd -x -D <dn of root user> -W -S <dn of object whose pwd shall be set>

그런 다음 비밀번호의 일부 해시가 속성에 포함됩니다 userPassword.

어떤 해시 함수를 ldappasswd사용합니까? 해시 함수를 어떻게 구성하나요? 겉보기에는 더 이상 안전하지 않은 SHA1이 기본값이라고 가정합니다.

답변1

ldappasswd는 어떤 해시 함수를 사용합니까?

기술적으로 없음 – 단지 '비밀번호 변경' LDAP 확장 작업을 호출하여 LDAP 오류를 발생시킵니다.섬기는 사람적절하다고 판단되는 해시 함수를 사용하려면(그리고 적절하다고 판단되는 곳에 해시를 저장해야 합니다. 반드시 userPassword에 저장할 필요는 없습니다).

따라서 '비밀번호 변경' exop에 사용되는 해시는 서버측에서 구성됩니다. OpenLDAP의 경우 이는 해시 olcPasswordHash와 유사하게 "SSHA"(솔티드 및 반복 SHA-1)로 기본 설정되는 매개변수 입니다 $1$. 더 강력한 것을 원한다면 {CRYPT}시스템의 crypt() 함수가 제공하는 해시 알고리즘을 사용하도록 선택할 수 있습니다(예: /etc/shadow와 동일 – OS가 libxcrypt를 사용하는 경우 bcrypt 또는 yescrypt 가능, 그렇지 않으면 동일한 종류의 솔트 SHA ),또는 {ARGON2}추가 slapd-argon2 모듈이 설치된 경우(OpenLDAP의 일부이지만 "contrib" 트리에 있음)

slapd.conf cn=구성
기본값(반복/솔트된 SHA-1):
password-hash {SSHA}
기본:
olcPasswordHash: {SSHA}
libxcrypt가 사용 중인 경우 yescrypt를 사용하는 시스템 crypt():
password-hash {CRYPT}
password-crypt-salt-format $y$%.16s
(테스트되지 않았지만 작동할 것이라고 생각합니다)
yescrypt를 사용하는 시스템 crypt():
olcPasswordHash: {CRYPT}
olcPasswordCryptSaltFormat: $y$.16s
slapd 모듈을 사용할 수 있는 경우 Argon2:
moduleload argon2
password-hash {ARGON2}
slapd 모듈을 사용할 수 있는 경우 Argon2:
olcModuleLoad: argon2
olcPasswordHash: {ARGON2}

관련 정보