InfraPlatform

FreeIPA와 Windows Active Directory(AD) 간의 Cross-Forest Trust 설정 (3)

IT오이시이 2026. 7. 24. 12:48
728x90

 

 

 

FreeIPA와 Windows Active Directory(AD) 간의 Cross-Forest Trust(상호 숲 신뢰 관계) 설정은 기업 환경에서 "Windows AD 계정을 그대로 이용해 Linux 서버에 SSH 로그인하고 관리 권한을 행사"할 수 있도록 만드는 강력한 연동 기능입니다.

FreeIPA는 Samba의 Winbind/LSA 기술을 내부적으로 사용하여 Windows AD입장에서 FreeIPA를 마치 "또 다른 Windows AD Forest"처럼 인식하게 만듭니다.

 

 


🏗️ 가상 시나리오 및 전제 조건

구분 Active Directory (AD) FreeIPA (IdM)
Domain (Forest) ad.example.com ipa.example.com
IP 주소 192.168.1.100 192.168.1.10
NetBIOS 이름 AD IPA

⚠️ 핵심 전제 조건

  1. 서로 다른 도메인명: 두 시스템의 도메인 이름이 완전히 분리되어야 합니다.
  2. 시간 동기화: AD DC와 FreeIPA 서버 간 시계 오차가 5분 이내여야 합니다 (NTP/Chronyd 설정 필수).
  3. ID Range 중복 금지: AD의 SID 기반 Linux UID/GID 맵핑 범위가 FreeIPA 사용자 UID 범위와 겹치지 않아야 합니다.

🛠️ 설정 프로세스 (5단계)

 

1단계: 양방향 DNS 조건부 전달자(Conditional Forwarder) 설정

 

1단계: 양방향 DNS 조건부 전달자(Conditional Forwarder) 설정: 서로의 FQDN 해석 가능 상태 확보.
AD와 FreeIPA는 상대방의 Kerberos KDC 및 LDAP SRV 레코드를 찾기 위해 DNS 질의가 양방향으로 서로 가능해야 합니다.

① FreeIPA DNS에 AD 조건부 전달자 추가

# FreeIPA CLI에서 AD 도메인(ad.example.com)을 AD DNS IP로 전달하도록 설정
ipa dnsforwardzone-add ad.example.com --forwarder=192.168.1.100 --forward-policy=only

② Windows AD DNS에 FreeIPA 조건부 전달자 추가

  • AD 서버에서 DNS 관리자 (dnsmgmt.msc) 실행
  • [조건부 전달자 (Conditional Forwarders)] 우클릭 ➡️ [새 조건부 전달자]
  • DNS 도메인: ipa.example.com / IP 주소: 192.168.1.10 추가

 

③ DNS 상호 질의 검증

# FreeIPA 서버에서 실행
ping ad.example.com
nslookup -type=SRV _kerberos._tcp.ad.example.com

# AD PowerShell에서 실행
Resolve-DnsName -Name ipa.example.com

 

 

2단계: FreeIPA AD Trust 패키지 설치 및 환경 구성

 

2단계: FreeIPA AD Trust 패키지 설치 및 환경 구성: Samba Winbind 기반 Trust 모듈 활성화.
FreeIPA 서버에 AD 트러스트 관련 패키지를 설치하고 필요한 방화벽 포트를 개방합니다.

# 1. AD Trust 패키지 설치 (RHEL / Rocky Linux기준)
sudo dnf install -y ipa-server-trust-ad freeipa-type-definitions

# 2. AD Trust 구성 프로그램 실행
sudo ipa-adtrust-install
  • NetBIOS domain name: 기본값(IPA) 확인 후 엔터
  • Do you want to enable support for trusted domains?: yes
# 3. 추가 방화벽 포트 개방 (SMB/RPC 통신용)
sudo firewall-cmd --add-service=freeipa-trust --permanent
sudo firewall-cmd --reload

 

 

3단계: Cross-Forest Trust 관계 생성:

 

 

3단계: Cross-Forest Trust 관계 생성: One-way 또는 Two-way 신뢰 관계 설정.
일반적으로 AD 사용자가 FreeIPA 리눅스 자원에 접근하는 단방향 신뢰(One-way Trust)를 주로 구축합니다.

# FreeIPA에서 Kerberos 관리자 티켓 획득
kinit admin

# AD 트러스트 추가 명령 실행
ipa trust-add --type=ad ad.example.com --admin Administrator --password
  • AD의 Administrator 비밀번호를 입력하면, FreeIPA가 Samba LSA RPC를 통해 AD DC에 자동으로 접속하여 신뢰 개체(TDO)를 생성합니다.

 

 

4단계: AD 사용자/그룹을 위한 FreeIPA 외부 그룹 매핑

 

4단계: AD 사용자/그룹을 위한 FreeIPA 외부 그룹 매핑: ID Views & External Group 설정.
AD 사용자에게 FreeIPA 내의 권한(HBAC, Sudo 등)을 부여하기 위해 AD 보안 그룹을 FreeIPA의 외부 그룹(External Group)에 매핑합니다.

# 1. FreeIPA에 '외부(External)' 타입의 그룹 생성
ipa group-add ad_domain_admins_external --external

# 2. AD의 보안 그룹(SID 또는 '도메인\그룹명')을 외부 그룹에 추가
ipa group-add-member ad_domain_admins_external --external "AD\Domain Admins"

# 3. FreeIPA 일반 POSIX 그룹 생성 후 외부 그룹을 멤버로 매핑
ipa group-add ad_domain_admins
ipa group-add-member ad_domain_admins --groups=ad_domain_admins_external

이제 FreeIPA의 POSIX 그룹인 ad_domain_admins에 HBAC 접근 권한이나 Sudo 규칙을 부여하면, AD의 Domain Admins 그룹 사용자들에게 자동 적용됩니다.

 

 

5단계: AD 계정 로그인 및 검증: 

 

5단계: AD 계정 로그인 및 검증: Linux Client 노드에서 연동 확인.
FreeIPA 클라이언트 서버에서 AD 계정이 정상적으로 인식되는지 확인합니다.

# 1. FreeIPA 클라이언트 서버에서 AD 계정 조회 (도메인 형식 포함)
id user@ad.example.com
# 또는
id AD\\user

# 2. AD 계정으로 SSH 접속 테스트
ssh user@ad.example.com@client.example.com

# 3. SSH 접속 후 Kerberos 티켓 확인
klist

🔍 자주 발생하는 문제 및 트러블슈팅

  • KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN 에러 발생 시
  • DNS 조건부 전달자 설정이 정상 작동하는지, 상대방의 _kerberos._tcp SRV 레코드가 응답하는지 확인하세요.
  • AD 사용자의 ID/GID가 조회되지 않을 때 (id: no such user)
  • SSSD 캐시 문제가 대부분입니다. 클라이언트 서버에서 아래 명령어로 캐시를 초기화하세요: 
  • sudo sssdctl cache-expire -E sudo systemctl restart sssd

 

728x90
반응형