Ubuntu 20.04에서 OpenLDAP 및 phpLDAPadmin을 설치하고 구성하는 방법
이 튜토리얼은 다음 OS 버전에 대해 존재합니다.
- Ubuntu 22.04(Jammy Jellyfish)
- Ubuntu 20.04(Focal Fossa)
이 페이지에서
- 전제 조건
- 시작하기\n
- OpenLDAP 서버 설치 및 구성
- OpenLDAP 사용자 계정 만들기
- OpenLDAP 바인드 DN 만들기
- phpLDAPadmin 설치 및 구성
- phpLDAPadmin용 Apache 구성
- phpLDAPadmin 웹 UI에 액세스
- 결론
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를 사용하여 조직 단위, 그룹 및 사용자 추가를 포함한 여러 작업을 수행할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.