목차 1. package 설치 2. Openldap 초기화 1. OLC 및 ldap data 초기화 목표 2. LDAP 설정(olc) 및 LDAP data 초기화 3. LDAP client 설정 4. 초기화 확인 3. account 암호 설정 1. LDAP 관리자 암호 변경 2. Account 암호 변경
참고!
이 문서는 RHEL >=6, CentOS >=6, AnNyung >=2 에서의 설정을 테스트 하였습니다.
이 문서는 모든 ldap data를 초기화 시킨 상태에서 설정하는 것을 기준으로 합니다.
1. package 설치
RHEL/CentOS 참고!
이 문서에서 설명하는 LDAP 관리도구인 ldap-auth-utils 와 ldap-auth-utils-passwd, genpasswd 패키지는 안녕 리눅스에서만 제공을 합니다. 그러므로 RHEL/CentOS 에서는 안녕 리눅스의 core package repository를 yum에 등록해 주십시오. 아래와 같이 repository를 추가를 하면, 기존의 RHEL/CentOS package를 변경 시키지 않고, 안녕 리눅스에서만 제공하는 패키지를 사용/관리 할 수 있습니다.
RHEL/CentOS 7 에서는 다음과 같이 추가해 주십시오.
[root@host ~]$ cat <<EOF>/etc/yum.repos.d/AnNyung-core.repos# AnNyung.repo## LInux AnNyung 3 Yum repository#[AN:core]name=AnNyung 3 Core Repositorymirrorlist=http://annyung.oops.org/mirror.php?release=3&arch=$basearch&repo=coregpgcheck=1gpgkey=http://mirror.oops.org/pub/AnNyung/3/RPM-GPG-KEY-AnNyung-3exclude=php* whois httpd*[root@host ~]$ yum clean all
RHEL/CentOS 6 에서는 다음과 같이 추가해 주십시오.
[root@host ~]$ cat <<EOF>/etc/yum.repos.d/AnNyung-core.repos# AnNyung.repo## LInux AnNyung 2 Yum repository#[AN:core]name=AnNyung 2 Core Repositorymirrorlist=http://annyung.oops.org/mirror.php?release=2&arch=$basearch&repo=coregpgcheck=1gpgkey=http://mirror.oops.org/pub/AnNyung/2/RPM-GPG-KEY-AnNyung-2exclude=php* whois httpd*[root@host ~]$ yum clean all
repository 준비가 다 되었다면, ldap-auth-utils 와 ldap-auth-utils-passwd 패키지를 설치 합니다. 이 패키지들을 설치를 하면, genpasswd, openldap-servers, openldap-clients 패키지가 의존성 설정으로 같이 설치가 됩니다.
초기화는 서버의 LDAP 설정및 데이터를 초기화 한 상태에서 진행을 하는 것을 가정 하에 진행을 합니다. 만약 다른 LDAP database를 구동하고 있다면, 이 문서를 참고하는 것을 포기 하십시오!
초기화 시에 모든 ldap database를 초기화 시켜 버립니다. 매우 주의 하십시오!!!
openldap은 splapd daemon을 이용하여 구동이 됩니다. 또한, 2.4.23 버전 부터는 slapd.conf 대신에 OLC(OnLineConfiguration, cn=config 구조)로 변경이 되었습니다.
물론 기존의 slapd.conf를 migration 해 주는 방법을 제공하고 있기는 하나, 여기서는 그냥 OLC를 이용하는 방법으로 설명을 합니다. AnNyung 2 에서도 동일하게 OLC 방식으로 설정을 해야 합니다. (RHEL 6 부터 OLC방식으로 변경이 되었습니다.)
2.1 OLC 및 ldap data 초기화 목표
ldap 초기화는 다음의 목표를 가지고 진행을 합니다.
ldap 관리자로 cn=Manager,${BASEND} 설정
ldap 관리자 암호 설정
UID 0 권한으로 ldap 설정 변경 시에 암호 없이 접근 가능 (-Y EXTERNAL -H ldapi:/// 권한 이용)
ldap log를 /var/log/slapd.log 에 남기도록 설정
ADMIN, People, Group OU(Organization Unit) 생성
Admin OU : Poeple, Group OU를 관리하기 위한 user 및 group account
People OU : ldap 에서 서비스 할 user account
Group OU : ldap 에서 서비스 할 group account
host 제한 연동
sudo 권한 연동
ldap access policy
ldapadmins group의 member는 dc=oops,dc=org database에 대한 모든 권한을 가진다.
ldapROusers group의 member는 dc=oops,dc=org database에 대한 모든 읽기 권한을 가진다.
일반 account는 password entry만 제외하고 읽기 권한을 가진다.
일반 account는 자신의 password entry를 변경할 수 있다.
anonymous account는 접근을 불허 한다.
Ldap server의 system root(UID 0)는 cn=manager 와 동일한 권한을 가진다.
설치 후, 미리 등록되는 사용자 및 group은 다음과 같습니다.
Manager Group
ldapadmins : ldap 관리를 할 수 있는 group
ldapROusers : ldap 전체 data에 접근할 수 있는 readonly gruop
ldapmanagers : ldap을 관리하기 위한 account들의 default group
ldap 관리를 위해서는 사용자를 위의 세 그룹에 권한에 맞게 등록해 주면 자동으로 권한을 획득하게 됩니다.
Manager User
ssoadmin
ldap 관리를 할 수 있는 account
ldapadmins gruop member
DN: uid=ssoadmin,ou=Admin,dc=oops,dc=org
ssomanager
tree 전체의 데이터에 접근 가능한 readonly account
ldapROusers group member
인증 통합시에, 각 client 서버에서 ldap에 연결하기 위한 account
replica
replication에 사용하기 위한 account (readonly account)
ldapROusers group member
System Group
ldapusers
생성할 LDAP account들의 default Group
2.2 LDAP 설정(olc) 및 LDAP data 초기화
초기화는 ldap-auth-utils의 ldap_auth_init 명령을 이용합니다.
다시 강조하지만, 이 작업은 기존의 ldap data를 제거하니, 주의 하시기 바랍니다.
먼저, ldap_auth_init를 동작 시키기 위하여, slapd 서비스를 정지 시킨 후 기존의 설정을 제거합니다.
[root@an3 ~]$ service slapd stopRedirectingto/bin/systemctlstopslapd.service[root@an3 ~]$ rm -rf /etc/openldap/{slapd*.conf,slapd.d}
다음, /etc/openldap/ldap-auth-utils.conf를 설정 합니다. ldap-auth-utils.conf 에서는 ldap_auth_init로 초기화를 한 경우에는 별로 건드릴 것이 없습니다만, 몇몇 튜닝이 가능한 옵션에 대해서만 여기서 설명을 합니다. 자세한 사항은 "man ldap-auth-utils.conf" 명령으로 man page를 참조 하십시오.
ldap-auth-utils.conf는 ldap account를 관리하기 위한 기본 값을 지정 합니다.
ldap-auth-utils 패키지에서 관리할 최소 UID/GID, 기본 Group ID, 기본 shell, home directory prefix, 암호 알고리즘, 암호 만기, 암호 복잡도 등의 설정을 가지고 있습니다.
일단, ldap_auth_init를 이용하여 초기화를 한 경우, 일단 고려를 한 것은 암호 알고리즘에 대해서 고민을 해야 합니다. ldap-auth-utils.conf에서 암호 알고리즘은 다음의 옵션값으로 지정 합니다.
ldap-auth-utils의 기본 암호화 알고리즘은 sha512를 사용합니다. 그리고 RHEL/CentOS 6 이나 AnNyung 2 부터는는 PAM에서 기본으로 sha512를 지원합니다. 만약 인증 통합을 할 서버들 중에 sha512 암호화를 지원하지 않는 배포본들이 있다면 PASSWD_MECH의 값을 md5로 변경을 하십시오.
또한, ISMS 심사에 대비하여, 암호 만기 설정이 90일로 되어 있으니, 이 기간이 너무 짧다고 생각이 되면 PASS_MAX_DAYS 값을 늘려 주십시오.
암호 복잡도 설정은 PASS_MINLEN 와 PASS_CLASSES 에서 할 수 있습니다.
주의!
이 설정은 ldap account를 위한 설정입니다. 즉, ldap_adduser 명령을 이용할 경우 적용이 되는 것들로, system의 adduser와는 별개 입니다.
[root@an3 ~]$ cat /etc/openldap/ldap-auth-utils.conf..상략..## Password configuration## Specify the encryption method.# support: md5, sha256, sha512# default: sha512## If there is a host that does not support sha512, please specify the md5# for compatibility.PASSWD_MECH=sha512## Pasword expire configuration## If the value is not specified, the value that is set to# /etc/login.defs will be used.## PASS_MAX_DAYS Maximum number of days a password may be used.# PASS_MIN_DAYS Minimum number of days allowed between password changes.# PASS_WARN_AGE Number of days warning given before a password expires.#PASS_MAX_DAYS=90PASS_MIN_DAYS=0PASS_WARN_AGE=7## Strength of password## minimum length of passwordPASS_MINLEN=9# Password complexity configuration [ 0 - 4 ]## vSetting of the complexity of the password. Number of the character classes.# Character class is upper case and lower case letters, numbers and special# characters.PASS_CLASSES=3[root@an3 ~]#
2.4 초기화 확인
ldap_auth_init을 이용하여 초기화를 한 후에, 다음과 같이 ldap 관리 account와 gruop, 그리고 ldap account의 default group이 잘 등록이 되었는지 확인을 합니다.
ldap_auth_init으로 LDAP database를 초기화를 하면, 기본적으로 ssoadmin, ssomanager, replica account가 암호 없이 생성이 됩니다. 특히 ssoadmin의 경우에는 BASE DN의 데이터를 변경할 수 있는 권한을 가지고 있고, ssomanager 와 replica account는 인증 통합시에 사용하는 권한이기 때문에 데이터베이스 전반에 대한 read 권한을 가지고 있습니다.
그러므로, ldap_auth_init으로 데이터베이스를 초기화 했을 경우, 꼭 이 3 계정의 암호를 지정해 주어야 합니다.
암호 변경은 ldap_passwd 명령을 이용합니다. openldap의 ldappasswd와 비슷하니 주의 하십시오. ldap_passwd는 root 권한으로 실행을 해야 하며, 보안 상 localhost의 ldap database만 관리할 수 있습니다.
ldap_passwd를 사용할 경우, account는 "ACCOUNT@DOMAIN"의 형식을 사용합니다. 즉, BASE DN이 DC=oops,DC=org 라면, DOMAIN은 oops.org가 됩니다.
ssoadmin, ssomanager, replica account의 OU는 People이 아니라 Admin 이기 때문에 -u 옵션으로 OU를 변경해 줘야 합니다. -u 옵션을 주지 않으면 기본으로 People OU를 사용하게 됩니다.