[Ubuntu 12.04] LDAP 서버 구축 및 파이썬 PAM 인증 Computer Tip

LDAP은 인터넷 상에 특정 회사,조직에서 그룹이나 사람을 정의하고 가져오는 표준 응용 계층 프로토콜입니다. 
이를 이용하여 특정 서버에 사용자를 별도로 관리할 수 있으며 역시 그 사용자에 대한 인증도 개별로 할 수 있습니다.

다음은 우분투 12.04 LTS에서 간단하게 LDAP 서버를 구축하는 방법과,
클라이언트에서 pam_ldap.so 모듈을 이용하여 파이썬에서 간단하게 해당 사용자
인증을 해 보는 것에 관하여 정리를 해 보았습니다.


1) LDAP 서버 구축


1.1) 설치

$ sudo apt-get install slapd ldap-utils

역시나 위와 같이 간단하게 slapd 라는 openLDAP 서버를 설치할 수 있습니다.

1.2) 최초 설정

$ sudo dpkg-reconfigure slapd


위의 명령을 실행한 다음 아래와 같이 설정합니다.

일단 설정에 들어가는 것이 "아니오" 입니다.

일단 관리자 암호를 입력합니다.

test.com 으로 도메인을 지정하였습니다.

조직 이름은 "example" 로 하였습니다.

admin 디폴트 계정의 암호를 넣었습니다.

BDB 보다는 HDB를 이용하는게 더 낫다고 디폴트로 그렇게 했습니다.

slapd 패키지를 삭제해도 사용하던 데이터베이스는 놔두도록 "아니오"가 디폴트 입니다.

그 다음도 디폴트로 이전 DB를 이동한다고 했습니다.

아니오 가 디폴트인데 이것이 버전3 입니다.


1.3) phpldapadmin 설치


이제 웹 UI를 설치하고 운영하는 것을 살펴보겠습니다.

$ sudo apt-get install phpldapadmin

으로 초-간단 설치합니다.

$ sudo vi /etc/phpldapadmin/config.php

로 설정 파일을 열어

및 

와 같이 수정합니다.


1.4) phpldapadmin 운영

http://ldap-server/phpldapadmin/

위와 같이 해당 ldap 서버에 접속 가능합니다.

좌측 상단의 login 을 눌러 


설치시 설정한 admin 계정의 암호를 입력합니다.

이제 좌측의 트리에 "+" 표시를 누르면,


"Create new entry here" 가 나오는데, 이를 누르고, 우측의 "Generic: Organizational Unit"을 선택합니다.
이렇게 하여 그룹을 만들기 위함입니다.

groups 라는 이름의 OU 그룹을 만들어 봅니다.

Commit 단추까지 눌러야 생성이 됩니다.

좌측의 ou=groups 가 선택된 상태입니다.

동일한 방법으로 ou=users 라는 그룹도 만들어 보았습니다.

ou=groups 아래에 하위 그룹을 만들려면, 위와 같이 "Create a child entry"를 누릅니다.

"Generic: Posix Group"을 선택했습니다.

"admin" 이라는 그룹을 만들고 "Create Object"를 하였습니다.

ou=groups, cn=admin 이라는 그룹이 생겼습니다.

같은 방법으로 irc, users 라는 하위 그룹을 만들어 보았습니다.

다시 ou=groups 라는 곳을 선택하고, "View 3 children"을 누르면,

위와 같이 하위 내용을 확인할 수 있습니다.

이제 실제로 사용자를 만들어 볼까요?
ou=users 그룹에서 "Create a child entry"를 선택합니다.

"Generic: User Account"를 선택했습니다.

위와 같은 식으로 올렸구요, 하단의 toor 가 실제 원격에서 접속할 user id에 해당했습니다.

기존 사용자에서 copy 도 가능합니다.


2) LDAP 클라이언트로 pam 인증


위의 LDAP 서버가 아닌 다른 우분투 클라이언트 머신에서 작업을 한다고 가정합니다.

2.1) pam-ldap 모듈 설치


$ sudo apt-get install libpam-ldap

역시 참 쉬죠잉~~ ^^
(최근에 필요에 의해서 크로스 컴파일을 할 기회가 있었는데, 예전
 GNU의 autoconf 가 생기기 전에 자작으로 HP-UX에서 만들어진 소스를 타이컴에 포팅하던 
 예전 기억을 떠 올리게 하더만요. 그래도 소스를 수정안해도 되는게 어딥니까? ㅎㅎ)


2.2) pam 설정

/etc/ldap.conf 를 위와 같이 손을 봐 주면 됩니다.


2.3) pam.d 설정

실은 PAM 자체가 많이 복잡하지만 아주 간단하게,

/etc/pam.d 디렉터리에 ldap 이라는 파일에 위와 같은 내용으로 입력하고,


2.4) Python pam 인증

$ pip install pam

으로 pam 모듈을 설치하고

위와 같이 아주 간단하게 1.4에서 지정한 사용자 계정의 원격 인증을 테스트해 볼 수 있습니다.


어느분께는 도움이 되셨기를....






덧글

  • 머가필요해 2014/12/29 22:57 # 삭제 답글

    엄청난 도움이 되었습니다.
    먼저 이 길을 걸어간 분에 대해서 존경의 마음을 전합니다!!!
  • 지훈현서아빠 2014/12/30 09:01 #

    그렇게 까지 봐 주시니 감사합니다.
    저의 보람입니다~~ ^^
  • oops 2015/07/22 11:38 # 삭제 답글

    1) nginx 환경으로 구축하는데 /usr/share/phpldapadmin/htdocs/ 가 default path로 되어 있지 않기 때문에 phpldapadmin으로 접속이 실패합니다.
    -. nginx의 home path에 /usr/share/phpldapadmin/htdocs/를 link로 걸고 사용했습니다.

    2) Samba : Account 사용시에 화면이 깨지는 문제가 있었는데 아래 방법으로 해결되었습니다.
    -. https://lamlos.com/2014/08/24/phpldapadmin-password-error-with-php-5/

    좋은자료 감사합니다 :)
  • 지훈현서아빠 2015/07/22 15:08 #

    좋은 실제 댓글 내용 감사드립니다.
    도움 되셨다면 저의 보람입니다~ ^^
  • woojin 2015/10/30 17:44 # 삭제 답글

    Ubuntu 로 LDAP 테스트 진행 했으며
    앞서 oops 님과 같은 증상이네요. oops님이 달아 놓은 댓글을 봤으나... 링크가 깨짐
    해결방법은
    ============
    All you need to do is change password_hash in /usr/share/phpldapadmin/lib/TemplateRender.php on line 2469 to password_hash_custom.

    입니다. 바로 해결되네요.
  • 지훈현서아빠 2015/10/30 19:31 #

    좋은 정보 감사드립니다.^^
  • 이원섭 2017/03/04 15:31 # 삭제 답글

    너무 어렵네요..
  • 지훈현서아빠 2017/03/05 17:51 #

    모르는 것을 좀 더 세분화 하시고 제반 지식이나 기술을 여러모로 따라 가셔야 합니다.
    도움이 되셨기를 바랍니다.
댓글 입력 영역

구글애드텍스트