openldap 서버/클라이언트 설치해서 클러스터 계정 정보 통합 관리하기

LDAP Server

sudo apt-get install -y slapd ldap-utils로 필요한 패키지들을 설치하는데, 설치 도중에 입력해야하는 비밀번호는 바로 뒤에서 다시 설정할 것이기 때문에 일단 아무거나 해놓는다.

설치 완료되면 sudo slapcat 으로 잘 설치되었는지 확인해본다.

뭔가 쭈루룩 뜬다면 오케이.

설치할 때는 기본적으로 관리자 비밀번호만 입력 받은 뒤, 도메인은 nodomain 으로 지정해놓기 때문에 세팅을 다시 해주는 것이 좋다.

sudo dpkg-reconfigure slapd를 치면 터미널 창에 다시 어떤 창들이 뜨게 되는데, 아래처럼 선택해주면 된다.

1. 세팅을 새로 설정할건데 스킵할 것인지? No
2. 사용하려는 도메인명을 입력한다(도메인의 . 을 기준으로 dc값들을 입력하는데, 예를 들어 bconfiden2.co.kr의 경우 dc=bconfiden2,dc=co,dc=kr이 된다)
3. 그룹명 입력
4. 관리자 비밀번호 입력 및 확인
5. slapd를 지울 때 데이터베이스도 같이 지울 것인지? Yes
6. 기존 내용들 있는데 덮어쓸건지? Yes

다시한번 slapcat 으로 디비 내용을 확인해보면, 기존의 nodomain 에서 우리가 설정해준 도메인으로 변경된 것을 확인할 수 있다.

클러스터 내의 그룹과 유저들을 묶어서 관리하기 위한 그룹을 미리 만들어준다.

bconfiden2@h01:~$ vi base.ldif
dn: ou=Users,dc=bconfiden2,dc=co,dc=kr
objectClass: organizationalUnit
ou: people

dn: ou=Groups,dc=bconfiden2,dc=co,dc=kr
objectClass: organizationalUnit
ou: groups
bconfiden2@h01:~$ sudo ldapadd -x -D cn=admin,dc=[도메인에 맞게 입력] -W -f base.ldif
Enter LDAP Password: 
    adding new entry "ou=Users,dc=어쩌고"
    adding new entry "ou=Groups,dc=저쩌고"

base.ldif에 원하는대로 명세를 해준뒤, ldapadd 명령어로 해당 파일을 읽어가 어드민 권한으로 데이터베이스에 추가하는 과정이 되겠다.

다시한번 slapcat 으로 확인해보면 정상적으로 추가가 되어있다.


phpldapadmin 이라는 패키지를 설치해주면 웹페이지에서 좀 더 편하게 사용자를 추가하고 관리할 수 있다.

sudo apt-get install phpldapadmin
bconfiden2@h01:~$ sudo vi /etc/phpldapadmin/config.php
$config->custom->appearance['timezone'] = 'Asia/Seoul';
$servers->setValue('server','name','bconfiden2 LDAP Server');
$servers->setValue('server','host','');
$servers->setValue('server','base',array('dc=bconfiden2,dc=co,dc=kr'));
$servers->setValue('login','bind_id','cn=admin,dc=bconfiden2,dc=co,dc=kr');
$servers->setValue('server','tls',false);
$servers->setValue('login','anon_bind',false);

phpldapadmin의 웹페이지는 위의 설정파일들을 참조하기 때문에, 필요에 맞게 몇몇 속성들을 지정해준다.

이외에도 포트번호를 변경할 수 있는데, 따로 변경하지 않을시 http 80번 포트에서 서비스된다.

이외에도, 사용자를 추가할 때 지정해줘야하는 디폴트 쉘 목록에 배쉬쉘이 없는 경우에는, 아래 파일을 수정해준다.

bconfiden2@h01:~$ sudo vi /etc/phpldapadmin/templates/creation/posixAccount.xml
...
# /bin/sh, /bin/csh 등이 존재하는 부분 아래에 추가
<value>id="/bin/bash">/bin/bash</value>

http://localhost/phpldapadmin으로 들어가면 LDAP 웹페이지가 뜨고, 로그인 창에서 아이디는 “cn=admin,dc=도메인명”, 비밀번호는 설정해준 값을 넣음으로써 관리자 로그인이 가능하다.


LDAP Client

클러스터 내의 모든 노드들에 동일하게 설정을 진행해준다.

아래의 패키지들을 설치하면, 마찬가지로 설치 도중에 뭔가 입력해야 하는 창이 뜨는데,

sudo apt-get install libnss-ldap libpam-ldap ldap-utils nscd
1. ldapi:///[ldap 서버 주소]
2. 도메인 이름 세팅(dc=어쩌고,dc=저쩌고...)
3. LDAP버전 3
4. Yes
5. No
6. cn=admin, dc=이름
7. ldap 서버에서 설정했던 관리자 비밀번호

/etc/nsswitch.conf 파일의 passwd, group, shadow 정보들의 엔트리는 기본적으로 파일, 즉 로컬에 있는 설정파일들로 지정되어있는데, 이를 아래처럼 수정해준다.

bconfiden2@h01:~$ sudo vi /etc/nsswitch.conf
passwd: compat ldap
group: compat ldap
shadow: compat

ldap 서버에서 사용자를 추가했을 경우에 서버에 해당 사용자의 홈디렉토리도 자동으로 추가하기 위해서는 아래처럼 수정한다.

bconfiden2@h01:~$ sudo vi /etc/pam.d/common-session
...
...
# 맨아래에 추가
session required    pam_mkhomedir.so    skel=/etc/skel  umask=077

수정해준 이후에는 sudo service nscd restart로 서비스를 재시작해준다.