2020년 5월 인공지능

IdM 으로 ID 통합 관리

Red Hat Enterprise Linux 7 릴리즈 노트를 보면 인증 관련 패키지들이 대체 되었고, OpenLDAP 은 IdM 을 사용하라고 되어 있다(IdM 은 FreeIPA, 389-DS 기반 패키지임).

Red Hat Enterprise Linux 7 릴리즈 노트 중 Deprecated Packages

참고로 FreeIPA 관련 패키지는 RedHat(Fedora, RHEL, CentOS), Debian 계열만 사용 가능하다. ~300 여개 개별 패키지를 통합 관리해야 하는데 영세한 리눅스 배포판은 전담 관리 팀이 없어서(How to set up a FreeIPA server on Arch Linux?…) 지원 못하고 있다고. 이 경우는 OpenLDAP, sssd 활용해야 하는 모양.

참고글 Configure FreeIPA server On CentOS 7 / RHEL 7 – A Identity Management System

IdM 으로 ID 통합관리

이하는 검색 중 발견한 일어 페이지 번역


“그야, 한 번에 모든 서버에서 계정 삭제 가능하면 편하겠네요.”

퇴직자 계정 삭제는 보통 일이 아니다. 서버가 한대라면 몰라도, 모두 멋대로 이쪽저쪽에 계정을 만들어대니… 지워서 원복해야 한다.

“그래, 계정 일괄 관리 하자. 자네가 만들어봐”

엥? 그거 Active Directory 나 OpenLDAP 으로 계정 관리하고 통합인증 하자는거죠? Windows 는 잘 모르겠고, OpenLDAP 은 설정이 어려우니 싫은데.

“OpenLDAP 은 CentOS 7.4 부터 사용 중지 패키지가 됐다고.”

뭐.라.고.요?

1. IdM 이란 선택지

Red Hat 사이트를 찾아보니 ‘장래 제거’ 가 있다.

第39章 非推奨の機能 / Deprecated Functionality

에 의하면, 7.x 인 동안 지원되지만, 적극적인 수정 등은 기대할 수없다. 뭐 우리는 CentOS 이므로 지원도 뭣도 없지만.

대신 6.x 때부터 사용자 인증은 IdM 라는 것이 준비되어있다. Identity Manager 약어이며, FreeIPA라는 프로젝트의 결과물에 Red Hat Enterprise Linux 에서 사용자, 호스트, 서비스 관리 하는 것. 물론 CentOS 에도 들어있다. LDAP 및 Kerberos, BIND 따위를 사용하여 ID 관리를하기 때문에 일반적인 Linux 서버라면 이제 IdM 하나로 관리 할 수있을 것 같다. Web 관리 화면도 있다.

2. 인증 서버 설치

바로 서버 준비를한다. DNS 의 기능이 통합되어 있기에 기존 네트워크에 구축하고 조금씩 이동하려고 하다보면 기존의 DNS 와 관리 영역을 곂치거나 해서 조금 귀찮다. 하지만 어떻게든 한다.

먼저 인증 서버에 CentOS 7.4를 넣고 yum update, FreeIPA의 설치.

[root@ipa ~]# yum -y install ipa-server ipa-server-dns bind bind-dyndb-ldap

설치가 완료되면 설정을 하는데, 지금부터 설정하려는 DNS 영역(Zone)이 이미 네트워크의 DNS 에 있다면 설치가 실패하기 때문에 설정 중엔 /etc/resolv.conf 을 다음과 같이 수정한다.

[root@ipa ~]# vi /etc/resolv.conf
nameserver 127.0.0.1

또한 DNS 를 보러 가지 않을 때 자신의 IP 주소 를 알 수 없으므로 /etc/hosts에 자신의 IP 주소 를 등록 해 둔다.

[root@ipa ~]# vi /etc/hosts
172.16.10.100 ipa.example.jp

설치 시작

[root@ipa ~]# ipa-server-install
Existing BIND configuration detected, overwrite? [no]: yes↩️

Server host name [ipa.example.jp]: ↩️

Please confirm the domain name [example.jp]: ↩️

Please provide a realm name [EXAMPLE.JP]: ↩️

Directory Manager ( LDAP 에서 말하는 root dn 같은 것) 암호

Directory Manager password: ********↩️
Password (confirm): ********↩️

IPA ADMIN ( IPA admin 계정 암호 설정) 암호

IPA admin password: ********↩️
Password (confirm): ********↩️

Forwarders하지만 지금 보러 살릴하면 귀찮은 일이되기 때문에 설정은 하지 않는다. 나중에 설정을 한다.

Do you want to configure DNS forwarders? [yes]: no↩️

역방향 영역의 설정은 메일 서버 라든지 사용한다면 있을지도.

Do you want to configure the reverse zone? [yes]: ↩️
Please specify the reverse zone name [10.16.172.in-addr.arpa.]:

설정의 확인을 구할 수있다.

The IPA Master Server will be configured with:
Hostname:      ipa.example.jp
IP address:    172.16.10.100
Domain name:   example.jp
Realm name:    EXAMPLE.JP

Continue to configure the system with these values? [no]: yes ↩️

그러면 다양한 설정되어 마지막으로 Firewall 설정과 IPA 에 로그인을 구할 수있다.

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
                  * 123: ntp

        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.

우선 Firewall을 연다. dns 아까 목록에는 없었지만, DNS 도 사용하므로 연다.

[root@ipa ~]# firewall-cmd --permanent --zone=public --add-service=http --add-service=https --add-service=ldap --add-service=ldaps --add-service=kerberos --add-service=freeipa-ldap --add-service=dns --add-service=ntp
[root@ipa ~]# firewall-cmd --reload

여기까지 준다면 /etc/resolv.conf 설정을 취소합니다.

[root@ipa ~]# vi /etc/resolv.conf
nameserver 192.168.0.2
nameserver 192.168.0.3

DNS 에 Forwarders를 설정한다.

[root@ipa ~]# vi /etc/named.conf
option {
	...
	forwarders {
		192.168.0.2;
		192.168.0.3;
	};
};

보통이라면 여기서 named를 재시작하는데, named가 mask라는 상태가되어 재부팅을 허용하지 않습니다. 시스템마다 재부팅 해 둔다.

[root@ipa ~]# systemctl reboot

다음은 IPA 에 로그인하여 Kerberos 티켓을 얻습니다. 이 상태에서 ID 관리 할 수있게된다.

[root@ipa ~]# kinit admin
Password for admin@EXAMPLE.JP: [IPA adminで入れたパスワード]

3.ID 추가

사용자의 추가 명령한다. 다음에 소개하는 Web 화면에서 수도 있지만, 여기가 간단합니다. 또한 관리자가 설정 한 암호는 사용자가 처음 로그인 할 때 강제로 변경을 요구하는 보안만이 다.

[root@ipa ~]# ipa user-add [ユーザID] --first=[名] --last=[姓] --password=********
-------------------
Added user "fhoge"
-------------------
  User login: fhoge
  First name: fuga
  Last name: hoge
  Full name: fuga hoge
  Display name: fuga hoge
  Initials: fh
  Home directory: /home/fhoge
  GECOS field: fuga hoge
  Login shell: /bin/bash
  Kerberos principal: fhoge@EXAMPLE.JP
  Email address: fhoge@example.jp
  UID: 1113400020
  GID: 1113400020
  Password: True
  Kerberos keys available: True

어쩐지 UID / GID 가 월등하게 크다 데요. . . .

또한 호스트도 등록 할 수있다. 이것은 클라이언트의 설정을하기 전에 대상 호스트를 등록하는 것이.

[root@ipa ~]# ipa dnsrecord-add [domain名] [host名] --a-rec [IPアドレス]
Record name: dev1
A record: 172.16.10.41

4. 클라이언트 설치

클라이언트는 기존 서버를 마이그레이션하는데 먼저 DNS 의 참조를 IPA 서버로 변경한다.

[root@dev1 ~]# nmcli c modify ens192 ipv4.dns 172.16.10.100
[root@dev1 ~]# systemctl restart NetworkManager

클라이언트 소프트웨어를 넣는다.

[root@dev1 ~]# yum -y install ipa-client
Discovery was successful!
Hostname: dev1.example.jp
Realm: EXAMPLE.JP
DNS Domain: example.jp
IPA Server: ipa.example.jp
BaseDN: dc=example,dc=jp

Continue to configure the system with these values? [no]: yes ↩️
User authorized to enroll computers: admin ↩️
Password for admin@EXAMPLE.JP: ******** ↩️
.....
Client configuration complete.

또한 로컬 사용자를 만드는 경우와 달리 홈 디렉토리 리는 자동으로 생성되지 않기 때문에 설정을 해 둔다.

[root@dev1 ~]# authconfig --enablemkhomedir --update

여기에서이 귀찮은 것이지만, UID 및 GID 가 바뀌어 버리기 때문에 기존의 홈 디렉토리 리의 소유자가 바뀌어 버린다. 그래서 미리 chown 명령으로 홈 디렉토리 리의 소유자를 전원 분 바꿔 둘 필요가있다. 그것이 싫은 경우 Web 화면에서 UID 및 GID 를 종래와 같은 것으로 바꾸어 놓는다.

[root@dev1 ~]# chown -R fhoge:fhoge fhoge

5. Web 화면

IPAIP 주소https 로 접속하면 Web 관리 화면이 표시됩니다. sudo 등 세세한 설정은 여기에서하는 것이 편할 것이다 (후략).

중앙 관리라고하면 소리는 좋지만, 기존의 환경에서 마이그레이션 할 때 클라이언트 측의 설정 시간이 어지럽게 느꼈다. 이후 클라이언트의 구축은 구성 관리 도구 등으로 미리 IdM 에 대응시켜 두는 것이 좋을 것이다.