Windows Server 2025 / 도메인 암호·계정 잠금 정책과 세분화된 암호 정책 설정하기
AD 도메인의 암호 정책과 계정 잠금 정책은 사용자의 암호 조건과 반복 로그인 실패 시 동작을 정합니다. 도메인 기본 정책과 세분화된 암호 정책(FGPP)을 구분해야 하며, OU에 일반 GPO를 연결하는 것만으로 그 OU 사용자에게 별도 도메인 암호 정책이 생기지는 않습니다.
기본 정책과 예외 정책의 범위를 구분합니다
도메인의 기본 계정 정책은 도메인 수준에서 관리합니다. 특정 사용자 집합에 다른 암호·잠금 정책을 적용하려면 Fine-Grained Password Policy를 사용하며, 정책 설정 개체를 PSO(Password Settings Object)라고 부릅니다. 실습은 기존 기본 정책을 바꾸지 않고 일반 실습 그룹에만 별도 PSO를 연결합니다.
세분화된 암호 정책 안내에 따라 적용 대상은 사용자 또는 글로벌 보안 그룹 등 지원되는 대상입니다. OU 자체가 FGPP 적용 대상은 아닙니다. 이미 다른 PSO가 적용되는 계정이라면 우선순위와 실제 결과를 먼저 확인하세요.
Get-ADDefaultDomainPasswordPolicy Get-ADUserResultantPasswordPolicy -Identity 'labuser1' Get-ADFineGrainedPasswordPolicy -Filter *
격리 실습의 값과 대상을 정합니다
도메인 ad.example.test, 글로벌 보안 그룹 GG_LabUsers와 일반 사용자 labuser1을 사용합니다. 관리자·서비스 계정이나 실제 사용자는 이 그룹에 넣지 않습니다. 다음 수치는 동작을 확인하는 실습 예시이며 모든 조직의 권장 보안 기준은 아닙니다.
| 항목 | 실습 예시 |
|---|---|
| 최소 길이·복잡성 | 14자, 복잡성 사용 |
| 암호 기록 | 5개 |
| 최소·최대 사용 기간 | 0일·30일 |
| 잠금 임계값 | 실패 5회 |
| 잠금 기간·실패 횟수 초기화 시간 | 각 15분 |
| 가역 암호화 | 사용 안 함 |
운영 값은 침해 탐지, MFA 적용 범위, 계정 종류와 복구 절차를 함께 검토해 결정합니다. 잠금 임계값을 너무 낮게 정하면 정상 사용자가 자주 잠기거나 의도적인 잠금 공격에 악용될 수 있습니다. 암호 만료와 길이만으로 보안 수준을 판정하지 않습니다.
정책을 만들고 실습 그룹에 연결합니다
권한 있는 계정으로 DC1의 Windows PowerShell 또는 AD 모듈이 있는 관리 PC에서 실행합니다. 이름 Lab-Password-Policy가 없는지 확인하고 새 실습 정책만 생성합니다. 매개변수 조건은 New-ADFineGrainedPasswordPolicy 설명에서 확인할 수 있습니다.
$policyParameters = @{
Name = 'Lab-Password-Policy'
Precedence = 100
MinPasswordLength = 14
ComplexityEnabled = $true
PasswordHistoryCount = 5
MinPasswordAge = (New-TimeSpan -Days 0)
MaxPasswordAge = (New-TimeSpan -Days 30)
LockoutThreshold = 5
LockoutDuration = (New-TimeSpan -Minutes 15)
LockoutObservationWindow = (New-TimeSpan -Minutes 15)
ReversibleEncryptionEnabled = $false
}
New-ADFineGrainedPasswordPolicy @policyParameters
Add-ADFineGrainedPasswordPolicySubject -Identity 'Lab-Password-Policy' -Subjects 'GG_LabUsers'
Get-ADUserResultantPasswordPolicy -Identity 'labuser1'
GUI에서는 Active Directory 관리 센터의 도메인 → System → Password Settings Container에서 새 암호 설정을 만들 수 있습니다. 직접 적용 대상에 GG_LabUsers를 추가하고, 사용자에 대한 결과 암호 정책 보기로 확인합니다. 두 생성 방법을 중복 실행하지 않습니다.
현재 암호와 새 암호 검사를 구분합니다
정책을 바꿨다고 기존 암호의 문자열을 검사해 즉시 길이를 늘려 주는 것은 아닙니다. CLIENT1에서 labuser1로 정상 로그인한 뒤 보안 화면의 암호 변경을 사용해 새 암호에 정책이 적용되는지 확인합니다. 기존 암호와 새 암호를 로그나 화면 캡처에 남기지 않습니다.
결과 정책 조회에서 Lab-Password-Policy와 각 값이 맞는지 먼저 확인하세요. 오류를 만들려고 관리자 계정의 암호를 반복해서 틀리지 않습니다. 계정 잠금 원인을 점검할 때는 사용자의 저장된 자격 증명, 예약 작업과 서비스 등 이전 암호를 계속 보내는 곳도 확인합니다.
Get-ADUser -Identity 'labuser1' -Properties LockedOut,PasswordLastSet | Select-Object SamAccountName,LockedOut,PasswordLastSet
계정 잠금을 해제하는 것은 실패 원인을 제거하는 것과 다릅니다. 정상 사용자임을 확인하고 원인을 해결한 뒤 필요한 계정만 해제해야 합니다. 전체 사용자에 대한 잠금 해제나 정책 완화로 문제를 덮지 않습니다.
정책 연결을 제거해 원래 범위로 돌아갑니다
실습 PSO를 더 이상 사용하지 않으면 아래처럼 그룹 연결을 제거하고 결과를 다시 조회합니다. 다른 PSO가 없다면 도메인 기본 정책이 적용되며, 결과 조회에 별도 PSO가 표시되지 않을 수 있습니다.
Remove-ADFineGrainedPasswordPolicySubject -Identity 'Lab-Password-Policy' -Subjects 'GG_LabUsers' Get-ADUserResultantPasswordPolicy -Identity 'labuser1' Get-ADDefaultDomainPasswordPolicy
정책 연결 제거는 사용자가 바꾼 암호를 이전 암호로 되돌리는 작업이 아닙니다. 사용 중인 새 암호는 안전하게 유지합니다. PSO 자체를 삭제하기 전에는 다른 직접 적용 대상이 없는지 확인하고, 재사용할 계획이라면 연결 없이 보관할 수도 있습니다.




