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:
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á:
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:
# 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.