1. 시스템 환경 정보 및 필수 패키지 설치
이 가이드는 CentOS 7 환경을 기준으로 OpenLDAP 2.4 및 웹 기반 관리 도구인 phpLDAPadmin 설치 과정을 다룹니다. 우선 시스템을 최신 상태로 업데이트하고 필요한 패키지를 설치합니다.
# 필수 패키지 설치
yum install -y openldap openldap-clients openldap-servers
# 기본 데이터베이스 설정 파일 복사 및 권한 설정
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG
# 서비스 시작 및 활성화
systemctl start slapd
systemctl enable slapd
2. OpenLDAP 기본 설정 및 관리자 암호 구성
OpenLDAP 2.4.23 버전 이후부터는 slapd.conf 대신 /etc/openldap/slapd.d 내부의 LDIF 파일을 통해 실시간으로 설정을 변경합니다. 설정을 수정할 때는 직접 파일을 편집하지 않고 ldapmodify 또는 ldapadd 명령어를 사용해야 합니다.
2.1 관리자 비밀번호 생성
먼저 서버 관리자 계정에 사용할 암호 해시를 생성합니다.
# 암호 해시 생성 (예: 'mypassword' 입력)
slappasswd -s mypassword
# 출력 예시: {SSHA}XyZ123... (이 값을 복사해둡니다)
생성된 해시를 설정에 적용하기 위해 root_config.ldif 파일을 작성합니다.
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}XyZ123...
작성한 설정을 적용합니다.
ldapadd -Y EXTERNAL -H ldapi:/// -f root_config.ldif
2.2 기본 스키마(Schema) 확장
다양한 객체 타입과 속성을 정의하기 위해 기본 스키마들을 로드합니다.
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
3. 도메인 및 관리 권한 설정
조직의 도메인(Base DN) 정보를 설정합니다. 예시에서는 dc=corp,dc=local을 사용합니다.
# domain_config.ldif 작성
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=corp,dc=local
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=corp,dc=local
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}XyZ123...
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword by self write by dn.base="cn=admin,dc=corp,dc=local" write by anonymous auth by * none
olcAccess: {1}to * by dn.base="cn=admin,dc=corp,dc=local" write by * read
설정 내용을 반영합니다.
ldapmodify -Y EXTERNAL -H ldapi:/// -f domain_config.ldif
4. MemberOf 및 Refint 오버레이 활성화
사용자가 속한 그룹을 속성에서 바로 확인할 수 있도록 memberof 오버레이를 활성화합니다.
# module_load.ldif 작성
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib64/openldap
olcModuleLoad: memberof.la
olcModuleLoad: refint.la
# overlay_config.ldif 작성
dn: olcOverlay=memberof,olcDatabase={2}hdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
olcOverlay: memberof
dn: olcOverlay=refint,olcDatabase={2}hdb,cn=config
objectClass: olcRefintConfig
olcOverlay: refint
olcRefintAttribute: memberOf uniqueMember
위 파일들을 순서대로 적용합니다.
ldapadd -Y EXTERNAL -H ldapi:/// -f module_load.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f overlay_config.ldif
5. 기본 조직 구성 단위(OU) 생성
사용자와 그룹을 구분하여 관리하기 위해 기본적인 트리 구조를 생성합니다.
# structure.ldif 작성
dn: dc=corp,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: Global Corp
dc: corp
dn: ou=Users,dc=corp,dc=local
objectClass: organizationalUnit
ou: Users
dn: ou=Groups,dc=corp,dc=local
objectClass: organizationalUnit
ou: Groups
생성한 관리자 계정 정보로 데이터를 삽입합니다.
ldapadd -x -D cn=admin,dc=corp,dc=local -W -f structure.ldif
6. phpLDAPadmin 설치 및 웹 설정
명령어 대신 웹 브라우저를 통해 LDAP 정보를 관리할 수 있는 도구를 설정합니다.
# 패키지 설치
yum install -y epel-release
yum install -y phpldapadmin
# Apache 접근 설정 수정
# /etc/httpd/conf.d/phpldapadmin.conf 파일에서
# 'Require local' 부분을 'Require all granted'로 변경하여 외부 접속 허용
/etc/phpldapadmin/config.php 파일에서 다음 설정을 확인 및 수정합니다.
# 로그인 시 DN 형식이 아닌 UID/CN 기반 사용 설정
$servers->setValue('login','attr','cn');
# 익명 로그인 비활성화
$servers->setValue('login','anon_bind',false);
모든 설정이 완료되면 웹 서버를 재시작합니다.
systemctl restart httpd
이제 브라우저에서 http://[서버IP]/ldapadmin으로 접속하여 생성한 관리자 정보로 로그인이 가능합니다.