AD FS 엑스트라넷 잠금 보호 구성
Windows Server 2012 R2의 AD FS에서는 엑스트라넷 잠금이라는 보안 기능을 도입했습니다. 해당 잠금 기능을 통해 AD FS는 일정 기간 외부의 “악의적인” 사용자 계정 인증을 “중지”합니다. 따라서 Active Directory에서 사용자 계정이 잠기지 않게 됩니다. AD 계정 잠금으로부터 사용자를 보호하는 것 외에, AD FS 엑스트라넷 잠금은 무차별 암호 대입 공격(brute force attack)으로부터도 보호해 줍니다.
참고 항목
이 기능은 인증 요청이 웹 애플리케이션 프록시 통해 들어오고 사용자 이름 및 암호 인증에만 적용되는 엑스트라넷 시나리오에서만 작동합니다.
엑스트라넷 잠금의 장점
엑스트라넷 잠금은 다음과 같은 주요 이점을 제공합니다.
- 공격자가 인증 요청을 지속적으로 전송하여 사용자의 암호를 추측하려고 하는 무차별 암호 대입 공격으로부터 사용자 계정을 보호합니다. 이 경우 AD FS는 엑스트라넷 액세스를 위해 악의적인 사용자 계정을 잠급니다.
- 공격자가 잘못된 암호로 인증 요청을 전송하여 사용자 계정을 잠그려는 악의적인 계정 잠금으로부터 사용자 계정을 보호합니다. 이 경우 사용자 계정은 엑스트라넷 액세스를 위해 AD FS에 의해 잠기지만 AD의 실제 사용자 계정은 잠기지 않으며 사용자는 조직 내의 회사 리소스에 계속 액세스할 수 있습니다. 이를 소프트 잠금이라고 합니다.
작동 방식
AD FS에는 이 기능을 사용하도록 구성해야 하는 세 가지 설정이 있습니다.
- 엑스트라넷 잠금을 사용하도록 설정하려면 EnableExtranetLockout <Boolean>에서 이 부울 값을 True로 설정합니다.
- ExtranetLockoutThreshold <Integer>는 잘못된 암호 시도의 최대 수를 정의합니다. 임계값에 도달하면 AD FS는 엑스트라넷 관찰 창이 통과될 때까지 암호가 양호한지 나쁜지에 관계없이 인증을 위해 도메인 컨트롤러에 문의하지 않고 엑스트라넷의 요청을 즉시 거부합니다. 즉, 계정이 일시 잠겨 있는 동안 AD 계정의 badPwdCount 특성 값이 증가하지 않습니다.
- ExtranetObservationWindow <TimeSpan>은 사용자 계정이 일시 잠겨 있는 기간을 결정합니다. AD FS는 창이 전달되면 사용자 이름 및 암호 인증을 다시 수행하기 시작합니다. AD FS는 엑스트라넷 관찰 창이 통과되었는지 여부를 확인하기 위한 참조로 AD 특성 badPasswordTime을 사용합니다. 현재 시간 > badPasswordTime + ExtranetObservationWindow인 경우 기간이 경과한 것입니다.
참고 항목
AD FS 엑스트라넷 잠금은 AD 잠금 정책과 독립적으로 작동합니다. 그러나 ExtranetLockoutThreshold 매개 변수 값을 AD 계정 잠금 임계값보다 작은 값으로 설정하는 것이 좋습니다. 이렇게 하지 않으면 AD FS가 Active Directory에서 계정이 잠기지 않도록 보호할 수 없게 됩니다.
최대 15개의 잘못된 암호 시도 수와 30분 소프트 잠금 기간으로 엑스트라넷 잠금 기능을 사용하도록 설정하는 예제는 다음과 같습니다.
Set-AdfsProperties -EnableExtranetLockout $true -ExtranetLockoutThreshold 15 -ExtranetObservationWindow (new-timespan -Minutes 30)
이러한 설정은 AD FS 서비스가 인증할 수 있는 모든 도메인에 적용됩니다. 작동 방식은 AD FS가 인증 요청을 받으면 LDAP 호출을 통해 PDC(기본 도메인 컨트롤러)에 액세스하고 PDC에서 사용자에 대한 badPwdCount 특성에 대한 조회를 수행하는 것입니다. AD FS가 badPwdCount>= ExtranetLockoutThreshold 설정의 값을 찾고 엑스트라넷 관찰 창에 정의된 시간이 아직 경과되지 않은 경우 AD FS는 요청을 즉시 거부합니다. 즉, 사용자가 엑스트라넷에서 양호한 암호를 입력하든 잘못된 암호를 입력하든 관계없이 AD FS가 AD에 자격 증명을 보내지 않으므로 로그온이 실패합니다. AD FS는 badPwdCount 또는 잠긴 사용자 계정과 관련하여 상태를 유지하지 않습니다. AD FS는 모든 상태 추적에 AD를 사용합니다.
Warning
Server 2012 R2에서 AD FS 엑스트라넷 잠금을 사용하도록 설정하면 WAP를 통한 모든 인증 요청이 PDC의 AD FS에 의해 유효성이 검사됩니다. PDC를 사용할 수 없는 경우 사용자는 엑스트라넷에서 인증할 수 없습니다.
Server 2016은 PDC를 사용할 수 없는 경우 AD FS가 다른 도메인 컨트롤러로 대체될 수 있도록 하는 추가 매개 변수를 제공합니다.
- ExtranetLockoutRequirePDC <Boolean> - 사용하도록 설정하면 엑스트라넷 잠금에 PDC(Primary Domain Controller)가 필요합니다. 사용하지 않도록 설정하면 PDC를 사용할 수 없는 경우 엑스트라넷 잠금이 다른 도메인 컨트롤러로 대체됩니다.
다음 Windows PowerShell 명령을 사용하여 Server 2016에서 AD FS 엑스트라넷 잠금을 구성할 수 있습니다.
Set-AdfsProperties -EnableExtranetLockout $true -ExtranetLockoutThreshold 15 -ExtranetObservationWindow (new-timespan -Minutes 30) -ExtranetLockoutRequirePDC $false
Active Directory 잠금 정책 작업
AD FS의 엑스트라넷 잠금 기능은 AD 잠금 정책과 독립적으로 작동합니다. 그러나 엑스트라넷 잠금에 대한 설정이 AD 잠금 정책과 함께 보안 용도로 사용될 수 있도록 올바르게 구성되었는지 확인해야 합니다.
먼저 AD 잠금 정책을 살펴보겠습니다. AD의 잠금 정책과 관련된 세 가지 설정이 있습니다.
- 계정 잠금 임계값: 이 설정은 AD FS의 ExtranetLockoutThreshold 설정과 유사합니다. 사용자 계정을 잠글 수 있는 실패한 로그온 시도 횟수를 결정합니다. 악의적인 계정 잠금 공격으로부터 사용자 계정을 보호하기 위해 AD FS <의 ExtranetLockoutThreshold 값을 AD의 계정 잠금 임계값으로 설정하려고 합니다.
- 계정 잠금 기간: 이 설정은 사용자 계정이 잠긴 기간을 결정합니다. 제대로 구성된 경우 AD 잠금이 발생하기 전에 엑스트라넷 잠금이 항상 발생해야 하기 때문에 이 대화에서는 이 설정이 별로 중요하지 않습니다.
- 계정 잠금 카운터 재설정 후: 이 설정은 badPwdCount를 0으로 다시 설정하기 전에 사용자의 마지막 로그온 실패에서 경과해야 하는 시간을 결정합니다. AD FS의 엑스트라넷 잠금 기능이 AD 잠금 정책과 잘 작동하려면 AD FS > 의 ExtranetObservationWindow 값이 AD의 Reset Account Lockout Counter After 값인지 확인하려고 합니다. 아래 예제에서는 그 이유를 설명합니다.
두 가지 예제를 살펴보고 다른 설정 및 상태에 따라 시간에 따라 badPwdCount가 어떻게 변경되는지 살펴보겠습니다. 두 예제에서 계정 잠금 임계값 = 4 및 ExtranetLockoutThreshold = 2를 가정해 보겠습니다. 빨간색 화살표는 잘못된 암호 시도를 나타내며 녹색 화살표는 좋은 암호 시도를 나타냅니다. 예제 #1에서 ExtranetObservationWindow>계정 잠금 카운터 재설정 이후. 예제 #2에서 ExtranetObservationWindow<계정 잠금 카운터 재설정 이후.
예 1
예제 2
위에서 볼 수 있듯이 badPwdCount가 0으로 다시 설정되는 두 가지 조건이 있습니다. 하나는 성공적인 로그온이 있을 때입니다. 다른 하나는 설정 후 계정 잠금 카운터 재설정에 정의된 대로 이 카운터를 다시 설정해야 하는 경우입니다. ExtranetObservationWindow 이후계정 잠금 카운터를 다시 설정<하는 경우 AD에서 계정이 잠기지 않을 위험이 없습니다. 그러나 ExtranetObservationWindow 이후 계정 잠금 카운터를 다시 설정>하는 경우 AD에서 계정을 잠글 수 있지만 "지연된 방식"으로 잠글 수 있습니다. AD FS는 badPwdCount가 계정 잠금 임계값에 도달할 때까지 관찰 기간 동안 하나의 잘못된 암호 시도만 허용하기 때문에 구성에 따라 AD에서 계정을 잠그는 데 시간이 걸릴 수 있습니다.
자세한 내용은 계정 잠금 구성을 참조하세요.
알려진 문제
badPwdCount 특성이 ADFS가 쿼리하는 도메인 컨트롤러에 복제되지 않으므로 AD 사용자 계정이 AD FS로 인증할 수 없는 알려진 문제가 있습니다. 자세한 내용은 2971171를 참조하세요. 지금까지 릴리스된 모든 AD FS QFE는 여기에서 찾을 수 있습니다.
유념해야 할 주요 사항
- 엑스트라넷 잠금 기능은 인증 요청이 웹 애플리케이션 프록시를 통해 들어오는 엑스트라넷 시나리오에서만 작동합니다.
- 엑스트라넷 잠금 기능은 사용자 이름 & 암호 인증에만 적용됩니다.
- AD FS는 badPwdCount 또는 소프트 잠금 상태인 사용자를 추적하지 않습니다. AD FS는 모든 상태 추적에 AD를 사용합니다.
- AD FS는 모든 인증 시도에 대해 PDC의 사용자에 대한 LDAP 호출을 통해 badPwdCount 특성에 대한 조회를 수행합니다.
- PDC에 액세스할 수 없는 경우 2016보다 오래된 AD FS가 실패합니다. AD FS 2016에는 PDC를 사용할 수 없는 경우 AD FS가 다른 도메인 컨트롤러로 대체될 수 있는 개선 사항이 도입되었습니다.
- badPwdCount < ExtranetLockoutThreshold인 경우 AD FS에서 엑스트라넷의 인증 요청을 허용합니다.
- badPwdCount>= ExtranetLockoutThreshold 및 badPasswordTime + ExtranetObservationWindow< 현재 시간인 경우 AD FS는 엑스트라넷의 인증 요청을 거부합니다
- 악의적인 계정 잠금을 방지하려면 ExtranetLockoutThreshold< 계정 잠금 임계값 및 ExtranetObservationWindow>재설정 계정 잠금 카운터를 확인해야 합니다.