3. Instalace OpenLDAP serveru

Pro Unix existuje několik LDAP serverů, viz https://en.wikipedia.org/wiki/List_of_LDAP_software. Dále bude popsán OpenLDAP, který patří mezi nejpoužívanější LDAP servery v Unixu.

3.1. Instalace

V Debianu se serverový balíček jmenuje slapd, řádkové obslužné programy jsou v balíčku ldap-utils. Vhodné je nainstalovat oba balíčky:

apt install slapd ldap-utils

Většinou se instalují i další balíčky. V průběhu instalace zadáváte i heslo správce:

_images/53-ldap-install-password.png

Pokud heslo správce zapomenete, tak nejjednodušší je slapd odinstalovat pomocí apt purge slapd a znovu nainstalovat. Lze ho měnit i pomocí řádkového příkazu ldapmodify a předpřipraveného LDIF souboru - je to pracné, návody najdete na internetu.

3.2. Omezení služby pouze na localhost

Pomocí příkazu netstat -ltnp zjistíte, zda LDAP server běží a na jakých portech poslouchá:

_images/53-ldap-netstat.png

Na obrázku je vidět, že LDAP server (proces slapd) je spuštěn a poslouchá na portu 389 a to pro IPv4 i IPv6. Port 389 je nezabezpečený, nešifrovaný. Poslouchá na adresách 0.0.0.0 (IPv4) a :: (IPv6) – přijímá spojení z celého světa (ve škole to není úplně pravda, neboť na hranicích sítě je port 389 omezen na firewallu). Jakoukoliv komunikaci může kdokoliv odposlouchávat.

U semestrálních prací postačuje, aby LDAP server poslouchal na rozhraní 127.0.0.1. Není zde žádný důvod, aby se připojovali klienti z jiných serverů. Správce se může připojit na svůj LDAP server přes SSH tunel či ho může spravovat přes webového rozhraní.

Přístup z ostatních serverů by měl být pouze šifrovaný pomocí TLS na portu 636. Konfigurace TLS je mimo rozsah tohoto textu.

Porty a adresy, na kterých server naslouchá se nastavují v souboru /etc/default/slapd. V něm najdete následující část konfigurace:

Výpis 3.31 část konfiguračního souboru /etc/default/slapd
# slapd normally serves ldap only on all TCP-ports 389. slapd can also
# service requests on TCP-port 636 (ldaps) and requests via unix
# sockets.
# Example usage:
# SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:/// ldapi:///"
SLAPD_SERVICES="ldap:/// ldapi:///"

Poslední (někomentářový) řádek upravte dle ukázky na (ldapi je rozhraní pro Linux Socket, mělo by zůstat aktivní, lze vyžít při řešení některých problémů):

SLAPD_SERVICES="ldap://127.0.0.1:389/ ldapi:///"

A následně server restartuje pomocí

systemctl restart slapd

Nyní by příkaz netstat -ltnp měl vypsat následující:

tcp       0     0 127.0.0.1:389         0.0.0.0:*             LISTEN    16536/slapd

Tj. LDAP server naslouchá na IP adrese 127.0.0.1, na localhost.

3.3. Jak zjistit jméno správce, jak zjistit baseDN?

Je to nezvyklé - celé jméno správce (DN, jedinečné jméno správce) je v různých instalacích různé, obvykle závisí na DNS jméně serveru. Na školních serverech je to obvykle cn=admin,dc=vse,dc=cz. Ale může být i odlišné. V průběhu instalace serveru se toto jméno nezobrazí. Jak ho zjistit?

Celé jedinečného jméno správce začíná cn=admin následované baseDN. Příliš jsme si nepomohli, neboť ani baseDN se při instalaci nezobrazilo. V LDAP serveru může být teoreticky více organizací, více baseDN. Seznam dostupných jmenných kontextů (namingContexts) vypíšete pomocí příkazu:

ldapsearch -x -b "" -s base namingContexts
namingContexts: dc=vse,dc=cz

V adresáři /etc/ldap/slapd.d/cn=config najděte řádek olcRootDN v souborech *.ldif

grep olcRootDN *.ldif
olcDatabase={0}config.ldif:olcRootDN: cn=admin,cn=config
olcDatabase={1}mdb.ldif:olcRootDN: cn=admin,dc=vse,dc=cz

Obvykle se najdou dva, každý v jiném souboru. cn=admin,cn=config je určen pro základní konfiguraci slapd procesu, např. pro konfiguraci LDAPS. Semestrální práce nevyžadují jeho použití.

Druhý správce je obvykle v souboru olcDatabase={1}mdb.ldif. A tento se používá pro vkládání objektů - organizačních jednotek, skupin či uživatelů. V naší ukázce je to cn=admin,dc=vse,dc=cz.

3.4. Zobrazení informací z LDAP serveru pomocí ldapsearch

Řádkové aplikace implicitně používají autentizační knihovnu SASL (Simple Authentication and Security Layer), viz https://en.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer. Její hlavní přínos je (či spíše byl) v zapouzdření více variant šifrování hesla při autentizaci. V současnosti převažuje přenášení hesla v plaintextu uvnitř TLS kanálu, mnoho let jsem se nesetkal se smysluplným použitím této knihovny.

U ldapsearch je nutné použití této knihovny vypnout pomocí přepínače –x.

Aplikace ldapsearch vyžaduje informaci, odkud má začít vyhledávat obsah, tzv. baseDN uvedené jako hodnota přepínače –b. Na serverech nainstalovaných v doméně vse.cz je to obvykle dc=vse,dc=cz (vyhledání baseDN je v předchozí části), takže příkaz pro výpis vypadá takto:

ldapsearch -x -b dc=vse,dc=cz

# vse.cz
dn: dc=vse,dc=cz
objectClass: top
objectClass: dcObject
objectClass: organization
o: vse.cz
dc: vse

# admin, vse.cz
dn: cn=admin,dc=vse,dc=cz
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

Vypsaly se dva objekty: první je typu organization s jedinečným jménem (DN) dc=vse,dc=cz. A uvnitř organizace je objekt typu organizationalRole s jedinečným jménem cn=admin,dc=vse,dc=cz.

3.5. ldap.conf

BaseDN pro řádkové příkazy lze nastavit v souboru /etc/ldap/ldap.conf

BASE    dc=vse,dc=cz
URI     ldap://127.0.0.1

Přepínač -x se ale musí zadávat stále.