Wyszukiwanie w witrynie

Jak zainstalować serwer OpenLDAP do scentralizowanego uwierzytelniania


Lekki protokół dostępu do katalogów (w skrócie LDAP) to standard branżowy, lekki i powszechnie używany zestaw protokołów umożliwiających dostęp do usług katalogowych. Usługa katalogowa to współdzielona infrastruktura informacyjna umożliwiająca dostęp, zarządzanie, organizowanie i aktualizowanie elementów codziennego użytku i zasobów sieciowych, takich jak użytkownicy, grupy, urządzenia, adresy e-mail, numery telefonów, woluminy i wiele innych obiektów.

Model informacyjny LDAP opiera się na wpisach. Wpis w katalogu LDAP reprezentuje pojedynczą jednostkę lub informację i jest jednoznacznie identyfikowany za pomocą tak zwanej nazwy wyróżniającej (DN). Każdy atrybut wpisu ma typ i jedną lub więcej wartości.

Atrybut to informacja powiązana z wpisem. Typy to zazwyczaj ciągi mnemoniczne, takie jak „cn” w przypadku nazwy zwyczajowej lub „mail” w przypadku adresu e-mail. Każdemu atrybutowi przypisana jest jedna lub więcej wartości składających się na listę oddzieloną spacjami.

Poniżej przedstawiono ilustrację uporządkowania informacji w katalogu LDAP.

W tym artykule pokażemy, jak zainstalować i skonfigurować serwer OpenLDAP do scentralizowanego uwierzytelniania w Ubuntu 16.04/18.04 i CentOS 7.

Krok 1: Instalacja serwera LDAP

1. Najpierw zacznij od zainstalowania OpenLDAP, implementacji LDAP o otwartym kodzie źródłowym i niektórych tradycyjnych narzędzi do zarządzania LDAP, korzystając z poniższych poleceń.

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

W Ubuntu podczas instalacji pakietu zostaniesz poproszony o podanie hasła wpisu administratora w katalogu LDAP, ustawienie bezpiecznego hasła i jego potwierdzenie.

Po zakończeniu instalacji możesz uruchomić usługę, jak wyjaśniono poniżej.

2. W CentOS 7 uruchom następujące polecenia, aby uruchomić demona serwera openldap, włącz jego automatyczne uruchamianie podczas uruchamiania i sprawdź, czy jest już uruchomiony i działa (w Ubuntu usługa powinna zostać automatycznie uruchomiona w systemie, możesz po prostu sprawdzić jej status):

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

3. Następnie zezwól na żądania kierowane do demona serwera LDAP przez zaporę ogniową, jak pokazano.

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

Krok 2: Konfiguracja serwera LDAP

Uwaga: nie zaleca się ręcznej edycji konfiguracji LDAP, należy dodać konfiguracje w pliku i użyć ldapadd lub ldapmodify, aby załadować je do katalogu LDAP, jak pokazano poniżej.

4. Teraz utwórz użytkownika administracyjnego OpenLDAP i przypisz mu hasło. W poniższym poleceniu tworzona jest wartość mieszana dla podanego hasła, zanotuj ją, użyjesz jej w pliku konfiguracyjnym LDAP.

slappasswd

5. Następnie utwórz plik LDIF (ldaprootpasswd.ldif), który służy do dodania wpisu do katalogu LDAP.

sudo vim ldaprootpasswd.ldif

Dodaj do niego następującą zawartość:

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

wyjaśniając powyższe pary atrybut-wartość:

  • olcDatabase: wskazuje konkretną nazwę instancji bazy danych i zazwyczaj można ją znaleźć w /etc/openldap/slapd.d/cn=config.
  • cn=config: wskazuje globalne opcje konfiguracji.
  • HASŁO: to zaszyfrowany ciąg znaków uzyskany podczas tworzenia użytkownika administracyjnego.

6. Następnie dodaj odpowiedni wpis LDAP, podając identyfikator URI odnoszący się do serwera ldap i powyższego pliku.

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

Krok 3: Konfiguracja bazy danych LDAP

7. Teraz skopiuj przykładowy plik konfiguracyjny bazy danych dla slapd do katalogu /var/lib/ldap i ustaw odpowiednie uprawnienia do pliku .

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. Następnie zaimportuj kilka podstawowych schematów LDAP z katalogu /etc/openldap/schema w następujący sposób.

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. Teraz dodaj swoją domenę do bazy danych LDAP i utwórz dla niej plik o nazwie ldapdomain.ldif.

sudo vim ldapdomain.ldif 

Dodaj w nim następującą treść (zastąp przykład swoją domeną i HASŁO otrzymaną wcześniej wartością hash):

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. Następnie dodaj powyższą konfigurację do bazy danych LDAP za pomocą poniższego polecenia.

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

11. Na tym etapie musimy dodać kilka wpisów do naszego katalogu LDAP. Utwórz kolejny plik o nazwie baseldapdomain.ldif z następującą zawartością.

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 

Zapisz plik, a następnie dodaj wpisy do katalogu LDAP.

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

12. Następnym krokiem jest utworzenie użytkownika LDAP na przykład przykład, tecmint i ustawienie hasła dla tego użytkownika w następujący sposób.

sudo useradd tecmint
sudo passwd tecmint

13. Następnie utwórz definicje grupy LDAP w pliku o nazwie ldapgroup.ldif o następującej treści.

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

W powyższej konfiguracji gidNumber jest GID w /etc/group dla tecmint i dodaje go do OpenLDAP informator.

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

14. Następnie utwórz kolejny plik LDIF o nazwie ldapuser.ldif i dodaj definicje użytkownika 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

następnie załaduj konfigurację do katalogu LDAP.

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

Po skonfigurowaniu centralnego serwera do uwierzytelniania, ostatnią częścią jest umożliwienie klientowi uwierzytelnienia przy użyciu protokołu LDAP, jak wyjaśniono w tym przewodniku:

  1. Jak skonfigurować klienta LDAP do łączenia uwierzytelniania zewnętrznego

Aby uzyskać więcej informacji, zapoznaj się z odpowiednią dokumentacją w katalogu dokumentów oprogramowania OpenLDAP, a użytkownicy Ubuntu mogą zapoznać się z przewodnikiem po serwerze OpenLDAP.

Streszczenie

OpenLDAP to implementacja LDAP typu open source w systemie Linux. W tym artykule pokazaliśmy, jak zainstalować i skonfigurować serwer OpenLDAP do scentralizowanego uwierzytelniania w Ubuntu 16.04/18.04 i CentOS 7. Jeśli masz pytanie lub przemyślenia, którymi chcesz się podzielić, nie wahaj się z nami skontaktować za pomocą poniższego formularza komentarza.