G2H

보안 리서치 · 레드팀/블루팀 · DFIR · Cloud · Tooling

최신 글 보기

최근에 작성된 글들을 확인해보세요.

Active Directory(Domain Controlle, AD DC)

Infra

윈도우 운영체제의 기본 네트워크 모델인 "워크그룹(WorkGorup)"은 각 컴퓨터가 독립적으로 운영되는 p2p 방식이다.

이 모델에서 각 컴퓨터는 그 자체로 하나의 섬과 같아, 자체적인 보안 정책, 사용자 계정, 리소스 관리를 책임진다.

워크그룹 모델은 기술적 불편함을 넘어 비즈니스 비용을 직접적으로 발생시키며, 다양한 작업은 it 관리자의 시간을 소모하며, 자원 낭비, 데이터 유출과 같은 보안위협등 다양한 문제점들이 존재하며, 워크그룹 모델의 문제는 단순한 기술적 한계가 아닌, 기업의 성장 저해 및 심각한 운영 리스크를 야기하는 문제가 존재하여, 이를 해결하기 위해 만들어진 것이 디렉터리 서비스인 Active Directory이다.

 

디렉터리 서비스란 네트워크상의 다양한 리소스에 대한 정보를 중앙 데이터베이스에 저장하고 이를 체계적으로 조직화하여 관리자와 사용자가 쉽게 접근 및 사용할 수 있도록 제공하는 서비스이다.

Active Directory 

 AD라 불리는 Active Directory는 마이크로소프트의 디렉터리 서비스로서, 조직의 사용자 계정, 컴퓨터, 네트워크 자원, 보안 그룹, 정책 등을 중아 데이터베이스에 저장하고 관리하는 역할을 수행한다.

이러한 AD는 정보를 계층적인 구조로 이루어져 있으며 ,네트워크상의 모든 객체(사용자, PC, 프린터 등)을 논리적으로 분류하고, 인증 및 권한 부여를 중앙에서 제어한다.

 

AD는 개별 컴퓨터가 아닌 중앙에서 모든 사용자 계정과 보안 정보를 저장하는 도메인 모델의 근간을 이루며, 도메인에 가입한다는 것은 이 중앙 관리 체계의 통제를 받는다고 볼 수 있따.

기능 워크그룹 환경 도메인 환경
사용자 계정 관리 분산 관리 (각 PC에 로컬 계정) 중앙 집중 관리 (AD에 단일 계정)
인증 로컬 인증 (PC가 사용자 확인) 중앙 인증 (도메인 컨트롤러가 확인)
보안 정책 개별 PC 설정 (비일관적) 중앙 관리 (GPO로 일괄 적용)
리소스 접근 각 리소스마다 자격 증명 필요 단일 로그인 (Single Sign-On, SSO)
확장성 낮음 (10-15대 미만 PC에 적합) 뛰어남 (수백만 개체까지 확장 가능)
주요 사용처 가정, 소규모 사무실(SOHO) 기업, 대규모 조직

Domain Controller

DC 라고 불리는 Domain Controller는 AD 서비스를 운영하는 실질적인 서버를 의미한다.

즉, DC는 Windows 서버에 AD 도메인 서비스를 설치하여 AD 데이터베이스를 호스팅하고, 도메인 내 인증 요청을 처리하고 보안 정책을 적용하는 실제 동작 주체이다.

AD가 개념적으로는 디렉터리 서비스(소프트웨어)라면, DC는 이를 실행하는 실제 서버(하드웨어/OS)라고 볼 수 있다.

 

하나의 도메인에는 하나 이상의 DC가 있을 수 있으며, 모든 DC들은 같은 AD 데이터베이스의 복제본을 가조기 있어 상호 동기화가 가능하다.

따라서 AD는 데이터와 규칙의 집합이고, DC는 그 데이터를 저장/관리하며 사용자 로그인을 검증해 주는 서버라고 볼 수 있다.

예를 들어보자, 한 회사의 직원이 기업 인트라넷 컴퓨터에 로그인 하려고 할 때 컴퓨터는 DC에 질의하여 사용자가 입력한 ID/PW가 AD에 등록된 정보와 일치하는지 확인(인증)하고, 사용자가 어떤 리소스에 접근해도 되는지 결정(권한 부여)하며 로그인을 허용한다.

 

이와같이 AD는 사용자 계정 정보와 권한 정보를 제공하고, DC는 이러한 정보를 조회하여 사용자를 검증한다.

AD를 사용하는 이유?

어느정도 규모가 있는 기업에서는 AD를 자주 사용하는 것을 볼 수 있다.

이러한 이유는 IT 자산의 중앙 집중식 관리와 통합 인증 서비스를 가능하기 때문이다. 

  • SSO : AD는 모든 사용자 계정과 시스템을 한 곳에서 관리한다. 사용자 생성/삭제, 비밀번호 변경, 권한 부여/회수등 모든 효과는 도메인 내 모든 시스템에 즉시 반영된다. 또한 사용자는 하나의 도메인 계정으로 여러 시스템에 로그인할 수 있어 편의성과 보안이 향상된다.
  • 통합 인증 및 권한 관리 : AD 도메인에 가입된 모든 시스템은  인증을 AD에 위임한다. 모든 인증과 권한 부여에 Aㅇ 정보가 활용되며, 결과적으로 각 시스템별 계정 관리나 권한 설정을 따로 할 필요 없이 AD를 통해 일원화 할 수 있게 된다.
  • 디렉터리 서비스 및 자원 검색 : AD는 LDAP 기반의 디렉터리 서비스로, 조직의 구조와 구성원을 계층적으로 저장한다. 이를 통해 사내 인트라넷 환경에서 사용자나 부서, 프린터, 공유폴더 등의 정보를 쉽게 검색할 수 있다.
  • 그룹 정책을 통한 일괄 배포 : AD 환경에서는 그룹 정책 객체(GPO) 를 사용해 도메인 내 모든 컴퓨터와 사용자에게 보안 설정이나 구성 정책을 일괄 적용할 수 있다.즉, 쉽게 말해 암호 복잡성, 계정 잠금 임계값, 화면 보호기 대기 시간등을 GPO로 정의하면, 도메인에 가입된 모든 해당 컴퓨터들이 자동으로 해당 정책을 받아 적용하게 된다. 이러한 그룹 정책은 OU(조직 단위) 별로 달리 적용할 수도 있어 부서별/용도별 상이한 정책 관리 또한 가능하다.

Domain Controller 의 구성 요소 및 핵심 기능

  •  AD 데이터베이스 저장 (NTDS)
    • DC는 AD 의 데이터베이스를 로컬에 저장한다. 해당 데이터베이스 파일은 NTDS.dit이며, 도메인 내 모든 사용자 계정, 컴퓨터 계정, 그룹, 암호 해시, 그리고 각 객체의 속성정보가 담겨 있다. DC를 처음 도메인에 Promote하면 새로운 도메인이 생성되고 AD 데이터베이스가 생성되는데, 추가로 다른 DC를 같은 도메인의 Promote 하면 첫 번째 DC의 데이터베이스를 복제(Replication)받아 동일한 내용을 가지게 된다.
    • 어느 한 DC에서 사용자 정보가 변경되면 그 변경 사항은 도메인의 모든 DC에 복제되어 데이터 일관성을 유지한다. 이러한 복제를 통해 하나의 DC 장애시에 다른 DC가 서비스 제공을 지속하여 고가용성 확보가 가능하다.
  • 인증 서비스 (Kerberos KDC와 NTLM)
    • DC는 도메인의 인증 기관이라고 앞서 설명했다. 이 때 Kerberos 프로토콜이 기본 인증 메커니즘으로 사용되며, 도메인의 각 DC는 키 배포 센터(KDC)서비스를 구동한다.
    • KDC는 티켓 기반 인증을 제공하여, 사용자나 컴퓨터가 도메인에 로그인하거나 네트워크 자원에 접근할 떄 티켓(토큰)을 발급해준다. 이를 통해 사용자 비밀번호 자체를 네트워크에 직접 보내지 않고 티켓으로 인증을 위임하는 보안과 SSO가 구현된다.
    • Windows는 NTLM이라는 이전 방식의 Cahllange-Response 방식 인증도 후호환성을 위해 지원하며, 이 경우 DC가 저장된 계정의 해시값으로 응답을 검증한다. 즉, DC가 없으면 도메인 로그인 자체가 불가능 하다.
  • 권한 부여와 보안 정책 적용
    • DC는 사용자가 인증된 후 그 사용자가 속한 보안 그룹 정보를 토대로 자원 접근 권한을 판단하는 토큰을 발행한다.
    • 파일 서버에 접근할 때 파일 서버는 사용자의 엑세스 토큰을 확인하여 파일 ACL과 대조함으로써 권한 여부를 결정하게 되며, 이 토큰은 DC가 사용자가 속한 도메인 그룹들을  포함하여 만들어 준 것이다. 또한 DC는 그룹 정책 배포를 담당하는 SYSVOL 폴더를 호스팅하며, 부팅 시 주기적으로 도메인 클라이언트들은 DC로부터 정책을 다운로드 받아 적용한다.
  • DNS 통합
    • DC가 네트워크에 자신의 서비스 기록(SRV 레코드)을 DNS에 등록하여 클라이언트들이 DC를 찾도록 한다.
    • 도메인에 조인된 클라이언트는 _ldap._tcp.dc._msdcs.<도메인명> 같은 특별한 DNS 질의를 통해 가까운 도메인 컨트롤러의 IP주소를 검색 하며, 일반적으로 도메인 최초 구성 시 DC에 DNS 서버 역할을 함꼐 설치하며, AD 통합 DNS 서버는 도메인 관련 레코드들을 저장하고 DC들 간에 복제한다.
    • AD 환경에서 모든 도메인 가입 클라이언트가 해당 도메인의 DC(DNS 서버)로 DNS 질의를 보내도록 설정되야 하며, 이를 통해 AD탐색 서비스가 이루어진다.
    • 즉, DNS는 AD의 전화번호부이며, DC는 자기 자신을 DNS에 등록해 클라이언트가 찾아오게 하는 구조이다.
  • 기타 기능 (글로벌 카탈로그, FSMO 역할):
    • 포리스트 내 여러 도메인이 있는 경우 일부 DC는 글로벌 카탈로그서버(Global Catalog, GC)로 구성되어 포리스트 전체 객체의 일부 속성을 저장한다.
    • 사용자는 이 GC 서버에 질의하여 포리스트 어디에 있는 객체든 신속히 찾을 수 있다.
    • AD 환경에서는 FSMO 역할이라고 불리는 특수한 작업이 있으며, 스키마 마스터, 도메인 이름 마스터, RID 마스터, PDC 에뮬레이터, 인프라 마스터가 존재하며, 포리스트 또는 도메인 당 하나의 DC만 담당하는 작업들이다.

Active Directory 의 구조(Domain, Forest, ou...)

AD의 논리적 구조는 계층적으로 이루어져 있다고 했다.

크게 도메인 -> 트리 -> 포레스트의 상위 구조와, 그 내부의 조직 단위(OU) - 개체(Object) 개념으로 나눌 수 있다.

  •  도메인 (Domain)
    • AD에서 도메인은 관리와 보안의 기본 단위이다. 하나의 도메인 = 하나의 AD 데이터베이스 = 하나의 보안 경계라고 볼 수 있다.
    • example.com, corp.local과 같은 DNS 이름으로 정의 되며, 해당 도메인에 속한 사용자, 컴퓨터는 모두  해당 AD 데이터베이스의 객체가 된다.
  • 포레스트 (Forest)
    • AD 구조에서 최상위 계층으로, 하나 이상의 도메인들의 집합이다.
    •  최초 도메인 생성시, 하나의 포레스트가 형성되고, 추가 생성시 기존 포레스트 포함 혹은 분리할 것인지 결정할 수 있다. 
    • 같은 포레스트의 도메인들은 기본적으로 서로 Trust 관계가 자동 설정되어, 도메인의 사용자 계정으로 다른 도메인 자원에 접근할 수 있으며, 포레스트는 AD 최상위 범위이므로 스키마와 구성 설정이 포레스트 전체에 공유된다.
  • 트리 (Tree)
    • 포레스트 내에서 도메인 네임스페이스가 연속적(계층적)으로 이루어진 도메인들의 집합이다.
    • 쉽게 생각해서 하나의 포레스트의 루트 도메인이 g2h.co.kr 이고,  추가로 test.g2h.co.rk, real.g2h.co.kr 같은 식으로 상위 도메인 이름을 계승하여 하위 도메인 구조로 만들어 지는것이 하나의 트리를 이룬다.
    • 부모 자식 관계로 도메인이 확장된 구조이므로 도메인 이름이 계층적으로 연결된다.
  • 조직 구성 단위 (OU)
    • 도메인 내부를 논리적으로 구분하는 컨테이너로서, OU 안에는 사용자, 그룹, 컴퓨터, 프린터 등의 객체를 포함할 수 있고 OU 안에 하위 OU를 두어 트리 형태로 조작할 수도 있다.
    • OU는 AD 구조상 선택사항이지만, 부서별, 지사별,  역할별로 객체를 그룹화 하기위해 주로 활용된다.
    • OU는 권한 위임에도 사용되며, 상위 관리자가 특정 OU에 대한 관리 권한을 하위 관리자에게 위임할 수도 있다. 
    • 그룹 정책(GPO) 역시 OU 단위로 적용이 가능하다.
  • 개체 (Object)
    • AD 데이터베이스에 저장되는 각종 항목들을 말하며, 사용자 계정, 컴퓨터 계정, 보안 그룹, 분배 그룹, 연락처, 공유 폴더, 프린터 등이 모두 AD의 하나의 객체로 표현된다.
    • 각 객체는 이름, 속성을 가지며, 예를 들어 사용자 객체는 이름, ID, PW Hash, 부서, 전화번호, 이메일 등의 속성을 가진다.
  • 그룹 (Group)
    • AD 객체 중 하나로, 여러 사용자 계정이나 컴퓨터 계정을 논리적으로 묶은 컬렉션이다.
    • 주로 권한 부여를 단순화하기 위해 사용되며, AD 그룹에는 보안 그룹과 분배그룹이 존재하며, 보안 그룹은 권한 부여에 사용되고 도메인 토큰에 포함되며, 분배 그룹은 메일 리스트 등 보안과 무관한 용도로 사용된다.
      • 보안 그룹 (Security Group): 리소스에 대한 접근 권한을 할당하는 데 사용되는 가장 일반적인 유형의 그룹
      • 배포 그룹 (Distribution Group): 이메일 배포 목록과 같이 보안과 관련 없는 목적으로 사용
  • 그룹 정책 객체 (GPO)
    • AD에 저장되는 정책 설정의 모음으로 사이트, 도메인, OU에 연결 되어 해당 범위 내 AD 객체에 정책을 적용한다.
    • GPO에는 보안 설정, 로그인 스크립트, 소프트웨어 배포, 레지스트리 값 배포 등 수백 가지 설정을 담을 수 있으며, AD는 GPO를 DC의 SYSVOL 공유에 젖아하고 도메인에 가입된 컴퓨터는 주기적으로 DC로부터 자신에게 적용되는 GPO를 가져와 로컬 레지스트리에 반영한다.
    • GPO는 로컬(Local) → 사이트(Site) → 도메인(Domain) → OU(Organizational Unit) 순서로 적용된다. 이 순서를 'LSDOU'라고 부르며, 나중에 적용된 정책이 이전에 적용된 정책을 덮어쓰는 특징이 있으며, 이 계층적 적용 방식 덕분에 관리자는 도메인 수준에서 광범위한 기본 정책을 설정하고, 특정 OU 수준에서 세부적인 예외 정책을 적용하는 유연한 관리가 가능하다.

참고 자료

1. https://learn.microsoft.com/en-us/troubleshoot/windows-server/active-directory/active-directory-overview?utm_source
2. https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/get-started/virtual-dc/active-directory-domain-services-overview?
3. https://instasafe.com/blog/domain-controller-vs-active-directory/#:~:text=A%20domain%20controller%20is%20a,network%20resources%2C%20users%2C%20and%20devices
4. https://learn.microsoft.com/en-us/windows/win32/secauthn/key-distribution-center
5. https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/get-started/virtual-dc/virtualized-domain-controller-architecture