웹사이트 검색

Ubuntu 20.04에서 OpenLDAP 및 phpLDAPadmin을 설치하고 구성하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 20.04(Focal Fossa)

이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. OpenLDAP 서버 설치 및 구성
  4. OpenLDAP 사용자 계정 만들기
  5. OpenLDAP 바인드 DN 만들기
  6. phpLDAPadmin 설치 및 구성
  7. phpLDAPadmin용 Apache 구성
  8. phpLDAPadmin 웹 UI에 액세스
  9. 결론

LDAP는 인터넷 프로토콜을 통해 분산 디렉토리에 액세스하고 유지 관리하는 데 사용되는 경량 디렉토리 액세스 프로토콜입니다. phpLDAPadmin은 LDAP 서버 관리에 사용되는 웹 기반 LDAP 클라이언트입니다. 강력한 검색 기능과 계층 트리 보기를 통해 웹 브라우저를 통해 LDAP 서버를 보다 쉽게 관리할 수 있습니다. phpLDAPadmin을 사용하여 레코드를 추가 및 삭제하고, 이미지 속성을 보고 편집하고, 사용자 암호 해시를 관리하는 등의 작업을 수행할 수 있습니다.

이 튜토리얼에서는 Ubuntu 20.04에 phpLDAPadmin을 설치하는 방법을 설명합니다.

전제 조건

  • Ubuntu 20.04를 실행하는 서버.\n
  • 서버 IP를 가리키는 유효한 도메인 이름입니다.\n
  • 루트 암호는 서버에 구성됩니다.\n

시작하기

시작하기 전에 항상 최신 버전의 패키지로 시스템을 업데이트하는 것이 좋습니다. 다음 명령으로 업데이트할 수 있습니다.

apt-get update -y

모든 패키지가 업데이트되면 다음 단계로 진행할 수 있습니다.

OpenLDAP 서버 설치 및 구성

먼저 서버에 Slapd 및 기타 LDAP 유틸리티를 설치해야 합니다. 다음 명령을 실행하여 설치할 수 있습니다.

apt-get install slapd ldap-utils

설치하는 동안 아래와 같이 관리자 암호를 설정하라는 메시지가 표시됩니다.

보안 암호를 입력하고 Enter 키를 눌러 계속하십시오. 설치가 완료되면 SLAPD 패키지를 재구성하여 도메인 정보를 설정해야 합니다.

다음 명령으로 다시 구성할 수 있습니다.

dpkg-reconfigure slapd

아래와 같이 OpenLDAP 서버 구성을 생략하라는 메시지가 표시됩니다.

계속하려면 아니오를 선택하고 Enter 키를 누르십시오. 아래와 같이 DNS 도메인 이름을 제공하라는 메시지가 표시됩니다.

계속하려면 도메인 이름을 제공하고 Enter 키를 누르십시오. 아래와 같이 조직 이름을 제공하라는 메시지가 표시됩니다.

원하는 조직 이름을 제공하고 Enter 키를 눌러 계속하십시오. 아래와 같이 관리자 암호를 묻는 메시지가 표시됩니다.

관리자 암호를 제공하고 Enter 키를 눌러 계속하십시오. 아래와 같이 데이터베이스를 제거하라는 메시지가 표시됩니다.

예를 선택하고 Enter 키를 눌러 구성을 마칩니다.

이제 다음 명령을 사용하여 LDAP 정보를 확인할 수 있습니다.

slapcat

다음 출력이 표시되어야 합니다.

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: example.com
dc: example
structuralObjectClass: organization
entryUUID: 971829cc-ac5f-103a-8e42-9f8486ff5685
creatorsName: cn=admin,dc=example,dc=com
createTimestamp: 20201027051828Z
entryCSN: 20201027051828.103064Z#000000#000#000000
modifiersName: cn=admin,dc=example,dc=com
modifyTimestamp: 20201027051828Z

dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9Tm5OYlpSMktkYjVnUUprb284MHFPTEVkMjQrQXpQWEk=
structuralObjectClass: organizationalRole
entryUUID: 9718c198-ac5f-103a-8e43-9f8486ff5685
creatorsName: cn=admin,dc=example,dc=com
createTimestamp: 20201027051828Z
entryCSN: 20201027051828.107057Z#000000#000#000000
modifiersName: cn=admin,dc=example,dc=com
modifyTimestamp: 20201027051828Z

OpenLDAP 사용자 계정 만들기

먼저 사용자 및 그룹 정보를 저장할 조직 단위 컨테이너를 만들어야 합니다. 다음 명령으로 만들 수 있습니다.

nano users-ou.ldif

다음 줄을 추가합니다.

dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: people

dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups

완료되면 파일을 저장하고 닫은 다음 다음 파일을 생성하여 SLAPD 데이터베이스 액세스 제어를 조정합니다.

nano update-mdb-acl.ldif

다음 줄을 추가합니다.

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,shadowExpire
  by self write
  by anonymous auth
  by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage 
  by dn.exact="cn=readonly,ou=people,dc=example,dc=com" read 
  by * none
olcAccess: to dn.exact="cn=readonly,ou=people,dc=example,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none
olcAccess: to dn.subtree="dc=example,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
  by users read 
  by * none

파일을 저장하고 닫은 후 다음 명령을 실행하여 위의 정보로 데이터베이스 ACL을 업데이트합니다.

ldapadd -Y EXTERNAL -H ldapi:/// -f update-mdb-acl.ldif

다음 출력이 표시되어야 합니다.

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}mdb,cn=config"

그런 다음 다음 명령을 실행하여 사용자 OU 정보로 데이터베이스를 업데이트합니다.

ldapadd -Y EXTERNAL -H ldapi:/// -f users-ou.ldif

다음 출력이 표시되어야 합니다.

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "ou=people,dc=example,dc=com"

adding new entry "ou=groups,dc=example,dc=com"

다음으로 다음 파일을 만들어 hiteshj라는 새 사용자 계정을 만듭니다.

nano hitesh.ldif

다음 줄을 추가합니다.

dn: uid=hiteshj,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: hiteshj
cn: Hitesh
sn: Jethva
loginShell: /bin/bash
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/hiteshj
shadowMax: 60
shadowMin: 1
shadowWarning: 7
shadowInactive: 7
shadowLastChange: 0

dn: cn=hiteshj,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: hiteshj
gidNumber: 10000
memberUid: hiteshj

파일을 저장하고 닫은 후 다음 명령을 사용하여 데이터베이스에 사용자를 추가합니다.

ldapadd -Y EXTERNAL -H ldapi:/// -f hitesh.ldif

다음 출력이 표시되어야 합니다.

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "uid=hiteshj,ou=people,dc=example,dc=com"

adding new entry "cn=hiteshj,ou=groups,dc=example,dc=com"

다음으로 사용자의 비밀번호를 설정해야 합니다. 다음 명령으로 설정할 수 있습니다.

ldappasswd -H ldapi:/// -Y EXTERNAL -S "uid=hiteshj,ou=people,dc=example,dc=com"

다음 출력이 표시되어야 합니다.

New password: 
Re-enter new password: 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0

완료되면 다음 단계로 진행할 수 있습니다.

OpenLDAP 바인드 DN 생성

다음으로 디렉터리 서버를 쿼리하기 위한 사용자 이름과 암호를 정의해야 합니다. 먼저 다음 명령을 사용하여 바인드 DN 사용자에 대한 암호 해시를 생성합니다.

slappasswd

다음 출력이 표시되어야 합니다.

New password: 
Re-enter new password: 
{SSHA}DhjyJN5akaj2etaFKoyeAY8QMgSD/OTb

다음으로 다음 명령을 사용하여 읽기 전용 바인드 DN 이름을 만듭니다.

nano readonly-user.ldif

다음 줄을 추가합니다.

dn: cn=readonly,ou=people,dc=example,dc=com
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: readonly
userPassword: {SSHA}DhjyJN5akaj2etaFKoyeAY8QMgSD/OTb
description: Bind DN user for LDAP Operations

완료되면 파일을 저장하고 닫은 후 다음 명령을 사용하여 BIND 사용자를 데이터베이스에 추가하십시오.

ldapadd -Y EXTERNAL -H ldapi:/// -f readonly-user.ldif

다음 출력이 표시되어야 합니다.

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=readonly,ou=people,dc=example,dc=com"

그런 다음 다음 명령을 사용하여 바인딩 DN ACL을 확인합니다.

ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(olcDatabase={1}mdb)' olcAccess

다음 출력이 표시되어야 합니다.

dn: olcDatabase={1}mdb,cn=config
olcAccess: {0}to attrs=userPassword,shadowLastChange,shadowExpire by self writ
 e by anonymous auth by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=ext
 ernal,cn=auth" manage  by dn.exact="cn=readonly,ou=people,dc=example,dc=com" 
 read  by * none
olcAccess: {1}to dn.exact="cn=readonly,ou=people,dc=example,dc=com" by dn.subt
 ree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * non
 e
olcAccess: {2}to dn.subtree="dc=example,dc=com" by dn.subtree="gidNumber=0+uid
 Number=0,cn=peercred,cn=external,cn=auth" manage by users read  by * none

phpLDAPadmin 설치 및 구성

기본적으로 phpLDAPadmin 패키지는 Ubuntu 20.04 기본 리포지토리에서 사용할 수 있습니다. 다음 명령을 실행하여 설치할 수 있습니다.

apt-get install phpldapadmin -y

phpLDAPadmin을 설치한 후 phpLDAPadmin을 구성하고 도메인 정보를 정의해야 합니다. /etc/phpldapadmin/config.php 파일을 편집하면 됩니다.

nano /etc/phpldapadmin/config.php

다음 줄을 변경합니다.

$servers->setValue('server','name','My LDAP Server');
$servers->setValue('server','host','69.87.216.102');
$servers->;setValue('server','base',array('dc=example,dc=com'));
$servers->setValue('login','auth_type','session');
$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
$servers->setValue('auto_number','min',array('uidNumber'=>10000,'gidNumber'=>10000));

완료되면 파일을 저장하고 닫습니다.

phpLDAPadmin에 대해 Apache 구성

Apache용 phpLDAPadmin 기본 구성 파일은 /etc/apache2/conf-available/phpldapadmin.conf에 있습니다. 변경하지 말고 기본 설정으로 진행하십시오.

다음으로 기본 Apache 가상 호스트 구성 파일을 비활성화하고 Apache 서비스를 다시 시작하여 변경 사항을 적용합니다.

a2dissite 000-default.conf
systemctl restart apache2

완료되면 다음 단계로 진행할 수 있습니다.

phpLDAPadmin 웹 UI에 액세스

이제 웹 브라우저를 열고 URL http://your-server-ip/phpldapadmin을 사용하여 phpLDAPadmin에 액세스합니다. 다음 화면이 표시됩니다.

이제 로그인 버튼을 클릭합니다. phpLDAPadmin 로그인 화면이 표시되어야 합니다.

로그인 DN, 비밀번호를 입력하고 인증 버튼을 클릭합니다. 다음 화면에 phpLDAPadmin 대시보드가 표시되어야 합니다.

결론

축하합니다! Ubuntu 20.04 서버에 phpLDAPadmin을 성공적으로 설치하고 구성했습니다. 이제 LDAP 서버를 관리하고 phpLDAPadmin 웹 UI를 사용하여 조직 단위, 그룹 및 사용자 추가를 포함한 여러 작업을 수행할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.