디렉토리 서버에 연결하면 사용자가 인증됩니다. 디렉토리는 인증 중에 설정된 아이디에 따라 사용자에게 액세스 권한 및 자원 제한을 부여할 수 있습니다. 이 장에서 계정은 사용자 항목을 포괄적으로 나타냅니다. 또한 계정은 사용자가 디렉토리에서 작업을 수행할 수 있는 권한을 반영합니다. 비밀번호 정책 설명에서 모든 계정은 사용자 항목 및 비밀번호와 연관됩니다.
또한 이 장에서는 비밀번호 정책의 일환인 계정 활성화에 대해서도 설명합니다. 디렉토리 어드민 관리자는 비밀번호 정책과 상관없이 계정을 직접 잠그거나 잠금 해제할 수 있습니다.
인증 방법에 대해서는 이 장에서 설명하지 않습니다. SASL GSSAPI, 클라이언트 SSL 인증서 기반 인증 등과 같은 일부 인증 방법에서는 비밀번호를 사용하지 않습니다. 이 장에서 설명하는 비밀번호 정책 관련 정보는 해당 인증 방법에는 적용되지 않습니다. 인증 메커니즘을 구성하는 방법에 대한 자세한 내용은 5 장, 디렉토리 서버 보안을 참조하십시오.
이 장은 다음 내용으로 구성되어 있습니다.
이 절에서는 비밀번호 정책 설정에 대해 설명하고 사용자 요구 사항에 맞는 비밀번호 정책을 정의하는 데 도움이 되는 워크시트를 제공합니다.
기본 비밀번호 정책을 사용하려면 기본 비밀번호 정책 관리를 참조하십시오.
디렉토리 서버에서 비밀번호 정책을 지정하는 경우 pwdPolicy(5dsoc) 객체 클래스를 포함하는 항목을 만들거나 수정합니다.
특정 유형의 사용자에 대한 비밀번호 정책을 정의할 경우 다음 사항을 고려해야 합니다.
침입자가 비밀번호를 해독하려고 시도할 때 계정을 잠그는 방법
자세한 내용은 계정 잠금 정책을 참조하십시오.
비밀번호를 변경하는 방법
자세한 내용은 비밀번호 변경 정책을 참조하십시오.
허용되는 비밀번호 값
자세한 내용은 비밀번호 내용 정책을 참조하십시오.
비밀번호 만료 처리 방법
자세한 내용은 비밀번호 만료 정책을 참조하십시오.
서버에서 성공한 마지막 인증 시간을 기록할지 여부
마지막 인증 시간 추적 정책을 참조하십시오.
이 장의 이후에 나오는 절에서는 이러한 비밀번호 정책 영역을 처리하는 방법에 대해 설명합니다. 비밀번호 정책 정의 워크시트를 사용하여 구현할 각 비밀번호 정책을 명확하게 하십시오.
이 절에서는 계정 잠금을 제어하는 정책 속성에 대해 설명합니다.
디렉토리 서버 계정은 사용자가 디렉토리에서 작업을 수행하는 데 필요한 권한과 사용자 항목을 포괄적으로 나타냅니다. 각 계정은 바인드 DN 및 사용자 비밀번호와 연결되어 있습니다. 침입자가 비밀번호를 해독하려고 시도할 경우 디렉토리 서버에서 계정을 잠그도록 할 수 있습니다. 계정을 잠그면 침입자가 해당 계정을 사용하여 바인드할 수 없습니다. 또한 침입자가 공격을 계속할 수 없습니다.
관리자는 역할을 공유하는 모든 사용자 계정 또는 비활성 계정을 수동으로 렌더링할 수도 있습니다. 자세한 내용은 수동으로 계정 잠금을 참조하십시오. 비밀번호 정책의 핵심은 디렉토리 서버에서 사용자의 개입 없이 계정을 잠그는 환경을 만드는 것입니다.
먼저, 실패한 바인드가 너무 많이 발생할 경우 디렉토리 서버에서 pwdLockout(5dsat)를 사용하여 계정을 자동으로 잠그도록 지정해야 합니다. 디렉토리 서버는 계정에 대해 연속적으로 실패하는 바인드 시도를 추적합니다. pwdMaxFailure(5dsat)를 사용하여 디렉토리 서버에서 계정을 잠그기 전에 허용되는 연속 실패 횟수를 지정할 수 있습니다.
디렉토리 서버에서는 비밀번호 정책을 엄격하게 준수하여 계정을 잠급니다. 작업은 완전히 기계식입니다. 계정은 침입자가 계정에 대한 공격을 마운트하고 있기 때문이 아니라 사용자가 비밀번호를 잘못 입력했기 때문에 잠길 수 있습니다. 따라서 pwdFailureCountInterval(5dsat)를 사용하여 디렉토리 서버에서 실패한 시도의 레코드를 정리하기 전에 대기하는 시도 횟수를 지정할 수 있습니다. pwdLockoutDuration(5dsat)를 사용하여 디렉토리 서버에서 계정 잠금을 자동으로 해제하기 전의 잠금 지속 시간을 지정합니다. 관리자는 악의적인 의도 없이 법률에 위반되지 않는 실수를 한 사용자의 계정 잠금을 해제하기 위해 개입할 필요가 없습니다.
사용자 데이터가 복제 토폴로지를 통해 복제되는 경우 잠금 카운터와 잠금 속성이 복제됩니다. pwdIsLockoutPrioritized(5dsat) 속성은 잠금 속성을 업데이트할 경우 더 높은 우선 순위로 복제되는지 여부를 제어하므로 대부분의 경우에 이 속성 값을 TRUE로 유지해야 합니다. 따라서 사용자는 pwdMaxFailure번의 시도만으로 해당 복제본이 잠기기 전에 바인드할 수 있습니다. 이 때 시도 횟수는 추가 복제를 시도할 때보다 더 적을 수 있습니다. Sun Java System Directory Server Enterprise Edition 6.0 Deployment Planning Guide의 Preventing Authentication by Using Global Account Lockout을 참조하십시오. 전역 잠금 관련 내용을 다루는 설명서에서는 사용자가 pwdMaxFailure번의 시도 후에 전체 복제된 토폴로지에서 잠기는지 확인하는 방법에 대해 설명합니다.
이 절에서는 비밀번호 변경을 제어하는 정책 속성에 대해 설명합니다.
다양한 배포에서 디렉토리 서버는 아이디 데이터를 위한 저장소 역할을 합니다. 사용자는 pwdAllowUserChange(5dsat)에 지정된 대로 자신의 비밀번호를 변경할 수 있어야 하므로 사용자가 비밀번호를 변경할 필요가 없습니다.
사용자에게 자신의 비밀번호를 변경할 수 있도록 허용한 후 사용자가 비밀번호를 변경할 수 있는 경우를 제어할 수도 있습니다. pwdSafeModify(5dsat)를 사용하면 비밀번호를 변경할 사용자가 비밀번호를 바꾸려면 기존 비밀번호를 정확하게 입력해야 하도록 지정할 수 있습니다. 비밀번호를 수정하는 방법에 대한 예는 pwdSafeModify가 TRUE인 경우 명령줄에서 비밀번호 수정을 참조하십시오. pwdInHistory(5dsat)를 사용하여 디렉토리 서버에서 기억하는 비밀번호 수를 지정함으로써 사용자가 비밀번호를 다시 사용하지 못하도록 할 수 있습니다. 또한 pwdMinAge(5dsat)를 설정하여 사용자가 비밀번호를 너무 자주 변경하지 못하도록 할 수 있습니다.
대부분의 경우 관리자나 관리자가 관리하는 응용 프로그램에서 디렉토리에 사용자 항목을 만듭니다. 관리자는 사용자 비밀번호 값을 할당할 수 있으며, 이 비밀번호는 사용자가 새 계정에 처음으로 바인드할 때 변경합니다. 사용자 비밀번호를 재설정해야 할 수도 있습니다. 이 경우 다음에 사용자가 계정을 사용할 때 해당 비밀번호를 변경해야 합니다. 디렉토리 서버에는 다른 사용자가 비밀번호 값을 재설정한 후 사용자가 비밀번호를 변경해야 하는지 여부를 나타내는 데 사용할 수 있는 pwdMustChange(5dsat)라는 특수 속성이 있습니다.
passwordRootdnMayBypassModsChecks(5dsat)를 설정하여 디렉토리 어드민 관리자는 비밀번호를 변경할 때 정책의 적용을 받지 않도록 지정할 수도 있습니다.
이 절에서는 비밀번호 내용을 제어하는 정책 속성에 대해 설명합니다.
일반적으로 비밀번호 값은 디렉토리 검색에서 반환되지 않지만 공격자는 디렉토리 데이터베이스에 대한 액세스 권한을 얻을 수 있습니다. 따라서 비밀번호 값은 대부분 passwordStorageScheme(5dsat)를 사용하여 지정한 지원되는 해시 형식 중 하나로 저장됩니다.
pwdMinLength(5dsat)를 설정하여 비밀번호가 지정된 문자 수 이상이 되도록 할 수 있습니다.
또한 pwdCheckQuality(5dsat)를 설정하여 비밀번호가 최소 비밀번호 품질 정의를 충족하는지 확인하도록 할 수 있습니다. 확인하도록 설정하면 디렉토리 서버는 비밀번호가 최소 길이 이상이 되는지 확인합니다. 또한 서버는 비밀번호에 cn, givenName, mail, ou, sn 또는 uid 속성 값이 없는지 확인합니다. 또한, 강력한 비밀번호 확인 플러그 인이 활성화되어 있는 경우 디렉토리 서버는 비밀번호에 플러그 인에 사용되는 사전 파일의 문자열이 없는지를 확인합니다. 또한 비밀번호에 서로 다른 유형의 문자 조합이 있는지 확인합니다.
dsconf set-server-prop 명령을 사용하여 강력한 비밀번호 확인을 활성화할 수 있습니다. pwd-strong-check-enabled 등록 정보를 사용하여 플러그 인을 설정한 다음 서버를 다시 시작하여 변경 사항을 적용합니다. pwd-strong-check-require-charset 등록 정보를 사용하여 비밀번호에 필요한 문자 집합을 지정합니다. pwd-strong-check-require-charset 등록 정보는 다음과 같은 값 마스크를 사용합니다.
새 비밀번호에 소문자가 포함되어야 합니다.
새 비밀번호에 대문자가 포함되어야 합니다.
새 비밀번호에 숫자가 포함되어야 합니다.
새 비밀번호에 특수 문자가 포함되어야 합니다.
새 비밀번호에 위에 명시한 문자 집합 중 두 가지 이상에 해당하는 문자가 각각 하나 이상씩 포함되어야 합니다.
새 비밀번호에 위에 명시한 문자 집합 중 세 가지 이상에 해당하는 문자가 각각 하나 이상씩 포함되어야 합니다.
pwd-strong-check-require-charset 등록 정보의 기본 설정은 lower && upper && digit && special입니다.
이 절에서는 비밀번호 만료를 제어하는 정책 속성에 대해 설명합니다.
사용자가 비밀번호를 정기적으로 변경하도록 pwdMaxAge(5dsat)를 설정하여 비밀번호가 특정 사용 기간에 도달한 경우 디렉토리 서버에서 비밀번호를 만료시키도록 구성할 수 있습니다.
이 경우 비밀번호가 만료될 예정이라는 메시지를 사용자에게 보내야 합니다. 바인드에 사용된 비밀번호가 만료될 예정이라는 경로 메시지를 반환하도록 디렉토리 서버를 구성할 수 있습니다. pwdExpireWarning(5dsat)를 사용하여 클라이언트가 바인드할 때 만료되기 며칠 전에 경고 메시지를 표시할지를 정의합니다. 클라이언트 응용 프로그램에 경고 메시지가 표시됩니다.사용자에게 직접 경고 메시지가 표시되지는 않습니다.클라이언트 응용 프로그램은 비밀번호가 만료될 예정이라는 경고 메시지를 받을 경우 최종 사용자에게 알려야 합니다.
pwdGraceAuthNLimit(5dsat)를 설정하여 사용자가 만료된 비밀번호를 사용하여 한 번 이상 바인드를 시도하도록 허용할 수 있습니다. 따라서 사용자가 기간 내에 비밀번호를 변경하지 못한 경우에도 바인드하여 비밀번호를 변경할 수 있습니다. 사용자는 정상 로그인을 사용하여 바인드한 후 모든 작업을 수행할 수 있습니다. 정상 로그인은 비밀번호가 만료되지 않은 것처럼 작동합니다.
디렉토리 서버는 항목의 비밀번호가 수정될 때마다 pwdChangedTime(5dsat) 작동 가능 속성을 업데이트합니다. 따라서 비밀번호 만료가 활성화될 때까지 기다린 후 비밀번호 만료를 활성화하면 이미 만료된 사용자 비밀번호가 즉시 만료됩니다. 이 동작을 원하지 않으면 경고 및 정상 로그인을 사용하십시오.
이 절에서는 pwdKeepLastAuthTime(5dsat) 비밀번호 정책 속성의 사용에 대해 설명합니다.
pwdKeepLastAuthTime을 설정하면 디렉토리 서버는 사용자가 인증될 때마다 성공한 마지막 바인드 시간을 추적합니다. 시간은 사용자 항목의 pwdLastAuthTime(5dsat) 작동 가능 속성에 기록됩니다.
이 동작은 성공한 바인드 작업마다 업데이트를 추가하기 때문에 pwdKeepLastAuthTime 기능은 기본적으로 활성화되지 않습니다. 이 기능을 배포에 사용하려면 해당 기능을 명시적으로 설정해야 합니다.
이 워크시트를 사용하면 명령줄 인터페이스 또는 DSCC(디렉토리 서비스 제어 센터)를 사용하여 구현할 비밀번호 정책을 쉽게 정의할 수 있습니다. 비밀번호 정책별로 하나의 워크시트를 사용합니다.
비밀번호 정책 항목의 DN을 기록한 후 각 정책 영역에 속성 설정에 대한 결정 사항을 기록합니다. 또한 해당 설정에 대한 이론적 근거를 기록합니다.
비밀번호 정책 워크시트 |
---|
비밀번호 정책 항목 고유 이름 |
dn: cn= |
정책 영역 |
속성 |
여기에 설정 기록 |
여기에 설정에 대한 이론적 근거 기록 |
---|---|---|---|
계정 잠금 | |||
|
|
||
|
|
||
|
|
||
|
|
||
비밀번호 변경 |
|
|
|
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
비밀번호 내용 |
|
|
|
|
|
||
비밀번호 만료 |
|
|
|
|
|
||
|
|
||
마지막 인증 시간 추적 |
|
|
pwdCheckQuality 속성이 2로 설정되어 있는 경우 서버는 추가 검사를 수행할 수 있습니다. 또한 비밀번호 확인 플러그 인이 활성화되어 있는 경우 플러그 인 설정은 새 비밀번호 값에 대해 수행하는 검사 유형에 영향을 미칩니다.
기본 비밀번호 정책은 특별 정책이 정의되어 있지 않은 디렉토리 인스턴스 내의 모든 사용자에게 적용됩니다. 기본 비밀번호 정책은 디렉토리 관리자에게는 적용되지 않습니다. 정책 범위에 대한 자세한 내용은 적용되는 비밀번호 정책을 참조하십시오.
기본 비밀번호 정책은 dsconf 명령을 사용하여 구성할 수 있는 정책입니다. 또한 cn=Password Policy,cn=config를 실행하여 기본 비밀번호 정책을 볼 수도 있습니다.
이 절에서는 각 정책 영역에 대한 정책 속성과 관련 dsconf 서버 등록 정보를 보여줍니다. 또한 기본 비밀번호 정책 설정을 보거나 변경하는 방법에 대해 설명합니다.
다음 표에서는 각 비밀번호 정책 영역에 대한 비밀번호 정책 속성과 관련 dsconf 서버 등록 정보를 보여줍니다.
정책 영역 |
정책 속성 |
dsconf 서버 등록 정보 |
---|---|---|
계정 잠금 |
pwdFailureCountInterval |
pwd-failure-count-interval |
pwdLockout |
pwd-lockout-enabled |
|
pwdLockoutDuration |
pwd-lockout-duration |
|
pwdMaxFailure |
pwd-max-failure-count |
|
비밀번호 변경 |
passwordRootdnMayBypassModsChecks |
pwd-root-dn-bypass-enabled |
pwdAllowUserChange |
pwd-user-change-enabled |
|
pwdInHistory |
pwd-max-history-count |
|
pwdMinAge |
pwd-min-age |
|
pwdMustChange |
pwd-must-change-enabled |
|
pwdSafeModify |
pwd-safe-modify-enabled |
|
비밀번호 내용 |
pwdCheckQuality |
pwd-check-enabled, pwd-accept-hashed-password-enabled, pwd-strong-check-dictionary-path, pwd-strong-check-enabled, pwd-strong-check-require-charset |
pwdMinLength |
pwd-min-length |
|
passwordStorageScheme |
pwd-storage-scheme |
|
비밀번호 만료 |
pwdExpireWarning |
pwd-expire-warning-delay |
pwdGraceAuthNLimit |
pwd-grace-login-limit |
|
pwdMaxAge |
pwd-max-age |
|
마지막 인증 시간 추적 |
pwdKeepLastAuthTime |
pwd-keep-last-auth-time-enabled |
pwdCheckQuality와 상호 연관되는 등록 정보가 비밀번호 확인 플러그 인을 구성합니다. 따라서 다섯 개의 등록 정보가 전체 서버 인스턴스에 적용됩니다. 다섯 개의 등록 정보는 다른 비밀번호 정책 pwdCheckQuality: 2에도 적용됩니다.
dsconf 명령을 사용하여 기본 비밀번호 정책 설정을 볼 수 있습니다.
DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.
기본 비밀번호 정책 구성을 읽습니다.
$ dsconf get-server-prop -h host -p port | grep ^pwd- pwd-accept-hashed-pwd-enabled : N/A pwd-check-enabled : off pwd-compat-mode : DS5-compatible-mode pwd-expire-no-warning-enabled : on pwd-expire-warning-delay : 1d pwd-failure-count-interval : 10m pwd-grace-login-limit : disabled pwd-keep-last-auth-time-enabled : off pwd-lockout-duration : 1h pwd-lockout-enabled : off pwd-lockout-repl-priority-enabled : on pwd-max-age : disabled pwd-max-failure-count : 3 pwd-max-history-count : disabled pwd-min-age : disabled pwd-min-length : 6 pwd-mod-gen-length : 6 pwd-must-change-enabled : off pwd-root-dn-bypass-enabled : off pwd-safe-modify-enabled : off pwd-storage-scheme : SSHA pwd-strong-check-dictionary-path : /local/ds6/plugins/words-english-big.txt pwd-strong-check-enabled : off pwd-strong-check-require-charset : lower pwd-strong-check-require-charset : upper pwd-strong-check-require-charset : digit pwd-strong-check-require-charset : special pwd-supported-storage-scheme : CRYPT pwd-supported-storage-scheme : SHA pwd-supported-storage-scheme : SSHA pwd-supported-storage-scheme : NS-MTA-MD5 pwd-supported-storage-scheme : CLEAR pwd-user-change-enabled : on |
dsconf 명령으로 서버 등록 정보를 설정하여 기본 비밀번호 정책을 변경할 수 있습니다.
이 절차를 완료하기 전에 비밀번호 정책 정의 워크시트를 읽고 완료하십시오.
DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.
워크시트 설정을 dsconf 명령 등록 정보 설정으로 변환합니다.
dsconf set-server-prop 명령을 사용하여 기본 비밀번호 정책 등록 정보를 적절하게 변경합니다.
예를 들어 디렉토리 관리자는 다음 명령을 사용하여 비밀번호를 수정할 때 기본 정책을 위반할 수 있습니다.
$ dsconf set-server-prop -h host -p port pwd-root-dn-bypass-enabled:on |
특수 비밀번호 정책은 pwdPolicy(5dsoc) 항목에 정의됩니다. 정책은 디렉토리 트리 내의 임의의 위치(일반적으로 정책이 제어하는 계정으로 복제되는 하위 트리 내)에 정의될 수 있습니다. 정책은 cn= policy name,subtree 형태의 DN이 있습니다.
비밀번호 정책을 정의한 후 원하는 사용자 항목에서 pwdPolicySubentry(5dsat) 속성을 설정하여 비밀번호 정책을 할당합니다.
이 절은 다음 내용으로 구성되어 있습니다.
디렉토리 서버에서는 여러 비밀번호 정책을 구성할 수 있습니다. 이 절에서는 기본 비밀번호 정책과 특수 비밀번호 정책에 대해 설명합니다. 또한 지정된 계정에 여러 비밀번호 정책을 적용할 수 있는 경우 적용되는 정책에 대해 설명합니다.
디렉토리 서버 인스턴스를 처음 만들면 해당 인스턴스에 기본 비밀번호 정책이 적용됩니다. 기본 비밀번호 정책은 cn=PasswordPolicy,cn=config 구성 항목에 설명되어 있습니다. 기본 비밀번호 정책은 디렉토리 관리자를 제외한 디렉토리 내의 모든 계정에 적용됩니다.
모든 디렉토리 서버 비밀번호 정책과 마찬가지로 cn=PasswordPolicy,cn=config에는 pwdPolicy(5dsoc) 객체 클래스가 있습니다.
디렉토리 서버 인스턴스를 만들면 비밀번호 정책 속성이 이전 버전으로부터 업그레이드할 수 있도록 Directory Server 5 호환 모드 그대로 유지됩니다. 또한 Directory Server 5 호환 모드에서 디렉토리 서버는 passwordPolicy(5dsoc) 객체 클래스가 있는 비밀번호 정책 항목을 처리합니다.
업그레이드가 완료되면 Sun Java System Directory Server Enterprise Edition 6.0 Migration Guide에 설명된 것처럼 정식 모드에서 새 비밀번호 정책을 사용합니다. 관리 모드는 디렉토리 응용 프로그램에 투명하게 처리됩니다.
이 장에서는 새 비밀번호 정책 기능을 사용하는 비밀번호 정책 구성에 대해 설명합니다.
기본 비밀번호 정책을 변경하여 기본 설정을 무시할 수 있습니다. dsconf(1M) 명령을 사용하여 기본 비밀번호 정책에 대한 서버 등록 정보를 설정할 수 있습니다. 해당 서버 등록 정보의 이름은 일반적으로 pwd- 접두어로 시작합니다. 해당 등록 정보의 설정을 변경하면 인스턴스에 대한 기본 비밀번호 정책이 무시됩니다. 그러나 복제를 수행해도 복제본에 대한 변경 사항이 복사되지는 않습니다. 기본 비밀번호 정책에 대한 변경 사항은 디렉토리 데이터가 아닌 인스턴스 구성의 일부입니다.
기본 비밀번호 정책 구성 이외에 특수 비밀번호 정책을 구성할 수도 있습니다. 특수 비밀번호 정책은 디렉토리 트리의 항목에 정의됩니다. 특수 비밀번호 정책 항목은 기본 비밀번호 정책과 동일한 객체 클래스인 pwdPolicy(5dsoc)가 있으므로 정책 속성은 동일합니다. 특수 비밀번호 정책은 일반 디렉토리 항목이므로 정책 항목은 일반 디렉토리 항목과 동일한 방법으로 복제됩니다.
사용자 항목은 pwdPolicySubentry(5dsat) 작동 가능 속성 값을 통해 특수 비밀번호 정책을 참조합니다. 사용자 항목에서 참조하는 특수 비밀번호 정책은 인스턴스에 대한 기본 비밀번호 정책을 무시합니다. 사용자는 다양한 배포에서 사용자 역할을 할당합니다. pwdPolicySubentry 값을 설정하여 서비스 클래스(CoS)를 통해 사용자 계정에 적용되는 비밀번호 정책을 결정하도록 역할을 구성할 수 있습니다. 특정 역할에서 설정된 비밀번호 정책을 무시하려면 해당 사용자 항목에서 pwdPolicySubentry 값을 직접 변경합니다.
이 절을 요약하면 처음에는 기본 비밀번호 정책이 적용됩니다. 기본 비밀번호 정책을 변경하여 기본값을 무시할 수 있습니다. 그런 다음 특수 비밀번호 정책 항목을 만들어 기본 비밀번호 정책을 무시할 수 있습니다. 역할 및 CoS를 사용하여 비밀번호 정책을 할당할 경우 개별 항목에 대한 비밀번호 정책을 지정함으로써 CoS에서 할당된 정책을 무시할 수 있습니다.
다른 디렉토리 항목의 경우와 동일한 방법으로 특수 비밀번호 정책을 만들고 수정합니다. 텍스트 편집기를 사용하여 LDIF에 비밀번호 정책 항목을 쓰는 절차는 다음과 같습니다. 그런 다음 ldapmodify 명령을 -a 옵션과 함께 사용하여 디렉토리에 비밀번호 정책 항목을 추가합니다.
DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.
별도로 명시하지 않는 한 여기에 표시된 데이터 예는 Example.ldif에서 가져온 것입니다.
만들려는 정책에 해당하는 비밀번호 정책 워크시트를 완료하십시오.
샘플은 비밀번호 정책 정의 워크시트를 참조하십시오.
워크시트를 기반으로 LDIF에 비밀번호 정책 항목을 작성합니다.
예를 들어 다음 정책 항목은 하위 트리 루트가 dc=example,dc=com인 Example.com의 임시 직원에 대한 비밀번호 정책을 지정합니다.
dn: cn=TempPolicy,dc=example,dc=com objectClass: top objectClass: pwdPolicy objectClass: LDAPsubentry cn: TempPolicy pwdCheckQuality: 2 pwdLockout: TRUE pwdLockoutDuration: 300 pwdMaxFailure: 3 pwdMustChange: TRUE
기본 비밀번호 정책 설정 이외에 여기에 표시된 정책은 추가 동작을 지정합니다. 비밀번호 품질 검사가 시행됩니다. 연속 세 번의 바인드 실패 후 5분(300초) 동안 계정을 잠급니다. 비밀번호를 재설정하고 나면 비밀번호를 변경해야 합니다. 정책을 사용자 계정에 할당하면 여기에 명시적으로 지정된 설정은 기본 비밀번호 정책을 무시합니다.
디렉토리에 비밀번호 정책 항목을 추가합니다.
예를 들어 다음 명령은 dc=example,dc=com 아래에 Example.com의 임시 직원에 대한 비밀번호 정책을 추가합니다. 비밀번호 정책이 pwp.ldif라는 파일로 저장되었습니다.
$ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f pwp.ldif Enter bind password: adding new entry cn=TempPolicy,dc=example,dc=com $ ldapsearch -D uid=kvaughan,ou=people,dc=example,dc=com -w --b dc=example,dc=com \ "(&(objectclass=ldapsubentry)(cn=temppolicy))" Enter bind password: version: 1 dn: cn=TempPolicy,dc=example,dc=com objectClass: top objectClass: pwdPolicy objectClass: LDAPsubentry cn: TempPolicy pwdCheckQuality: 2 pwdLockout: TRUE pwdLockoutDuration: 300 pwdMaxFailure: 3 pwdMustChange: TRUE $ |
Example.ldif에 표시된 것처럼 kvaughan은 dc=example,dc=com 항목 수정 액세스 권한이 있는 Human Resources 관리자입니다. Example.ldif에 표시된 것처럼 Vaughan의 바인드 비밀번호는 bribery입니다.
정의된 정책이 적용되는 사용자 계정을 정의하려면 개인 계정에 비밀번호 정책을 할당하려면 또는 역할 및 CoS를 사용하여 비밀번호 정책을 할당하려면을 참조하십시오.
이 절차에서는 단일 사용자 계정에 기존 비밀번호 정책을 할당합니다.
이 절차를 완료하려면 할당할 특수 비밀번호 정책이 있어야 합니다. 비밀번호 정책을 만들려면을 참조하십시오.
DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.
별도로 명시하지 않는 한 여기에 표시된 데이터 예는 Example.ldif에서 가져온 것입니다.
사용자 항목의 pwdPolicySubentry 속성 값에 비밀번호 정책 DN을 추가합니다.
예를 들어 다음 명령은 비밀번호 정책을 만들려면에 정의된 비밀번호 정책을 DN이 uid=dmiller,ou=people,dc=example,dc=com인 David Miller의 항목에 할당합니다.
$ cat pwp.ldif dn: uid=dmiller,ou=people,dc=example,dc=com changetype: modify add: pwdPolicySubentry pwdPolicySubentry: cn=TempPolicy,dc=example,dc=com $ ldapmodify -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f pwp.ldif Enter bind password: modifying entry uid=dmiller,ou=people,dc=example,dc=com $ ldapsearch -D uid=kvaughan,ou=people,dc=example,dc=com -w - -b dc=example,dc=com \ "(uid=dmiller)" pwdPolicySubentry Enter bind password: version: 1 dn: uid=dmiller, ou=People, dc=example,dc=com pwdPolicySubentry: cn=TempPolicy,dc=example,dc=com $ |
Example.ldif에 표시된 것처럼 kvaughan은 dc=example,dc=com 항목 수정 액세스 권한이 있는 Human Resources 관리자입니다. Example.ldif에 표시된 것처럼 Vaughan의 바인드 비밀번호는 bribery입니다.
이 절차에서는 역할 및 서비스 클래스(CoS)를 적용하여 기존의 특수 비밀번호 정책을 사용자 집합에 할당합니다. 역할 및 CoS에 대한 자세한 내용은 9 장, 디렉토리 서버 그룹, 역할 및 CoS를 참조하십시오.
이 절차를 완료하려면 할당할 특수 비밀번호 정책이 있어야 합니다. 비밀번호 정책을 만들려면을 참조하십시오.
DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.
별도로 명시하지 않는 한 여기에 표시된 데이터 예는 Example.ldif에서 가져온 것입니다.
비밀번호 정책을 적용할 항목에 대한 역할을 만듭니다.
예를 들어 다음 명령은 Example.com의 임시 직원에 대한 필터링된 역할을 만듭니다.
$ cat tmp.ldif dn: cn=TempFilter,ou=people,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: nsRoleDefinition objectclass: nsComplexRoleDefinition objectclass: nsFilteredRoleDefinition cn: TempFilter nsRoleFilter: (&(objectclass=person)(status=contractor)) description: filtered role for temporary employees $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f tmp.ldif Enter bind password: modifying entry cn=TempFilter,ou=people,dc=example,dc=com $ |
Example.ldif에 표시된 것처럼 kvaughan은 dc=example,dc=com 항목 수정 액세스 권한이 있는 Human Resources 관리자입니다. Example.ldif에 표시된 것처럼 Vaughan의 바인드 비밀번호는 bribery입니다.
비밀번호 정책 항목의 DN을 생성할 서비스 클래스를 만듭니다.
DN은 사용자가 만든 역할이 있는 사용자의 pwdPolicySubentry 속성 값입니다.
예를 들어 다음 명령은 Example.com의 임시 직원에 대한 필터링된 역할을 만듭니다. 다음 명령은 cn=TempPolicy,dc=example,dc=com을 역할이 있는 사용자에게 할당합니다.
$ cat cos.ldif dn: cn=PolTempl,dc=example,dc=com objectclass: top objectclass: nsContainer dn: cn="cn=TempFilter,ou=people,dc=example,dc=com", cn=PolTempl,dc=example,dc=com objectclass: top objectclass: extensibleObject objectclass: LDAPsubentry objectclass: costemplate cosPriority: 1 pwdPolicySubentry: cn=TempPolicy,dc=example,dc=com dn: cn=PolCoS,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: cosSuperDefinition objectclass: cosClassicDefinition cosTemplateDN: cn=PolTempl,dc=example,dc=com cosSpecifier: nsRole cosAttribute: pwdPolicySubentry operational $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f cos.ldif Enter bind password: modifying entry cn=TempFilter,ou=people,dc=example,dc=com $ |
상태가 contractor인 사용자는 이제 cn=TempPolicy,dc=example,dc=com 비밀번호 정책에 적용됩니다.
대부분의 배포에서 새 계정에 적용할 비밀번호 정책은 설정된 계정에 적용할 비밀번호 정책과 다릅니다. 이 절에서는 첫 번째 로그인 비밀번호 정책에 대해 설명합니다. 이 정책은 사용자에게 새로 만든 계정을 3일 동안 사용하여 계정이 잠기기 전에 새 비밀번호를 설정할 수 있도록 허용합니다. 이 정책은 비밀번호를 재설정한 사용자의 경우와 동일하게 적용됩니다.
DSCC를 사용하여 이 작업을 수행할 수 없습니다. 이 절차에 설명된 것처럼 명령줄을 사용하십시오.
새로 만든 계정에 대해 특수 비밀번호 정책을 만듭니다.
예를 들어 만료 시간을 3일(259,200초)로 설정하는 비밀번호 정책 항목을 추가합니다. 또한 이 비밀번호 정책에서는 pwdMustChange(5dsat)가 TRUE로 설정되어 있습니다. 즉, 사용자가 처음 바인드할 때 비밀번호를 변경해야 합니다.
$ cat firstLogin.ldif dn: cn=First Login,dc=example,dc=com objectClass: top objectClass: LDAPsubentry objectClass: pwdPolicy objectClass: sunPwdPolicy cn: First Login passwordStorageScheme: SSHA pwdAttribute: userPassword pwdInHistory: 0 pwdExpireWarning: 86400 pwdLockout: TRUE pwdMinLength: 6 pwdMaxFailure: 3 pwdMaxAge: 259200 pwdFailureCountInterval: 600 pwdAllowUserChange: TRUE pwdLockoutDuration: 3600 pwdMinAge: 0 pwdCheckQuality: 2 pwdMustChange: TRUE $ ldapmodify -a -D cn=admin,cn=Administrators,cn=config -w - -f firstLogin.ldif Enter bind password: adding new entry cn=First Login,dc=example,dc=com $ |
새로 만든 모든 계정을 포함하는 역할을 만듭니다.
이 역할을 만들 때 새로 만든 계정을 설정된 계정과 구분하는 몇 가지 방법을 설정합니다.
새 계정의 pwdReset(5dsat) 속성을 TRUE로 설정합니다.
비밀번호 관리자와 같은 다른 사용자가 사용자의 비밀번호를 변경하면 pwdReset이 TRUE로 설정됩니다.
새 계정을 식별하는 역할을 만듭니다.
예를 들어 다음 명령은 비밀번호를 재설정한 계정에 대한 역할을 만듭니다.
$ cat newRole.ldif dn: cn=First Login Role,ou=people,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: nsRoleDefinition objectclass: nsComplexRoleDefinition objectclass: nsFilteredRoleDefinition cn: First Login Role nsRoleFilter: (pwdReset=TRUE) description: Role to assign password policy for new and reset accounts $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f newRole.ldif Enter bind password: adding new entry cn=First Login Role,ou=people,dc=example,dc=com $ |
서비스 클래스를 사용하여 새로 만든 계정에 대한 비밀번호 정책을 할당합니다.
$ cat newCoS.ldif dn: cn=First Login Template,dc=example,dc=com objectClass: top objectClass: nsContainer dn: cn="cn=First Login Role,ou=people,dc=example,dc=com", cn=First Login Template,dc=example,dc=com objectClass: top objectClass: extensibleObject objectClass: LDAPSubEntry objectClass: CoSTemplate cosPriority: 1 pwdPolicySubentry: cn=First Login,dc=example,dc=com dn: cn=First Login CoS,dc=example,dc=com objectClass: top objectClass: LDAPSubEntry objectClass: CoSSuperDefinition objectClass: CoSClassicDefinition cosTemplateDN: cn=First Login Template,dc=example,dc=com cosSpecifier: nsRole cosAttribute: pwdPolicySubentry operational $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -f newCoS.ldif Enter bind password: adding new entry cn=First Login Template,dc=example,dc=com adding new entry cn="cn=First Login Role,ou=people,dc=example,dc=com", cn=First Login Template,dc=example,dc=com adding new entry cn=First Login CoS,dc=example,dc=com $ |
추가한 역할에 맞는 새 사용자를 추가합니다. 사용자를 추가하여 새 비밀번호 정책이 새 사용자에게는 적용되고 기존 사용자에게는 적용되지 않는지를 확인합니다.
$ cat quentin.ldif dn: uid=qcubbins,ou=People,dc=example,dc=com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson uid: qcubbins givenName: Quentin sn: Cubbins cn: Quentin Cubbins mail: quentin.cubbins@example.com userPassword: ch4ngeM3! description: New account $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f quentin.ldif Enter bind password: adding new entry uid=qcubbins,ou=People,dc=example,dc=com $ ldapsearch -D uid=kvaughan,ou=people,dc=example,dc=com -w - \ -b dc=example,dc=com uid=qcubbins nsrole pwdPolicySubentry Enter bind password: version: 1 dn: uid=qcubbins,ou=People,dc=example,dc=com nsrole: cn=first login role,ou=people,dc=example,dc=com pwdPolicySubentry: cn=First Login,dc=example,dc=com $ ldapsearch -b dc=example,dc=com uid=bjensen nsrole pwdPolicySubentry version: 1 dn: uid=bjensen, ou=People, dc=example,dc=com $ |
Barbara Jensen의 기존 계정에는 기본 비밀번호 정책이 적용됩니다. 그러나 Quentin Cubbins의 새 계정에는 정의된 비밀번호 정책이 적용됩니다.
사용자의 비밀번호 정책에서 pwdSafeModify가 TRUE로 설정되어 있는 경우 비밀번호를 변경하려면 이전 비밀번호를 새 비밀번호와 함께 제공해야 합니다. dsconf set-server-prop pwd-safe-modify-enabled:on 명령은 기본 비밀번호 정책에 동일한 효과가 있습니다.
ldappasswd(1) 명령을 사용하여 비밀번호를 변경할 수 있습니다. 이 명령은 안전한 비밀번호 수정을 지원합니다. 이 명령은 RFC 3062, LDAP Password Modify Extended Operation을 구현합니다.
ldapmodify(1) 명령을 사용하여 비밀번호를 변경할 수 있습니다. 이 경우 ldapmodify 명령에 전달되는 LDIF는 다음과 같습니다.
dn: DN of user whose password you are changing changetype: modify delete: userPassword userPassword: old password - add: userPassword userPassword: new password
LDAP 비밀번호 수정 확장 작업을 사용할 수도 있습니다. 확장 작업 지원 설정에 대한 자세한 내용은 비밀번호 수정 확장 작업을 사용하여 비밀번호를 재설정하려면을 참조하십시오.
비밀번호 정책에서 비밀번호 만료를 시행할 때 사용자가 기간 내에 비밀번호를 변경하지 못하는 경우가 있습니다. 이 절에서는 만료된 비밀번호를 변경하는 방법에 대해 설명합니다.
디렉토리 서버는 항목의 비밀번호가 수정될 때마다 pwdChangedTime(5dsat) 작동 가능 속성을 업데이트합니다. 따라서 비밀번호 만료가 활성화될 때까지 기다린 후 비밀번호 만료를 활성화하면 이미 만료된 사용자 비밀번호가 즉시 만료됩니다. 이 동작을 원하지 않으면 경고 및 정상 로그인을 사용하십시오.
이 절에는 비밀번호 수정 확장 작업을 사용하여 비밀번호를 재설정하고 비밀번호가 만료된 경우에 정상 인증을 허용하는 절차가 포함되어 있습니다.
이 절에서 설명된 메커니즘은 실제 사용자의 디렉토리 상호 작용을 처리하는 응용 프로그램과 관리자를 위한 것입니다. 일반적으로 응용 프로그램을 사용하여 최종 사용자가 이 메커니즘을 의도된 방식으로 사용하고 있는지 확인합니다.
비밀번호가 만료되면 사용자 계정이 잠깁니다. 비밀번호를 재설정하면 계정 잠금이 해제됩니다. 관리자와 같은 다른 사용자가 비밀번호를 재설정할 수 있습니다. 비밀번호를 재설정하면 디렉토리 서버에서 사용자 계정을 잠금 해제합니다. 디렉토리 서버는 RFC 3062, LDAP Password Modify Extended Operation을 지원합니다. 확장된 작업을 사용하면 디렉토리 어드민 관리자나 응용 프로그램에서 비밀번호 재설정을 통해 계정 잠금을 해제할 수 있습니다.
이 절차에 표시된 것처럼 비밀번호 수정 확장 작업을 사용하도록 허용할 경우에는 유의하십시오. 액세스 권한이 신뢰할 수 있는 관리자와 응용 프로그램으로 제한됩니다. 네트워크를 통해 비밀번호를 일반 텍스트로 전달할 수 없습니다.
DSCC를 사용하여 이 작업을 수행할 수 없습니다. 이 절차에 설명된 것처럼 명령줄을 사용하십시오.
비밀번호 관리자 또는 비밀번호 관리 응용 프로그램에 사용자 액세스 권한을 부여합니다.
비밀번호 관리자 액세스를 통해 비밀번호 수정 확장 작업을 사용하도록 허용합니다.
다음 명령은 Password Managers 역할이 있는 구성원이 SSL을 통해 연결된 경우 비밀번호 수정 확장 작업을 사용하도록 허용하는 ACI를 설정합니다.
$ cat exop.ldif dn: oid=1.3.6.1.4.1.4203.1.11.1,cn=features,cn=config objectClass: top objectClass: directoryServerFeature oid: 1.3.6.1.4.1.4203.1.11.1 cn: Password Modify Extended Operation aci: (targetattr != "aci")(version 3.0; acl "Password Modify Extended Operation "; allow( read, search, compare, proxy ) (roledn = " ldap:///cn=Password Managers,dc=example,dc=com" and authmethod = "SSL");) $ ldapmodify -a -D cn=admin,cn=Administrators,cn=config -w - -f exop.ldif Enter bind password: adding new entry oid=1.3.6.1.4.1.4203.1.11.1,cn=features,cn=config $ |
cn=features,cn=config 아래의 항목을 사용하여 비밀번호 수정 확장 작업에 대한 액세스 권한을 관리할 수 있습니다.
비밀번호 관리자가 사용자 비밀번호를 재설정합니다.
이 단계는 사용자 계정의 잠금을 해제하고 ldappasswd(1) 명령을 사용하여 완료할 수 있습니다.
(옵션) 사용자가 비밀번호를 변경해야 하는 경우 비밀번호 관리자가 사용자에게 알림 메시지를 보냅니다.
사용자는 자신의 항목을 제어하는 비밀번호 정책에 pwdMustChange: TRUE가 포함되어 있는 경우 비밀번호를 재설정한 후 변경해야 합니다.
이 절차에서는 사용자가 만료된 비밀번호를 변경할 수 있도록 정상 인증을 허용하는 방법에 대해 설명합니다.
정상 인증은 비밀번호 정책 요청 및 응답 컨트롤을 처리하는 응용 프로그램에서 관리하도록 설계되었습니다.
DSCC를 사용하여 이 작업을 수행할 수 없습니다. 이 절차에 설명된 것처럼 명령줄을 사용하십시오.
비밀번호 정책 요청 및 응답 컨트롤을 사용하는 응용 프로그램에 대한 액세스 권한이 사용자에게 있는지 확인합니다.
응용 프로그램에서는 사용자가 정상 인증을 적절하게 처리하는지 확인해야 합니다.
응용 프로그램에서 비밀번호 정책 컨트롤을 사용하도록 허용합니다.
다음 명령은 Password Managers 역할을 가진 구성원에게 비밀번호 정책 컨트롤을 사용하도록 허용하는 ACI를 설정합니다.
$ cat ctrl.ldif dn: oid=1.3.6.1.4.1.42.2.27.8.5.1,cn=features,cn=config objectClass: top objectClass: directoryServerFeature oid: 1.3.6.1.4.1.42.2.27.8.5.1 cn: Password Policy Controls aci: (targetattr != "aci")(version 3.0; acl "Password Policy Controls "; allow( read, search, compare, proxy ) roledn = " ldap:///cn=Password Managers,dc=example,dc=com";) $ ldapmodify -a -D cn=admin,cn=Administrators,cn=config -w - -f ctrl.ldif Enter bind password: adding new entry oid=1.3.6.1.4.1.42.2.27.8.5.1,cn=features,cn=config $ |
cn=features,cn=config 아래의 항목은 오로지 비밀번호 정책 요청 및 응답 컨트롤을 사용하는 작업에 대한 액세스를 관리하기 위한 것입니다.
비밀번호 정책에서 pwdGraceAuthNLimit를 비밀번호가 만료된 이후 허용할 인증 횟수로 설정합니다.
응용 프로그램에서는 최종 사용자가 정상 인증 기간이 종료되기 전에 만료된 비밀번호를 변경하도록 안내해야 합니다.
디렉토리 서버에서는 지정된 실패한 바인드 시도 횟수 이후에 계정 잠금을 시행하는 비밀번호 정책을 구성할 수 있습니다. 자세한 내용은 계정 잠금 정책을 참조하십시오. 이 절에서는 디렉토리 관리자가 사용할 수 있는 수동 계정 잠금 및 활성화 도구에 대해 설명합니다.
디렉토리 관리자는 잠금 기간 타이머를 사용하지 않고 계정 잠금을 관리할 수 있습니다. 잠긴 계정은 비밀번호를 수동으로 재설정할 때까지 잠겨진 상태로 유지됩니다. 또한 디렉토리 관리자는 특정 계정을 무한 기간 동안 비활성 상태로 렌더링할 수 있습니다.
이 절에서는 계정 상태를 검사하고 계정을 비활성 상태로 렌더링하며 다시 활성화하는 방법에 대해 설명합니다.
여기에 표시된 대로 계정 상태를 검사합니다.
디렉토리 관리자로 바인드해야 합니다.
DSCC를 사용하여 이 작업을 수행할 수 없습니다. 이 절차에 설명된 것처럼 명령줄을 사용하십시오.
ns-accountstatus 명령을 사용하여 계정 또는 역할 상태를 검사합니다.
다음 명령은 Barbara Jensen의 계정 상태를 검사합니다.
$ ns-accountstatus -D "cn=Directory Manager" -j pwd.txt \ -I uid=bjensen,ou=people,dc=example,dc=com uid=bjensen,ou=people,dc=example,dc=com activated. $ |
자세한 내용은 ns-accountstatus(1M) 설명서 페이지를 참조하십시오.
여기에 표시된 대로 계정 또는 역할을 비활성 상태로 렌더링합니다.
디렉토리 관리자로 바인드해야 합니다.
DSCC를 사용하여 이 작업을 수행할 수 없습니다. 이 절차에 설명된 것처럼 명령줄을 사용하십시오.
ns-inactivate 명령을 사용하여 계정 또는 역할을 비활성 상태로 렌더링합니다.
다음 명령은 Barbara Jensen의 계정을 비활성 상태로 렌더링합니다.
$ ns-inactivate -D "cn=Directory Manager" -j pwd.txt \ -I uid=bjensen,ou=people,dc=example,dc=com uid=bjensen,ou=people,dc=example,dc=com inactivated. $ |
자세한 내용은 ns-inactivate(1M) 설명서 페이지를 참조하십시오.
여기에 표시된 대로 계정 또는 역할을 잠금 해제합니다.
디렉토리 관리자로 바인드해야 합니다.
DSCC를 사용하여 이 작업을 수행할 수 없습니다. 이 절차에 설명된 것처럼 명령줄을 사용하십시오.
ns-activate 명령을 사용하여 계정 또는 역할을 다시 활성화합니다.
다음 명령은 Barbara Jensen의 계정을 다시 활성 상태로 렌더링합니다.
$ ns-activate -D "cn=Directory Manager" -j pwd.txt \ -I uid=bjensen,ou=people,dc=example,dc=com uid=bjensen,ou=people,dc=example,dc=com activated. $ |
자세한 내용은 ns-activate(1M) 설명서 페이지를 참조하십시오.