[Linux] FreeIPA

조성열·2025년 10월 15일
0

Toss - Linux

목록 보기
14/15
post-thumbnail

FreeIPA는 통합 인증을 위해 여러 오픈소스를 통합한 솔루션으로 다음과 같은 오픈소스로 구성된다.

  • 389 Directory Server (Directory)
  • MIT Kerberos KDC (Authentication)
  • Dogtag (Authentication Management)
  • Bind (DNS)
  • Apache, Python (Web Interface)

cli, gui 모두 지원하고 ID관리와 인증을 동시에 처리할 수 있다. 일반적으로 네트워크를 통한 서비스는 다수의 시스템으로 구성되어 있고, 각각 로그인을 해야하지만 FreeIPA는 SSO(Single Sign On)을 지원하여 한번 로그인 한 사용자는 다시 로그인을 할 필요가 없다. 이는 LDAP과 Kerberos가 지원한다.

LDAP(Lightweight Directory Access Protocol)

이미지 출처: https://goddoeun.tistory.com/6

클라이언트가 네트워크를 통해 디렉토리 정보에 접근할 때 사용하는 TCP/IP 기반 프로토콜이다. 계층형 구조로 각 계층을 구성하는 노드는 Entry라고 하고, 다수의 속성이 포함되어 있다. 즉, Entry는 목록이고 속성은 Entry 관련 정보, 데이터를 의미한다.

Kerberos

네트워크 인증 프로토콜로 사용자 인증시 대칭키를 사용하고 네트워크를 통해 패스워드를 전송하지 않기 때문에 Sniffing 같은 공격을 방지할 수 있다는 장점이 있다. Kerberos는 클라이언트, 서버, KDC(Key Distribution Center) 등으로 구성되어 있다. 인증 과정은 위 그림과 같고 간단히 정리하면 아래와 같다.

  1. Kerberos 영역 내에서 사용자가 인증 서버에 인증 요청
  2. 인증 서버에서 DB에 사용자 조회 후 결과 응답(Ticket)
  3. Client는 해당 응답으로 접근하고자 하는 서비스를 Ticket과 함께 TGS로 전달.
  4. TGS에서 서비스 확인 후 Client에 권한 부여
  5. Client가 해당 권한으로 Application Server에 접근 요청
  6. 해당 요청을 서버가 수락 후 서비스 이용

FreeIPA Server Setting

   74  sudo hostnamectl hostname ipa.toss.example.com
   76  nmcli con show
   77  dnf install ipa-server iap-server-dns
   78  sudo dnf install ipa-server ipa-server-dns
   81  sudo nmcli con add type ethernet con-name ipa-net ifname enp0s8 ipv4.addresses 10.0.2.100/24 ipv4.gateway 10.0.2.1 ipv4.method manual
   82  sudo nmcli con up ipa-net
   83  nmcli con show
   84  sudo nmcli con up 4028441d-774a-45c1-a14e-bac697df4b72
   87  nmcli con show
   88  sudo vim /usr/local/
   89  sudo vim /etc/host
   90  tail -n1 /etc/host
   91  sudo chronyc sources
   92  ip addr
   93  sudo ipa-server-install --setup-dns
   95  sudo firewall-cmd --add-service={freeipa-ldap,freeipa-ldaps,dns,ntp}
   96  sudo firewall-cmd --list-all
   97  sudo firewall-cmd --add-service={freeipa-ldap,freeipa-ldaps,dns,ntp} --permanent
   98  ls
   99  sudo ls /root
  100  kinit admin
  101  klist
  102  ipa
  103  ipa config-show

먼저 ipa-server, ipa-server-dns를 설치 해주고 진행하자. IPA 서버 구성을 위해 먼저 호스트 이름과 네트워크 IP를 설정하고 up옵션을 통해 설정한 네트워크 인터페이스를 활성화 시킨다. /etc/host파일에 설정한 ip와 host를 추가 해준다. 그 후 sudo ipa-server-install --setup-dns 명령으로 서버를 설치한다. 이때 관리자 계정, 주요 서버 설정들을 하게 된다. 계정 설정 부분 외에는 그냥 다 yes로 넘어가면 된다. 설정이 완료되면 위와 같은 화면을 확인할 수 있다. 이후 방화벽 설정에도 ipa 관련 서비스들을 --permanent옵션으로 추가하면 서버 설정이 끝난다. 그리고 사용자를 위와 같이 추가할 수 있다.

FreeIPA Client Setting

   75  sudo dnf -y install ipa-client
   76  nmcli con show
   77  hostnamectl hostname nfs.toss.example.com
   78  sudo nmcli con add type ethernet ifname enp0s3 con-name static ipv4.addresses 10.0.2.200/24 ipv4.gateway 10.0.2.1 ipv4.dns 10.0.2.100 ipv4.method manual
   79  nmcli con show
   85  sudo nmcli con up 2cc638a9-cd19-49f7-816b-cc5568c1258e
   86  nmcli con show
   87  ipa-client-install --mkhomedir
   88  sudo ipa-client-install --mkhomedir

Client 측 설정은 더 간단하다. 먼저 ipa-client를 설치하도록 하자. 설치가 완료되면 서버와 마찬가지로 호스트 이름을 등록하고 네트워크 인터페이스를 설정한다. 이때 Gateway는 서버와 동일하게 설정 해야한다. 이제 FreeIPA 서버에 클라이언트를 연결하는 작업을 해야한다. 이때 ipa-client-install --mkhomedir명령을 사용하고 User authorized to enroll computers: 에 설정한 admin의 이름을 넣고 패스워드를 입력하면 끝난다. getent명령으로 서버측에서 확인해보면 클라이언트가 잘 등록됐음을 확인할 수 있다.

Kerberos Keytab File 생성

keytab 파일은 FreeIPA 서버에 연결된 시스템 간 인증시 서비스 목록과 암호화 방법을 담고 있는 파일이다. 먼저 kerberos 인증 사용을 위해 ipa service-add 명령으로 서비스를 등록 해준다. ipa-getkeytab명령으로 등록한 서비스에 대한 keytab 파일을 생성 해준다. klist명령에 -k옵션을 주면 등록된 서비스에 대한 keytab파일 정보를 확인 가능하고 -e옵션까지 입력하면 각 파일의 암호화 방식에 대해 확인도 가능하다.

0개의 댓글