Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows 도메인에서 NTLM 인증 비활성화하고 Kerberos로 전환하는 방법

NTLM(NT LAN Manager)은 Windows NT 시대부터 오랫동안 Microsoft의 기본 인증 프로토콜로 사용되어 왔습니다. Windows 2000에서 더욱 안전한 Kerberos 인증 프로토콜이 도입되었음에도 불구하고, NTLM(주로 NTLMv2)은 여전히 Windows 도메인 네트워크에서 널리 사용되고 있습니다. 이 글에서는 Active Directory 도메인에서 NTLMv1과 NTLMv2 프로토콜을 비활성화하고 Kerberos 기반 인증으로 전환하는 방법을 자세히 살펴보겠습니다.

NTLMv1의 주요 보안 문제점

  • 취약한 암호화 방식 사용
  • LSA 서비스 메모리에 비밀번호 해시가 저장되어 mimikatz와 같은 도구로 추출 가능하며, 탈취한 해시를 이용한 추가 공격에 악용될 수 있음
  • 서버와 클라이언트 간 상호 인증(mutual authentication)이 없어 데이터 가로채기 공격 및 네트워크 리소스 무단 접근에 취약함(Responder 같은 도구는 네트워크상의 NTLM 데이터를 캡처하여 리소스 접근에 활용할 수 있음)
  • 그 외 다양한 알려진 취약점들

이러한 문제 중 일부는 더 안전한 암호화 알고리즘을 사용하고 대중적인 NTLM 공격을 차단하는 NTLMv2에서 개선되었습니다. 참고로 NTLMv1과 LM 인증 프로토콜은 Windows 7 / Windows Server 2008 R2부터 기본적으로 비활성화되어 있습니다.

GPO를 통한 NTLMv2 강제 적용 설정

도메인에서 NTLM 사용을 중단하기로 결정했다면, 먼저 더 취약한 버전인 NTLMv1을 사용하고 있지 않은지 확인해야 합니다. 네트워크에는 여전히 NTLMv2나 Kerberos 대신 NTLMv1 인증을 사용하는 레거시 장비나 서비스가 존재할 수 있습니다. 따라서 완전히 비활성화하기 전에 아래에서 설명할 NTLM 인증 감사 로그 설정을 먼저 진행하는 것이 좋습니다.

소규모 오픈소스 제품, 구형 네트워크 스캐너(공유 폴더로 스캔 파일을 전송하는 장비), 일부 NAS 장치 등 오래된 하드웨어, 소프트웨어, 운영체제는 NTLMv1 비활성화 시 인증 문제가 발생할 가능성이 높습니다.

또한 공격자가 특수한 요청으로 NTLM/LM 응답을 획득할 수 있는 경우가 있으므로, 도메인 관리자는 도메인 내 인증에 LM 프로토콜이 사용되지 않도록 먼저 확인해야 합니다.

LAN Manager 인증 수준 정책 설정

도메인(또는 로컬) 정책을 통해 선호하는 인증 유형을 지정할 수 있습니다. 그룹 정책 관리 편집기(gpmc.msc)를 열고 Default Domain Policy를 편집합니다. GPO 섹션에서 컴퓨터 구성 → 정책 → Windows 설정 → 보안 설정 → 로컬 정책 → 보안 옵션으로 이동한 후, '네트워크 보안: LAN Manager 인증 수준(Network Security: LAN Manager authentication level)' 정책을 찾습니다.

이 정책에는 다음 6가지 옵션이 있습니다:

  1. LM & NTLM 응답 보내기(Send LM & NTLM responses)
  2. LM & NTLM 응답 보내기 – 협상된 경우 NTLMv2 세션 보안 사용
  3. NTLM 응답만 보내기(Send NTLM response only)
  4. NTLMv2 응답만 보내기(Send NTLMv2 response only)
  5. NTLMv2 응답만 보내기, LM 거부(Refuse LM)
  6. NTLMv2 응답만 보내기, LM & NTLM 거부(Refuse LM & NTLM)

이 정책 옵션들은 보안 수준이 높아지는 순서로 나열되어 있습니다. 기본적으로 Windows 7 이상 운영체제는 'NTLMv2 응답만 보내기' 옵션을 사용합니다. 이 옵션이 활성화되면 클라이언트 컴퓨터는 NTLMv2 인증을 사용하지만, AD 도메인 컨트롤러는 LM, NTLM, NTLMv2 요청을 모두 수락합니다.

참고로 NTLMv2는 Kerberos가 작동하지 않는 경우, 특정 작업(예: 도메인 가입 컴퓨터의 로컬 그룹 및 계정 관리) 또는 워크그룹 환경에서 사용됩니다.

정책 값을 가장 안전한 6번째 옵션인 'NTLMv2 응답만 보내기, LM & NTLM 거부'로 변경할 수 있습니다. 이 설정을 도메인 컨트롤러에 적용하면 모든 LM 및 NTLMv1 요청이 거부됩니다.

레지스트리를 통한 NTLMv1 비활성화

레지스트리를 통해서도 NTLMv1을 비활성화할 수 있습니다. 레지스트리 키 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa에서 이름이 LmCompatibilityLevel인 DWORD 값을 생성하고 값으로 0~5를 지정합니다. 값 5는 'NTLMv2 응답만 보내기, LM & NTLM 거부' 정책 옵션에 해당합니다.

또한 동일한 GPO 섹션에서 '네트워크 보안: 다음 암호 변경 시 LAN Manager 해시 값 저장 안 함' 정책이 활성화되어 있는지 확인하세요. 이 정책은 Windows Vista / Windows Server 2008부터 기본적으로 활성화되어 있으며, LM 해시 생성을 방지합니다.

이 정책을 반드시 도메인 컨트롤러에도 적용해야 합니다.

NTLMv2 비활성화 검토

NTLMv1을 사용하지 않는 것이 확인되면, 다음 단계로 NTLMv2 비활성화를 검토할 수 있습니다. NTLMv2는 더 안전한 인증 프로토콜이지만, 보안 측면에서 Kerberos에는 크게 미치지 못합니다. NTLMv1에 비해 취약점이 적긴 하지만 데이터 캡처 및 재사용 공격의 위험이 여전히 존재하며, 상호 인증도 지원하지 않습니다.

NTLM 비활성화의 가장 큰 위험은 여전히 NTLM 인증을 사용하는 레거시 애플리케이션이나 잘못 구성된 앱입니다. 이 경우 해당 애플리케이션을 업데이트하거나 특별히 재구성하여 Kerberos로 전환해야 합니다.

NTLM 인증 감사 로깅 활성화 방법

도메인에서 NTLM을 완전히 비활성화하고 Kerberos로 전환하기 전에, NTLM 인증이 필요한 애플리케이션이 남아 있지 않은지 먼저 확인해야 합니다.

NTLM 인증을 사용하는 계정이나 앱을 추적하려면 GPO를 통해 모든 컴퓨터에서 감사 로깅 정책을 활성화할 수 있습니다. 컴퓨터 구성 → Windows 설정 → 보안 설정 → 로컬 정책 → 보안 옵션 섹션에서 '네트워크 보안: NTLM 제한: 이 도메인에서 NTLM 인증 감사(Network Security: Restrict NTLM: Audit NTLM authentication in this domain)' 정책을 찾아 활성화하고 값을 '모두 감사(Enable all)'로 설정합니다.

같은 방식으로 '네트워크 보안: NTLM 제한: 들어오는 NTLM 트래픽 감사(Audit Incoming NTLM Traffic)' 정책도 활성화하고 값을 '도메인 계정 감사(Enable auditing for domain accounts)'로 설정합니다.

이 정책들을 활성화하면 NTLM 인증 사용 이벤트가 이벤트 뷰어(Event Viewer)응용 프로그램 및 서비스 로그 → Microsoft → Windows → NTLM 섹션에 기록됩니다.

각 서버에서 이벤트를 분석하거나, 중앙 Windows 이벤트 로그 수집기(Central Event Log Collector)로 수집할 수 있습니다.

이벤트 ID 4624 분석

원본이 Microsoft-Windows-Security-Auditing이고 이벤트 ID가 4624('계정이 성공적으로 로그온했습니다')인 이벤트를 검색합니다. '자세한 인증 정보(Detailed Authentication Information)' 섹션의 정보에 주목하세요. Authentication Package 값에 NTLM이 있다면 해당 사용자 인증에 NTLM 프로토콜이 사용된 것입니다.

그리고 Package Name (NTLM only) 값을 확인하세요. 이 항목은 인증에 어떤 프로토콜(LM, NTLMv1 또는 NTLMv2)이 사용되었는지 보여줍니다. 이를 통해 레거시 프로토콜을 사용하는 모든 서버/애플리케이션을 파악할 수 있습니다.

예를 들어, 모든 도메인 컨트롤러에서 NTLMv1 인증 이벤트를 검색하려면 다음 PowerShell 스크립트를 사용할 수 있습니다:

$ADDCs = Get-ADDomainController -filter
$Now = Get-Date
$Yesterday = $Now.AddDays(-1)
$NewOutputFile = "c:\Events\$($Yesterday.ToString('yyyyddMM'))_AD_NTLMv1_events.log"
function GetEvents($DC){
  Write-Host "Searching log on " $DC.HostName
  $Events = Get-EventLog "Security" -After $Yesterday.Date -Before $Now.Date -ComputerName $DC.HostName -Message "*V1*" -instanceid 4624
  foreach($Event in $Events){
    Write-Host $DC.HostName $Event.EventID $Event.TimeGenerated
    Out-File -FilePath $NewOutputFile -InputObject "$($Event.EventID), $($Event.MachineName), $($Event.TimeGenerated), $($Event.ReplacementStrings),($Event.message)" -Append
  }
}
foreach($DC in $ADDCs){GetEvents($DC)}

Kerberos로 애플리케이션 전환

도메인에서 NTLM을 사용하는 사용자와 애플리케이션을 파악했다면, Kerberos 사용으로 전환을 시도합니다(필요한 경우 SPN 등록 포함). 일부 애플리케이션은 Kerberos 인증을 사용하도록 약간의 재구성이 필요합니다(IIS의 Kerberos 인증, 브라우저별 Kerberos 인증 구성 관련 문서 참조). 필자의 경험상 대형 상용 제품조차 여전히 Kerberos 대신 NTLM을 사용하는 경우가 많으며, 일부 제품은 업데이트나 구성 변경이 필요합니다. 핵심은 NTLM 인증을 사용하는 앱을 찾아내는 것이며, 이제 이를 식별할 수 있는 방법을 갖추게 되었습니다.

Kerberos 인증을 위해서는 서버의 IP 주소가 아닌 DNS 이름을 사용해야 한다는 점에 유의하세요. 리소스에 연결할 때 IP 주소를 지정하면 NTLM 인증이 사용됩니다.

NTLM 예외 목록 구성

Kerberos를 사용할 수 없는 애플리케이션은 예외 목록에 추가할 수 있습니다. 이렇게 하면 도메인 수준에서 NTLM이 비활성화되어 있어도 해당 앱은 NTLM 인증을 계속 사용할 수 있습니다. 이를 위해 '네트워크 보안: NTLM 제한: 이 도메인에서 NTLM 인증을 위한 서버 예외 추가' 정책을 사용합니다. NTLM 인증이 허용되는 서버 이름을 예외 목록에 추가하세요. 이상적으로는 이 예외 목록이 비어 있는 것이 좋으며, 와일드카드 *도 사용 가능합니다.

Active Directory 도메인에서 NTLM 완전히 차단하기

NTLM 없는 인증이 도메인 내 다양한 앱에서 어떻게 작동하는지 테스트하려면, 'Protected Users' 도메인 그룹(Windows Server 2012 R2부터 사용 가능)에 사용자 계정을 추가할 수 있습니다. 이 보안 그룹의 구성원은 Kerberos로만 인증할 수 있습니다(NTLM, 다이제스트 인증, CredSSP는 허용되지 않음). 따라서 다양한 앱에서 Kerberos 사용자 인증이 올바르게 작동하는지 검증할 수 있습니다.

그런 다음 '네트워크 보안: NTLM 제한: 이 도메인에서 NTLM 인증(Network Security: Restrict NTLM: NTLM authentication in this domain)' 정책을 사용하여 Active Directory 도메인에서 NTLM을 완전히 비활성화할 수 있습니다.

이 정책에는 5가지 옵션이 있습니다:

  • 사용 안 함(Disable): 정책이 비활성화됨(도메인에서 NTLM 인증 허용)
  • 도메인 서버에 대한 도메인 계정 거부(Deny for domain accounts to domain servers): 도메인 컨트롤러가 도메인 계정에 대한 모든 서버의 NTLM 인증 시도를 거부하며, 'NTLM is blocked' 오류가 표시됨
  • 도메인 계정 거부(Deny for domain accounts): 도메인 컨트롤러가 모든 도메인 계정의 NTLM 인증 시도를 차단하며, 'NTLM is blocked' 오류가 표시됨
  • 도메인 서버 거부(Deny for domain servers): '네트워크 보안: NTLM 제한: 서버 예외 추가' 정책의 예외 목록에 서버 이름이 없는 한, 모든 서버에 대한 NTLM 인증 요청이 금지됨
  • 모두 거부(Deny all): 도메인 컨트롤러가 모든 도메인 서버와 계정에 대한 모든 NTLM 요청을 차단함

Active Directory 보안을 한층 더 강화하려면 Mimikatz 스타일 공격 대응 방법, 권한 있는 관리자 계정 보호 방법, LLMNR 및 TCP/IP 기반 NetBIOS 비활성화 방법에 대한 관련 문서도 함께 참고하시기 바랍니다.