25.3. Konfigurace LDAP serveru pomocí slapd.conf

Konfigurace LDAP serveru se nachází v souboru /etc/openldap/slapd.conf. Zde jsou popsány jednotlivé položky konfigurace. Položky začínající znakem # jsou zakomentované a tedy neaktivní. Pokud je chcete aktivovat, musíte znak smazat.

25.3.1. Globální nastavení v slapd.conf

Příklad 25.2. slapd.conf: Include příkaz pro schéma


include /etc/openldap/schema/core.schema
include /etc/openldap/schema/inetorgperson.schema

První příkazy slapd.conf zobrazené v příkladu 25.2 – „slapd.conf: Include příkaz pro schéma“ určují schéma LDAP adresáře. K základnímu povinnému schématu (zde core.schema) lze přidávat i dodatečná schémata (v našem případě inetorgperson.schema). Další schémata naleznete v adresáři /etc/openldap/schema. Pro nahrazení služby NIS službou LDAP budete potřebovat dvě schémata – rfc2307.schema a cosine.schema. Informace o této problematice najdete v dokumentaci OpenLDAP.

Příklad 25.3. slapd.conf: pidfile a argsfile


pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args

Tyto dva soubory obsahují PID (process ID) a některé argumenty, se kterými je spouštěn slapd. Žádné změny zde nejsou potřeba.

Příklad 25.4. slapd.conf: Kontrola přístupu


# Sample Access Control
#       Allow read access of root DSE
# Allow self write access
#       Allow authenticated users read access
#       Allow anonymous users to authenticate
# access to dn="" by * read
  access to * by self write
              by users read
              by anonymous auth
#
# if no access controls are present, the default is:
#       Allow read by all
#
# rootdn can always write!

Příklad 25.4 – „slapd.conf: Kontrola přístupu“ ukazuje část souboru slapd.conf, která se týká nastavení přístupu k adresáři LDAP na serveru. Nastavení uvedená zde v globální sekci souboru slapd.conf jsou platná až do okamžiku vytvoření nastavení v části specifické pro databázi. Ta mají přednost před globálními nastaveními. V našem příkladě mají všichni uživatelé práva pro čtení, ale pouze administrátor (rootdn) může do této databáze zapisovat. Nastavení přístupových práv v LDAP je poměrně složité téma, nabízíme proto několik tipů:

  • Každé pravidlo pro přístup má následující strukturu:

    access to <what> by <who> <access>
  • what nahraďte objektem nebo atributem, ke kterému se má přistupovat. Jednotlivé větve adresáře mohou být chráněny vlastními pravidly. Pokud chcete, můžete chránit části adresáře pomocí regulárních výrazů. Program slapd vyhodnocuje všechna pravidla v pořadí, v jakém jsou uvedena v konfiguračním souboru. Obecnější pravidla by měla být uvedena později – uplatněno je první platné pravidlo, ostatní jsou ignorována.

  • who určuje, komu bude přiznán přístup do oblastí určených pomocí what. Lze použít i regulární výrazy. slapd opět ukončí vyhodnocování who po nalezení první shody, proto by obecnější pravidla měla být uvedena později. Možná jsou nastavení uvedená v tabulce 25.2 – „Uživatelské skupiny a jejich přístupová práva“

    Tabulka 25.2. Uživatelské skupiny a jejich přístupová práva

    Tag

    Význam

    *

    všichni uživatelé bez výjimky

    anonymous

    neautentizovaní uživatelé

    users

    autentizovaní uživatelé

    self

    uživatelé spojeni s cílovým objektem

    dn.regex=<regex>

    všichni uživatelé vyhovující regulárnímu výrazu

  • access určuje typ přístupu. Možná nastavení najdete v tabulce 25.3 – „Typy přístupu“.

    Tabulka 25.3. Typy přístupu

    Tag

    Význam

    none

    bez přístupu

    auth

    spojení se serverem

    compare

    porovnávání

    search

    vyhledávání pomocí filtrů

    read

    čtení

    write

    zápis

    slapd porovnává požadavky klientů s nastavením přístupových práv v souboru slapd.conf. Klientovi je přístup povolen jen v případě, že splňuje požadavky pro přístup (má požadovaná nebo vyšší práva). Pokud klient vyžaduje vyšší práva, než mu jsou přiřazena, je mu odmítnut přístup.

Příklad 25.5 – „slapd.conf: Příklad nastavení přístupových práv“ ukazuje jednoduché nastavení přístupových práv pomocí regulárního výrazu:

Příklad 25.5. slapd.conf: Příklad nastavení přístupových práv


access to  dn.regex="ou=([^,]+),dc=suse,dc=de"
by dn.regex="cn=administrator,ou=$1,dc=suse,dc=de" write
by user read
by * none

V tomto příkladu má práva zápisu do záznamu ou pouze administrátor. Všichni ostatní autentizovaní uživatelé mají práva ke čtení. Ostatní uživatelé nemají žádný přístup.

[Tip]Vytvoření přístupových pravidel

Pokud chybí pravidlo access to nebo neexistuje vyhovující proměnná by, není přístup povolen. Jsou přiznána jen výslovně uvedená přístupová práva. Jestliže nezadáte vůbec žádné pravidlo, nastaví se výchozí přístupová práva, tj. právo zápisu pro administrátora a právo čtení pro všechny ostatní.

Podrobné informace a příklady nastavení přístupových práv k LDAP naleznete v dokumentaci balíčku openldap2.

Kromě nastavení přístupových práv v centrálním konfiguračním souboru (slapd.conf) je k dispozici také ACI (Access Control Information). ACI umožňuje ukládání informací o jednotlivých objektech LDAP stromu. Tento způsob kontroly přístupu je však stále ještě považován za experimentální. Viz http://www.openldap.org/faq/data/cache/758.html.

25.3.2. Nastavení specifická pro databázi v souboru slapd.conf

Příklad 25.6. slapd.conf: Nastavení specifická pro databázi


database ldbm
suffix "dc=suse,dc=de"
rootdn "cn=admin,dc=suse,dc=de"
# Cleartext passwords, especially for the rootdn, should
# be avoided.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw secret
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd/tools. Mode 700 recommended.
directory /var/lib/ldap
# Indices to maintain
index   objectClass     eq

Na prvním řádku této sekce (viz 25.6 – „slapd.conf: Nastavení specifická pro databázi“) je určen typ databáze (v našem případě LDBM). Na druhé řádce (suffix) je určeno, za jakou část LDAP stromu server zodpovídá. Následující rootdn určuje administrátora serveru. Zde nastavený uživatel nepotřebuje mít LDAP záznam nebo existovat jako běžný uživatel. Heslo administrátora je nastaveno v položce rootpw. Místo secret můžete použít hash administrátorského hesla vytvořený pomocí programu slappasswd. Položka directory určuje adresář (v souborovém systému), ve kterém je uložena databáze. Poslední část, index objectClass eq, určuje, že index bude udržován pro všechny objektové třídy. Podle zkušeností zde lze nastavit atributy, které uživatelé nejčastěji vyhledávají. Access pravidla nastavená v této sekci se použijí místo pravidel globálních.

25.3.3. Spuštění a zastavení serveru

Je-li server plně nakonfigurovaný a jsou-li vytvořeny všechny požadované záznamy, jak je popsáno v sekci 25.4 – „Správa dat v LDAP adresáři“, spusťte server jako uživatel root příkazem rcldap start. Ručně server zastavíte příkazem rcldap stop. Stav běžícího LDAP serveru zjistíte příkazem rcldap status.

Pokud chcete LDAP server spouštět automaticky při startu systému, použijte k nastavení editor úrovní běhu systému nástroje YaST (viz 8.6 – „Editor úrovní běhu“). Automatické spouštění při startu systému můžete zajistit také pomocí příkazu insserv (viz 8.5 – „Init skripty“).