LDAP 클라이언트 인증 연동 설정

목차 1. 연동에 필요한 인증 설정 2. 필요 package 설치 3. 인증 연동 설정 4. 연동 확인 5. host attribute를 이용한 로그인 제한 6. sudo 권한 설정 (Not yet)

설명을 하기 전에 다음의 상황으로 간주를 하오니, 예제의 shell prompt를 잘 살피시기 바랍니다.

  1. Master server ldap1.oops.org

  2. Slave server ldap2.oops.org

  3. Client

    • RHEL 7 계열: an3.oops.org

    • RHEL 6 계열: an2.oops.org

앞 장에서 설명을 했듯이, Multi-Master Replication으로 LDAP 서버를 구성했기 때문에, 명칭 상 Master와 Slave를 구분한 것이지, 기능적으로는 둘 다 Master 입니다.

1. 연동에 필요한 인증 설정

LDAP 인증을 시작하기 전에, LDAP server에서 연동에 사용할 account 설정을 합니다.

LDAP 설정 초기화 시에, 연동에 필요한 ssomanager라는 account를 미리 생성해 놓았으며, ssomanager account는 ldapROusers 그룹의 member로 생성이 되었습니다.

또한, ldapROusers 그룹은 LDAP 전체 database에 대해서 read only 권한을 가지고 있습니다.

앞에서 암호를 미리 지정해 놓았습니다만 혹시 잊어 버렸거나 또는 설정을 하지 않았다면 master(ldap1.oops.org) 또는 slave(ldap2.oops.org)에서 다음 명령을 이용하여 다시 설정을 합니다. (replication 설정이 되어 있으므로 어디서 해도 상관이 없습니다.)

[root@ldap1 ~]$ ldap_passwd -u Admin ssomanager@oops.org
New password     : ***********
Re-New password  : ***********

Your Informations:

    * Account: ssoadmin@oops.org
    * RDN : uid=ssomanager,ou=Admin,dc=oops,dc=org
    * Host: ldapi:///
    * Privilieges: -Y EXTERNAL
    * Commnad: /usr/bin/ldapmodify -H "ldapi:///" -Y EXTERNAL
    * Hash: {CRYPT}$6$htk01t9cUA5aFM/a$9H4.kig058cRESS6MGdjn8armHHP6IAQO9Qykr6iroW9laqugz.bIOPNzBUgk8N4H01QkeklEwQg05FBzSrfz/

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "uid=ssoadmin,ou=Admin,dc=oops,dc=org"

0
Done
[root@an3 ~]$

2. 필요 패키지 설치

LDAP 연동을 할 서버(LDAP client server, 여기서는 an3 host입니다.)에서 nss-pam-ldapd package와 ldap-auth-utils-passwd package를 설치합니다.

RHEL 6계열에서는 pam_ldap package가 의존성 설정에 의해 같이 설치가 됩니다.

openldap-clients, nss-pam-ldapd는 LDAP과 연동을 하는데 사용이 되어지며, ldap-auth-utils-passwd 패키지는 system에서 LDAP database의 암호를 변경하기 위하여 사용을 합니다. 물론 openldap-clientsldappasswd를 이용해도 상관 없지만, ldif 통신을 해야 하는 귀찮음으로 사용하기 쉬운 ldap_passwd 명령을 제공 합니다.

3. 인증 연동 설정

먼저, LDAP 서버 구성 시에 SSL을 가능하도록 하였다면, 인증서의 CA 인증서를 클라이언트에 복사 합니다. self sign 인증서를 사용한다면, CA 인증서는 system에 있는 /etc/pki/tls/certs/ca-bundle.crt를 이용하시면 되고, 발급 기관에서 받았을 경우에는 CA에서 제공하는 CA 인증서를 이용 합니다.

다음은 startssl의 CA 인증서를 예로 듭니다.

다음의 명령으로 시스템을 LDAP에 연동 합니다.

다음 /etc/openldap/ldap.conf/etc/nslcd.conf 에서 다음의 값들을 확인 합니다. 다르면 수정을 하고, 설정이 안되어 있으면 추가해 주도록 합니다.

먼저 인증 정보가 들어가기 때문에 파일의 권한 설정을 해 주도록 합니다.

RHEL 6 계열은 /etc/pam_ladp.conf 도 수정을 해 줍니다.

다음, /etc/openldap/ldap.conf/etc/nslcd.conf의 설정을 확인 합니다.

Booting 시에 nslcd가 동작하도록 설정 합니다.

RHEL 7 계열에서는

RHEL 6 계열에서는 다음과 같이 합니다.

RHEL/CentOS 6, AnNyung 2에서는 /etc/pam_ldap.conf도 설정을 해 줘야 합니다. /etc/pam_ldap.conf의 다음 설정 값들도 수정/추가 하십시오.

다음, nscd를 구동하고 있는 시스템이라면 nscd database를 갱신해 줘야 합니다. (안그러면 30분 정도 기다려야 할 수도 있습니다.)

여기까지 하면, 기본적으로 연동이 완료 되었습니다.

4. 연동 확인

먼저, pwckgrpck 명령으로 /etc/passwd 와 /etc/group, /etc/shadow를 정리 합니다. (uid, gid 순서로 sort를 합니다.)

다음 시스템 계정 정보를 확인 합니다.

OU=People에 추가된 account가 없기 때문에 passwd list에서는 ldap account가 보이지 않지만, group list에서는 OU=Group에 생성한 ldapusers group을 확인할 수 있습니다.

그럼, master server에서 ldapuser1 이라는 account를 추가해 보도록 하겠습니다.

일단, 위와 같이 테스트 유저를 만듭니다. 다음, 연동한 client에서 다시 확인을 해 봅니다.

참고로, getent shadow에서 암호 필드는 RHEL 7 호환 계열은 위와 같이 *로 masking이 되어서 나오고, RHEL 6 호환 이하로는 hashed string으로 출력이 됩니다.

마지막으로 login 테스트를 해 봅니다.

5. host attribute를 이용한 로그인 제한

ldap-auth-utils를 이용하여 LDAP 인증 연동을 구성할 경우, 기본으로 ldap entry의 host attribute를 이용하여 로그인을 제한 할 수 있도록 구성되어 있습니다.

일단, 이 기능을 사용하기 위해서는 ldap client에서 다음 설정을 해야 합니다.

RHEL 7 호환 계열:

RHEL 6 호환 계열:

설정을 마쳤으면 다신 ldapuser1 account로 로그인을 해 봅니다.

아까는 로그인이 되었지만, host 설정 이후, ldapuser1 entry에 host attribute가 없기 때문에 로그인이 되지 않습니다. secure log는 다음과 같이 남습니다.

그럼, login이 가능하도록 ldapuser1 entry에 host attribute 설정을 해 보도고 합니다.

master(ldap1.oops.org)slave(ldap2.oops.org)에서 다음의 명령을 실행 합니다.

ldap_auth 결과를 보면, password hash 문자열 아래에 host attribute가 설정이 되어 있음을 확인할 수 있습니다. ldap_host_manage 명령을 이용하여 추가 또는 삭제를 할 수 있습니다.

주의할 것은, host 이름은 해당 서버의 FQDN으로 설정을 해 줘야 합니다.

이제 다시, 로그인 테스트를 해 보도록 합니다.

이제 로그인이 잘 되는 것을 확인할 수 있습니다.

Last updated

Was this helpful?