Netwrix 1Secure는 데이터와 아이덴티티 전반에 걸쳐 통합된 가시성을 제공합니다 - 14일간 무료로 전체 액세스가 가능합니다.무료 평가판 시작

리소스 센터블로그

Microsoft LAPS란? 보안을 어떻게 강화할 수 있나요?

Microsoft LAPS란? 보안을 어떻게 강화할 수 있나요?

Oct 9, 2023

Microsoft Local Administrator Password Solution (LAPS)를 통해 조직은 모든 엔드포인트에서 로컬 관리자 비밀번호를 관리할 수 있습니다. 올바르게 구현되면 잠재적인 측면 이동의 일부 유형과 privilege escalation을(를) 환경 내에서 예방하는 데 효과적인 방법이 될 수 있습니다. 하지만 잘못 구현되면 공격자에게 큰 기회를 제공할 수 있습니다.

이 글에서는 LAPS가 무엇인지, 이를 배포하는 방법은 물론, Netwrix Privilege Secure 를 사용해 내재된 보안 취약점을 보완하는 방법을 설명합니다.

Microsoft LAPS란?

Microsoft LAPS는 Active Directory 를 활용해 모든 Windows 엔드포인트에 있는 로컬 Administrator 계정의 비밀번호를 관리하고 주기적으로 변경합니다. 모든 로컬 Administrator 계정에 고유하고 복잡한 비밀번호를 설정하면, LAPS는 가로 이동(lateral movement)과 권한 상승(privilege escalation) 위험을 완화하는 데 도움이 됩니다. 즉, 공격자가 한 로컬 Administrator 계정을 손상시켰더라도 동일한 비밀번호만으로는 다른 엔드포인트로 가로 이동할 수 없습니다.

다른 비밀번호 관리자에 비해 LAPS의 장점은, 이러한 비밀번호를 관리하기 위해 추가 컴퓨터가 필요하지 않다는 점입니다. 이 모든 작업은 download 를 통해 진행되며, Active Directory 구성 요소만으로 완전히 수행됩니다. 또한

Microsoft LAPS 설정

환경에서 LAPS를 설정하려면 다운로드에 포함된 가이드(LAPS_OperationsGuide.docx)에 자세히 설명된 단계를 따르세요. 여기서는 이러한 단계 중 일부를 높은 수준에서 안내하겠습니다.

엔드포인트에 LAPS 설치

엔드포인트에 LAPS를 설치하면 다음 구성 요소가 배치됩니다:

  • 팻 클라이언트 UI
  • PowerShell 모듈
  • 그룹 정책 템플릿
  • AdmPwd GPO 확장

관리 콘솔에는 이러한 기능 중 하나 이상이 필요하지만, LAPS가 관리할 엔드포인트에는 AdmPwd GPO 확장만 필요합니다. 운영 가이드는 이 구성 요소를 엔드포인트에 배포하는 몇 가지 방법을 제공합니다.

LAPS를 수용하기 위해 Active Directory 스키마 확장

Microsoft는 이 단계에 도움이 되는 PowerShell 모듈을 제공합니다. 이 모듈은 스키마에 컴퓨터 속성 2가지를 추가합니다:

  • ms-Mcs-AdmPwd — 컴퓨터 개체에 대한 로컬 Administrator 비밀번호를 일반 텍스트로 저장합니다(무섭죠, 알고 있지만 나중에 자세히 설명하겠습니다)
  • ms-Mcs-AdmPwdExpirationTime — 비밀번호가 만료되는 시각을 저장합니다

스키마를 확장하면 그룹 정책을 사용하여 모든 멤버 서버에 LAPS 구성을 배포할 수 있습니다. 그런 다음 Group Policy Management 편집기를 사용하여 새 LAPS 그룹 정책 개체(GPO)를 구성합니다:

Image

LAPS GPO에는 다음 설정이 포함됩니다:

  • 비밀번호 설정 — 로컬 Administrator 계정의 비밀번호에 대한 길이와 기간을 포함한 복잡성 요구 사항을 지정할 수 있습니다.
Image
  • 로컬 관리자 비밀번호 관리를 활성화 — GPO로 관리되는 엔드포인트가 LAPS로 관리되고 있는지 여부를 제어합니다
  • 관리할 관리자 계정 이름 — 기본값이 아닌 로컬 관리자 계정(즉, 이름이 'Administrator'가 아닌 로컬 계정)의 비밀번호를 관리할 수 있습니다
  • 정책에서 요구하는 것보다 더 긴 비밀번호 만료 시간을 허용하지 않음 — 비밀번호 설정의 ‘비밀번호 사용 기간(일)’ 설정을 초과하는 비밀번호 만료가 없도록 보장할 수 있습니다

LAPS가 안전한지 확인

AD 스키마를 확장한 다음 단계는, 이 새 특성에 대한 권한이 올바르게 적용되도록 확인하는 것입니다. 필요한 경우에만 액세스 권한을 부여하려면 이 과정이 매우 중요합니다. Microsoft는 현재 해당 특성에 누가 액세스 권한을 가지고 있는지 확인하고, 필요 시 새 권한을 적용할 수 있도록 PowerShell 스크립트를 제공합니다.

큰 관점에서, 여기에는 몇 가지 고려 사항이 있습니다:

  • (해당 비밀번호는 특성에 일반 텍스트로 저장되어 있으므로 기억하세요.) 로컬 Administrator 계정의 비밀번호를 볼 수 있어서는 안 되는 컴퓨터 개체에 대해, 사용자 및 그룹에서 ‘모든 확장 권한(All extended rights)’ 권한을 제거합니다.
  • ‘SELF’ 주체에는 ‘ms-Mcs-AdmPwdExpirationTime’ 및 ‘ms-Mcs-AdmPwd’ 특성에 대한 쓰기 권한(기능)이 필요합니다. 그래야 비밀번호가 만료될 때 비밀번호와 만료 시간을 업데이트할 수 있습니다. 또한 ‘SELF’에 대한 ACE는 LAPS가 관리하는 모든 컴퓨터 개체에 필요합니다.
  • 로컬 Administrator 계정의 비밀번호를 재설정할 수 있도록 허용된 사용자 및 그룹에는, 해당 컴퓨터 개체의 특성에 대한 액세스 권한이 부여되어야 합니다.

다음은 현재 누가 이러한 속성에 액세스할 수 있는지 이해하는 데 도움이 되는 스크립트입니다.

      <#
Author: Kevin Joyce

Requirements: Active Directory PowerShell module, Domain Administrator privileges (to ensure the capability to get attribute GUIDs and view all permissions on all computer objects)

Description: Looks up permissions within Active Directory on a target (OU or Computer) to determine access to LAPS attributes (ms-Mcs-AdmPwdExpirationTime and ms-Mcs-AdmPwd).

Usage: Populate the $target variable with the DN of a computer object, or OU to search for computer objects within.

To output the results to a text file run the following .LAPS_Permissions_Collection.ps1 > output.txt
<#

Import-Module ActiveDirectory
##Get the GUID of the extended attributes ms-Mcs-AdmPwdExpirationTime and ms-Mcs-AdmPwd from Schema
$schemaIDGUID = @{}
Get-ADObject -SearchBase (Get-ADRootDSE).schemaNamingContext -LDAPFilter '(|(name=ms-Mcs-AdmPwdExpirationTime)(name=ms-Mcs-AdmPwd))' -Properties name, schemaIDGUID |
ForEach-Object {$schemaIDGUID.add([System.GUID]$_.schemaIDGUID,$_.name)}

<# **REPLACE DN VARIABLE BELOW**
Declare the distinguishedName of the Computer object directly or OU to search for computers within#>
$target = 'CN=Computers,DC=COMPANY,DC=NET'

##Get distinguished name of all Computer objects from the OU or of the target itself
$computers = Get-ADComputer -SearchBase $target -Filter {name -like '*'}


<#Get objects that have specific permissions on the target(s):

Full Control(GenericAll)
Read All Properties(GenericRead)
Write all Properties (WriteProperty where ObjectType = 00000000-0000-0000-0000-000000000000 

#>
Set-Location ad:
foreach ($computer in $computers){
(Get-Acl $computer.distinguishedname).access |
Where-Object { (($_.AccessControlType -eq 'Allow') -and ($_.activedirectoryrights -in ('GenericRead','GenericAll') -and $_.inheritancetype -in ('All', 'None')) -or (($_.activedirectoryrights -like '*WriteProperty*')-or ($_.activedirectoryrights -like '*GenericRead*') -and ($_.objecttype -eq '00000000-0000-0000-0000-000000000000')))} |
ft ([string]$computer.name),identityreference, activedirectoryrights, objecttype, isinherited -autosize
}
<#Get objects that have specific permissions on the target(s) and specifically the LAPS attributes:

WriteProperty
ReadProperty
#>
Set-Location ad:
foreach ($computer in $computers){
(Get-Acl $computer.distinguishedname).access |
Where-Object {(($_.AccessControlType -eq 'Allow') -and (($_.activedirectoryrights -like '*WriteProperty*') -or ($_.activedirectoryrights -like '*ReadProperty*')) -and ($_.objecttype -in $schemaIDGUID.Keys))} |
ft ([string]$computer.name),identityreference, activedirectoryrights, objecttype, isinherited -AutoSize
}
      

보안 팁: 권한을 통해 이 두 LAPS 속성을 잠그는 것 외에도, 해당 속성에 대한 LDAP 트래픽을 모니터링해야 합니다. 그래야 권한이 잘못 구성되어 공격자가 이를 조회할 수 있는 상황을 포착할 수 있습니다. StealthDEFEND for Active Directory 는 이러한 속성에 대한 LDAP 트래픽을 실시간으로 알림할 수 있습니다.

LAPS가 실제로 동작하는 모습 보기

특정 엔드포인트의 현재 로컬 Administrator 비밀번호를 LAPS를 통해 가져오는 방법은 몇 가지가 있지만, 가장 쉬운 방법은 GUI를 사용하는 것입니다. 컴퓨터 이름을 입력하기만 하면 만료 날짜와 함께 평문 형태의 로컬 Administrator 비밀번호가 표시되며, 이를 수정할 수 있습니다.

Image

또는 PowerShell을 사용해 이 정보를 가져올 수도 있습니다:

Image

Netwrix Privilege Secure로 Microsoft LAPS의 보안 취약 지점(갭) 극복

Microsoft LAPS는 모든 엔드포인트에서 로컬 Administrator 비밀번호를 관리하기 위한 강력한 솔루션입니다. 올바르게 구현되면 잠재적인 가로 이동(lateral movement)이나 권한 상승(privilege escalation)의 일부 형태를 예방하는 데 효과적인 방법이 될 수 있습니다. 하지만 안타깝게도 올바르게 구현되지 않으면 공격자에게 매우 큰 허점을 만들어 줄 수 있습니다.

LAPS 보안 취약 지점(갭)은 다음과 같습니다:

  • 구식(낡은) 인터페이스
  • LAPS는 강력한 인증 및 권한 부여를 지원하지 않습니다.
  • LAPS는 just-in-time access 를 제공하지 않으므로, 관리자 계정은 공격자에게 장악당할 위험이 항상 존재합니다.
  • 접근 후 강제 비밀번호 재설정이 없으므로, 공격자는 탈취한 비밀번호를 그대로 사용할 수 있습니다.
  • 사용자는 항상 계정 비밀번호를 알고 있어야 하므로, 운영 측면과 보안 측면 모두에서 문제가 발생합니다.

다음과 같이 Netwrix Privilege Secure 를 사용하면 이러한 보안 격차를 해소할 수 있습니다. 이는 privileged access management (PAM) solution 멀티 계층 승인, just-in-time 및 스케줄 기반 접근, 강제 비밀번호 로테이션, 비밀번호의 제어된 노출, 세션 기록 및 재생 같은 기능을 추가하여 LAPS를 강화합니다.

Netwrix Privilege Secure의 다른 이점

대부분의 PAM 솔루션은 Domain Admin 및 로컬 서버 Administrator 같은 고권한 계정에 대한 액세스를 제한하는 데만 집중합니다. 이러한 접근 방식은 관리자에게 적시에(just-in-time) 필요한 액세스 권한을 제공하지만, 강력한 계정들은 사용하지 않는 상황에서도 계속 “사용 가능”한 상태로 남아 — 따라서 취약점이 존재할 수 있습니다.

Netwrix Privilege Secure는 이러한 상시(standing) 특권 계정의 대부분을 제거하여 공격 표면(attack surface area)을 크게 줄일 수 있게 해줍니다. 대신, 관리자는 작업을 완료하는 데 필요한 정확한 수준의 권한을, 필요한 정확한 시점에, 그리고 필요한 기간 동안만 제공받습니다. 이 접근 방식은 또한 Domain Admins의 구성원이 되어야 하는 사람의 수를 줄이는 데도 도움이 되어 보안 위험을 한층 더 낮춥니다. 또한 이 솔루션은 계정 침해에 종종 사용되는 아티팩트(artifact)를 제거하거나 최소화합니다.

공유하기

더 알아보기

저자 소개

Asset Not Found

Kevin Joyce

제품 관리 책임자

Netwrix의 제품 관리( Product Management ) 책임자입니다. Kevin은 사이버 보안에 대한 열정이 있으며, 특히 공격자들이 조직 환경을 악용하기 위해 사용하는 전술과 기술을 이해하는 데 집중합니다. Active Directory 및 Windows 보안에 초점을 맞춰 제품 관리 분야에서 8년의 경험을 쌓아, 조직이 Identity, 인프라 및 데이터를 보호할 수 있도록 솔루션을 구축하는 데 그 열정을 더했습니다.