OpenLDAP Server starý návod

LDAP je skratka pre Lightweight Directory Access Protocol (protokol odľahčeného prístupu k adresárom), ktorý je zjednodušenou verziou protokolu X.500. Nastavenie adresárov v tejto časti použijeme na autentifikáciu. LDAP sa však dá použiť aj na rôzne ďalšie účely, ako napríklad zdielaný adresár (pre mailových klientov), adresár kontaktov, atď.

Ak by sme chceli zjednodušene povedať, čo je LDAP, povedali by sme, že sú to informácie usporiadané do stromovej štruktúry (označuje sa cn=nazov_stromu). V OpenLDAP môžeme slobodne určiť rozvetvenie adresárov (tzv. DIT - Directory Information Tree). My začneme vytvorením dvoch organizačných jednotiek (označuje sa ou=nazov_jednotky) na najvyššej úrovni:

  • "Ludia": uzol, do ktorého budeme zadávať používateľov.
  • "Skupiny": uzol, do ktorého budeme zadávať skupiny.

Pred tým, ako začneme, mali by sme zistiť, ako sa volá uzol najvyššej úrovne LDAP adresára. Za normálnych okolností je meno stromu určené tzv. Fully Qualified Domain Name (FQDN) - úplným menom domény (označuje sa dc=nazov_domeny). Ak je vaša doména nieco.sk (ktorú budeme v tomto príklade používať), názov hlavného uzla bude dc=nieco,dc=sk.

Inštalácia

Najskôr nainštalujeme démon OpenLDAP servera slapd a balík ldap-utils, ktorý obsahuje nástroje pre správu LDAP:

sudo apt-get install slapd ldap-utils

Pri inštalácii bude potrebné zadať heslo správcu pre LDAP adresár a potvrdiť ho.

Za normálnych okolností bude prípona mena adresára zhodná s nastaveným menom domény servera. Napríklad, ak je úplné doménové meno (FQDN) počítača ldap.nieco.sk, prípona bude dc=nieco,dc=sk. Ak by sme chceli inú príponu, môžeme ju zmeniť prostredníctvom dpkg-reconfigure. Stačí zadať nasledujúci príkaz do príkazového riadka:

sudo dpkg-reconfigure slapd

Zobrazí sa nám dialóg, ktorý nám umožní zmeniť rôzne možnosti slapd.

Konfigurácia

OpenLDAP používa samostatnú databázu, ktorá obsahuje stromovú štruktúru cn=config adresárov (DIT). Databáza cn=config DIT sa používa na dynamické konfigurovanie démona slapd a umožňuje bez nutnosti zastavenia služby upravovať schémy definícii, indexov, prístupových práv atď.

Strom cn=config sa dá upravovať pomocou nástrojov z balíka ldap-utils. Napríklad takto:

  • Ak chceme strom zobraziť, použijeme príkaz ldapsearch a zadáme heslo správcu, ktoré sme zadali pri inštalácii:
    ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W olcDatabase={1}hdb
    Enter LDAP Password: 
    dn: olcDatabase={1}hdb,cn=config
    objectClass: olcDatabaseConfig
    objectClass: olcHdbConfig
    olcDatabase: {1}hdb
    olcDbDirectory: /var/lib/ldap
    olcSuffix: dc=nieco,dc=sk
    olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=nieco
    ,dc=sk" write by anonymous auth by self write by * none
    olcAccess: {1}to dn.base="" by * read
    olcAccess: {2}to * by dn="cn=admin,dc=nieco,dc=sk" write by * read
    olcLastMod: TRUE
    olcDbCheckpoint: 512 30
    olcDbConfig: {0}set_cachesize 0 2097152 0
    olcDbConfig: {1}set_lk_max_objects 1500
    olcDbConfig: {2}set_lk_max_locks 1500
    olcDbConfig: {3}set_lk_max_lockers 1500
    olcDbIndex: objectClass eq
    Výpis, ktorý sa nám zobrazil, predstavuje aktuálnu konfiguráciu v databáze hdb, ktorá v našom prípade obsahuje príponu dc=nieco,dc=sk.
  • Výpis môžeme zúžiť pomocou filtra, ktorý zobrazí iba požadovanú hodnotu Index:
    ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W olcDatabase={1}hdb olcDbIndex
    Enter LDAP Password: 
    dn: olcDatabase={1}hdb,cn=config
    olcDbIndex: objectClass eq
  • Aby sme ukázali, ako sa strom cn=config upravuje, pridáme pomocou ldapmodify ďalší atribút do zoznamu indexov:
    ldapmodify -x -D cn=admin,cn=config -W
    Enter LDAP Password:

    dn: olcDatabase={1}hdb,cn=config
    add: olcDbIndex
    olcDbIndex: entryUUID eq


    modifying entry "olcDatabase={1}hdb,cn=config"
    Po ukončení pridávania nástroj ukončíme stlačením Ctrl+D.
  • ldapmodify môže zmeny prečítať aj zo súboru. Nasledujúci text skopírujeme do súboru s názvom uid_index.ldif:
    dn: olcDatabase={1}hdb,cn=config
    add: olcDbIndex
    olcDbIndex: uid eq,pres,sub
    Potom spustíme ldapmodify:
    ldapmodify -x -D cn=admin,cn=config -W -f uid_index.ldif
    Enter LDAP Password: 
    modifying entry "olcDatabase={1}hdb,cn=config"
    Tento spôsob s nastavením v súbore sa používa najmä pri rozsiahlych zmenách.
  • Ak chceme pridať do slapd ďalšiu schému (definíciu atribútov pre organizačnú jednotku), je potrebné ju prekonvertovať do LDIF formátu. Priečinok /etc/ldap/schema obsahuje niektoré schémami v súboroch, ktoré sú už skonvertované do LDIF formátu podobne ako sme to demonštrovali v predchádzajúcej časti. Našťastie sa program slapd dá použiť na zautomatizovanie konverzie. V nasledujúcom príklade pridáme schému dyngoup.schema:
    1. Najskôr vytvoríme konverzný súbor schema_convert.conf a uložíme do neho nasledujúce riadky:
      include /etc/ldap/schema/core.schema
      include /etc/ldap/schema/collective.schema
      include /etc/ldap/schema/corba.schema
      include /etc/ldap/schema/cosine.schema
      include /etc/ldap/schema/duaconf.schema
      include /etc/ldap/schema/dyngroup.schema
      include /etc/ldap/schema/inetorgperson.schema
      include /etc/ldap/schema/java.schema
      include /etc/ldap/schema/misc.schema
      include /etc/ldap/schema/nis.schema
      include /etc/ldap/schema/openldap.schema
      include /etc/ldap/schema/ppolicy.schema
    2. V ďalšom kroku vytvoríme dočasný priečinok pre ukladanie výstupov:
      mkdir /tmp/ldif_output
    3. Teraz pomocou slaptest skonvertujeme súbor schémy do LDIF formátu:
      slaptest -f schema_convert.conf -F /tmp/ldif_output
      Ak by sme použili iný názov konfiguračného súboru a priečinka, bolo by potrebné prispôsobiť aj príkaz. Priečinok ldif_output nemusíme mazať, môžeme ho využiť neskôr, keď budeme pridávať ďalšie schémy.
    4. Otvoríme súbor /tmp/ldif_output/cn=config/cn=schema/cn={8}misc.ldif, zmeníme nasledujúce atribúty:
      dn: cn=misc,cn=schema,cn=config
      ...
      cn: misc
      a odstránime nasledujúce riadky z konca súboru:
      structuralObjectClass: olcSchemaConfig
      entryUUID: 10dae0ea-0760-102d-80d3-f9366b7f7757
      creatorsName: cn=config
      createTimestamp: 20080826021140Z
      entryCSN: 20080826021140.791425Z#000000#000#000000
      modifiersName: cn=config
      modifyTimestamp: 20080826021140Z
      [Note]

      Hodnoty atribútov môžu byť iné, preto si pri mazaní dajte pozor, aby ste zmazali všetky uvedené atribúty.

    5. Nakoniec pomocou nástroja ldapadd pridáme novú schému do adresára:
      ldapadd -x -D cn=admin,cn=config -W -f /tmp/ldif_output/cn\=config/cn\=schema/cn\=\{8\}misc.ldif

    Teraz by sme v strome cn=config mali mať záznam dn: cn={4}misc,cn=schema,cn=config.

Naplnenie LDAP

Adresár sme už vytvorili a nakonfigurovali a teraz je čas ho naplniť. Naplníme ho pomocou schémy "classical", ktorá je kompatibilná s adresármi v aplikáciách a s kontami Unix Posix. Kontá Posix umožňujú autentifikáciu do rôznych aplikácií, vrátane webových aplikácií, emailových aplikácií Mail Transfer Agent (MTA), atď.

[Note]

Ak chcete, aby externé aplikácie používali LDAP pri autentifikácii, je potrebné každú z nich nastaviť osobitne. Viac informácii získate v dokumentácii konkrétnej aplikácie.

Adresáre LDAP môžeme naplniť pomocou súborov vo formáte LDIF (LDAP Directory Interchange Format). Vytvoríme niekde v systéme nový súbor s názvom nieco.sk.ldif a nakopírujeme do neho nasledujúcu vzorovú konfiguráciu:

dn: ou=ludia,dc=nieco,dc=sk
objectClass: organizationalUnit
ou: ludia

dn: ou=skupiny,dc=nieco,dc=sk
objectClass: organizationalUnit
ou: skupiny

dn: uid=jozef,ou=ludia,dc=nieco,dc=sk
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: jozef
sn: Mrkva
givenName: Jozef
cn: Jozef Mrkva
displayName: Jozef Mrkva
uidNumber: 1000
gidNumber: 10000
userPassword: heslo
gecos: Jozef Mrkva
loginShell: /bin/bash
homeDirectory: /home/jozef
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: jozef.mrkva@nieco.sk
postalCode: 81100
l: Bratislava
o: Firma
mobile: +421 (0)90x xxx xxx
homePhone: +421 (0)2 xxxx xxx
title: Systemový administrátor
postalAddress:
initials: JM

dn: cn=priklad,ou=skupiny,dc=nieco,dc=sk
objectClass: posixGroup
cn: priklad
gidNumber: 10000

V tomto príklade je nastavená štruktúra adresára, používateľ a skupina. V iných príkladoch konfigurácie môžeme naraziť na nastavenie objectClass: top, ktoré býva pridané ku každému záznamu. Toto nastavenie však nemusíme pridávať explicitne, pretože je predvolené.

Ak chceme pridať záznamy do LDAP adresára, použijeme na to nástroj ldapadd:

ldapadd -x -D cn=admin,dc=nieco,dc=sk -W -f nieco.sk.ldif

Ak chceme overiť, či obsah bol správne pridaný, urobíme to jedným z nástrojov balíka ldap-utils. Spustíme vyhľadávanie v LDAP adresáre:

ldapsearch -xLLL -b "dc=nieco,dc=sk" uid=jozef sn givenName cn
dn: uid=jozef,ou=ludia,dc=nieco,dc=sk
cn: Jozef Mrkva
sn: Mrkva
givenName: Jozef

Rýchle vysvetlenie:

  • -x: nepoužije SASL metódu autentifikácie, ktorá je predvolená.
  • -LLL: zabráni vypísaniu informácií o LDIF schéme.

Replikácia LDAP

LDAP sa veľmi rýchlo stane kľúčovou službou v našej sieti. Viaceré systémy budú závislé od LDAP autentifikácie, autorizácie, konfigurácie, atď. Z tohto dôvodu je dobré systém nastaviť tak, aby bol redundantný.

Replikácia sa vykonáva pomocou Syncrepl. Syncrepl umožňuje synchronizáciu adresára buď pomocou systému push alebo systému pull. Pri použití systému push “primárny” server naraz pošle adresár “sekundárnym” serverom, zatiaľčo systém pull  umožňuje replikáciu serverov synchronizovaním v určitých časových intervaloch.

My použijeme tzv. Multi-Master konfiguráciu. V našom príklade budú OpenLDAP servery používať oba spôsoby replikácie push aj pull.

  1. Najskôr pripravíme server na synchronizovanie databázy cn=config. Skopírujeme nasledujúce riadky do súboru s názvom syncrepl_cn-config.ldif:
    dn: cn=module{0},cn=config
    changetype: modify
    add: olcModuleLoad
    olcModuleLoad: syncprov

    dn: cn=config
    changetype: modify
    replace: olcServerID
    olcServerID: 1 ldap://ldap01.nieco.sk
    olcServerID: 2 ldap://ldap02.nieco.sk

    dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
    changetype: add
    objectClass: olcOverlayConfig
    objectClass: olcSyncProvConfig
    olcOverlay: syncprov

    dn: olcDatabase={0}config,cn=config
    changetype: modify
    add: olcSyncRepl
    olcSyncRepl: rid=001 provider=ldap://ldap01.nieco.sk binddn="cn=admin,cn=config" bindmethod=simple
    credentials=tajne searchbase="cn=config" type=refreshAndPersist
    retry="5 5 300 5" timeout=1
    olcSyncRepl: rid=002 provider=ldap://ldap02.nieco.sk binddn="cn=admin,cn=config" bindmethod=simple
    credentials=tajne searchbase="cn=config" type=refreshAndPersist
    retry="5 5 300 5" timeout=1
    -
    add: olcMirrorMode
    olcMirrorMode: TRUE
  2. Otvoríme súbor a upravíme nastavenia
    • ldap://ldap01.nieco.sk a ldap://ldap02.nieco.sk na mená staníc našich LDAP serverov.
      [Note]

      Môžete mať viac ako dva LDAP servery. Keď urobíte zmenu na jednom z nich, synchronizáciou sa dostane na ostatné. Na každom ďalšom serveri však musíte pridať záznam s vyššou hodnotou olcServerID, a tiež záznam olcSyncRepl s vyššou hodnotou rid.

    • a zmeníme credentials=tajne na naše administrátorské heslo.
  3. Potom pridáme LDIF súbor pomocou nástroja ldapmodify:
    ldapmodify -x -D cn=admin,cn=config -W -f syncrepl_cn-config.ldif
  4. Skopírujeme súbor syncrepl_cn-config.ldif na ďalší LDAP server a zopakujeme vyššie použitý príkaz ldapmodify.
  5. Pretože bol pridaný nový modul, je potrebné na replikačných serveroch reštartovať slapd démon:
    sudo /etc/init.d/slapd restart
  6. Teraz je nastavenie databázy rovnaké na všetkých serveroch, rovnako je však potrebné  synchronizovať rozhranie samotnej databázy. Skopírujeme nasledujúce riadky do ďalšieho LDIF súboru s názvom syncrepl_backend.ldif:
    dn: olcDatabase={1}hdb,cn=config
    changetype: modify
    add: olcRootDN
    olcRootDN: cn=admin,dc=nieco,dc=sk
    -
    add: olcSyncRepl
    olcSyncRepl: rid=003 provider=ldap://ldap01.nieco.sk binddn="cn=admin,dc=nieco,dc=sk"
    bindmethod=simple credentials=tajne searchbase="dc=nieco,dc=sk" type=refreshOnly
    interval=00:00:00:10 retry="5 5 300 5" timeout=1
    olcSyncRepl: rid=004 provider=ldap://ldap02.nieco.sk binddn="cn=admin,dc=nieco,dc=sk"
    bindmethod=simple credentials=tajne searchbase="dc=nieco,dc=sk" type=refreshOnly
    interval=00:00:00:10 retry="5 5 300 5" timeout=1
    -
    add: olcMirrorMode
    olcMirrorMode: TRUE

    dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config
    changetype: add
    objectClass: olcOverlayConfig
    objectClass: olcSyncProvConfig
    olcOverlay: syncprov
  7. Tak ako predchádzajúci súbor LDIF, aj tento otvoríme a zmeníme:
    • searchbase="dc=nieco,dc=sk" na naše hodnoty searchbase.
    • Ak by sme chceli iného používateľa ako admin, zmenili by sme binddn="cn=admin,dc=nieco,dc=sk".
    • Zmeníme aj credentials=tajne na heslo správcu.
  8. Pridáme LDIF súbor:
    ldapmodify -x -D cn=admin,cn=config -W -f syncrepl_backend.ldif
    Vďaka tomu, že konfigurácia databáz je už synchronizovaná, nie je potrebné tento LDIF súbor kopírovať na ostatné servery.

Konfigurácia a rozhrania databáz by teraz mali byť synchronizované s ostatnými servermi. Ďalšie servery môžeme podľa potreby pridať pomocou nástroja ldapmodify. Viac informácií o tejto možnosti nájdeme v časti “Konfigurácia”.

[Note]

Démon slapd zaznamenáva svoje výstupy do súboru /var/log/syslog. Takže ak niečo nefunguje tak ako má, môžete v ňom nájsť chybové hlásenia a informácie pre ich odstránenie. Tiež sa uistite, že každý server pozná svoje plné doménové meno (FQDN). Je nastavené v súbore /etc/hosts pomocou riadka podobného tomuto:

127.0.0.1	ldap01.nieco.sk ldap01

Nastavenie prístupových práv

Autentifikácia vyžaduje prístup k poľu s heslom, ktoré by nemalo byť prístupné bežným spôsobom. Aby si používatelia po prihlásení mohli zmeniť svoje heslo pomocou passwd alebo iných nástrojov, potrebujú prístup k shadowLastChange.

Ak chcete zobraziť tzv. Access Control List (ACL) - zoznam prístupových práv, použite nástroj ldapsearch:

ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W olcDatabase=hdb olcAccess

Enter LDAP Password: 
dn: olcDatabase={1}hdb,cn=config
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=nieco
,dc=sk" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=nieco,dc=sk" write by * read

TLS a SSL

Ak sa prihlasujeme k OpenLDAP serveru, je vhodné to robiť pomocou šifrovaného pripojenia. Toto je možné zabezpečiť pomocou použitia Transport Layer Security (TLS) a/alebo Secure Sockets Layer (SSL).

Prvý krok, ktorý je potrebné vykonať, je vytvorenie certifikátu. Viac informácii o tejto téme nájdeme v časti “Certifikáty” a v časti “Certifikačná autorita”.

Keď máme nainštalovaný certifikát, kľuč a certifikát CA, použijeme nástroj ldapmodify, ktorým pridáme nové nastavenia:

ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password:

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/server.crt
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/server.key


modifying entry "cn=config"
[Note]

Upravte názvy server.crt, server.key a cacert.pem na také, aké používate.

Ako ďalšie otvoríme súbor /etc/default/slapd a odpoznámkujeme riadok SLAPD_SERVICES:

SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"

Teraz povolíme používateľovi menom openldap prístup k certifikátu:

sudo adduser openldap ssl-cert
sudo chgrp ssl-cert /etc/ssl/private/server.key
[Note]

Ak /etc/ssl/private a /etc/ssl/private/server.key majú rozdielne nastavené práva, prispôsobte podľa toho príkazy.

Nakoniec reštartujeme slapd:

sudo /etc/init.d/slapd restart

Odteraz démon slapd bude akceptovať aj šifrované LDAPS pripojenia a bude môcť použiť STARTTLS počas autentifikácie.

TLS Replikácia

Ak sme medzi servermi nastavili Syncrepl, je rozumné zašifrovať replikačnú komunikáciu pomocou Transport Layer Security (TLS). Viac informácii o replíkácii nájdeme v časti “Replikácia LDAP”.

Po nastavení replikácie pokračujeme inštrukciami v časti “TLS a SSL”. Z oboch častí vyplývajú dôsledky, ktoré by sme mali mať na zreteli:

  • Konfiguráciu stačí upraviť len na jednom serveri.
  • Cesta k certifikátu a kľúču musí byť na všetkých serveroch rovnaká.

Na každom replikačnom serveri teda: nainštalujeme certifikát, upravíme súbor /etc/default/slapd a reštartujeme slapd.

Keď sme TLS nastavili na každom serveri, zmeníme replikáciu cn=config zadaním nasledujúceho príkazu:

ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password: 

dn: olcDatabase={0}config,cn=config
replace: olcSyncrepl
olcSyncrepl: {0}rid=001 provider=ldap://ldap01.nieco.sk binddn="cn=admin,cn
=config" bindmethod=simple credentials=tajne searchbase="cn=config" type=refre
shAndPersist retry="5 5 300 5" timeout=1 starttls=yes
olcSyncrepl: {1}rid=002 provider=ldap://ldap02.nieco.sk binddn="cn=admin,cn
=config" bindmethod=simple credentials=tajne searchbase="cn=config" type=refre
shAndPersist retry="5 5 300 5" timeout=1 starttls=yes


modifying entry "olcDatabase={0}config,cn=config"

Teraz upravíme replikáciu rozhrania databázy:

ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password:

dn: olcDatabase={1}hdb,cn=config
replace: olcSyncrepl
olcSyncrepl: {0}rid=003 provider=ldap://ldap01.nieco.sk binddn="cn=admin,dc=nieco,dc=
sk" bindmethod=simple credentials=tajne searchbase="dc=nieco,dc=sk" type=r
efreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 starttls=yes
olcSyncrepl: {1}rid=004 provider=ldap://ldap02.nieco.sk binddn="cn=admin,dc=nieco,dc=
sk" bindmethod=simple credentials=tajne searchbase="dc=nieco,dc=sk" type=r
efreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 starttls=yes


modifying entry "olcDatabase={1}hdb,cn=config"

Ak adresa stanice LDAP servera nesúhlasí s FQDN v certifikáte, mali by sme otvoriť súbor /etc/ldap/ldap.conf a pridať nasledujúce TLS nastavenia:

TLS_CERT /etc/ssl/certs/server.crt
TLS_KEY /etc/ssl/private/server.key
TLS_CACERT /etc/ssl/certs/cacert.pem

Nakoniec reštartujeme slapd na každom serveri:

sudo /etc/init.d/slapd restart

LDAP autentifikácia

Keď máme funkčný LDAP server, balíky auth-client-config a libnss-ldap nám pomôžu prekonať ťažkosti pri nastavovaní Ubuntu klientov tak, aby sa prihlasovali pomocou LDAP. Ak chceme balíky nainštalovať, zadáme:

sudo apt-get install libnss-ldap

Počas inštalácie bude potrebné zadať parametre pripojenia k LDAP serveru.

Ak sa pomýlime pri zadávaní informácií, môžeme dialóg vyvolať znova pomocou príkazu:

sudo dpkg-reconfigure ldap-auth-config

Hodnoty, ktoré zadáme do dialógu, môžeme vidieť v súbore /etc/ldap.conf. Ak náš server vyžaduje nastavenie, ktoré sa nenachádza v dialógu, môžeme ho v tomto súbore doplniť.

Teraz, keď je libnss-ldap nakonfigurované, zapneme pomocou auth-client-config LDAP profil:

sudo auth-client-config -t nss -p lac_ldap
  • -t: zmení iba /etc/nsswitch.conf.
  • -p: meno profilu, ktoré sa má zapnúť alebo vypnúť.
  • lac_ldap: profil auth-client-config, ktorý je časťou balíka ldap-auth-config.

Použitím nástroja pam-auth-update nastavíme systém tak, aby používal na autentifikáciu LDAP:

sudo pam-auth-update

Z ponuky pam-auth-update vyberieme LDAP a ktorékoľvek ďalšie autentifikačné mechanizmy, ktoré ešte potrebujeme.

Teraz by sme mali byť schopný prihlásiť používateľa, ktorý je uložený v LDAP adresáre.

[Note]

Ak sa chystáte použiť LDAP na uloženie používateľov systému Samba, bude potrebné nastaviť server tak, aby na autentifikáciu využíval LDAP. Viac informácii sa dozviete v časti “Samba a LDAP”.

Správa používateľov a skupín

Balík ldap-utils obsahuje viacero nástrojov na správu adresára, ale pri potrebe nastavenia dlhších reťazcov môže byť ich použitie ťažkopádne. Balík ldapscripts obsahuje konfiguračné skripty na správu LDAP používateľov a skupín.

Ak tento balíček chceme nainštalovať, zadáme:

sudo apt-get install ldapscripts

Potom otvoríme konfiguračný súbor /etc/ldapscripts/ldapscripts.conf a odkomentujeme a zmeníme nasledujúce riadky tak, aby zodpovedali nášmu prostrediu:

SERVER=localhost
BINDDN='cn=admin,dc=nieco,dc=sk'
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
SUFFIX='dc=nieco,dc=sk'
GSUFFIX='ou=Skupiny'
USUFFIX='ou=Ludia'
MSUFFIX='ou=Pocitace'
GIDSTART=10000
UIDSTART=10000
MIDSTART=10000

Teraz vytvoríme súbor ldapscripts.passwd, aby sme umožnili autentifikovaný prístup k adresáru:

sudo sh -c "echo -n 'tajne' > /etc/ldapscripts/ldapscripts.passwd"
sudo chmod 400 /etc/ldapscripts/ldapscripts.passwd
[Note]

Slovo “tajne” nahraďte aktuálnym heslom LDAP administrátora.

Odteraz sú skripty ldapscripts pripravené pomôcť nám pri správe adresára. Nasledujúce príklady hovoria o tom, ako sa skripty používajú:

  • Vytvorenie nového používateľa:
    sudo ldapadduser juro pokus
    Tento príkaz vytvorí používateľa s uid juro a nastaví jeho hlavnú skupinu (gid) na pokus
  • Zmena hesla:
    sudo ldapsetpasswd juro
    Changing password for user uid=juro,ou=Ludia,dc=nieco,dc=sk
    New Password:
    New Password (verify):
  • Odstránenie používateľa:
    sudo ldapdeleteuser juro
  • Pridanie skupiny:
    sudo ldapaddgroup qa
  • Odstránenie skupiny:
    sudo ldapdeletegroup qa
  • Pridanie používateľa do skupiny:
    sudo ldapaddusertogroup juro qa
    Teraz sa môžeme presvedčiť, že atribút memberUid skupiny qa bude obsahovať hodnotu juro.
  • Odstránenie používateľa zo skupiny:
    sudo ldapdeleteuserfromgroup juro qa
    Z atribútu memberUid skupiny qa by mal byť juro teraz odstránený.
  • Skript ldapmodifyuser umožňuje pridať, odstrániť alebo nahradiť atribúty používateľa. Skript používa rovnakú syntax ako nástroj ldapmodify. Napríklad:
    sudo ldapmodifyuser juro

    # About to modify the following entry :
    dn: uid=juro,ou=Ludia,dc=nieco,dc=sk
    objectClass: account
    objectClass: posixAccount
    cn: juro
    uid: juro
    uidNumber: 1001
    gidNumber: 1001
    homeDirectory: /home/juro
    loginShell: /bin/bash
    gecos: juro
    description: User account
    userPassword:: e1NTSEF9eXFsTFcyWlhwWkF1eGUybVdFWHZKRzJVMjFTSG9vcHk=

    # Enter your modifications here, end with CTRL-D.
    dn: uid=juro,ou=Ludia,dc=nieco,dc=sk

    replace: gecos
    gecos: Juraj Jánošík

    Atribút gecos by mal mať teraz hodnotu “Juraj Jánošík”.
  • Ďalšou obrovskou výhodou balíka ldapscripts je využívanie systémových šablón. Šablóny umožňujú prispôsobiť atribúty používateľa, skupiny a počítača. Ak chceme napríklad použiť šablónu user, otvoríme súbor /etc/ldapscripts/ldapscripts.conf a pridáme riadok:
    UTEMPLATE="/etc/ldapscripts/ldapadduser.template"
    Vzorové šablóny sa nachádzajú v priečinku /etc/ldapscripts. Skopírujeme súbor  ldapadduser.template.sample do /etc/ldapscripts/ldapadduser.template:
    sudo cp /etc/ldapscripts/ldapadduser.template.sample /etc/ldapscripts/ldapadduser.template
    Otvoríme novú šablónu a upravíme príslušné atribúty. Nasledujúca šablóna slúži na vytváranie nových používateľov s prednastaveným atribútom objectClass na hodnotu inetOrgPerson:
    dn: uid=<user>,<usuffix>,<suffix>
    objectClass: inetOrgPerson
    objectClass: posixAccount
    cn: <user>
    sn: <ask>
    uid: <user>
    uidNumber: <uid>
    gidNumber: <gid>
    homeDirectory: <home>
    loginShell: <shell>
    gecos: <user>
    description: User account
    title: Employee
    Všimnime si použitie <otázky> pre cn hodnoty. Použitím <otázky> prinútime nástroj ldapadduser aby sa opýtal na hodnotu atribútu pri vytváraní používateľa.

Existuje viac užitočných skriptov. Ak chceme zobraziť ich zoznam, zadáme príkaz: dpkg -L ldapscripts | grep bin

Zdroje

  • Viac informácii je na stránke OpenLDAP Home Page
  • Možte si tiež pozrieť slovenský preklad domovskej stránky OpenLDAP
  • Aj napriek svojmu veku je významným zdrojom podrobných informácii o LDAP O'Reillyho LDAP System Administration
  • Kniha vydavateľstva Packt - Mastering OpenLDAP je skvelou príručkou, ktorá obsahuje informácie o novších verziách OpenLDAP.
  • Viac informácii o auth-client-config je na man stránke: man auth-client-config.
  • Ďalšie detaily o balíku ldapscripts sú na man stránkach: man ldapscripts, man ldapadduser, man ldapaddgroup, etď.