Vyhledávání na webu

Jak nainstalovat OpenLDAP Server pro centralizovanou autentizaci


Lightweight Directory Access Protocol (zkráceně LDAP) je průmyslový standard, nenáročná, široce používaná sada protokolů pro přístup k adresářovým službám. Adresářová služba je sdílená informační infrastruktura pro přístup, správu, organizaci a aktualizaci každodenních položek a síťových zdrojů, jako jsou uživatelé, skupiny, zařízení, e-mailové adresy, telefonní čísla, svazky a mnoho dalších objektů.

Informační model LDAP je založen na záznamech. Záznam v adresáři LDAP představuje jednu jednotku nebo informaci a je jednoznačně identifikován tím, co se nazývá Rozlišující jméno (DN). Každý z atributů položky má typ a jednu nebo více hodnot.

Atribut je část informace spojená se záznamem. Typy jsou typicky mnemotechnické řetězce, například „cn“ pro běžné jméno nebo „mail“ pro e-mailovou adresu. Každému atributu je přiřazena jedna nebo více hodnot, které tvoří seznam oddělený mezerami.

Následuje ilustrace toho, jak jsou informace uspořádány v adresáři LDAP.

V tomto článku si ukážeme, jak nainstalovat a nakonfigurovat OpenLDAP server pro centralizované ověřování v Ubuntu 16.04/18.04 a CentOS 7.

Krok 1: Instalace serveru LDAP

1. Nejprve začněte instalací OpenLDAP, což je open source implementace LDAP a některé tradiční nástroje pro správu LDAP pomocí následujících příkazů.

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

Na Ubuntu budete během instalace balíčku vyzváni k zadání hesla pro položku admin ve vašem adresáři LDAP, nastavení bezpečného hesla a jeho potvrzení.

Po dokončení instalace můžete službu spustit, jak je vysvětleno dále.

2. V systému CentOS 7 spusťte následující příkazy pro spuštění démona serveru openldap, povolte mu automatické spouštění při spouštění a zkontrolujte, zda je v provozu (na Ubuntu by se služba měla spouštět automaticky pod systemd, můžete jednoduše zkontrolovat její stav):

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

3. Dále povolte požadavky na démona serveru LDAP přes bránu firewall, jak je znázorněno.

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

Krok 2: Konfigurace serveru LDAP

Poznámka: Nedoporučuje se ručně upravovat konfiguraci LDAP, je třeba přidat konfigurace do souboru a použít ldapadd nebo ldapmodify pro jejich načtení do adresáře LDAP, jak je znázorněno níže.

4. Nyní vytvořte administrátora OpenLDAP a přiřaďte tomuto uživateli heslo. V níže uvedeném příkazu se pro dané heslo vytvoří hashovaná hodnota, poznamenejte si ji, použijete ji v konfiguračním souboru LDAP.

slappasswd

5. Poté vytvořte soubor LDIF (ldaprootpasswd.ldif), který se používá k přidání položky do adresáře LDAP.

sudo vim ldaprootpasswd.ldif

Přidejte do něj následující obsah:

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

vysvětlení výše uvedených párů atribut-hodnota:

  • olcDatabase: Označuje konkrétní název instance databáze a lze jej obvykle nalézt v /etc/openldap/slapd.d/cn=config.
  • cn=config: označuje globální možnosti konfigurace.
  • PASSWORD: je hashovaný řetězec získaný při vytváření administrativního uživatele.

6. Dále přidejte odpovídající záznam LDAP zadáním URI odkazujícího na server ldap a výše uvedený soubor.

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

Krok 3: Konfigurace databáze LDAP

7. Nyní zkopírujte ukázkový konfigurační soubor databáze pro slapd do adresáře /var/lib/ldap a nastavte pro soubor správná oprávnění .

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. Dále importujte některá základní schémata LDAP z adresáře /etc/openldap/schema následujícím způsobem.

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. Nyní přidejte svou doménu do databáze LDAP a vytvořte pro svou doménu soubor s názvem ldapdomain.ldif.

sudo vim ldapdomain.ldif 

Přidejte do něj následující obsah (nahraďte příklad svou doménou a HESLO dříve získanou hašovanou hodnotou):

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. Poté přidejte výše uvedenou konfiguraci do databáze LDAP pomocí následujícího příkazu.

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

11. V tomto kroku potřebujeme přidat nějaké položky do našeho adresáře LDAP. Vytvořte další soubor s názvem baseldapdomain.ldif s následujícím obsahem.

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 

Uložte soubor a poté přidejte položky do adresáře LDAP.

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

12. Dalším krokem je vytvoření uživatele LDAP pro příklad, tecmint, a nastavení hesla pro tohoto uživatele následovně.

sudo useradd tecmint
sudo passwd tecmint

13. Poté vytvořte definice pro skupinu LDAP v souboru s názvem ldapgroup.ldif s následujícím obsahem.

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

Ve výše uvedené konfiguraci je gidNumber GID v /etc/group pro tecmint a přidejte jej do OpenLDAP adresář.

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

14. Dále vytvořte další LDIF soubor s názvem ldapuser.ldif a přidejte definice pro uživatele 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

poté načtěte konfiguraci do adresáře LDAP.

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

Jakmile nastavíte centrální server pro ověřování, poslední částí je umožnit klientovi autentizaci pomocí LDAP, jak je vysvětleno v této příručce:

  1. Jak nakonfigurovat klienta LDAP pro připojení externího ověřování

Další informace naleznete v příslušné dokumentaci z katalogu dokumentů softwaru OpenLDAP a uživatelé Ubuntu mohou nahlédnout do průvodce serverem OpenLDAP.

souhrn

OpenLDAP je open source implementace LDAP v systému Linux. V tomto článku jsme ukázali, jak nainstalovat a nakonfigurovat server OpenLDAP pro centralizovanou autentizaci v Ubuntu 16.04/18.04 a CentOS 7. Pokud máte otázku nebo nápad, o který byste se chtěli podělit, neváhejte nás kontaktovat prostřednictvím formuláře pro komentáře níže.