웹사이트 검색

OpenLDAP 서버에서 계정 암호를 변경하는 방법


소개

LDAP 시스템은 종종 사용자 계정 정보를 저장하는 데 사용됩니다. 실제로 LDAP에 인증하는 가장 일반적인 방법 중 일부는 LDAP 항목에 저장된 계정 정보와 관련이 있습니다.

LDAP 항목이 계정 정보를 위해 외부 서비스에서 사용되는지 아니면 LDAP 특정 인증 바인드에만 사용되는지 여부에 관계없이 비밀번호 관리를 이해하는 것이 중요해집니다. 이 가이드에서는 LDAP 항목의 비밀번호를 수정하는 방법에 대해 설명합니다.

자신의 사용자 비밀번호 변경

비밀번호 변경 기능은 LDAP 서버의 액세스 제어로 관리됩니다. 일반적으로 LDAP는 계정이 자신의 암호를 변경할 수 있도록 구성됩니다. 이것은 사용자로서 이전 암호를 알고 있는 경우 잘 작동합니다.

ldapppasswd 도구를 사용하여 사용자 계정 암호를 수정할 수 있습니다. 비밀번호를 변경하려면 LDAP 사용자 항목에 바인딩하고 현재 비밀번호로 인증해야 합니다. 이는 다른 OpenLDAP 도구와 동일한 일반 구문을 따릅니다.

암호를 변경하려면 기존 바인드 인수 이외의 여러 인수를 제공해야 합니다. 다음 옵션 중 하나를 사용하여 이전 암호를 지정해야 합니다.

  • -a [oldpassword]: -a 플래그를 사용하면 명령줄 요청의 일부로 이전 암호를 제공할 수 있습니다.
  • -A: 이 플래그는 명령을 입력할 때 이전 암호를 묻는 메시지를 표시하는 -a 플래그의 대안입니다.
  • -t [oldpasswordfile]: 이 플래그는 파일에서 이전 암호를 읽기 위해 위의 대신 사용할 수 있습니다.

또한 다음 옵션 중 하나를 사용하여 새 암호를 지정해야 합니다.

  • -s [newpassword]: -s 플래그는 명령줄에서 새 암호를 제공하는 데 사용됩니다.
  • -S: -s 플래그의 이 변형은 명령을 입력할 때 새 암호를 묻는 메시지를 표시합니다.
  • -T [newpasswordfile]: 파일에서 새 비밀번호를 읽기 위해 위 플래그 대신 이 플래그를 사용할 수 있습니다.

서버 위치와 바인드 항목 및 비밀번호를 지정하는 일반 옵션과 함께 각 그룹에서 하나의 옵션을 사용하여 LDAP 비밀번호를 변경할 수 있습니다. 기술적으로 OpenLDAP는 항목에 바인딩하는 데 사용되기 때문에 이전 암호가 항상 필요한 것은 아니지만 다른 LDAP 구현에는 이 암호가 필요하므로 어쨌든 설정하는 것이 가장 좋습니다.

일반적으로 명령은 다음과 같습니다.

  1. ldappasswd -H ldap://server_domain_or_IP -x -D "user_dn" -W -A -S

지정된 LDAP 서버에 연결하고 사용자 DN 항목으로 인증한 다음 일련의 프롬프트를 발행합니다. 이전 암호와 새 암호를 제공하고 확인하라는 메시지가 표시되면 실제 바인드가 발생하도록 이전 암호를 다시 제공해야 합니다. 그러면 비밀번호가 변경됩니다.

어쨌든 암호를 변경할 예정이므로 프롬프트를 통하지 않고 명령줄에서 이전 암호를 제공하는 것이 더 쉬울 수 있습니다. 다음과 같이 할 수 있습니다.

  1. ldappasswd -H ldap://server_domain_or_IP -x -D "user's_dn" -w old_passwd -a old_passwd -S

RootDN 바인드를 사용하여 사용자 비밀번호 변경

ldappasswd 도구를 사용하면 필요한 경우 LDAP 관리자로서 다른 사용자의 암호를 변경할 수도 있습니다. 기술적으로는 계정 암호에 대한 쓰기 액세스 권한이 있는 모든 계정과 바인딩할 수 있지만 이 액세스 권한은 일반적으로 rootDN(관리) 항목과 계정 자체로 제한됩니다.

다른 사용자의 암호를 변경하려면 상승된 권한으로 항목에 바인딩한 다음 변경하려는 항목을 지정해야 합니다. 일반적으로 rootDN에 바인딩됩니다(이 계정을 찾는 방법을 찾으려면 다음 섹션 참조).

기본 ldappasswd 명령은 매우 비슷해 보이지만 유일한 차이점은 명령 마지막에 변경할 항목을 지정해야 한다는 것입니다. 이전 비밀번호를 사용할 수 있는 경우 -a 또는 -A 옵션을 사용할 수 있지만 사용자의 비밀번호를 변경할 때는 그렇지 않은 경우가 많습니다. 이전 암호가 없으면 그대로 두십시오.

예를 들어 LDAP 서버의 rootDN이 cn=admin,dc=example,dc=com이고 변경하려는 암호가 uid=bob,ou=people인 경우 ,dc=example,dc=com 항목에 다음과 같이 입력할 수 있습니다.

  1. ldappasswd -H ldap://server_domain_or_IP -x -D "cn=admin,dc=example,dc=com" -W -S "uid=bob,ou=people,dc=example,dc=com"

Bob의 새 비밀번호를 입력하라는 메시지가 표시되고 변경을 위해 관리자 항목에 바인딩하는 데 필요한 비밀번호를 입력하라는 메시지가 표시됩니다.

RootDN 암호 변경

LDAP 관리 비밀번호를 잊어버린 경우 비밀번호를 재설정하려면 LDAP 시스템 서버에 대한 루트 또는 sudo 액세스 권한이 있어야 합니다. 시작하려면 서버에 로그인하세요.

현재 RootDN 정보 찾기

먼저 RootDN 계정과 현재 RootDN 암호 해시를 찾아야 합니다. 이는 특수 cn=config 구성 DIT에서 사용할 수 있습니다. 다음을 입력하여 원하는 정보를 찾을 수 있습니다.

  1. sudo ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW | tee ~/newpasswd.ldif

이렇게 하면 DIT의 rootDN 계정과 비밀번호가 반환됩니다. 또한 이것이 정의된 구성 데이터베이스를 알려줍니다. 또한 이 정보를 홈 디렉토리의 파일에 기록하여 새 암호 해시를 얻은 후 수정할 수 있도록 했습니다.

dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

새 비밀번호 해싱

다음으로 slappasswd 유틸리티를 사용하여 새 암호를 해시할 수 있습니다. 우리는 쿼리한 olcRootPW 줄에 있는 것과 동일한 해시를 사용하려고 합니다. 이 해시는 중괄호가 있는 접두사 값으로 표시됩니다. 우리의 경우 이것은 {SSHA}입니다.

slappasswd 유틸리티를 사용하여 사용하려는 암호에 대한 올바른 해시를 생성하십시오. 마지막 명령으로 생성한 파일 끝에 새 해시를 추가합니다. 루트가 아닌 계정을 사용하는 경우 명령에 대한 전체 경로를 지정해야 합니다.

  1. /usr/sbin/slappasswd -h {SSHA} >> ~/newpasswd.ldif

사용하려는 새 암호를 입력하고 확인하라는 메시지가 표시됩니다. 해시된 값은 파일 끝에 추가됩니다.

Config DIT에서 비밀번호 변경

이제 파일을 편집하여 암호를 변경하는 유효한 LDIF 명령을 구성할 수 있습니다. 우리가 쓰고 있던 파일을 엽니다:

nano ~/newpasswd.ldif

다음과 같아야 합니다.

dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

LDAP 서버에 둘 이상의 DIT가 있는지 여부에 따라 여러 값을 가질 수 있습니다. 이 경우 olcRootDN 값을 사용하여 수정하려는 올바른 계정을 찾으십시오. 다른 dn, olcRootDN, olcRootPW가 있으면 삭제합니다.

olcRootDN 줄이 수정하려는 계정과 일치하는지 확인한 후 주석 처리하십시오. 그 아래에 두 줄을 추가합니다. 첫 번째 줄은 changetype: modify를 지정해야 하며 두 번째 줄은 대체: olcRootPW를 시도하고 있음을 LDAP에 알려야 합니다. 다음과 같이 표시됩니다.

dn: olcDatabase={1}hdb,cn=config
#olcRootDN: cn=admin,dc=example,dc=com
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

이제 olcRootPW 줄에 있는 해시를 삭제하고 아래에서 생성한 해시로 바꿉니다. 불필요한 줄을 제거하십시오. 이제 다음과 같이 표시됩니다.

dn: olcDatabase={1}hdb,cn=config
#olcRootDN: cn=admin,dc=example,dc=com
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

완료되면 파일을 저장하고 닫습니다.

이제 다음을 입력하여 변경 사항을 적용할 수 있습니다.

  1. sudo ldapmodify -H ldapi:// -Y EXTERNAL -f ~/newpasswd.ldif

이렇게 하면 cn=config DIT 내에서 관리 암호가 변경됩니다.

일반 DIT에서 암호 변경

이것은 관리 DIT 내의 항목에 대한 암호를 변경했습니다. 그러나 여전히 일반 DIT 내에서 항목을 수정해야 합니다. 현재 이전 비밀번호와 새 비밀번호가 모두 유효합니다. 새 자격 증명을 사용하여 일반 DIT 항목을 수정하여 이 문제를 해결할 수 있습니다.

LDIF 파일을 다시 엽니다.

  1. nano ~/newpasswd.ldif

dn: 줄의 값을 이전에 주석 처리한 RootDN 값으로 바꿉니다. 이 항목은 비밀번호 변경의 새로운 대상입니다. 또한 userPassword를 사용하여 olcRootPW의 두 항목을 모두 변경하여 올바른 값을 수정해야 합니다. 완료되면 LDIF 파일은 다음과 같아야 합니다.

[output ~/newpasswd.ldif]
dn: cn=admin,dc=example,dc=com
changetype: modify
replace: userPassword
userPassword: {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

파일을 저장하고 닫습니다.

이제 구성 DIT에서 설정한 새 비밀번호를 사용하여 항목에 바인딩하여 해당 항목의 비밀번호를 수정할 수 있습니다. 작업을 수행하려면 RootDN 항목에 바인딩해야 합니다.

  1. ldapmodify -H ldap:// -x -D "cn=admin,dc=example,dc=com" -W -f ~/newpasswd.ldif

config DIT에서 설정한 새 암호를 입력하라는 메시지가 표시됩니다. 인증이 완료되면 비밀번호가 변경되며 인증을 위한 새 비밀번호만 남습니다.

결론

LDAP는 계정 정보를 저장하는 데 자주 사용되므로 비밀번호를 올바르게 관리하는 방법을 아는 것이 중요합니다. 대부분의 경우 프로세스는 상대적으로 간단하지만 보다 집중적인 작업의 경우 약간의 작업으로 암호를 수정할 수 있어야 합니다.