본문 바로가기
[Microsoft] Cyber Security School 7기

클라우드 기반 윈도우/리눅스 서버 과제-2...IDM(FreeIPA), Active Directory

by juyeon2110 2026. 4. 20.

1. Red Hat Enterprise Linux 기반 IDM(Identity Management, FreeIPA)

IdM(Identity Management) : 시스템 내 사용자(또는 개체)의 신원을 생성·관리·인증·권한 부여하는 체계 전반. Windows 환경에서는 Active Directory(AD)가 대표적인 IdM 구현체고, Linux 환경(주로 RHEL 계열)에서는 FreeIPA가 같은 역할을 한다. 둘은 연동도 가능하다.

IdM 핵심 구성요소
설명
인증 (Authentication)
사용자가 누구인지 확인 (비밀번호, MFA 등)
인가 (Authorization)
인증된 사용자에게 어떤 권한을 줄지 결정
계정 관리
사용자 계정의 생성·수정·삭제·비활성화
역할 기반 접근 제어 (RBAC)
역할(Role)에 따라 권한을 묶어서 부여
감사 및 로깅
누가 언제 무엇에 접근했는지 기록
SSO (Single Sign-On)
한 번 로그인으로 여러 시스템에 접근
디렉터리 서비스
사용자 정보를 중앙에서 저장·조회 (예: AD, LDAP)

MFA(Multi-Factor Authentication) : 인증 시 두 가지 이상의 인증 요소를 조합해 신원을 확인하는 방식. (ex: 비밀번호 + 얼굴 인식)

RBAC(Role-Based Access Control, 역할 기반 접근 제어) : 사용자에게 권한을 직접 부여하는 대신, 역할(Role)에 권한을 묶고 사용자에게 역할을 할당하는 접근 제어 방식

- FreeIPA 설치 과정 (IDM Server/Client)

FreeIPA: Linux/Unix 환경을 위한 오픈소스 통합 IdM(Identity Management) 솔루션. LDAP, Kerberos, DNS 등 여러 기술을 하나로 묶어서 중앙 통제 가능하게 만든 것이다.

설치 과정

1. 사전 조건

항목
요구사항
OS
RHEL 8/9, Rocky Linux, AlmaLinux, Fedora
hostname
FQDN 형식 필수 (ex : ipa.example.com)
DNS
서버 자신의 A/PTR 레코드 등록 필요
방화벽 포트
80, 443, 88, 389, 636, 464, 53
NTP
서버와 클라이언트 시간 동기화 필수 (Kerberos 조건)

A/PTR 레코드

A : ipa.example.com → 192.168.1.10

PTR : 192.168.1.10 → ipa.example.com

NTP(Network Time Protocol) : 인터넷상의 라우터 및 기타 하드웨어 장치의 시계를 동기화하는 데 널리 사용되는 프로토콜

2. IdM Server 설치

// 1. 패키지 설치
dnf install -y ipa-server ipa-server-dns
 
// 2. hostname 설정
hostnamectl set-hostname ipa.example.com
 
// 3. IPA 서버 설치 (대화형)
ipa-server-install \ --domain=example.com \ --realm=EXAMPLE.COM \ --ds-password=디렉터리관리자비번 \ --admin-password=admin비번 \ --setup-dns \ --forwarder=8.8.8.8 \ --auto-reverse \ --unattended /
 
/ 4. 방화벽 설정
firewall-cmd --add-service={freeipa-ldap,freeipa-ldaps,dns,kerberos,freeipa-replication} --permanent firewall-cmd --reload

-> 설치 완료 후 https://ipa.example.com 으로 Web UI 접근 가능

3. IdM Client 설치

// 1. 패키지 설치
dnf install -y ipa-client
 
// 2. DNS 서버를 IPA 서버로 지정 (또는 /etc/hosts에 수동 등록)
// /etc/resolv.conf → nameserver <IPA서버 IP>
 
// 3. 클라이언트 등록
ipa-client-install \ --server=ipa.example.com \ --domain=example.com \ --principal=admin \ --password=admin비번 \ --unattended \ --mkhomedir
 
// 4. 등록 확인
ipa whoami

- 사용자/그룹 생성

// Kerberos 티켓 획득 (관리자 인증)
kinit admin
 
// 사용자 생성
ipa user-add jdoe \ --first=John \ --last=Doe \ --email=jdoe@example.com \ --password
 
// 그룹 생성
ipa group-add developers --desc="개발팀"
 
// 그룹에 사용자 추가
ipa group-add-member developers --users=jdoe
 
// 확인
ipa user-show jdoe ipa group-show developers

- Kerberos 인증

Kerberos : 신뢰할 수 있는 제3의 기관(KDC)을 통해 클라이언트와 서버 간의 상호 인증을 제공하는 티켓 기반의 네트워크 인증 프로토콜. 대칭 키 암호 기법을 바탕으로 하며, 암호가 네트워크를 통해 직접 전송되지 않아 보안성이 높다.

대칭 키 암호 기법(Symmetric Key Cryptography) : 암호화 키와 복호화 키가 동일한 방식

Kerberos 아키텍처 구성 요소

Client (사용자/서비스) : 서비스를 이용하려는 주체

Server (애플리케이션 ): 사용자가 접근하려는 자원(공유 폴더, 웹 서버 등)

KDC (Key Distribution Center, 키 배포 센터) : 인증을 주관하는 핵심 서버 (AS + TGS를 포함)

AS (Authentication Service): 사용자의 첫 로그인을 인증하고 TGT를 발급

TGS (Ticket Granting Service) : TGT를 확인하고 특정 서버에 접근할 수 있는 ST를 발급

TGT(Ticket Granting Ticket) : KDC에서 발급한 마스터 티켓

ST(Service Ticket) : 개별 서비스 접근용 티켓

Kerberos 인증 흐름

1단계 — AS_REQ (인증 요청)

클라이언트가 AS에 인증 요청을 보낸다. 이때 비밀번호 자체는 전송하지 않고, 비밀번호로 암호화한 타임스탬프를 보낸다.

Client → AS

2단계 — AS_REP (TGT 발급)

AS가 Principal DB에서 사용자 키를 꺼내 타임스탬프를 검증하고, TGT를 발급한다. TGT는 클라이언트 로컬의 ccache에 저장된다.

AS → Client

3단계 — TGS_REQ (서비스 티켓 요청)

특정 서비스(SSH 등)에 접근할 때 TGT를 TGS에 제시하며 ST를 요청한다.

Client → TGS

4단계 — TGS_REP (ST 발급)

TGS가 TGT를 검증하고 해당 서비스용 ST를 발급한다. ST도 ccache에 저장된다.

TGS → Client

5단계 — AP_REQ (서비스 접근)

클라이언트가 ST를 서비스에 직접 제시한다. 이 단계에서 KDC를 거치지 않는다. 서비스는 자신의 키로 ST를 복호화해서 검증한다

Client → Service

6단계 — AP_REP (접근 허가)

ST 검증 성공 시 서비스가 접근을 허가한다. 이후 동일 서비스 접근은 캐시된 ST를 재사용해서 비밀번호 재입력 없이 접근 가능하다(SSO).

Service → Client
// 티켓 획득
kinit [id]
 
// 티켓 목록 확인
klist
 
// 티켓 갱신
kinit -R
 
// 티켓 파기
kdestroy
 
// 특정 서비스 티켓 확인
klist -e

2. Windows 2022 서버 기반 Active Directory

- Windows Server 2022 (DC), Windows Client (Win 11)

AD(Active Directory) : Microsoft의 디렉터리 서비스로, Windows 환경에서 사용자·컴퓨터·정책을 중앙에서 관리하는 IdM 솔루션

DC(Domain Controller) : AD 서비스가 실행되는 서버. 모든 로그인 요청을 검증하고, 누가 어떤 권한을 가졌는지 확인하는 두뇌 역할

AD DS(Active Directory Domain Services) : Windows Server의 역할(Role) 중 하나로, 네트워크 상의 사용자·컴퓨터·리소스 정보를 중앙 데이터베이스에 저장하고 관리하는 디렉터리 서비스

* AD(Active Directory) 는 Microsoft의 디렉터리 서비스 전체 브랜드이고, AD DS는 그 안에 포함된 핵심 역할 하나

1. AD DS 설치

1. Server Manager 열기 → 우측 상단 Manage → Add Roles and Features
2. Installation Type → Role-based or feature-based installation 선택
3. Server Selection → 현재 서버 선택
4. Server Roles 목록에서 Active Directory Domain Services 체크 - 팝업에서 Add Features 클릭 (의존 기능 자동 추가)
5. Features 단계 → 기본값 유지, Next
6. AD DS 단계 → 설명 확인 후 Next
7. Confirmation 단계 → Install 클릭
8. 설치 완료 후 Promote this server to a domain controller 링크 클릭

+ DC 승격 (Deployment Configuration)

실제로 도메인을 생성하고 그 도메인을 관리하는 서버로 활성화

단계
설정
Deployment Operation
Add a new forest 선택
Root domain name
example.com 입력
Forest/Domain functional level
Windows Server 2016 이상 권장
DNS server
체크 유지
DSRM Password
복구용 비밀번호 설정
NetBIOS name
자동 입력 (EXAMPLE) 확인
Paths
NTDS.dit, SYSVOL 경로 기본값 유지

설정 완료 후 Install → 자동 재부팅 → DC로 승격 완료. 재부팅 후 로그인 화면에서 EXAMPLE\Administrator로 로그인

2. 사용자/그룹 생성

- ADUC 실행

 

Server Manager → Tools → Active Directory Users and Computers 또는 dsa.msc 실행

ADUC(Active Directory Users and Computers) : AD DS에서 사용자·그룹·컴퓨터·OU를 관리하는 GUI 도구

OU : 사용자·컴퓨터를 논리적으로 묶는 폴더

- OU 생성

1. 도메인(example.com) 우클릭 → New → Organizational Unit
2. 이름 입력 (예: IT부서) → OK

 

- Users 추가

1. 사용자 생성

생성한 OU 우클릭 → New → User

2. 그룹 생성 및 멤버 추가

OU 우클릭 → New → Group

3. 클라이언트 도메인 가입

사전 조건

-> DNS 서버를 DC의 IP로 설정

설정 → 네트워크 → DNS 서버 수동 설정 → DC IP 입력

-> DC와 네트워크 통신 가능 확인

ping example.com

도메인 가입 (GUI)

1. 설정 → 시스템 → 정보 → 고급 시스템 설정 (또는 sysdm.cpl 실행)
2. 컴퓨터 이름 탭 → 변경(N)
3. 도메인 라디오버튼 선택 → example.com 입력 → OK
4. 도메인 관리자 자격증명 입력 (Administrator / 비밀번호)
5. "Welcome to the example.com domain" 메시지 확인
6. 재부팅

PowerShell로 확인

//도메인 가입 여부 확인
(Get-WmiObject Win32_ComputerSystem).Domain
 
// 도메인 컨트롤러 확인
nltest /dsgetdc:example.com
 
// 현재 로그인 사용자 확인
whoami

3. FreeIPA ↔ AD Trust Join 구성 방법

FreeIPA ↔ AD Trust : FreeIPA(Linux IdM)와 Windows AD 도메인 사이에 신뢰 관계(Trust) 를 맺어서, AD 사용자가 별도 계정 없이 Linux 시스템에 접근할 수 있게 하는 구성

사전 조건

항목
요구사항
FreeIPA 서버
ipa-server-trust-ad 패키지 필요
AD DC
Windows Server 2008 R2 이상
DNS
양방향 DNS 해석 가능해야 함
포트
TCP/UDP 135, 138, 139, 445 (Samba)
시간 동기화
양쪽 NTP 동기화 필수

 

FreeIPA 서버에서 Trust 설정

// 1. 패키지 설치
dnf install -y ipa-server-trust-ad
 
// 2. Trust 기능 활성화 (Samba 구성 포함)
ipa-adtrust-install --add-sids --add-agents
 
// 3. Kerberos 티켓 획득
kinit admin
 
// 4. AD와 트러스트 설정
ipa trust-add --type=ad ad.example.com \ --admin Administrator \ --password
 
// 5. 트러스트 확인
ipa trust-show ad.example.com

AD 사용자 접근 확인

// AD 사용자 정보 조회
getent passwd aduser@ad.example.com
 
// AD 그룹 조회
getent group "domain users@ad.example.com"
 
// AD 사용자로 SSH 접근 테스트
ssh aduser@ad.example.com@ipa-client.example.com