본문 바로가기
카테고리 없음

[계정/권한 관리] freeIPA - IPA Server 설치하기

by 이뫼장 2024. 1. 29.

 

다수의 리눅스 서버 계정관리를 위한 freeIPA의 설치 법에 대해 알아보자.

 

 

0. 설치 환경

 

1. FQDN 설정 하기

FreeIPA 설치 전 서버의 hostname을 변경해야 한다. IPA 설치 시 아래의 규칙을 검사하기 때문에 사전에 설정해두어야 한다.

  1. The hostname cannot be localhost or localhost6. 
  2. The hostname must be fully-qualified (server.ipa.test
  3. The hostname must be resolvable.
  4. The reverse of address that it resolves to must match the hostnam

즉, 1)localhost를 호스트명으로 사용하면 안되고, 2)FQDN을 사용해야 하며, 3)해당 호스트명이 확인되어야 한다.

 

FQDN(Fully Qualified Domain Name)의 사전적인 의미는 '전체 주소 도메인 네임' 으로 도메인 전체 이름을 표기하는 방법이다.

 

hahahax5.tistory.com으로 예를 들면 URL의 구성은 아래와 같다.

  • hahahax5 : 호스트
  • tistory.com : 도메인

F(=Fully)QDN은 hahahax5.tistory.com 처럼 호스트+도메인을 모두 명시하여 전체 경로를 표기하는 것을 말한다.

 

일반적으로 리눅스 호스트명을 설정할때 "rocky-test-001" 처럼 호스트 부분만 적지만 FQDN으로 설정하기 위해선 "rocky-test-001.tistory.com" 와 같이 도메인 부분을 같이 설정하면 된다.

호스트명 설정방법

hostnamectl set-hostname rocky-test-001.mysite.local
  • mysite.local 대신에 자신의 도메인을 기입하면 된다.

확인

hostname -f

결과 : 
rocky-test-001.mysite.local

/etc/hosts 파일 설정

vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.101.110.100	rocky-test-001.mystie.local	#추가
  • 호스트파일에 설정해야 "3. The hostname must be resolvable." 조건이 만족한다.

 

2. FreeIPA Server Packages 설치

dnf idm 모듈 사용 설정 

dnf module enable idm:DL1
  •   DL1 :  adtrust, The Red Hat Enterprise Linux Identity Management system module client, common[d], dns, server 

 

dnf 는 RHEL계열 7버전까지 yum과 동일한 기능을 하지만 모듈이란 개념이 도입된 것 같다.

Redhat 공식 문서에서 설명하는 모듈은 아래와 같다. (https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/9/html-single/managing_software_with_the_dnf_tool/index)

ipa-server는 idm:DL1 모듈에 포함된 애플리케이션이므로 해당 모듈을 사용해야 한다.

dnf를 통한 ipa-server 패키지 설치

dnf install ipa-server

이하 생략..

 

3. Configuring FreeIPA Server

FreeIPA서버는 초기에 Install 하면서 설정을 해야 한다.

최초 설치하면서 출력되는 설명을 보고 하나씩 설정을 할 수 있으나 필자는 --unattended 옵션으로 argument로 설정을 주어 한번에 설치할 예정이다. 

ipa-server 초기 설정하기

ipa-server-install \
--unattended \
--ds-password='yourpassword' \
--admin-password='yourpassword' \
--domain=mysite.local \
--realm=MYSITE.LOCAL \
--hostname=rocky-test-001.myste.local \
--no-host-dns \
--no-ntp
  • --unattended : prompt를 출력하지 않는다.
    • 별도의 옵션 없이 "ipa-server-install"로 실행하면 위에 입력한 모든 옵션들이 prompt로 입력받아 설치 된다.
  • --ds-password : Directory Manager 패스워드, 시스템 관리 작업을 위해 디렉토리에 대한 전체 접근 권한을 가진다.
  • --admin-password : IPA Admin 패스워드, IPA 서버 관리에 사용되는 일반 시스템 계정 패스워드
  • --domain : FreeIPA 서버의 도메인 이름, 위 호스트명에서 설정한 도메인명으로 설정하면 된다.
  • --realm : Kerberos 인증을 위한 REALM 도메인 이름. FreeIPA 도메인 이름과 동일하게 설정하면 되며 모두 대문자로 설정해야 한다.
  • --hostname : 위에서 FQDN으로 설정한 호스트명
  • --no-host-dns : DNS 미사용 설정
    • FreeIPA 는 노드를 FQDN으로 관리
    • 노드 수가 많아지면 DNS를 사용하여 관리하는게 편리하다. (그래서 FreeIPA는 초기 설정 시 자동으로 DNS 연동을 할 수 있는 옵션을 제공한다.)
    • 다만, DNS를 하나 운영해야 한다는 부담을 줄이기 위해 필자는 모든 노드를 /etc/hosts에 기입하여 관리할 예정이므로 DNS를 사용하지 않는다.
  • --no-ntp : NTP 자동 설정 미사용
    • 통합 인증에 있어서 시간동기화는 매우 중요하다. 그래서 DNS와 마찬가지로 FreeIPA는 초기 설정 시 NTP(Chrony) 설정을 할 수 있는 수단을 제공한다.
    • 다만, 필자는 개인환경에 맞게 Chrony를 설정하여 사용하고 있기 때문에 NTP 자동 설정을 하지 않는다.

실행 결과

(..이전 생략..)
==============================================================================
Setup complete

Next steps:
1. You must make sure these network ports are open:
TCP Ports:
  * 80, 443: HTTP/HTTPS
  * 389, 636: LDAP/LDAPS
  * 88, 464: kerberos
UDP Ports:
  * 88, 464: kerberos

2. You can now obtain a kerberos ticket using the command: 'kinit admin'
   This ticket will allow you to use the IPA tools (e.g., ipa user-add)
   and the web user interface.
3. Kerberos requires time synchronization between clients
   and servers for correct operation. You should consider enabling chronyd.

Be sure to back up the CA certificates stored in /root/cacert.p12
These files are required to create replicas. The password for these
files is the Directory Manager password
The ipa-server-install command was successful

ipa-server-install을 실행하고 나면 위와 같이  "Setup complete"가 출력 되어야 정상이다. 

 

또한 /root/cacert.p12 파일이 생성되었을 것이며, 해당 인증서는 이후 복제(Slave) 서버를 구성할 때 필요하므로 잘 백업해 두어야 한다.

 

4. Firewall 설정하기

Linux 8버전부터는 firewall이 기본이기 때문에 등록한 서비스의 네트워크 통신을 위해 firewall에 등록 해주어야 한다.

방화벽에 서비스 등록

firewall-cmd --permanent --add-service={http,https,dns,ntp,freeipa-ldap,freeipa-ldaps}
  • --permanet : rule에 영구적으로 등록
  • --add-service : 등록할 서비스

방화벽 정책 reload

firewall-cmd --reload

서비스 등록 확인

[root@rocky-test-001 ~]# firewall-cmd --permanent --add-service={http,https,dns,ntp,freeipa-ldap,freeipa-ldaps}
success
[root@rocky-test-001 ~]# firewall-cmd --reload
success
[root@rocky-test-001 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources: 
  services: cockpit dhcpv6-client dns freeipa-ldap freeipa-ldaps http https ntp ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:
  • public zone 하위 services에 등록한 서비스가 포함되어 있으면 정상이다. 
  • --permanet 옵션으로 등록하였기 때문에 "/etc/firewalld/zones/public.xml" 파일에 해당 서비스가 설정되어 있어야 한다.

 

5. 접속 확인

kerberos admin 접속 확인

kinit admin
Password for admin@MYSITE.LOCAL:
  • Password : ipa-server-install 시 설정한 ds-password 값을 입력하면 된다.
klist
  • klist 명령어는 Kerberos ticket의 목록을 보여주는 명령어다.

실행결과

[root@rocky-test-001 zones]# kinit admin
Password for admin@NICEDNB.LOCAL: 
[root@rocky-test-001 zones]# klist
Ticket cache: KCM:0
Default principal: admin@MYSITE.LOCAL

Valid starting       Expires              Service principal
2024-01-31T11:19:50  2024-02-01T10:27:45  krbtgt/MYSITE.LOCAL@MYSITE.LOCAL
  • 위와 같이 kerberos ticket 목록이 보이면 정상적으로 설치가 된 것이다. 

 

Admin Web 접속 확인

FreeIPA web 관리 툴에 접속하기 위해서는 설정한 관리서버의 FQDN(호스트명)으로 접속해야 한다.

(IP로 접근 시 페이지 이동마다 URLf로 리다이렉트 한다.)

 

사설로 만든 URL을 웹브라우저에서 접근하기 위해서는 윈도우 host파일 (C:\Windows\System32\drivers\etc\hosts)을 열어서 아래 내용을 추가해야 한다. (관리자 권한으로 메모장을 실행 후 해당 파일 열기를 한다.)

#IP		URL(FQDN)
10.101.110.100	rocky-test.mysite.local

 

이제 웹 브라우저를 통해 해당 주소로 접속하면 된다. (https://rocky-test.mysite.local)

  • ID : admin
  • Password : ipa-server-install 시 설정한 --admin-password 값이다.

로그인 후 아래 화면이 나온다면 성공이다. 

 

 

 

마치며...

계정,권한을 관리할 서버(Client)에서 ipa-server와 통신이 되지 않으면 ipa-server를 통해 생성한 계정으로 로그인이 되지 않는다.

 

그렇기 때문에 ipa-server는 이중화가 필수라고 할 수 있다.

 

다음 글에서 복제(Slave)서버를 구성하는 방법에 대해 알아볼 것이다.