don't stop believing

OpenLDAP + phpLDAPAdmin 설치 (on Ubuntu) 본문

Tools/LDAP & CAS

OpenLDAP + phpLDAPAdmin 설치 (on Ubuntu)

Tongchun 2019. 3. 26. 17:00

STF 인증 처리를 하려니 LADP과 연동해야 했습니다.

다른 인증 방법도 있으나 LADP이 익숙하여 Ubuntu에 LDAP을 추가하고 연동하기로 했습니다.


그리서 Ubuntu에 OpenLDAP과 phpLDAPAdmin 설치에 대해 정리해 보겠습니다.

우선 Ubuntu 버전부터 보고 가겠습니다.

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.1 LTS
Release:	18.04
Codename:	bionic


먼저 서버의 hostname을 변경합니다.

저는 ldap.ngle.co.kr로 하겠습니다. 그리고 서버 IP와 설정한 도메인을 hosts에 추가합니다.

$ sudo hostnamectl set-hostname ldap.ngle.co.kr
$ echo "10.10.1.54 ldap.ngle.co.kr" | sudo tee -a /etc/hosts

이제 ldap을 설치하겠습니다.

apt-get을 업데이트 해주고 slapd과 ldap-utils를 설치해 줍니다.

$ sudo apt update
$ sudo apt -y install slapd ldap-utils

설치를 시작하면 아래와 같이 slapd의 administrator 비밀번호를 넣으라고 나옵니다.

확인까지 두 번 넣어줍니다.

설치가 완료되었다면 slapcat 명령으로 SLAPD의 데이타베이스 내용을 확인할 수 있습니다.

$ sudo slapcat
dn: dc=ngle,dc=co,dc=kr
objectClass: top
objectClass: dcObject
objectClass: organization
o: ngle.co.kr
dc: ngle
structuralObjectClass: organization
entryUUID: e64e9e30-e3df-1038-804c-db01e274899b
creatorsName: cn=admin,dc=ngle,dc=co,dc=kr
createTimestamp: 20190326065535Z
entryCSN: 20190326065535.192024Z#000000#000#000000
modifiersName: cn=admin,dc=ngle,dc=co,dc=kr
modifyTimestamp: 20190326065535Z

dn: cn=admin,dc=ngle,dc=co,dc=kr
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9czZsN0FmSlRLYVNSWE5pZ0R5Nkt5MlBJTGVCUlovaEY=
structuralObjectClass: organizationalRole
entryUUID: e64f0df2-e3df-1038-804d-db01e274899b
creatorsName: cn=admin,dc=ngle,dc=co,dc=kr
createTimestamp: 20190326065535Z
entryCSN: 20190326065535.194943Z#000000#000#000000
modifiersName: cn=admin,dc=ngle,dc=co,dc=kr
modifyTimestamp: 20190326065535Z

dn의 정보가 dn: dc=ngle,dc=co,dc=kr 로 앞서 설정한 데로 나오고 있습니다.


이번엔 basedn.ldif 파일을 만들어 줍니다.

현제 경로에서 vim을 사용해 파일을 만듭니다.

$ sudo vim basedn.ldif

basedn.ldif 파일에는 아래와 같이 작성합니다.

dn: ou=people,dc=ngle,dc=co,dc=kr
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=ngle,dc=co,dc=kr
objectClass: organizationalUnit
ou: groups

이제 ldapadd 명령으로 작성한 basedn.ldif를 적용합니다.

add 하는 계정은 admin입니다.

sudo ldapadd -x -D cn=admin,dc=ngle,dc=co,dc=kr -W -f basedn.ldif

$ sudo ldapadd -x -D cn=admin,dc=ngle,dc=co,dc=kr -W -f basedn.ldif nter LDAP Password: adding new entry "ou=people,dc=ngle,dc=co,dc=kr" adding new entry "ou=groups,dc=ngle,dc=co,dc=kr"

명령을 실행하면 slapd를 설치할 때 입력했던 admin의 비밀번호를 묻습니다.

비밀번호를 입력하면 정상적으로 추가가 됩니다.


LDAP 관리를 편하게 하기 위해 phpLDAPAdmin을 설치해 줍니다.

먼저 phpLDAPAdmin 설치와 실행을 위해 apache 등의 package들을 설치합니다.

$ sudo apt -y install apache2 php php-cgi libapache2-mod-php php-mbstring php-common php-pear

php7.2-cgi를 apache에 추가하고 apache2를 재시작 해줍니다.

$ sudo a2enconf php7.2-cgi $ sudo systemctl reload apache2

이제 phpLDAPAdmin을 설치해 줍니다.

먼저 주의해야 할 것은 apt-get 으로 phpldapadmin을 설치할 경우 오래전 버전이라 많은 기능이 deprecated 되었습니다.


아래와 같이 git에서 수정된 버전을 받아야 합니다.

먼저 Download 폴더로 이동해서 git에서 다운받습니다.

$ cd ~/Downloads
$ git clone https://github.com/breisig/phpLDAPadmin.git

다운받은 phpLDAPadmin을 apache2의 web root directory로 이동합니다.

$ sudo mv ~/Downloads/phpLDAPadmin /var/www/html/phpldapadmin

이동한 phpldapadmin 폴더에서 config.php 파일을 새로 복사해 줍니다.

$ cd /var/www/html/phpldapadmin/config
$ sudo cp config.php.example config.php

config.php 파일을 열고 설정 4가지를 변경해야 합니다.

먼저 293번 줄에 있는 설정의 주석을 제거하고 ldap 서버 ip로 변경합니다.

$servers->setValue('server','host','10.10.1.54');

그다음 300번 줄에 있는 설정의 array()에 아래와 같이 추가합니다.

$servers->setValue('server','base',array('dc=ngle,dc=co,dc=kr'));

그리고 335번 줄에 있는 설정의 주석을 제거합니다.

$servers->setValue('server','tls',false);

마지막으로 453번 줄에 있는 설정을 true에서 false로 변경합니다.

$servers->setValue('login','anon_bind',false);

모두 수정되었다면 config.php 파일을 저장합니다.


만약 서버에 방화벽(ufw)가 실행되고 있다면 아래 명령으로 80과 443 포트를 허용합니다.

$ sudo ufw allow proto tcp from any to any port 80,443


이제 LDAP과 phpLDAPAdmin 설치가 완료되었습니다.

브라우저를 열고 http://<서버 ip>//phpldapadmin에 접속해 봅니다.

admin으로 로그인 해보겠습니다.

왼쪽에 있는 메뉴 중 login을 클릭하고 Login DN과 Password를 입력합니다.

로그인 후 왼쪽 메뉴에서 dc 정보를 클릭하면 하위 그룹이 나옵니다.

제일먼저 해줄 것은 dc에 password를 설정하는 것입니다.

왼쪽 dc 트리에서 상단에 있는 dc ()를 클릭합니다.

오른쪽 화면 중 Add new attribute를 클릭하면 Add Attribute 선택창이 나옵니다.

Password를 선택하고 dc에 설정할 Password를 입력합니다.

확인 창이 나오고 commit 버튼을 클릭하면 아래처럼 Password가 추가됩니다.

이번에는 group을 만들어 줘야 합니다.

참고로 User를 만들기 전에 group을 먼저 만들어 줘야 합니다.

Create new entry here를 클릭하면 그룹 또는 유저를 만들수 있는 Template 페이지가 나옵니다.

Samba: Group Mapping을 클릭합니다.

stf라는 그룹을 만들었습니다.

이제 stf 그룹 밑에 User를 만들어 줍니다. stf 그룹을 선택하면 하위에 Create new entry here가 나옵니다. Create new entry here 링크를 클릭해서 만들수도 있고 오른쪽 화면에 보면 Create a child entry링크를 클릭해 만들수도 있습니다.

저는 Create a child entry를 클릭해 만들었습니다.

User를 만들거니까 Generic: User Account를 선택합니다.

User 정보를 입력하고 Create Object 버튼을 클릭합니다.

정보를 확인하는 화면이 나오면 확인 후 Commit을 클릭해 줍니다.


생성한 User 정보에 email 을 추가하고 싶다면 Add new attribute 링크를 클릭해 줍니다.

email 정보를 추가하고 Update Object 버튼을 클릭합니다.

여기까지 OpenLDAP 설치와 phpLDAPAdmin 설치 후 간단한 사용 방법이었습니다.


처음에 User를 생성할 때 주의해야 할 사항은 group을 먼저 만들어야 한다는 것과 User는 group에 포함되어야 한다는 것입니다.

여기까지 입니다.


'Tools > LDAP & CAS' 카테고리의 다른 글

LDAP Client 설치 (on CentOS)  (2) 2018.10.12
LDAP Server 설치 (on CentOS)  (1) 2018.10.12
CAS 서버 설치 (on CentOS)  (0) 2018.10.11
Comments