목차 1. 연동에 필요한 인증 설정 2. 필요 package 설치 3. 인증 연동 설정 4. 연동 확인 5. host attribute를 이용한 로그인 제한 6. sudo 권한 설정 (Not yet)
설명을 하기 전에 다음의 상황으로 간주를 하오니, 예제의 shell prompt를 잘 살피시기 바랍니다.
Master server ldap1.oops.org
Slave server ldap2.oops.org
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 설정이 되어 있으므로 어디서 해도 상관이 없습니다.)
RHEL 6계열에서는 pam_ldap package가 의존성 설정에 의해 같이 설치가 됩니다.
openldap-clients, nss-pam-ldapd는 LDAP과 연동을 하는데 사용이 되어지며, ldap-auth-utils-passwd 패키지는 system에서 LDAP database의 암호를 변경하기 위하여 사용을 합니다. 물론 openldap-clients의 ldappasswd를 이용해도 상관 없지만, ldif 통신을 해야 하는 귀찮음으로 사용하기 쉬운 ldap_passwd 명령을 제공 합니다.
3. 인증 연동 설정
먼저, LDAP 서버 구성 시에 SSL을 가능하도록 하였다면, 인증서의 CA 인증서를 클라이언트에 복사 합니다. self sign 인증서를 사용한다면, CA 인증서는 system에 있는 /etc/pki/tls/certs/ca-bundle.crt를 이용하시면 되고, 발급 기관에서 받았을 경우에는 CA에서 제공하는 CA 인증서를 이용 합니다.
다음, /etc/openldap/ldap.conf와 /etc/nslcd.conf의 설정을 확인 합니다.
[root@an3 ~]$ # 먼저 /etc/openldap/ldap.conf 를 먼저 설정 합니다.[root@an3 ~]$ cat /etc/openldap/ldap.confTLS_CACERTDIR/etc/openldap/cacertsTLS_CACERT/etc/openldap/certs/pki/startssl-sub.class2.server.ca.sha2.pemTLS_REQCERTallowURIldaps://ldap1.oops.org/ldaps://ldap2.oops.orgBASEdc=oops,dc=org[root@an3 ~]$[root@an3 ~]$ # 다음은, /etc/nslcd.conf 를 설정 합니다.[root@an3 ~]$[root@an3 ~]$ cat /etc/nslcd.confuidnslcdgidldap# SSL 설정sslnotls_cacertdir/etc/openldap/cacertstls_cacertfile/etc/openldap/certs/pki/startssl-sub.class2.server.ca.sha2.pem# LDAP serversurildaps://ldap1.oops.org/ldaps://ldap2.oops.org/# 인증 정보binddnuid=ssomanager,ou=admin,dc=oops,dc=org# LDAP 서버에서 설정한 ssomanager의 암호를 평문으로 작성bindpw평문암호# database bidingbasedc=oops,dc=org# Admin database를 출력하지 않도록 제한을 함basegroupou=Group,dc=oops,dc=orgbasepasswdou=People,dc=oops,dc=orgbaseshadowou=People,dc=oops,dc=org[root@an3 ~]$[root@an3 ~]$ # nslcd 재시작[root@an3 ~]$ service nslcd restartnslcd를정지중: [실패]nslcd (을)를 시작 중: [ OK ][root@an3 ~]$
Booting 시에 nslcd가 동작하도록 설정 합니다.
RHEL 7 계열에서는
[root@an3 ~]$ systemctl enable nslcd
RHEL 6 계열에서는 다음과 같이 합니다.
[root@an3 ~]$ chkconfig nslcd on
RHEL/CentOS 6, AnNyung 2에서는 /etc/pam_ldap.conf도 설정을 해 줘야 합니다. /etc/pam_ldap.conf의 다음 설정 값들도 수정/추가 하십시오.
[root@an2 ~]$ cat /etc/pam_ldap.conf# The distinguished name of the search base.basedc=oops,dc=org# Another way to specify your LDAP server is to provide an# uri with the server name. This allows to use# Unix Domain Sockets to connect to a local LDAP Server.urildaps://ldap1.oops.org/ldaps://ldap2.oops.org/# OpenLDAP SSL mechanism# start_tls mechanism uses the normal LDAP port, LDAPS typically 636sslnotls_cacertdir/etc/openldap/cacertstls_cacertfile/etc/pki/startssl/startssl-sub.class2.server.ca.sha2.pem# RFC2307bis naming contexts# Syntax:# nss_base_XXX base?scope?filter# where scope is {base,one,sub}# and filter is a filter to be &'d with the# default filter.# You can omit the suffix eg:# nss_base_passwd ou=People,# to append the default base DN but this# may incur a small performance impact.nss_base_passwdou=People,dc=oops,dc=org?onenss_base_shadowou=People,dc=oops,dc=org?onenss_base_groupou=Group,dc=oops,dc=org?one# password hashing# md5로 지정을 하면 md5 crypt, sha512 crypt를 이용하여 로그인이 가능 합니다.# {SSHA}는 로그인이 안됩니다.pam_passwordmd5# BIND DN# 인증 정보binddnuid=ssomanager,ou=admin,dc=oops,dc=org# LDAP 서버에서 설정한 ssomanager의 암호를 평문으로 작성bindpw평문암호[root@an2 ~]$
다음, nscd를 구동하고 있는 시스템이라면 nscd database를 갱신해 줘야 합니다. (안그러면 30분 정도 기다려야 할 수도 있습니다.)
[root@an3 ~]$ service nscd force-reload
여기까지 하면, 기본적으로 연동이 완료 되었습니다.
4. 연동 확인
먼저, pwck와 grpck 명령으로 /etc/passwd 와 /etc/group, /etc/shadow를 정리 합니다. (uid, gid 순서로 sort를 합니다.)