OpenLDAP

Z Milan Kerslager
Přejít na: navigace, hledání

LDAP umožňuje vést samostatnou databázi uživatelů, která je přístupná jak systému, tak dalším programům (např. Samba, RADIUS server atd).

Konfigurace v Centos 6

OpenLDAP používá od verze 2.3 novou hierarchii konfiguračních souborů, které se nacházejí v adresáři /etc/openldap/slapd.d a není zde žádný /etc/openldap/slapd.conf. Tomu je přizpůsoben i tento návod.

Instalace

yum -y install openldap openldap-clients openldap-servers

Kontrola konfiguračních souborů

Po každé změně, které budete dále dělat, doporučuji spustit kontrolu konfiguračních souborů pomocí příkazu:

slaptest -u

Heslo správce LDAP

Heslo správce umožňuje nejsilnější způsob přístupu k LDAP serveru. Je uloženo v konfiguračním souboru. Může být buď v otevřené formě nebo v podobě hashe, který vám vygeneruje příkaz slappasswd.

slappasswd

Heslo vložte do konfiguračního souboru pomocí nějakého editoru, například:

vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif

Do souboru pak vložte řádek, který je výstupem předchozího příkazu, tj. něco jako:

...
olcRootPW: {SSHA}VystupPrikazu-slappasswd
...

Změna cn a dc

V konfiguračních souborech je nutné změnit cn (přihlašovací jméno správce) a dc (doménu LDAP stromu). Tj. změnit „cn=Manager,dc=my-domain,dc=com“ na něco, co vám vyhovuje, například „cn=admin,dc=pslib,dc=cz“. CN označuje v hantýrce LDAP přihlašovací jméno a DC pak doménu (zde je správcem tedy uživatel admin). Nepoužívejte jako jméno cn=root, protože OpenLDAP si s tím pak nebude vědět rady (root je specifické označené kořene LDAP stromu). Obvykle se používá existující název domény, kterou organizace používá i na Internetu (zde pslib.cz).

vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif
vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif

Ochrana hesel

Je vhodné, aby si uživatelé nemohli navzájem číst hashe hesel. Hashovací funkce je sice jednosměrná, takže není možné ze zakódovaného tvaru (hashe) získat zpět původní heslo, ale lze použít útok hrubou silou a duhové tabulky. Proto je potřeba hashe chránit.

vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif

V souboru doplňte (nezapomeňte přizpůsobit „cn=admin,dc=pslib,dc=cz“ své potřebě:

olcAccess: {0}to attrs=userPassword by self write by dn.base="cn=admin,dc=pslib,dc=cz" write by anonymous auth by * none
olcAccess: {1}to * by dn.base="cn=Manager,dc=acme,dc=com" write by self write by * read

Výše uvedená pravidla povolují uživateli číst jen hash svého hesla. Jen správce LDAP (viz výše, zde je to admin) může číst a zapisovat jakékoliv heslo. Všichni (i anonymní) mohou číst všechny atributy (kromě zmíněného hesla) všech ostatních uživatelů.

Spuštění OpenLDAP serveru

Nastavte automatické spuštění služby slapd při startu a pak server restartujte (pokud ještě neběží, chybu ignorujte):

chkconfig slapd on
service slapd restart

Kořen LDAP stromu

Vytvořte soubor pslib.ldif:

dn: dc=pslib,dc=cz
objectClass: dcObject
objectClass: organization
dc: pslib
o : pslib

Spusťte příkaz:

ldapadd -f pslib.ldif -D cn=admin,dc=pslib,dc=cz -w heslosprávceLDAP

Výstupem by mělo být:

adding new entry "dc=pslib,dc=cz"

Pokud je vypsána chyba „ldap_bind: Invalid credentials (49)“, je ve dvojici jméno správce a jeho heslo chyba. Zkontrolujte, zda jste všude použili stejnou definici „cn=admin,dc=pslib,dc=cz“ a nezapomněli někde něco původního.

Otestujte správné vytvoření stromu LDAP příkazem:

ldapsearch -x -LLL -b dc=pslib,dc=cz

Výstupem by mělo být:

dn: dc=pslib,dc=cz
objectClass: dcObject
objectClass: organization
dc: pslib
o: pslib

Firewall

Pokud má být LDAP přístupný ze sítě, je potřeba ve firewallu otevřít port 389 (ldap):

iptables -A INPUT -p tcp --dport ldap -j ACCEPT

Pokud bude do LDAP přistupováno pouze lokálně, není obvykle potřeba ve firewallu nic měnit, protože na loopback je typicky povolen neomezený provoz.

Povolení SSL

V souboru /etc/sysconfig/ldap by měl být řádek:

SLAPD_LDAPI=yes
SLAPD_LDAPS=yes

Schémata pro LDAP strom

Pokud spustíte démona pomocí příkazu slapd -d1, vypíše nejprve jaká schémata a pak jaké konfigurační soubory načítá. Běh démona pak přerušte kombinací kláves CTRL+c.

service slapd stop
slapd -d1
CTRL+c

Přidání OU

Přidání organizační jednotky (OU, organizational unit) do LDAP stromu. Předpokládá se, že LDAP databáze je spuštěna se schématem InetOrgPerson. Vytvořte soubor users.ldif s obsahem:

dn: ou=Users,dc=pslib,dc=cz
objectClass: organizationalUnit
ou: Users

Spusťte příkaz:

ldapadd -f users.ldif -D cn=admin,dc=pslib,dc=cz -wHesloSprávceLDAP

Přidání uživatele

Vytvořte soubor rene.ldif:

dn: cn=Rene Huzva,ou=Users,dc=pslib,dc=cz
cn: Rene Huzva
sn: Huzva
objectClass: inetOrgPerson
userPassword: tajneheslo
uid: rene.huzva

Spusťte příkaz:

ldapadd -f rene.ldif -D cn=admin,dc=pslib,dc=cz -wHesloSprávceLDAP

Vytvoření skupiny

Vytvořte soubor delnici.ldif:

dn: cn=Delnici,ou=Users,dc=pslib,dc=cz
cn: Delnici
objectClass: groupOfNames
member: cn=rene.huzva,ou=Users,dc=pslib,dc=cz

Spusťte příkaz:

ldapadd -f delnici.ldif -D cn=admin,dc=pslib,dc=cz -wHesloSprávceLDAP

Zařazení uživatele do skupiny

Vytvořte soubor doSkupiny.ldif:

dn: cn=Delnici,ou=Users,dc=pslib,dc=cz
changetype: modify
add: member
member: cn=rene.huzva,ou=Users,dc=pslib,dc=cz

Spusťte příkaz:

ldapadd -f doSkupiny.ldif -D cn=admin,dc=pslib,dc=cz -wHesloSprávceLDAP

Externí odkazy