9.6. 암호 정책 설계
암호 정책은 지정된 시스템에서 암호를 사용하는 방법을 제어하는 규칙 집합입니다. Directory Server의 암호 정책은 암호가 기간, 길이 및 사용자가 암호를 재사용할 수 있는지 여부와 같이 유효한 것으로 간주해야 하는 기준을 지정합니다.
다음 섹션에서는 사운드 암호 정책을 설계하는 방법에 대한 자세한 정보를 제공합니다.
9.6.1. 암호 정책 작동 방식 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
Directory Server는 세분화된 암호 정책을 지원합니다. 즉, 하위 트리 및 사용자 수준에서 암호 정책을 정의할 수 있습니다. 이를 통해 디렉터리 트리의 언제든지 암호 정책을 정의할 수 있습니다.
- 전체 디렉터리입니다.이러한 정책을 글로벌 암호 정책이라고 합니다. 구성 및 활성화되면 이 정책은 Directory Manager 항목 및 로컬 암호 정책이 활성화된 사용자를 제외하고 디렉터리 내의 모든 사용자에게 적용됩니다.이는 모든 디렉터리 사용자에 대해 공통 단일 암호 정책을 정의할 수 있습니다.
- 디렉터리의 특정 하위 트리입니다.이러한 정책을 하위 트리 수준 또는 로컬 암호 정책이라고 합니다. 구성 및 활성화되면 정책이 지정된 하위 트리 아래의 모든 사용자에게 적용됩니다.이는 호스팅 환경에서 모든 호스팅 회사에 대해 단일 정책을 적용하는 대신 호스트 회사마다 서로 다른 암호 정책을 지원하는 것이 좋습니다.
- 디렉터리의 특정 사용자입니다.이러한 정책을 사용자 수준 또는 로컬 암호 정책이라고 합니다. 구성 및 활성화하면 정책이 지정된 사용자에게만 적용됩니다.다른 디렉터리 사용자에 대해 서로 다른 암호 정책을 정의할 수 있습니다. 예를 들어 일부 사용자가 암호를 매일 변경하고 일부 사용자는 월간 변경하며 다른 모든 사용자는 6개월마다 암호를 변경하도록 지정합니다.
기본적으로 Directory Server에는 글로벌 암호 정책과 관련된 항목 및 속성이 포함되어 있습니다. 즉, 모든 사용자에게 동일한 정책이 적용됩니다. 하위 트리 또는 사용자에 대한 암호 정책을 설정하려면 하위 트리 또는 사용자 수준에서 추가 항목을 추가하고 cn=config 항목의
nsslapd-pwpolicy-local 속성을 활성화합니다. 이 속성은 스위치 역할을 하여 세분화된 암호 정책을 켜거나 끕니다.
명령줄 또는 웹 콘솔을 사용하여 암호 정책을 변경할 수 있습니다. dsconf pwpolicy 명령을 사용하여 글로벌 정책 및 dsconf localpwp 명령을 사용하여 로컬 정책을 변경합니다. 암호 정책 설정에 대한 자세한 내용은 관리 가이드를 참조하십시오.
참고
이전에 로컬 암호 정책을 관리하는
ns-newpwpolicy.pl 스크립트가 더 이상 사용되지 않습니다. 그러나 이 스크립트는 389-ds-base-legacy-tools 패키지에서 계속 사용할 수 있습니다.
암호 정책 항목이 디렉터리에 추가되면 디렉터리 서버가 적용해야 하는 암호 정책의 유형(글로벌 또는 로컬)을 결정합니다.
사용자가 디렉터리에 바인딩하려고 하면 Directory Server에서 사용자 항목에 대해 로컬 정책이 정의되고 활성화되어 있는지 여부를 결정합니다.
- 세분화된 암호 정책이 활성화되어 있는지 확인하기 위해 서버는 cn=config 항목의
nsslapd-pwpolicy-local속성에 할당된 값(온 또는 off)을 확인합니다. 값이 꺼져 있으면 서버는 하위 트리 및 사용자 수준에 정의된 정책을 무시하고 글로벌 암호 정책을 적용합니다. - 로컬 정책이 하위 트리 또는 사용자에 대해 정의되었는지 확인하기 위해 서버는 해당 사용자 항목에서
pwdPolicysubentry속성을 확인합니다. 속성이 있는 경우 서버는 사용자에 대해 구성된 로컬 암호 정책을 적용합니다. 속성이 없으면 서버는 오류 메시지를 기록하고 글로벌 암호 정책을 적용합니다.
그런 다음 서버는 사용자가 제공한 암호를 사용자 디렉터리 항목에 지정된 값과 비교하여 일치하는지 확인합니다. 또한 서버는 암호 정책에 의해 정의된 규칙을 사용하여 사용자가 디렉터리에 바인딩하기 전에 암호가 유효한지 확인합니다.
그림 9.3. 암호 정책 검사 프로세스
요청을 바인딩하는 것 외에도
userPassword 속성(다음 섹션에서 설명됨)이 요청에 있는 경우 추가 및 수정 작업 중에 암호 정책 확인도 발생합니다.
userPassword 값을 수정하면 다음 두 가지 암호 정책 설정이 있는지 확인합니다.
- 암호 최소 사용 기간 정책이 활성화됩니다. 최소 사용 기간 요구 사항이 충족되지 않은 경우 서버에서 constraintViolation 오류를 반환합니다. 암호 업데이트 작업이 실패합니다.
- 암호 기록 정책이 활성화됩니다.
userPassword의 새 값이 암호 기록에 있거나 현재 암호와 동일한 경우 서버에서 constraintViolation 오류를 반환합니다. 암호 업데이트 작업이 실패합니다.
userPassword 값을 추가하고 수정하면 모두 암호 구문에 대해 설정된 암호 정책을 확인합니다.
- 암호 최소 길이 정책이 활성화됩니다.
userPassword의 새 값이 필요한 최소 길이보다 작으면 서버에서 constraintViolation 오류를 반환합니다. 암호 업데이트 작업이 실패합니다. - 암호 구문 검사 정책이 활성화됩니다.
userPassword의 새 값이 항목의 다른 속성과 동일한 경우 서버에서 constraintViolation 오류를 반환합니다. 암호 업데이트 작업이 실패합니다.
9.6.2. 암호 정책 속성 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
다음 섹션에서는 서버에 대한 암호 정책을 생성하는 특성에 대해 설명합니다.
이러한 속성을 설정하는 방법에 대한 자세한 내용은 Red Hat Directory Server 관리 가이드를 참조하십시오.
9.6.2.1. 최대 실패 수 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
이는 암호 기반 계정 잠금을 활성화하는 암호 정책의 설정입니다. 사용자가 특정 횟수에 로그인하여 실패하는 경우 관리자가 잠금 해제하거나 선택적으로 일정 시간이 경과할 때까지 해당 계정이 잠깁니다. 이는
passwordMaxFailure 매개변수에 설정됩니다.
실패한 최대 시도 횟수에 도달할 때 로그인 시도를 계산하는 방법은 두 가지가 있습니다. 숫자가 적을 때 계정을 잠그거나 개수가 초과되었을 때만 계정을 잠그는 하드 제한 (n+1)일 수 있습니다. 예를 들어 실패 제한이 세 번 시도한 경우 세 번째 실패 시도 (n ) 또는 네 번째 실패 시도 (n+1)에서 계정을 잠글 수 있습니다. n+1 동작은 LDAP 서버의 과거 동작이므로 기존 동작으로 간주됩니다. 최신 LDAP 클라이언트는 더 엄격한 하드 제한을 기대합니다. 기본적으로 디렉터리 서버는 strict 제한(n)을 사용하지만
passwordLegacyPolicy 매개변수에서 레거시 동작을 활성화할 수 있습니다.
9.6.2.2. 비밀번호 변경 후 재설정 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
Directory Server 암호 정책은 사용자가 첫 번째 로그인 후 또는 관리자가 암호를 재설정한 후 암호를 변경해야 하는지 여부를 지정할 수 있습니다.
관리자가 설정한 기본 암호는 일반적으로 사용자의 초기, 사용자 ID 또는 회사 이름과 같은 회사 규칙을 따릅니다. 이 규칙이 발견되면 일반적으로 크래커가 시스템에 침입하려는 시도에 사용하는 첫 번째 값입니다. 따라서 사용자는 관리자가 암호를 재설정한 후 암호를 변경해야 합니다. 이 옵션이 암호 정책에 대해 구성된 경우 사용자 정의 암호가 비활성화된 경우에도 암호를 변경해야 합니다.
사용자가 암호를 요구하거나 변경할 수 없는 경우 관리자가 할당한 암호는 명확한 규칙을 따르지 않아야 하며 검색하기 어려울 수 있습니다.
기본 설정에서는 사용자가 암호를 재설정한 후 변경할 필요가 없습니다.
자세한 내용은 9.6.2.3절. “사용자 정의 암호”를 참조하십시오.
9.6.2.3. 사용자 정의 암호 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
암호 정책은 사용자가 자신의 암호를 변경할 수 있도록 허용하거나 설정하지 않도록 설정할 수 있습니다. 좋은 암호는 강력한 암호 정책의 키입니다. 좋은 암호는 간단한 단어를 사용하지 않습니다. 사전, 가사나 자식의 이름, 예기치 않은 사용자 이름, 사용자 ID 또는 쉽게 찾을 수 있는 사용자에 대한 기타 정보(또는 디렉토리 자체에 저장)는 암호에 적합하지 않습니다.
좋은 암호에는 문자, 숫자 및 특수 문자의 조합이 포함되어야 합니다. 그러나 편의를 위해 사용자가 쉽게 기억할 수 있는 암호를 사용하는 경우가 많습니다. 결과적으로 일부 기업은 강력한 암호 기준을 충족하는 사용자의 암호를 설정하고 사용자가 암호를 변경할 수 없도록 합니다.
관리자가 사용자의 암호를 설정하는 경우 다음 두 가지 단점이 있습니다.
- 관리자의 시간이 많이 필요합니다.
- 관리자 지정 암호는 일반적으로 변경하기가 더 어렵기 때문에 사용자가 암호를 아래로 작성할 가능성이 더 많아 검색 위험이 증가합니다.
기본적으로 사용자 정의 암호는 허용됩니다.
9.6.2.4. 암호 만료 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
암호 정책을 사용하면 사용자가 동일한 암호를 무기한 사용하거나 지정된 시간 후에 암호가 만료되도록 지정할 수 있습니다. 일반적으로 암호가 더 오래 사용할수록 검색될 가능성이 높아집니다. 그러나 암호가 너무 자주 만료되는 경우 사용자가 암호를 기억하는 데 어려움이 있을 수 있습니다. 일반적인 정책은 30일에서 90일마다 암호가 만료되는 것입니다.
암호 만료가 비활성화된 경우에도 서버는 암호 만료 사양을 기억합니다. 암호 만료가 다시 활성화된 경우 암호가 마지막으로 비활성화되기 전에 설정된 기간 동안만 유효합니다.
예를 들어 90일마다 만료되도록 암호 정책에 대해 설정된 경우 암호 만료가 비활성화되고 다시 활성화된 경우 기본 암호 만료 기간은 90일입니다.
기본적으로 사용자 암호는 만료되지 않습니다.
9.6.2.5. 만료 경고 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
암호 만료 기간이 설정되어 있으면 암호가 만료되기 전에 사용자에게 경고를 보내는 것이 좋습니다.
사용자가 서버에 바인딩되면 Directory Server가 경고를 표시합니다. 암호 만료가 활성화된 경우 사용자의 클라이언트 애플리케이션에서 이 기능을 지원하는 경우 기본적으로 사용자 암호가 만료되기 전 하루 전에 사용자에게 경고 메시지가 전송됩니다(LDAP 메시지 사용).
전송할 암호 만료 경고의 유효한 범위는 1에서 24,855일 사이입니다.
참고
암호는 만료 경고가 전송될 때까지 만료되지 않습니다.
9.6.2.6. 유예 로그인 제한 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
만료된 암호의 유예 기간은 사용자가 암호가 만료된 경우에도 계속 시스템에 로그인할 수 있음을 의미합니다. 일부 사용자가 만료된 암호를 사용하여 로그인할 수 있도록 하려면 암호가 만료된 후 사용자에게 허용되는 유예 로그인 시도 횟수를 지정합니다.
기본적으로 grace login은 허용되지 않습니다.
9.6.2.7. 암호 구문 확인 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
암호 구문 검사 에서는 암호 문자열에 대한 규칙을 적용하므로 모든 암호가 특정 기준을 충족하거나 초과해야 합니다. 모든 암호 구문 검사는 하위 트리 또는 사용자별로 전역적으로 적용할 수 있습니다. 암호 구문 검사는
passwordCheckSyntax 특성에 설정됩니다.
기본 암호 구문에는 최소 8자의 암호 길이가 필요하며 암호에는 간단한 단어가 사용되지 않습니다. 간단한 단어는 사용자 항목의
uid,cn,sn,givenName,ou 또는 mail속성에 저장된 모든 값입니다.
또한 다른 형태의 암호 구문 적용이 가능하며 암호 구문에 대한 다양한 선택적 카테고리를 제공할 수 있습니다.
- 암호에 필요한 최소 문자 수(
passwordMinLength) - 최소 숫자 문자 수 (0에서 9 사이의 숫자) (
암호MinDigits) - 대문자 및 소문자(
암호MinAlphas) 최소 ASCII 알파벳 문자 수 - 최소 대문자 ASCII 알파벳 문자 수 (
passwordMinUppers) - 최소 소문자 ASCII 알파벳 문자 수 (
passwordMinLowers) - !@#$ (
암호MinSpecials)와 같은 최소 특수 ASCII 문자 수 - 최소 8비트 문자 수(
passwordMin8bit) - aaabbb 와 같이 동일한 문자를 즉시 반복할 수 있는 최대 횟수(
암호Max repeats) - 암호당 필요한 최소 문자 범주 수입니다. 범주는 대문자 또는 소문자, 특수 문자, 숫자 또는 8비트 문자(
passwordMinCategories)일 수 있습니다. - Directory Server는
CrackLib사전(passwordDictCheck)에 대해 암호를 확인합니다. - Directory Server에서 암호에 palindrome이 포함되어 있는지 확인합니다(
passwordPalindrome) - Directory Server에서는 동일한 카테고리에서 더 연속 문자가 있는 암호를 설정하지 않습니다(
암호MaxClassChars) - Directory Server에서는 특정 문자열이 포함된 암호를 설정하지 못하도록 합니다(
암호BadWords) - Directory Server는 관리자 정의 특성에 설정된 문자열이 포함된 암호를 설정하지 못하도록 합니다(
암호UserAttributes)
구문 카테고리가 많을수록 암호가 강화됩니다.
기본적으로 암호 구문 검사는 비활성화되어 있습니다.
9.6.2.8. 암호 길이 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
암호 정책에는 사용자 암호에 대한 최소 길이가 필요할 수 있습니다. 일반적으로 더 짧은 암호는 해독하기가 더 쉽습니다. 암호의 길이는 8자입니다. 크래킹하기가 어려울 만큼 길지만 사용자가 암호를 적어 두지 않고도 암호를 기억할 수 있을 만큼 짧습니다. 이 속성에 유효한 값 범위는 2에서 512자 사이입니다.
기본적으로 최소 암호 길이는 설정되지 않습니다.
9.6.2.9. 암호 최소 기간 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
암호 정책을 사용하면 사용자가 지정된 시간 동안 암호를 변경하지 못하도록 할 수 있습니다.
passwordHistory 속성과 함께 사용하면 사용자가 이전 암호를 재사용하지 못하도록 합니다.
예를 들어 암호 최소 사용 기간(
passwordMinAge) 속성이 2일이면 사용자는 단일 세션 중에 암호를 반복적으로 변경할 수 없습니다. 이렇게 하면 이전 암호를 재사용할 수 있도록 암호 기록을 순환하지 못합니다.
이 속성에 유효한 값 범위는 0에서 24,855일 사이입니다. 값 0은 사용자가 암호를 즉시 변경할 수 있음을 나타냅니다.
9.6.2.10. 암호 내역 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
Directory Server는 암호 기록에 2~24개의 암호를 저장할 수 있습니다. 암호가 기록에 있으면 사용자는 이전 암호로 암호를 재설정할 수 없습니다. 이렇게 하면 사용자가 쉽게 기억할 수 있는 몇 개의 암호를 재사용할 수 없습니다. 또는 암호 기록을 비활성화하여 사용자가 암호를 재사용할 수 있습니다.
암호 기록이 다시 설정되어 있으면 사용자는 암호 기록을 비활성화하기 전에 기록에 있는 암호를 재사용할 수 없도록 암호 기록이 꺼져 있는 경우에도 기록에 남아 있습니다.
서버는 기본적으로 암호 기록을 유지하지 않습니다.
9.6.2.11. 암호 스토리지 스키마 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
암호 스토리지 스키마는 디렉터리 내에서 Directory Server 암호를 저장하는 데 사용되는 암호화 유형을 지정합니다. Directory Server는 다양한 암호 스토리지 체계를 지원합니다.
- CLEAR 는 암호화가 없음을 의미합니다. SASL Digest-MD5와 함께 사용할 수 있는 유일한 옵션이므로 SASL을 사용하려면 CLEAR 암호 스토리지 스키마가 필요합니다.디렉터리에 저장된 암호는ACI(액세스 제어 정보) 지침을 사용하여 보호할 수 있지만 일반 텍스트 암호를 디렉터리에 저장하는 것은 여전히 좋지 않습니다.
- 보안 해시 알고리즘 (SHA, SHA-256, SHA-384, SHA-512). SSHA보다 안전하지 않습니다.
- UNIX CRYPT 알고리즘 이 알고리즘은 UNIX 암호와의 호환성을 제공합니다.
- MD5. 이 스토리지 스키마는 SSHA보다 덜 안전하지만 MD5가 필요한 레거시 애플리케이션에는 포함되어 있습니다.
- Salted MD5. 이 스토리지 스키마는 일반 MD5 해시보다 안전하지만 SSHA보다 안전하지는 않습니다. 이 스토리지 스키마는 새 암호와 함께 사용하기 위해 포함되지 않지만 Salted MD5를 지원하는 디렉터리에서 사용자 계정을 마이그레이션하는 데 도움이 됩니다.
9.6.2.12. 암호 마지막 변경 시간 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
passwordTrackUpdateTime 속성은 입력에 대해 암호가 마지막으로 업데이트된 시간 동안 서버에 타임스탬프를 기록하도록 지시합니다. 암호 변경 시간 자체는 사용자 항목 pwdUpdateTime ( modifyTimestamp 또는 last Cryostat 운영 속성과 분리)에 대한 운영 속성으로 저장됩니다.
기본적으로 암호 변경 시간은 기록되지 않습니다.
9.6.3. 복제된 환경에서 암호 정책 설계 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
암호 및 계정 잠금 정책은 다음과 같이 복제된 환경에서 적용됩니다.
- 암호 정책은 데이터 공급자에 적용됩니다.
- 계정 잠금은 복제 설정의 모든 서버에 적용됩니다.
디렉터리의 암호 정책 정보(예: 암호 사용 기간), 계정 잠금 카운터 및 만료 경고 카운터는 모두 복제됩니다. 그러나 구성 정보는 로컬에 저장되고 복제되지 않습니다. 이 정보에는 암호 구문 및 암호 수정 기록이 포함됩니다.
복제된 환경에서 암호 정책을 구성할 때 다음 사항을 고려하십시오.
- 모든 복제본은 무제한 암호 만료에 대한 경고를 발행합니다. 이 정보는 각 서버에서 로컬로 유지되므로 사용자가 여러 복제본에 차례로 바인딩되면 사용자가 동일한 경고를 여러 번 수신합니다. 또한 사용자가 암호를 변경하는 경우 이 정보가 복제본을 필터링하는 데 시간이 걸릴 수 있습니다. 사용자가 암호를 변경한 후 즉시 다시 바인딩하면 복제본이 변경 사항을 등록할 때까지 바인딩이 실패할 수 있습니다.
- 공급자 및 복제본을 포함한 모든 서버에서 동일한 바인딩 동작이 발생해야 합니다. 각 서버에서 항상 동일한 암호 정책 구성 정보를 생성합니다.
- 다중 제공 환경에서 계정 잠금 카운터가 예상대로 작동하지 않을 수 있습니다.