OpenLDAP
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).
Obsah
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