26.7 LDAP-kiszolgáló beállítása kézzel

A telepített rendszerben található egy teljes konfigurációs fájl az LDAP-kiszolgáló számára, amely az /etc/openldap/slapd.conf. Az alábbiakban röviden leírjuk az egyes bejegyzéseket és elmagyarázzuk az esetleg szükséges módosításokat. A kettoskereszt (#) karakter után írt bejegyzések nem aktívak. Az aktiválásukhoz törölni kell ezt a megjegyzés karaktert.

26.7.1 Az slapd.conf általános direktívái

Példa 26-2 slapd.conf: Beágyazási direktíva sémákhoz

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/rfc2307bis.schema
include         /etc/openldap/schema/yast.schema

Az slapd.conf elso direktívája (Példa 26-2) azt a sémát adja meg, amelynek alapján az LDAP-címtár szervezodik. A core.schema bejegyzés kötelezo. A további szükséges sémákat ehhez a direktívához kell fuzni. Ezzel kapcsolatos információ a mellékelt OpenLDAP-dokumentációban található.

Példa 26-3 slapd.conf: pidfile és argsfile

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

Ez a két fájl tartalmazza az slapd folyamat PID-jét (folyamatazonosítóját) és egyes paramétereit, amelyekkel el lett indítva. Itt nincs szükség módosításra.

Példa 26-4 slapd.conf: Hozzáférés-vezérlés

# 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!

A Példa 26-4 ábrán látható az slapd.conf azon részlete, amely a kiszolgáló LDAP-címtárának hozzáférési jogosultságait szabályozza. Az slapd.conf általános részében megadott beállítások addig érvényesek, amíg az adatbázis-specifikus részben egy egyéni hozzáférési szabály felül nem írja oket. Ezek felülírják az általános deklarációkat. Az itt látható módon, minden felhasználó jogosult olvasni a címtárat, de csak a rendszergazda (rootdn) jogosult írni bele. Az LDAP hozzáférés-vezérlése meglehetosen összetett folyamat. Az alábbi tanácsok talán segítenek:

  • Minden hozzáférési szabály az alábbi módon épül fel:

    access to <what> by <who> <access>
  • A what helyére kell írni azt az objektumot vagy attribútumot, amelyhez a hozzáférést engedélyezi. A független címtárágakat külön szabályokkal kell védeni, explicit módon. Reguláris kifejezések használatával a címtárfa több része is feldolgozható egyetlen szabállyal. Az slapd a szabályokat abban a sorrendben értékeli ki, ahogy azok a konfigurációs fájlban szerepelnek. Az általánosabb szabályokat a speciálisabbak után kell venni – az slapd az elso illeszkedo szabályt fogja alkalmazni és a többit figyelmen kívül hagyja.

  • A who helyére kerül az, hogy ki kap hozzáférést a what részhez. Itt is használhatók reguláris kifejezések. Megint csak, az slapd megszakítja a who rész kiértékelését az elso illeszkedésnél, tehát a specifikusabb szabályokat az általánosabbak elé kell venni. A Táblázat 26-2 táblázatban felsorolt lehetoségek használhatók.

    Táblázat 26-2 Felhasználói csoportok és hozzáférési jogaik

    Címke

    Hatókör

    *

    Minden felhasználó, kivétel nélkül

    anonymous

    A nem hitelesített, (anonim) felhasználók

    users

    A hitelesített felhasználók

    self

    A célobjektumhoz csatlakozó felhasználók

    dn.regex=<regex>

    A reguláris kifejezésnek megfelelo felhasználók

  • Az access helyére a hozzáférés típusa kerül. 2A Táblázat 26-3 táblázatban felsorolt lehetoségek használhatók.

    Táblázat 26-3 Hozzáférés típusa

    Címke

    Hozzáférési kör

    none

    Nincs hozzáférés

    auth

    A kiszolgálóhoz kapcsolódás

    compare

    Összehasonlítási hozzáférés

    search

    Jogosultság keresési szurok használatára

    read

    Olvasási hozzáférés

    write

    Írási hozzáférés

    Az slapd összehasonlítja a kliens által kért hozzáférési jogokat az slapd.conf fájlban megadottakkal. A kliens akkor kap hozzáférést, ha a szabályok a kértnél magasabb vagy azzal egyenlo hozzáférést engedélyeznek. Ha a kliens magasabb szintu hozzáférést kér, mint amit a szabályok engedélyeznek, akkor a kiszolgáló megtagadja a hozzáférést.

A Példa 26-5 ábrán egy egyszeru hozzáférés-vezérlési beállítás látható, amely önkényesen alakítható reguláris kifejezések használatával.

Példa 26-5 slapd.conf: Példa hozzáférés-vezérlésre

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

Ez a szabály azt jelenti, hogy csak a megfelelo rendszergazdának van írási joga egy ou (szervezeti egység) bejegyzéshez. A többi hitelesített felhasználó olvasási jogot kap, mindenki más pedig semmilyet.

TANÁCS: Hozzáférési szabályok kialakítása

Ha nincs access to szabály, vagy illeszkedo by direktíva, akkor a hozzáférés meg lesz tagadva. Csak a kifejezetten megadott hozzáférési jogok lesznek megadva. Ha egyáltalán nincsenek szabályok megadva, akkor az alapelv az, hogy a rendszergazda kap írási jogot, és mindenki más olvasásit.

Részletes információ és az LDAP hozzáférési jogok példakonfigurációja a telepített openldap2 csomag online dokumentációjában található.

Azon túl, hogy a központi kiszolgálókonfigurációs fájl (az slapd.conf) segítségével beállíthatók hozzáférési jogok, létezik az úgynevezett hozzáférés-vezérlési információ (access control information, ACI) funkció is. Az ACI lehetové teszi az egyes objektumok hozzáférési adatainak tárolását magában az LDAP-címtárfában. Ez a fajta hozzáférés-vezérlés még nem nagyon elterjedt, és még maguk a fejlesztok is kísérletinek tekintik. További információ: http://www.openldap.org/faq/data/cache/758.html.

26.7.2 Az slapd.conf adatbázis-specifikus direktívái

Példa 26-6 slapd.conf: adatbázis-specifikus direktívák

database bdb
suffix "dc=example,dc=com" 
checkpoint      1024    5
cachesize       10000
rootdn "cn=Administrator,dc=example,dc=com" 
# 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
overlay ppolicy
ppolicy_default "cn=Default Password Policy,dc=example,dc=com"
ppolicy_hash_cleartext
ppolicy_use_lockout

Az adatbázis típusa (a jelen esetben egy Berkeley adatbázis) a szakasz elso sorában van beállítva (lásd: Példa 26-6).

A suffix (utótag) rész határozza meg, hogy ez a kiszolgáló az LDAP-címtárfa mely részéért felelos.

A checkpoint (ellenorzopont) határozza meg azt az adatmennyiséget (kilobájtban), amelyik a tranzakciós naplóban marad, mielott az a tényleges adatbázisba íródna, illetve a két írási muvelet közötti idot (percben).

A cachesize (gyorsítótár mérete) paraméter adja meg, hogy hány objektum tárolódik az adatbázis gyorsítótárában.

A rootdn adja meg, hogy ki rendelkezik rendszergazdai jogokkal a kiszolgálót illetoen. Az itt megadott felhasználónak nem kell LDAP-bejegyzéssel rendelkeznie, és nem is kell léteznie normál felhasználóként.

A rootpw paraméter adja meg a rendszergazda jelszavát. A secret használata helyett megadható a slappasswd által a rendszergazdai jelszóból készített kivonat is.

A directory direktíva adja meg a fájlrendszer azon könyvtárát, amelyben a kiszolgálón az adatbázis könyvtárai tárolódnak.

Az utolsó direktíva, az index objectClass eq azt jelenti, hogy index készül minden objektumosztályról. A tapasztalat szerint a felhasználók által leggyakrabban keresett attribútumok is felvehetok ide.

Az overlay ppolicy jelszókezelési mechanizmusok egy rétegével bovíti a rendszert. A ppolicy_default adja meg a használandó pwdPolicy objektum DN-jét, ha egy adott felhasználói bejegyzésre semmilyen más irányelv nem vonatkozik. Ha nincs specifikus irányelv egy adott bejegyzéshez, és nincs alapértelmezés sem, akkor semmilyen irányelv nem lesz érvényesítve. A ppolicy_hash_cleartext azt adja meg, hogy a hozzáadási és módosítási kérések nyílt szövegu jelszavaiból eloször kivonat készül, mielott az adatbázisban tárolódnának. E paraméter használata esetén célszeru letiltani az összehasonlítási, keresési és olvasási hozzáférést a userPassword attribútumhoz a címtár összes felhasználója számára, mivel a ppolicy_hash_cleartext sérti az X.500/LDAP információs modellt. A ppolicy_use_lockout meghatározott hibakódot küld, amikor egy kliens egy zárolt fiókhoz próbál csatlakozni. Kiemelt biztonságú rendszerekben érdemes letiltani ezt a funkciót, mivel a hibakódból a támadók esetleg értékes információt nyerhetnek ki.

Az adatbázisra vonatkozóan itt megadott egyéni Access szabályok felülírják az általános Access szabályokat.

26.7.3 A kiszolgálók elindítása és leállítása

Az LDAP-kiszolgálót a teljes beállítása, és a Szakasz 26.8, LDAP-adatok kézi adminisztrációja részben leírtak szerint az összes szükséges bejegyzés felvétele után a root tudja elindítani az rcldap start paranccsal. A kiszolgáló kézi leállításához írja be, hogy rcldap stop. A futó LDAP-kiszolgáló állapotáról információ az rcldap status paranccsal kérheto.

A YaST futásiszint-szerkesztoje (Szakasz 14.2.3, Rendszerszolgáltatások (futási szintek) beállítása a YaST segítségével) is használható a kiszolgáló automatikus elindításához és leállításához a rendszer indításakor és leállításakor. Lehet továbbá megfelelo hivatkozásokat készíteni az indító és leállító parancsfájlokra az insserv paranccsal egy konzolból (ennek leírása: Szakasz 14.2.2, Init parancsfájlok).