웹사이트 검색

RHCSA 시리즈: RHEL 7에서 LDAP 기반 인증 설정 - 14부


우리는 몇 가지 LDAP 기본 사항(무엇인지, 어디에 사용되는지, 왜 사용하는지)을 간략하게 설명하고 LDAP 서버를 설정하는 방법과 을 사용하여 이에 대해 인증하도록 클라이언트를 구성하는 방법을 보여줌으로써 이 글을 시작할 것입니다. Red Hat Enterprise Linux 7 시스템.

앞으로 살펴보겠지만 몇 가지 다른 가능한 적용 시나리오가 있지만 이 가이드에서는 전적으로 LDAP 기반 인증에 중점을 둘 것입니다. 또한, 주제가 방대하기 때문에 여기서는 기본 사항만 다루겠습니다. 더 자세한 내용은 요약에 설명된 문서를 참조할 수 있습니다.

같은 이유로, 간결함을 위해 LDAP 도구 매뉴얼 페이지에 대한 몇 가지 참조를 생략하기로 결정했지만 해당 설명은 매우 가깝습니다(man ldapadd, for 예).

이제 시작하겠습니다.

테스트 환경

테스트 환경은 두 개의 RHEL 7 상자로 구성됩니다.


Server: 192.168.0.18. FQDN: rhel7.mydomain.com
Client: 192.168.0.20. FQDN: ldapclient.mydomain.com

원하는 경우 12부: Kickstart를 클라이언트로 사용하여 RHEL 7 설치 자동화에 설치된 시스템을 사용할 수 있습니다.

LDAP란 무엇입니까?

LDAPLightweight Directory Access Protocol을 나타내며 클라이언트가 네트워크를 통해 중앙에 저장된 정보(예: 로그인 셸 디렉터리)에 액세스할 수 있도록 하는 프로토콜 집합으로 구성됩니다. , 홈 디렉토리에 대한 절대 경로, 기타 일반적인 시스템 사용자 정보 등)은 다양한 위치에서 액세스할 수 있거나 다수의 최종 사용자가 사용할 수 있어야 합니다(또 다른 예로는 모든 직원의 집 주소와 전화번호 디렉토리가 있습니다). 회사).

이러한 정보(및 그 이상)를 중앙에 보관한다는 것은 해당 정보를 사용할 권한이 부여된 모든 사람이 더 쉽게 유지 관리하고 액세스할 수 있음을 의미합니다.

다음 다이어그램은 LDAP의 단순화된 다이어그램을 제공하며 아래에서 더 자세히 설명됩니다.

위 다이어그램에 대한 자세한 설명.

  1. LDAP 디렉토리의 항목은 단일 단위 또는 정보를 나타내며 고유 이름으로 고유하게 식별됩니다.
  2. 속성은 항목과 관련된 정보입니다(예: 주소, 사용 가능한 연락처 전화번호, 이메일 주소).
  3. 각 속성에는 공백으로 구분된 목록으로 구성된 하나 이상의 이 할당됩니다. 항목별로 고유한 값을 상대 고유 이름이라고 합니다.

이제 서버 및 클라이언트 설치를 진행해 보겠습니다.

LDAP 서버 및 클라이언트 설치 및 구성

RHEL 7에서 LDAP는 OpenLDAP에 의해 구현됩니다. 서버와 클라이언트를 설치하려면 각각 다음 명령을 사용하십시오.


yum update && yum install openldap openldap-clients openldap-servers
yum update && yum install openldap openldap-clients nss-pam-ldapd

설치가 완료되면 살펴볼 사항이 있습니다. 명시적으로 언급하지 않는 한 다음 단계는 서버에서만 수행해야 합니다.

1. 서버와 클라이언트 모두에서 다음 부울을 지속적으로 활성화하여 SELinux가 방해가 되지 않는지 확인하세요.


setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0

LDAP 기반 인증에는 allow_ypbind가 필요하고 일부 애플리케이션에서는 authlogin_nsswitch_use_ldap가 필요할 수 있습니다.

2. 서비스를 활성화하고 시작합니다.


systemctl enable slapd.service
systemctl start slapd.service

systemctl을 사용하여 서비스를 비활성화, 다시 시작 또는 중지할 수도 있습니다.


systemctl disable slapd.service
systemctl restart slapd.service
systemctl stop slapd.service

3. slapd 서비스는 ldap 사용자로 실행되므로(ps -e -o pid,uname,comm | grep slapd 로 확인할 수 있음) ), 서버가 루트로만 실행할 수 있는 관리 도구로 생성된 항목을 수정할 수 있도록 하려면 해당 사용자는 /var/lib/ldap 디렉토리를 소유해야 합니다(자세한 내용은 분).

이 디렉터리의 소유권을 반복적으로 변경하기 전에 slapd에 대한 샘플 데이터베이스 구성 파일을 디렉터리에 복사하세요.


cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap:ldap /var/lib/ldap

4. OpenLDAP 관리 사용자를 설정하고 비밀번호를 할당합니다.


slappasswd

다음 이미지에 표시된 대로:

다음 내용으로 LDIF 파일(ldaprootpasswd.ldif)을 만듭니다.


dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

어디 :

  1. PASSWORD는 이전에 얻은 해시된 문자열입니다.
  2. cn=config는 전역 구성 옵션을 나타냅니다.
  3. olcDatabase는 특정 데이터베이스 인스턴스 이름을 나타내며 일반적으로 /etc/openldap/slapd.d/cn=config에서 찾을 수 있습니다.

앞서 제공된 이론적 배경을 참조하여 ldaprootpasswd.ldif 파일은 LDAP 디렉터리에 항목을 추가합니다. 해당 항목에서 각 줄은 속성: 값 쌍을 나타냅니다. 여기서 dn,changetype, add 및 olcRootPW는 속성이고 각 콜론 오른쪽에 있는 문자열은 해당 값입니다.

계속 진행하면서 이 점을 염두에 두시기 바랍니다. 이 문서의 나머지 부분에서는 동일한 일반 이름 (cn=)을 사용하고 있으며 각 단계는 이전 단계에 따라 달라집니다. .

5. 이제 프로토콜/호스트/포트 필드만 허용되는 LDAP 서버를 참조하는 URI를 지정하여 해당 LDAP 항목을 추가합니다.


ldapadd -H ldapi:/// -f ldaprootpasswd.ldif 

출력은 다음과 유사해야 합니다.

/etc/openldap/schema 디렉토리에서 일부 기본 LDAP 정의를 가져옵니다.


for def in cosine.ldif nis.ldif inetorgperson.ldif; do ldapadd -H ldapi:/// -f /etc/openldap/schema/$def; done

6. LDAP가 데이터베이스에서 도메인을 사용하도록 합니다.

다음 내용으로 ldapdomain.ldif라고 하는 또 다른 LDIF 파일을 만들고 도메인(도메인 구성 요소 dc=에서)과 비밀번호를 적절하게 바꿉니다.


dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=mydomain,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=mydomain,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=mydomain,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=mydomain,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=mydomain,dc=com" write by * read

그런 다음 다음과 같이 로드합니다.


ldapmodify -H ldapi:/// -f ldapdomain.ldif

7. 이제 LDAP 디렉토리에 일부 항목을 추가할 차례입니다. 속성과 값은 다음 파일에서 콜론 (:)으로 구분되며, 이름은 baseldapdomain.ldif입니다.


dn: dc=mydomain,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: mydomain com
dc: mydomain

dn: cn=Manager,dc=mydomain,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=mydomain,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=mydomain,dc=com
objectClass: organizationalUnit
ou: Group

LDAP 디렉터리에 항목을 추가합니다.


ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f baseldapdomain.ldif

8. ldapuser(adduser ldapuser)라는 LDAP 사용자를 생성한 다음 ldapgroup.ldif<에서 LDAP 그룹에 대한 정의를 생성합니다. /코드>.


adduser ldapuser
vi ldapgroup.ldif

다음 내용을 추가하세요.


dn: cn=Manager,ou=Group,dc=mydomain,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1004

여기서 gidNumber는 ldapuser에 대한 /etc/group의 GID입니다.) 이를 로드합니다.


ldapadd -x -W -D "cn=Manager,dc=mydomain,dc=com" -f ldapgroup.ldif

9. 사용자 ldapuser에 대한 정의가 포함된 LDIF 파일(ldapuser.ldif)을 추가합니다.


dn: uid=ldapuser,ou=People,dc=mydomain,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: ldapuser
uid: ldapuser
uidNumber: 1004
gidNumber: 1004
homeDirectory: /home/ldapuser
userPassword: {SSHA}fiN0YqzbDuDI0Fpqq9UudWmjZQY28S3M
loginShell: /bin/bash
gecos: ldapuser
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

그리고 그것을 로드하세요:


ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f ldapuser.ldif

마찬가지로 방금 생성한 사용자 항목을 삭제할 수 있습니다.


ldapdelete -x -W -D cn=Manager,dc=mydomain,dc=com "uid=ldapuser,ou=People,dc=mydomain,dc=com"

10. 방화벽을 통한 통신 허용:


firewall-cmd --add-service=ldap

11. 마지막으로 클라이언트가 LDAP를 사용하여 인증할 수 있도록 설정하세요.

이 마지막 단계를 돕기 위해 authconfig 유틸리티(시스템 인증 리소스 구성을 위한 인터페이스)를 사용하겠습니다.

LDAP 서버에 대한 인증이 성공한 후 요청된 사용자의 홈 디렉터리가 존재하지 않는 경우 다음 명령을 사용하여 생성됩니다.


authconfig --enableldap --enableldapauth --ldapserver=rhel7.mydomain.com --ldapbasedn="dc=mydomain,dc=com" --enablemkhomedir --update

요약

이 문서에서는 LDAP 서버에 대한 기본 인증을 설정하는 방법을 설명했습니다. 본 가이드에 설명된 설정을 추가로 구성하려면 RHEL 7 시스템 관리자 가이드의 13장 – LDAP 구성을 참조하고 TLS를 사용한 보안 설정에 특히 주의하시기 바랍니다.

아래의 의견 양식을 사용하여 궁금한 사항을 자유롭게 남겨주세요.