Windows 인증은 엔터프라이즈 환경에서 보안 액세스의 초석으로, 사용자 및 서비스가 중요한 정보를 보호하면서 시스템과 상호 작용할 수 있도록 합니다. 이 문서에서는 인증 중에 Windows가 자격 증명을 처리하는 방법에 대한 포괄적인 개요를 IT 전문가에게 제공합니다. 자격 증명 관리, 유효성 검사 및 스토리지와 관련된 주요 구성 요소, 메커니즘 및 아키텍처를 다루며 다양한 Windows 운영 체제에서 인증 프로세스를 명확하게 이해할 수 있습니다.
특히 이러한 구성 요소는 다음과 같습니다.
Windows 자격 증명 인증 개요
Windows 자격 증명 관리는 운영 체제에서 서비스 또는 사용자로부터 자격 증명을 수신하고 향후 프레젠테이션을 위해 인증 대상에 대한 정보를 보호하는 프로세스입니다. 컴퓨터가 도메인에 가입된 경우 인증 대상은 도메인 컨트롤러입니다. 인증에 사용되는 자격 증명은 인증서, 암호 또는 PIN과 같은 특정 양식의 신뢰성 증명에 사용자의 ID를 연결하는 디지털 문서입니다.
기본적으로 Windows 자격 증명은 Winlogon 서비스를 통해 로컬 컴퓨터의 SAM(보안 계정 관리자) 데이터베이스 또는 도메인 조인 컴퓨터의 Active Directory에 대해 유효성을 검사합니다. 자격 증명은 로그온 사용자 인터페이스의 사용자 입력을 통해 수집되거나 인증 대상에 표시되는 API(애플리케이션 프로그래밍 인터페이스)를 통해 프로그래밍 방식으로 수집됩니다.
로컬 보안 정보는 HKEY_LOCAL_MACHINE\SECURITY 아래의 레지스트리에 저장됩니다. 저장된 정보는 정책 설정, 기본 보안 값 및 계정 정보(예: 캐시된 로그온 자격 증명)를 포함합니다. SAM 데이터베이스의 복사본은 쓰기로 보호되지만 여기에 저장됩니다.
다음 다이어그램에서는 필요한 구성 요소 및 자격 증명이 성공적인 로그온을 위해 사용자 또는 프로세스를 인증하기 위해 시스템을 통과하는 경로를 보여 줍니다.
다음 표에서는 모든 시스템에 대해 로그온할 때 인증 프로세스의 자격 증명을 관리하는 각 구성 요소에 대해 설명합니다.
구성 요소 | 설명 |
---|---|
사용자 로그온 | Winlogon.exe는 보안 사용자 상호 작용을 관리하는 실행 파일입니다. Winlogon 서비스는 보안 데스크톱(로그온 UI)에서 사용자 작업으로 수집한 자격 증명을 LSA(로컬 보안 기관) secur32.dll 에 전달하여 Windows 운영 체제에 대한 로그온 프로세스를 시작합니다. |
애플리케이션 로고 | 대화형 로그온이 필요하지 않은 애플리케이션 또는 서비스 로그온 사용자가 시작한 대부분의 프로세스는 사용자 모드 secur32.dll 에서 실행되는 반면 서비스와 같이 시작 시 시작된 프로세스는 Ksecdd.sys사용하여 커널 모드로 실행됩니다.사용자 모드 및 커널 모드에 대한 자세한 내용은 애플리케이션 및 사용자 모드 또는 서비스 및 커널 모드를 참조하세요. |
secur32.dll |
인증 프로세스의 기초를 형성하는 다중 인증 공급자입니다. |
lsasrv.dll |
보안 정책을 적용하고 LSA의 보안 패키지 관리자 역할을 하는 LSA 서버 서비스입니다. LSA는 성공할 프로토콜을 결정한 후 NTLM 또는 Kerberos 프로토콜을 선택하는 Negotiate 함수를 포함하고 있습니다. |
보안 지원 공급자 | 한 개 이상의 인증 프로토콜을 개별적으로 호출할 수 있는 공급자 집합입니다. 기본 공급자 집합은 Windows 운영 체제의 각 버전에 따라 변경될 수 있고 사용자 지정 공급자를 작성할 수 있습니다. |
netlogon.dll |
Net Logon 서비스가 수행하는 서비스는 다음과 같습니다.
|
samsrv.dll |
로컬 보안 계정을 저장하는 SAM(보안 계정 관리자)은 로컬에서 저장된 정책을 적용하고 API를 지원합니다. |
레지스트리 | 레지스트리에는 SAM 데이터베이스의 복사본, 로컬 보안 정책 설정, 기본 보안 값 및 시스템에만 액세스할 수 있는 계정 정보가 포함됩니다. |
사용자 로그온의 자격 증명 입력
Windows Server 2008에서 도입된 자격 증명 공급자 아키텍처는 로그온하는 동안 사용자 자격 증명을 수집하는 기본 메커니즘입니다. 이를 통해 암호, 스마트 카드 또는 생체 인식과 같은 사용자로부터 자격 증명을 유연하고 확장 가능한 방식으로 수집할 수 있습니다. 자격 증명 공급자 아키텍처는 이전 버전의 Windows에서 사용된 이전 GINA(그래픽 식별 및 인증) 아키텍처를 대체합니다.
이전 버전의 Windows에서 GINA(그래픽 식별 및 인증) 아키텍처에 대해 알아보려면 이 섹션을 확장합니다.
GINA(그래픽 식별 및 인증) 아키텍처는 Windows Server 2003, Microsoft Windows 2000 Server, Windows XP, Windows 2000 Professional 운영 체제에 적용됩니다. 이러한 시스템에서 모든 대화형 로그온 세션은 Winlogon 서비스의 별도의 인스턴스를 만듭니다. GINA 아키텍처는 Winlogon에서 사용하는 프로세스 공간에 로드되고, 자격 증명을 수신 및 처리하며, LSALogonUser를 통해 인증 인터페이스에 호출합니다.
세션 0에서 실행되는 대화형 로그온의 Winlogon 인스턴스입니다. 세션 0은 LSA(로컬 보안 기관) 프로세스를 포함한 시스템 서비스 및 중요한 기타 프로세스를 호스트합니다.
다음 다이어그램에서는 Windows Server 2003, Microsoft Windows 2000 Server, Windows XP 및 Microsoft Windows 2000 Professional에 대한 자격 증명 프로세스를 보여줍니다.
자격 증명 공급자 아키텍처
자격 증명 공급자 아키텍처는 자격 증명 공급자를 사용하여 확장 가능한 디자인을 사용합니다. 서로 다른 로그온 타일은 동일한 사용자에 대한 서로 다른 계정 및 암호, 스마트 카드 및 생체 인식과 같은 다양한 인증 방법을 포함하여 여러 로그온 시나리오를 허용하는 보안 데스크톱의 이러한 공급자를 나타냅니다.
다음 다이어그램은 자격 증명 공급자 아키텍처에 대한 자격 증명 프로세스를 보여줍니다.
Winlogon은 보안 주의 시퀀스 이벤트를 받은 후 로그온 UI 프로세스를 항상 시작합니다. 로그온 UI는 열거하도록 공급자가 구성된 다양한 자격 증명 형식의 수에 대해 각 자격 증명 공급자를 쿼리합니다. 자격 증명 공급자에는 이러한 타일 중 하나를 기본값으로 지정할 수 있는 옵션이 있습니다. 모든 공급자가 타일을 열거하면 로그온 UI가 사용자에게 표시됩니다. 사용자는 타일과 상호 작용하여 자격 증명을 제공합니다. 로그온 UI는 인증을 위해 이러한 자격 증명을 제출합니다.
자격 증명 공급자는 적용 메커니즘이 아닙니다. 자격 증명을 수집하고 직렬화하는 데 사용됩니다. 로컬 보안 기관 및 인증 패키지는 보안을 적용합니다.
자격 증명 공급자는 컴퓨터에 등록되며 다음 작업을 담당합니다.
인증에 필요한 자격 증명 정보를 설명합니다.
외부 인증 기관과의 통신 및 논리를 처리합니다.
대화형 및 네트워크 로그온을 위한 자격 증명을 패키징합니다.
대화형 및 네트워크 로그온에 대한 자격 증명 패키징에는 직렬화 프로세스가 포함됩니다. 자격 증명을 직렬화하여 여러 로그온 타일을 사용자에게 표시할 수 있습니다. 따라서 조직은 사용자 지정 자격 증명 공급자를 사용하여 사용자, 로그온 대상 시스템, 네트워크에 대한 사전 로그온 액세스 및 워크스테이션 잠금/잠금 해제 정책과 같은 로그온 표시를 제어할 수 있습니다. 여러 자격 증명 공급자가 동일한 컴퓨터에서 공존할 수 있습니다. SSO(Single Sign-On) 공급자는 표준 자격 증명 공급자 또는 PLAP(사전 로그온 액세스 공급자)로 개발할 수 있습니다.
Windows의 각 버전에는 하나의 기본 자격 증명 공급자와 SSO 공급자라고도 하는 하나의 기본 사전 로그온 액세스 공급자가 포함되어 있습니다. SSO 공급자는 사용자가 로컬 컴퓨터에 로그온하기 전에 네트워크에 연결하도록 허용합니다. 이 공급자가 구현되면 공급자는 로그온 UI에서 타일을 열거하지 않습니다.
SSO 공급자는 다음 시나리오에서 사용됩니다.
네트워크 인증 및 컴퓨터 로그온은 이 시나리오의 다음과 같은 변형을 포함하여 다양한 자격 증명 공급자에 의해 처리됩니다.
사용자는 컴퓨터에 로그온하기 전에 VPN(가상 사설망) 연결과 같은 네트워크에 연결할 수 있지만 이 연결을 만들 필요는 없습니다.
대화형 인증 중에 사용되는 정보를 로컬 컴퓨터에서 검색하려면 네트워크 인증이 필요합니다.
다중 네트워크 인증 다음에는 다른 시나리오 중 하나가 수행됩니다. 예를 들어 사용자는 ISP(인터넷 서비스 공급자)에 인증하고 VPN에 인증한 다음, 사용자 계정 자격 증명을 사용하여 로컬로 로그온합니다.
캐시된 자격 증명은 사용하지 않도록 설정되며 사용자를 인증하려면 로컬 로그온 전에 VPN을 통한 원격 액세스 서비스 연결이 필요합니다.
도메인 사용자는 도메인에 가입된 컴퓨터에 로컬 계정이 설정되어 있지 않으며 대화형 로그온을 완료하기 전에 VPN 연결을 통해 원격 액세스 서비스 연결을 설정해야 합니다.
네트워크 인증 및 컴퓨터 로그온은 사용자가 컴퓨터에 로그온하기 전에 네트워크에 연결해야 하는 동일한 자격 증명 공급자에 의해 처리됩니다.
로그온 타일 열거
자격 증명 공급자는 다음 인스턴스에서 로그온 타일을 열거합니다.
워크스테이션 로그온의 경우 자격 증명 공급자는 로컬 보안 기관에 인증을 위해 일반적으로 자격 증명을 직렬화합니다. 이 프로세스에서는 각 사용자 및 각 사용자의 대상 시스템에 한정된 타일을 표시합니다.
로그온 및 인증 아키텍처를 사용하면 사용자는 자격 증명 공급자가 열거한 타일을 사용하여 워크스테이션의 잠금을 해제할 수 있습니다. 일반적으로 현재 로그온한 사용자가 기본 타일이지만 두 명 이상의 사용자가 로그온된 경우 수많은 타일이 표시됩니다.
자격 증명 공급자는 암호나 PIN 등의 기타 개인 정보를 변경하라는 사용자 요청에 대한 응답으로 타일을 열거합니다. 일반적으로 현재 로그온한 사용자가 기본 타일이지만 두 명 이상의 사용자가 로그온된 경우 수많은 타일이 표시됩니다.
자격 증명 공급자는 원격 컴퓨터에서 인증에 사용하는 직렬화된 자격 증명을 기반으로 타일을 열거합니다. 자격 증명 UI는 로그온 UI, 워크스테이션 잠금 해제 또는 암호 변경과 동일한 공급자 인스턴스를 사용하지 않습니다. 따라서 상태 정보는 자격 증명 UI 인스턴스 간에 공급자에서 유지 관리할 수 없습니다. 이 구조는 자격 증명이 올바르게 직렬화되어 있다고 가정하여 각 원격 컴퓨터 로그온에 대해 하나의 타일을 생성합니다. 이 시나리오는 UAC(사용자 계정 컨트롤)에서도 사용되며 컴퓨터의 작업에 영향을 주거나 컴퓨터의 다른 사용자에게 영향을 줄 수 있는 설정을 변경할 수 있는 작업을 허용하기 전에 사용자에게 권한 또는 관리자 암호를 묻는 메시지를 표시하여 컴퓨터에 대한 무단 변경을 방지할 수 있습니다.
애플리케이션 및 서비스 로그온의 자격 증명 입력
Windows 인증은 사용자 상호 작용이 필요하지 않은 애플리케이션 또는 서비스에 대한 자격 증명을 관리하도록 설계되었습니다. 사용자 모드의 애플리케이션은 액세스 권한이 있는 시스템 리소스의 측면에서 제한되는 반면 서비스는 시스템 메모리 및 외부 디바이스에 무제한으로 액세스할 수 있습니다.
시스템 서비스 및 전송 수준 애플리케이션은 Windows의 SSPI(보안 지원 공급자 인터페이스)를 통해 SSP(보안 지원 공급자)에 액세스합니다. 이 인터페이스는 시스템에서 사용할 수 있는 보안 패키지를 열거하고, 패키지를 선택하고, 해당 패키지를 사용하여 인증된 연결을 가져오는 기능을 제공합니다.
클라이언트/서버 연결이 인증되는 경우:
연결의 클라이언트 측에 있는 애플리케이션은 SSPI 함수
InitializeSecurityContext (General)
를 사용하여 서버에 자격 증명을 보냅니다.연결의 서버 측에 있는 애플리케이션은 SSPI 함수
AcceptSecurityContext (General)
로 응답합니다.필요한 모든 인증 메시지가 성공 또는 실패 결과를 얻을 때까지 SSPI 함수
InitializeSecurityContext (General)
와AcceptSecurityContext (General)
가 반복됩니다.연결이 인증된 후 서버의 LSA는 클라이언트의 정보를 사용하여 액세스 토큰을 포함하는 보안 컨텍스트를 빌드합니다.
그런 다음 서버는 SSPI 함수
ImpersonateSecurityContext
를 호출하여 액세스 토큰을 서비스의 대리 실행 스레드에 연결할 수 있습니다.
애플리케이션 및 사용자 모드
Windows의 사용자 모드는 적절한 커널 모드 드라이버에 I/O 요청을 전달할 수 있는 두 개의 시스템, 즉 다양한 유형의 운영 체제에 대해 작성된 애플리케이션을 실행하는 환경 시스템과 환경 시스템을 대신하여 시스템별 기능을 작동하는 정수 시스템으로 구성됩니다.
운영 체제별 기능을 환경 시스템을 대신하여 관리하는 핵심 시스템은 보안 시스템 프로세스(LSA), 워크스테이션 서비스, 및 서버 서비스로 구성됩니다. 보안 시스템 프로세스에서는 보안 토큰을 처리하고, 리소스 권한에 따라 사용자 계정에 액세스할 수 있는 권한을 부여하거나 거부하며, 로그온 요청을 처리하고, 로그온 인증을 시작하고, 운영 체제에서 감사해야 하는 시스템 리소스를 결정합니다.
애플리케이션은 사용자 모드에서 실행할 수 있으며, 이는 애플리케이션이 로컬 시스템(SYSTEM)의 보안 컨텍스트를 포함하여 다양한 보안 주체로 실행될 수 있음을 의미합니다. 애플리케이션은 시스템(로컬 시스템)의 보안 컨텍스트에서 애플리케이션을 실행할 수 있는 커널 모드에서 실행할 수도 있습니다.
SSPI는 인증, 메시지 무결성 및 메시지 개인 정보 보호를 위해 통합 보안 서비스를 가져오는 데 사용되는 API인 모듈을 통해 secur32.dll
사용할 수 있습니다. 애플리케이션 수준 프로토콜 및 보안 프로토콜 간에 추상화 계층을 제공합니다. 다양한 애플리케이션에는 사용자를 식별하거나 인증하는 다양한 방법과 네트워크를 통해 이동하는 데이터를 암호화하는 다양한 방법이 필요하기 때문에 SSPI는 다양한 인증 및 암호화 기능을 포함하는 DLL(동적 연결 라이브러리)에 액세스하는 방법을 제공합니다. 이러한 DLL을 SSP(보안 지원 공급자)라고 합니다.
관리 서비스 계정 및 가상 계정은 Windows Server 2008 R2 및 Windows 7에 도입되어 Microsoft SQL Server 및 IIS(인터넷 정보 서비스)와 같은 필수 애플리케이션에 자체 도메인 계정을 격리하는 동시에 관리자가 수동으로 이러한 계정의 SPN(서비스 주체 이름) 및 자격 증명을 관리할 필요가 없도록 했습니다. 이러한 기능 및 인증에서의 역할에 대한 자세한 내용은 Windows 7 및 Windows Server 2008 R2의 관리 서비스 계정 설명서 및 그룹 관리 서비스 계정 개요를 참조하세요.
서비스 및 커널 모드
대부분의 Windows 애플리케이션은 시작하는 사용자의 보안 컨텍스트에서 실행되지만 서비스의 경우는 그렇지 않습니다. 서비스 컨트롤러는 사용자가 컴퓨터를 시작할 때 네트워크 및 인쇄 서비스를 포함한 많은 Windows 서비스를 관리합니다. 이러한 서비스는 로컬 서비스 또는 로컬 시스템으로 실행될 수 있으며 마지막 사용자 로그오프 후 계속해서 실행될 수 있습니다.
참고
서비스는 일반적으로 시스템(로컬 시스템), 네트워크 서비스 또는 로컬 서비스라고 하는 보안 컨텍스트에서 실행됩니다. Windows Server 2008 R2에서는 도메인 계정 주체인 관리 서비스 계정으로 실행되는 서비스가 도입되었습니다.
서비스를 시작하기 전에 서비스 컨트롤러는 서비스에 지정된 계정을 사용하여 로그온한 다음 LSA에서 인증할 서비스의 자격 증명을 제공합니다. Windows 서비스에서는 서비스 컨트롤러 관리자가 서비스를 제어하는 데 사용할 수 있는 프로그래밍 방식 인터페이스를 구현합니다. Windows 서비스는 시스템이 시작되는 경우 자동으로 시작하거나 서비스 제어 프로그램을 사용하여 수동으로 시작할 수 있습니다. 예를 들어 Windows 클라이언트 컴퓨터가 도메인에 가입하는 경우 컴퓨터의 메신저 서비스가 도메인 컨트롤러에 연결되고 보안 채널이 열립니다. 인증된 연결을 얻으려면 서비스에 원격 컴퓨터의 LSA(로컬 보안 기관)에서 신뢰하는 자격 증명이 있어야 합니다. 네트워크의 다른 컴퓨터와 통신하는 경우 LSA는 로컬 시스템 및 네트워크 서비스의 보안 컨텍스트에서 실행되는 다른 모든 서비스와 마찬가지로 로컬 컴퓨터의 도메인 계정에 대한 자격 증명을 사용합니다. 로컬 컴퓨터의 서비스는 SYSTEM으로 실행되므로 자격 증명을 LSA에 표시할 필요가 없습니다.
이 파일 ksecdd.sys
은 이러한 자격 증명을 관리하고 암호화하며 LSA에 대한 로컬 프로시저 호출을 사용합니다. 파일 형식은 DRV(드라이버)이며 커널 모드 SSP(보안 지원 공급자)라고 하며 Windows Server 2008부터 FIPS 140-2 수준 1 규격입니다.
커널 모드에는 컴퓨터의 하드웨어 및 시스템 리소스에 대한 모든 권한이 있습니다. 커널 모드는 사용자 모드 서비스 및 애플리케이션이 액세스 권한이 없어야 하는 운영 체제의 중요한 영역에 액세스하지 못하도록 합니다.
로컬 보안 기관
LSA(로컬 보안 기관)란 사용자를 인증하고 로컬 컴퓨터에 로그온하는 보호된 시스템 프로세스입니다. 또한 LSA는 컴퓨터에서 로컬 보안의 모든 측면에 대한 정보를 유지 관리하며(이러한 측면은 집합적으로 로컬 보안 정책이라고 함) 이름 및 SID(보안 식별자) 간 번역을 위한 다양한 서비스를 제공합니다. 보안 시스템 프로세스인 LSASS(로컬 보안 기관 서버 서비스)는 컴퓨터 시스템에서 적용되는 보안 정책 및 계정을 추적합니다.
LSA는 다음의 두 개 엔터티 중 사용자 계정을 발급한 엔터티에 따라 사용자의 ID의 유효성을 검사합니다.
로컬 보안 기관: LSA는 동일한 컴퓨터에 있는 SAM(보안 계정 관리자) 데이터베이스를 확인하여 사용자 정보의 유효성을 검사할 수 있습니다. 모든 워크스테이션 또는 멤버 서버는 로컬 그룹에 대한 로컬 사용자 계정 및 정보를 저장할 수 있습니다. 하지만 이러한 계정은 해당 워크스테이션 또는 컴퓨터에만 액세스하는 데 사용할 수 있습니다.
로컬 도메인 또는 신뢰할 수 있는 도메인에 대한 보안 기관: LSA는 계정을 발급한 엔터티에 연결하고 계정이 유효하고 요청이 계정 소유자로부터 시작되었음을 확인합니다.
LSASS(Local Security Authority Subsystem Service)는 활성 Windows 세션의 사용자를 위해 메모리에 자격 증명을 저장합니다. 저장된 자격 증명을 사용하면 사용자가 각 원격 서비스에 대한 자격 증명을 다시 입력하지 않고도 파일 공유, Exchange Server 사서함 및 SharePoint 사이트와 같은 네트워크 리소스에 원활하게 액세스할 수 있습니다.
LSASS는 다음을 비롯한 여러 가지 형식으로 자격 증명을 저장할 수 있습니다.
역방향으로 암호화된 일반 텍스트입니다.
Kerberos 티켓(티켓 부여 티켓(TGT), 서비스 티켓).
NT 해시.
LAN 관리자(LM) 해시입니다.
사용자가 스마트 카드를 사용하여 Windows에 로그온하는 경우 LSASS는 일반 텍스트 암호를 저장하지 않지만 계정에 해당하는 NT 해시 값과 스마트 카드의 일반 텍스트 PIN을 저장합니다. 대화형 로그온에 필요한 계정 특성이 스마트 카드에 사용하도록 설정된 경우 계정에 대해 원래 암호 해시 대신 임의의 NT 해시 값이 자동으로 생성됩니다. 특성이 설정될 때 자동으로 생성되는 암호 해시는 변경되지 않습니다.
사용자가 LM(LAN 관리자) 해시와 호환되는 암호를 사용하여 Windows 기반 컴퓨터에 로그온하면 이 인증자가 메모리에 존재하게 됩니다. 필요한 자격 증명 공급자를 사용하지 않도록 설정하더라도 메모리의 일반 텍스트 자격 증명 스토리지를 사용하지 않도록 설정할 수 없습니다.
저장된 자격 증명은 마지막으로 다시 시작한 후에 시작되고 닫혀 있지 않은 LSASS(로컬 보안 기관 하위 시스템 서비스) 로그온 세션과 직접 연결됩니다. 예를 들어 저장된 LSA 자격 증명이 있는 LSA 세션은 사용자가 다음 작업을 수행할 때 만들어집니다.
컴퓨터의 로컬 세션 또는 RDP(원격 데스크톱 프로토콜) 세션에 로그온합니다.
RunAs 옵션을 사용하여 작업을 실행합니다 .
컴퓨터에서 활성 Windows 서비스를 실행합니다.
예약된 작업 또는 일괄 작업을 실행합니다.
원격 관리 도구를 사용하여 로컬 컴퓨터에서 작업을 실행합니다.
경우에 따라 SYSTEM 계정 프로세스에서만 액세스할 수 있는 암호 데이터 조각인 LSA 암호가 하드 디스크 드라이브에 저장됩니다. 이러한 비밀 중 일부는 다시 부팅한 후에 유지해야 하는 자격 증명이며 하드 디스크 드라이브에 암호화된 형식으로 저장됩니다. LSA 암호로 저장될 수 있는 자격 증명은 다음과 같습니다.
컴퓨터의 AD DS(Active Directory Domain Services) 계정에 대한 계정 암호입니다.
컴퓨터에 구성된 Windows 서비스의 계정 암호입니다.
구성된 예약된 작업에 대한 계정 암호입니다.
IIS 애플리케이션 풀 및 웹 사이트의 계정 암호입니다.
Microsoft 계정의 암호입니다.
Windows 클라이언트 운영 체제는 Windows 8.1에서 도입된 보호되지 않는 프로세스에 의한 읽기 메모리 및 코드 주입을 방지하기 위해 LSA에 대한 추가 보호를 제공합니다. 이 보호 기능으로 인해 LSA에서 저장 및 관리하는 자격 증명에 대한 보안이 강화됩니다.
이러한 추가 보호에 대한 자세한 내용은 추가 LSA 보호 구성을 참조하세요.
캐시된 자격 증명 및 유효성 검사
유효성 검사 메커니즘은 로그온 시 자격 증명 표시를 사용합니다. 하지만 컴퓨터가 도메인 컨트롤러에서 연결이 끊어지고 사용자가 도메인 자격 증명을 표시하는 경우 Windows는 유효성 검사 메커니즘에서 캐시된 자격 증명 프로세스를 사용합니다.
사용자가 도메인에 로그온할 때마다 Windows는 제공된 자격 증명을 캐시하며 운영 시스템의 레지스트리에 있는 보안 하이브에 저장합니다. 캐시된 자격 증명을 사용하면 사용자는 해당 도메인 내의 도메인 컨트롤러에 연결하지 않고도 도메인 구성원에 로그온할 수 있습니다.
자격 증명 스토리지 및 유효성 검사
다른 리소스에 액세스하기 위해 자격 증명 집합을 사용하는 것이 항상 바람직하지는 않습니다. 예를 들어, 관리자는 원격 서버에 액세스할 때 사용자 자격 증명 대신 관리자 자격 증명을 사용하길 원할 수 있습니다. 마찬가지로 사용자가 은행 계좌와 같은 외부 리소스에 액세스하는 경우 도메인 자격 증명과 다른 자격 증명만 사용할 수 있습니다.
원격 로그온 자격 증명 프로세스
RDP(원격 데스크톱 프로토콜)는 Windows 8에서 도입한 원격 데스크톱 클라이언트를 사용하여 원격 컴퓨터에 연결하는 사용자의 자격 증명을 관리합니다. 일반 텍스트 형식의 자격 증명은 호스트에서 인증 프로세스를 수행하려고 시도하고 성공하는 경우 사용자를 허용된 리소스에 연결하는 대상 호스트로 전송됩니다. RDP는 클라이언트에 자격 증명을 저장하지 않지만 사용자의 도메인 자격 증명은 LSASS에 저장됩니다.
제한된 관리 모드는 Windows Server 2012 R2 및 Windows 8.1에서 도입된 원격 로그온 시나리오에 추가 보안을 제공합니다. 이 원격 데스크톱 모드를 사용하면 클라이언트 애플리케이션이 NTOWF(NT 단방향 함수)를 사용하여 네트워크 로그온 챌린지 응답을 수행하거나 원격 호스트에 인증하는 경우 Kerberos 서비스 티켓을 사용합니다. 관리자가 인증된 이후, 해당 관리자는 원격 호스트에 제공되지 않았으므로 LSASS에 계정 자격 증명이 존재하지 않습니다. 대신 관리자에게는 세션에 대한 컴퓨터 계정 자격 증명이 있습니다. 관리자 자격 증명은 원격 호스트에 제공되지 않으므로 작업이 컴퓨터 계정으로 수행됩니다. 또한 리소스는 컴퓨터 계정으로 제한되며 관리자는 자신의 계정으로 리소스에 액세스할 수 없습니다.
로그온 자격 증명 프로세스 자동 재시작
사용자가 로그인하면 LSA는 Windows 8.1에서 도입된 LSASS.exe만 액세스할 수 있는 암호화된 메모리에 사용자 자격 증명을 저장합니다. Windows 업데이트에서 사용자의 현재 상태 없이 자동 재시작을 시작하는 경우 이러한 자격 증명은 사용자에 대한 자동 로그온을 구성하는 데 사용됩니다.
재시작할 때 사용자는 자동 로그온 메커니즘을 통해 자동으로 로그인된 다음 사용자의 세션을 보호하기 위해 컴퓨터가 추가로 잠깁니다. 잠금은 Winlogon을 통해 시작되는 반면 자격 증명 관리는 LSA에서 수행됩니다. 자동으로 로그인하고 콘솔에서 사용자 세션을 잠그면 사용자의 잠금 화면 애플리케이션이 재시작되고 사용할 수 있습니다.
ARSO에 대한 자세한 내용은 Winlogon 자동 재시작 로그온을 참조하세요.
Windows 자격 증명 저장소 및 자격 증명 관리자
자격 증명 관리자는 Windows Server 2008 R2 및 Windows 7에서 도입된 사용자 이름 및 암호를 저장하고 관리하는 제어판 기능입니다. 자격 증명 관리자를 사용하면 사용자는 보안 Windows 자격 증명 모음에 다른 시스템 및 웹 사이트와 관련된 자격 증명을 저장할 수 있습니다.
사용자는 지원되는 브라우저 및 Windows 애플리케이션의 자격 증명을 로컬 컴퓨터에 저장하고 저장하여 이러한 리소스에 로그인해야 할 때 편리하게 만들 수 있습니다. 자격 증명은 컴퓨터의 사용자 프로필 아래에 있는 암호화된 특수 폴더에 저장됩니다. 웹 브라우저 및 앱과 같은 자격 증명 관리자 API를 사용하여 이 기능을 지원하는 애플리케이션은 로그온 프로세스 중에 다른 컴퓨터 및 웹 사이트에 올바른 자격 증명을 표시할 수 있습니다.
웹 사이트, 애플리케이션 또는 다른 컴퓨터가 NTLM 또는 Kerberos 프로토콜을 통해 인증을 요청하면 기본 자격 증명 업데이트 또는 암호 저장 확인란을 선택하는 대화 상자가 나타납니다. 자격 증명 관리자 API를 지원하는 애플리케이션은 사용자가 자격 증명을 로컬로 저장할 수 있도록 하는 이 대화 상자를 생성합니다. 사용자가 암호 저장 확인란을 선택하면 자격 증명 관리자는 사용 중인 인증 서비스에 대한 사용자의 사용자 이름, 암호 및 관련 정보를 추적합니다.
다음에 서비스를 사용하면 자격 증명 관리자는 Windows 자격 증명 모음에 저장된 자격 증명을 자동으로 제공합니다. 허용되지 않으면 사용자에게 올바른 액세스 정보를 묻는 메시지가 표시됩니다. 새 자격 증명을 사용하여 액세스 권한이 부여되는 경우 자격 증명 관리자는 이전 자격 증명을 새 자격 증명으로 덮어쓰고 새 자격 증명을 Windows 자격 증명 모음에 저장합니다.
보안 계정 관리자 데이터베이스
SAM(보안 계정 관리자)이란 로컬 사용자 계정 및 그룹을 저장하는 데이터베이스입니다. 모든 Windows 운영 체제에 있습니다. 그러나 컴퓨터가 도메인에 가입되면 Active Directory는 Active Directory 도메인의 도메인 계정을 관리합니다.
예를 들면 Windows 운영 체제를 실행하는 클라이언트 컴퓨터는 사용자 로그온이 없는 경우에도 도메인 컨트롤러와 통신하여 네트워크 도메인에 참여합니다. 통신을 시작하려면 컴퓨터에 도메인에 활성 계정이 있어야 합니다. 컴퓨터의 통신을 수락하기 전에 도메인 컨트롤러의 LSA는 컴퓨터의 ID를 인증한 다음, 사용자 보안 주체와 같이 컴퓨터의 보안 컨텍스트를 생성합니다. 이 보안 컨텍스트는 특정 컴퓨터의 사용자나 서비스 또는 네트워크상의 사용자, 서비스 또는 컴퓨터의 신원 및 기능을 정의합니다. 예를 들어 보안 컨텍스트 내에 포함된 액세스 토큰은 액세스할 수 있는 리소스(예: 파일 공유 또는 프린터)와 보안 주체(사용자, 컴퓨터 또는 서비스)가 해당 리소스에서 수행할 수 있는 작업(예: 읽기, 쓰기 또는 수정)을 정의합니다.
사용자 또는 컴퓨터의 보안 컨텍스트는 사용자가 사용자의 자체 기본 워크스테이션이 아닌 서버나 워크스테이션에 로그온하는 경우와 같이 컴퓨터마다 다를 수 있습니다. 관리자가 사용자의 권리 및 권한을 수정하는 경우와 같이 세션마다 다를 수도 있습니다. 또한 사용자 또는 컴퓨터가 독립 실행형 기반, 네트워크 또는 Active Directory 도메인의 일부로 작동하는 경우 보안 컨텍스트는 일반적으로 다릅니다.
로컬 도메인 및 신뢰할 수 있는 도메인
두 개의 도메인 간에 트러스트가 있는 경우 각 도메인에 대한 인증 메커니즘은 다른 도메인에서 들어오는 인증의 유효성을 사용합니다. 트러스트는 수신되는 인증 요청이 신뢰할 수 있는 기관(신뢰할 수 있는 도메인)에서 온 것인지 확인하여 리소스 도메인(신뢰할 수 있는 도메인)의 공유 리소스에 대한 제어된 액세스를 제공하도록 도움을 줍니다. 이 방식으로 트러스트는 유효성이 검사된 인증 요청만 도메인 간에 이동되도록 허용하는 브리지 역할을 합니다.
특정 트러스트가 인증 요청을 전달하는 방법은 구성 방법에 따라 달라집니다. 트러스트 관계는 신뢰받는 도메인이 신뢰하는 도메인의 리소스에 접근할 수 있도록 하는 단방향 관계가 될 수 있으며, 두 도메인이 서로의 도메인 내 리소스에 접근할 수 있도록 하는 양방향 관계가 될 수도 있습니다. 또한 트러스트는 전이적이지 않습니다. 이 경우 트러스트는 두 트러스트 파트너 도메인 사이에만 존재하거나 전이적입니다. 이 경우 트러스트는 파트너 중 하나가 신뢰하는 다른 도메인으로 자동으로 확장됩니다.
인증과 관련된 도메인 및 포리스트 트러스트 관계에 대한 자세한 내용은 위임된 인증 및 트러스트 관계를 참조하세요.
Windows 인증에서의 인증서
PKI(공개 키 인프라)는 조직에서 통신 및 비즈니스 트랜잭션을 보호하도록 지원하는 소프트웨어, 암호화 기술, 프로세스, 서비스의 조합입니다. PKI가 통신 및 비즈니스 트랜잭션을 보호하는 기능은 인증된 사용자 및 신뢰할 수 있는 리소스 간의 디지털 인증서 교환을 기반으로 합니다.
디지털 인증서는 속한 엔터티, 해당 인증서를 발급한 엔터티, 고유 일련 번호 또는 기타 고유 ID, 발급 및 만료 날짜 및 디지털 지문에 대한 정보를 포함하는 전자 문서입니다.
인증은 원격 호스트를 신뢰할 수 있는지 여부를 확인하는 프로세스입니다. 신뢰성을 설정하려면 원격 호스트에서 허용 가능한 인증 인증서를 제공해야 합니다.
원격 호스트는 CA(인증 기관)에서 인증서를 획득함으로써 신뢰성을 설정합니다. CA는 차례로 더 높은 기관으로부터 인증을 받아 신뢰 체인을 만들 수 있습니다. 인증서가 신뢰할 수 있는지 여부를 확인하려면 애플리케이션이 루트 CA의 ID를 확인한 다음 신뢰할 수 있는지 확인해야 합니다.
마찬가지로 원격 호스트 또는 로컬 컴퓨터는 사용자나 애플리케이션에서 제공하는 인증서가 진짜인지 확인해야 합니다. LSA 및 SSPI를 통해 사용자가 제시한 인증서는 로컬 컴퓨터에서 로컬 로그온, 네트워크 또는 Active Directory의 인증서 저장소를 통해 도메인의 신뢰성을 평가합니다.
인증서를 생성하기 위해 인증 데이터는 SHA(Secure Hash Algorithm)와 같은 해시 알고리즘을 통과하여 메시지 다이제스트를 생성합니다. 그런 다음 보낸 사람의 프라이빗 키를 사용하여 메시지 다이제스트가 메시지 다이제스트를 생성했음을 증명하여 메시지 다이제스트에 디지털 서명됩니다.
스마트 카드 인증
스마트 카드 기술은 인증서 기반 인증의 예시입니다. 스마트 카드로 네트워크에 로그온하면 도메인에 사용자를 인증할 때 암호화 기반 식별 및 소유 증명을 사용하므로 강력한 형태의 인증이 제공됩니다. AD CS(Active Directory Certificate Services)는 각 스마트 카드에 대한 로그온 인증서 발급을 통해 암호화 기반의 ID를 제공합니다.
가상 스마트 카드 기술은 Windows 8에서 도입되었습니다. 스마트 카드의 인증서를 PC에 저장한 다음 디바이스의 변조 방지 TPM(신뢰할 수 있는 플랫폼 모듈) 보안 칩을 사용해서 보호합니다. 이러한 방식으로 PC는 실제로 인증을 받기 위해 사용자의 PIN을 받아야 하는 스마트 카드가 됩니다.
스마트 카드 인증에 대한 자세한 내용은 Windows 스마트 카드 기술 참조를 참조하세요.
원격 및 무선 인증
원격 및 무선 네트워크 인증은 인증을 위해 인증서를 사용하는 또 다른 기술입니다. IAS(인터넷 인증 서비스) 및 가상 사설망 서버는 EAP-TLS(Extensible Authentication Protocol-Transport Level Security), PEAP(Protected Extensible Authentication Protocol) 또는 IPsec(인터넷 프로토콜 보안)을 사용해서 VPN(가상 사설망) 및 무선 연결을 비롯한 다양한 유형의 네트워크 액세스에 대해 인증서 기반 인증을 수행합니다.
네트워킹의 인증서 기반 인증에 대한 자세한 내용은 네트워크 액세스 인증 및 인증서를 참조하세요.