웹사이트 검색

중앙 집중식 인증을 위해 OpenLDAP 서버를 설치하는 방법


경량 디렉토리 액세스 프로토콜(줄여서 LDAP)은 디렉토리 서비스에 액세스하기 위해 널리 사용되는 경량의 산업 표준 프로토콜 세트입니다. 디렉터리 서비스는 사용자, 그룹, 장치, 이메일 주소, 전화번호, 볼륨 및 기타 여러 개체와 같은 일상적인 항목과 네트워크 리소스에 액세스하고, 관리하고, 구성하고, 업데이트하기 위한 공유 정보 인프라입니다.

LDAP 정보 모델은 항목을 기반으로 합니다. LDAP 디렉토리의 항목은 단일 단위 또는 정보를 나타내며 고유 이름(DN)이라는 이름으로 고유하게 식별됩니다. 각 항목의 속성에는 유형과 하나 이상의 값이 있습니다.

속성은 항목과 연관된 정보 조각입니다. 유형은 일반적으로 일반 이름의 경우 "cn", 이메일 주소의 경우 "mail"과 같은 니모닉 문자열입니다. 각 속성에는 공백으로 구분된 목록으로 구성된 하나 이상의 값이 할당됩니다.

다음은 LDAP 디렉토리에서 정보가 배열되는 방식을 보여줍니다.

이 문서에서는 Ubuntu 16.04/18.04CentOS 7에서 중앙 집중식 인증을 위해 OpenLDAP 서버를 설치하고 구성하는 방법을 보여줍니다.

1단계: LDAP 서버 설치

1. 먼저 다음 명령을 사용하여 LDAP의 오픈 소스 구현인 OpenLDAP와 일부 기존 LDAP 관리 유틸리티를 설치하여 시작합니다.

yum install openldap openldap-servers	    #CentOS 7
sudo apt install slapd ldap-utils	    #Ubuntu 16.04/18.04

Ubuntu에서는 패키지 설치 중에 LDAP 디렉토리의 관리자 항목에 대한 비밀번호를 입력하고 보안 비밀번호를 설정한 후 확인하라는 메시지가 표시됩니다.

설치가 완료되면 다음에 설명된 대로 서비스를 시작할 수 있습니다.

2. CentOS 7에서 다음 명령을 실행하여 openldap 서버 데몬을 시작하고 부팅 시 자동 시작되도록 활성화한 후 다음을 확인합니다. 실행 중입니다(Ubuntu에서는 서비스가 systemd에서 자동으로 시작되어야 하며 간단히 상태를 확인할 수 있습니다).

sudo systemctl start slapd
sudo systemctl enable slapd
sudo systemctl status slapd

3. 다음으로 그림과 같이 방화벽을 통해 LDAP 서버 데몬에 대한 요청을 허용합니다.

firewall-cmd --add-service=ldap    #CentOS 7
sudo ufw allow ldap                #Ubuntu 16.04/18.04

2단계: LDAP 서버 구성

참고: LDAP 구성을 수동으로 편집하는 것은 권장되지 않습니다. 파일에 구성을 추가하고 ldapadd 또는 < Strong>ldapmodify 명령을 사용하여 아래와 같이 LDAP 디렉토리에 로드합니다.

4. 이제 OpenLDAP 관리 사용자를 생성하고 해당 사용자에게 비밀번호를 할당합니다. 아래 명령에서는 지정된 비밀번호에 대해 해시된 값이 생성됩니다. 이를 기록해 두고 LDAP 구성 파일에서 사용합니다.

slappasswd

5. 그런 다음 LDAP 디렉토리에 항목을 추가하는 데 사용되는 LDIF 파일(ldaprootpasswd.ldif)을 만듭니다.

sudo vim ldaprootpasswd.ldif

그 안에 다음 내용을 추가하세요.

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

위의 속성-값 쌍을 설명합니다.

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

6. 다음으로, LDAP 서버를 참조하는 URI와 위의 파일을 지정하여 해당 LDAP 항목을 추가합니다.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ldaprootpasswd.ldif  

3단계: LDAP 데이터베이스 구성

7. 이제 slapd에 대한 샘플 데이터베이스 구성 파일을 /var/lib/ldap 디렉토리에 복사하고 파일에 대한 올바른 권한을 설정합니다. .

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

8. 다음으로 다음과 같이 /etc/openldap/schema 디렉토리에서 일부 기본 LDAP 스키마를 가져옵니다.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif 
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

9. 이제 LDAP 데이터베이스에 도메인을 추가하고 도메인에 대한 ldapdomain.ldif라는 파일을 만듭니다.

sudo vim ldapdomain.ldif 

다음 콘텐츠를 추가하세요(예제를 도메인으로 바꾸고 PASSWORD를 이전에 얻은 해시 값으로 바꾸세요).

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=example,dc=com" read by * none

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

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,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=example,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=example,dc=com" write by * read

10. 그런 다음 다음 명령을 사용하여 위 구성을 LDAP 데이터베이스에 추가합니다.

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldapdomain.ldif

11. 이 단계에서는 LDAP 디렉토리에 일부 항목을 추가해야 합니다. 다음 내용으로 baseldapdomain.ldif라는 또 다른 파일을 만듭니다.

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

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

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

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

파일을 저장한 다음 LDAP 디렉터리에 항목을 추가합니다.

sudo ldapadd -Y EXTERNAL -x -D cn=Manager,dc=example,dc=com -W -f baseldapdomain.ldif

12. 다음 단계는 example, tecmint에 대한 LDAP 사용자를 만들고 다음과 같이 이 사용자에 대한 비밀번호를 설정하는 것입니다.

sudo useradd tecmint
sudo passwd tecmint

13. 그런 다음 다음 내용으로 ldapgroup.ldif라는 파일에 LDAP 그룹에 대한 정의를 만듭니다.

dn: cn=Manager,ou=Group,dc=example,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1005

위 구성에서 gidNumbertecmint에 대한 /etc/groupGID이며 이를 OpenLDAP에 추가합니다. 예배 규칙서.

sudo ldapadd -Y EXTERNAL -x  -W -D "cn=Manager,dc=example,dc=com" -f ldapgroup.ldif

14. 다음으로 ldapuser.ldif라는 또 다른 LDIF 파일을 만들고 tecmint 사용자에 대한 정의를 추가합니다.

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

그런 다음 해당 구성을 LDAP 디렉터리에 로드합니다.

ldapadd -Y EXTERNAL  -x -D cn=Manager,dc=example,dc=com -W -f  ldapuser.ldif

인증을 위해 중앙 서버를 설정한 후 마지막 부분은 이 가이드에 설명된 대로 클라이언트가 LDAP를 사용하여 인증할 수 있도록 하는 것입니다.

  1. 외부 인증을 연결하기 위해 LDAP 클라이언트를 구성하는 방법

자세한 내용은 OpenLDAP 소프트웨어 문서 카탈로그에서 해당 문서를 참조하세요. Ubuntu 사용자는 OpenLDAP 서버 가이드를 참조할 수 있습니다.

요약

OpenLDAP는 Linux에서 LDAP를 오픈소스로 구현한 것입니다. 이 기사에서는 Ubuntu 16.04/18.04 및 CentOS 7에서 중앙 집중식 인증을 위해 OpenLDAP 서버를 설치하고 구성하는 방법을 보여주었습니다. 질문이나 공유할 생각이 있는 경우 주저하지 말고 아래 의견 양식을 통해 문의해 주세요.