OpenLDAP kiszolgáló

Az LDAP jelentése: könnyűsúlyú címtár-hozzáférési protokoll - ez az X.500 protokoll egyszerűsített változata. Ebben a szakaszban a címtár hitelesítésre lesz felhasználva. Ezzel együtt az LDAP számos módon használható: hitelesítés, megosztott könyvtár (levelezőklienseknek), címtár stb.

Az LDAP röviden azzal jellemezhető, hogy minden információ egy faszerkezetben található. Az OpenLDAP segítségével önállóan megállapíthatja a címtár faszerkezetét (a címtárinformációs fát, DIT). Egy egyszerű fával kezdünk, amely két csomópontot tartalmaz a gyökér alatt:

  • A „People” csomópont, amelyben a felhasználók találhatók

  • A „Groups” csomópont, amelyben a csoportjai lesznek tárolva

Mielőtt elkezdi, meg kell határoznia az LDAP címtár gyökerét. Alapértelmezésben a fát a teljes képzésű tartománynév (FQDN) határozza meg. Ha a tartomány a példa.hu (ezt fogjuk használni a példában), akkor a gyökércsomópont dc=példa,dc=hu.

Telepítés

Első lépésként telepítse az slapd nevű OpenLDAP kiszolgálódémont és az LDAP-kezelő segédprogramokat tartalmazó ldap-utils csomagot:

sudo apt-get install slapd ldap-utils

Alapértelmezésben a slapd a slapd démon futtatásához szükséges minimális beállításokkal van konfigurálva.

A következő szakaszok példái megegyeznek a kiszolgáló tartománynevével. Ha például a gép teljes képzésű tartományneve (FQDN) ldap.példa.hu, akkor az alapértelmezett utótag dc=példa,dc=hu lesz.

Az LDAP feltöltése

Az OpenLDAP önálló adatbázist használ, amely tartalmazza a cn=config könyvtárinformációs fát (DIT). A cn=config DIT segítségével dinamikusan kerül beállításra a slapd démon, lehetővé téve a sémadefiníciók, indexek, ACL-ek stb. a szolgáltatás leállítása nélküli módosítását.

A háttér cn=config címtár csak minimális beállításokkal rendelkezik, és az előtét feltöltése érdekében további beállításokat kell végezni. Az előtét egy „klasszikus” sémával lesz feltöltve, amely kompatibilis címtáralkalmazásokkal és a Unix Posix fiókokkal. A Posix fiókok lehetővé teszik a hitelesítést számos alkalmazás, például webes alkalmazások, levéltovábbító (MTA) alkalmazások stb. felé.

[Megjegyzés]

A külső alkalmazások számára az LDAP segítségével történő hitelesítéshez mindet külön be kell állítani. A részletekért nézze meg az adott alkalmazások dokumentációját.

[Megjegyzés]

Ne feledje el az alábbi példákban a dc=példa,dc=hu kifejezést az Ön LDAP konfigurációjának megfelelően módosítani.

Első lépésként néhány sémafájlt kell betölteni. Adja ki a következő parancsot:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif

Ezután másolja az alábbi példa LDIF-fájlt a rendszerére backend.példa.hu.ldif néven:

# Dinamikus backend modulok betöltése
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb

# Adatbázis-beállítások
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=példa,dc=hu
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=példa,dc=hu
olcRootPW: titok
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=példa,dc=hu" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=példa,dc=hu" write by * read

[Megjegyzés]

A olcRootPW: titok sorban adja meg az admin jelszavát.

Most adja az LDIF-fájlt a címtárhoz:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.példa.hu.ldif

Az előtét címtár készen áll a feltöltésre. Hozzon létre egy frontend.példa.hu.ldif nevű fájlt a következő tartalommal:

# A tartomány felső szintű objektumának létrehozása
dn: dc=példa,dc=hu
objectClass: top
objectClass: dcObject
objectclass: organization
o: Példaszervezet
dc: Example
description: LDAP példa 

# Admin felhasználó.
dn: cn=admin,dc=példa,dc=hu
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP adminisztrátor
userPassword: titok

dn: ou=people,dc=példa,dc=hu
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=példa,dc=hu
objectClass: organizationalUnit
ou: groups

dn: uid=john,ou=people,dc=példa,dc=hu
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 1000
gidNumber: 10000
userPassword: jelszó
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: john.doe@példa.hu
postalCode: 31000
l: Toulouse
o: Example
mobile: +33 (0)6 xx xx xx xx
homePhone: +33 (0)5 xx xx xx xx
title: Rendszeradminisztrátor
postalAddress: 
initials: JD

dn: cn=example,ou=groups,dc=példa,dc=hu
objectClass: posixGroup
cn: example
gidNumber: 10000

Ebben a példában a címtárszerkezet, egy felhasználó és egy csoport került beállításra. Más példákban találkozhat az objectClass: top hozzáadásával minden bejegyzéshez, de mivel ez az alapértelmezett viselkedés, így nem szükséges mindig felvenni.

Vegye fel a bejegyzéseket az LDAP-címtárba:

sudo ldapadd -x -D cn=admin,dc=példa,dc=hu -W -f frontend.példa.hu.ldif

Az ldapsearch segédprogrammal ellenőrizhető, hogy a tartalom megfelelően lett-e felvéve. Hajtsa végre a következő keresést az LDAP-címtárban:

ldapsearch -xLLL -b "dc=példa,dc=hu" uid=john sn givenName cn

dn: uid=john,ou=people,dc=példa,dc=hu
cn: John Doe
sn: Doe
givenName: John

Rövid magyarázat:

  • -x: nem használja a SASL hitelesítési módszert, amely alapértelmezett.

  • -LLL: az LDIF sémainformációk kiírásának kikapcsolása.

További beállítások

A cn=config fa az ldap-utils csomag segédprogramjaival manipulálható. Például:

  • Az ldapsearch segítségével nézze meg a fát, megadva a telepítéskor vagy újrakonfiguráláskor beállított admin jelszót:

    sudo ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
    
    
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    dn: cn=config
    
    dn: cn=module{0},cn=config
    
    dn: cn=schema,cn=config
    
    dn: cn={0}core,cn=schema,cn=config
    
    dn: cn={1}cosine,cn=schema,cn=config
    
    dn: cn={2}nis,cn=schema,cn=config
    
    dn: cn={3}inetorgperson,cn=schema,cn=config
    
    dn: olcDatabase={-1}frontend,cn=config
    
    dn: olcDatabase={0}config,cn=config
    
    dn: olcDatabase={1}hdb,cn=config
    
    

    A fenti kimenet a cn=config háttéradatbázis aktuális beállításaiból áll. A tényleges kimenet eltérhet.

  • A cn=config fa módosításához például felvehet egy új attribútumot az indexlistába az ldapmodify segítségével:

    sudo ldapmodify -Y EXTERNAL -H ldapi:///
    
    
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    dn: olcDatabase={1}hdb,cn=config
    add: olcDbIndex
    olcDbIndex: uidNumber eq
    
    modifying entry "olcDatabase={1}hdb,cn=config"
    
    

    A módosítások befejezése után nyomja meg a Ctrl+D billentyűkombinációt a kilépéshez a segédprogramból.

  • Az ldapmodify képes a változtatásokat fájlból is beolvasni. Hozzon létre egy uid_index.ldif nevű fájlt a következő tartalommal:

    dn: olcDatabase={1}hdb,cn=config
    add: olcDbIndex
    olcDbIndex: uid eq,pres,sub
    

    Ezután indítsa el az ldapmodify programot:

    sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f uid_index.ldif
    
    
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    modifying entry "olcDatabase={1}hdb,cn=config"
    
    

    A fájlt használó módszer nagy változtatások esetén hasznos.

  • További sémák felvétele a slapd démonba megköveteli a séma LDIF formátumúvá alakítását. Az

    1. Első lépésként hozza létre a schema_convert.conf konverziós fájlt a következő tartalommal:

      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. Ezután hozzon létre egy átmeneti könyvtárat a kimenet tárolásához:

      mkdir /tmp/ldif_output
      
    3. Most a slapcat segítségével konvertálja a sémafájlokat LDIF formátumúra:

      slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={5}dyngroup,cn=schema,cn=config" > /tmp/cn=dyngroup.ldif
      

      Adjust the configuration file name and temporary directory names if yours are different. It may be worthwhile to keep the ldif_output directory around in case you want to add additional schemas in the future.

      [Megjegyzés]

      The "cn={5}" index number may change according to the configuration ordering. To find out the correct number execute the following:

      slapcat -f schema_convert.conf -F /tmp/ldif_output -n 0 | grep dyngroup
      

      Replace dyngroup with the appropriate schema name.

    4. Szerkessze a /tmp/cn\=dyngroup.ldif fájlt, módosítsa a következő attribútumokat:

      dn: cn=dyngroup,cn=schema,cn=config
      ...
      cn: dyngroup
      

      Távolítsa el a következő sorokat a fájl aljáról:

      structuralObjectClass: olcSchemaConfig
      entryUUID: 10dae0ea-0760-102d-80d3-f9366b7f7757
      creatorsName: cn=config
      createTimestamp: 20080826021140Z
      entryCSN: 20080826021140.791425Z#000000#000#000000
      modifiersName: cn=config
      modifyTimestamp: 20080826021140Z
      
      [Megjegyzés]

      Az attribútumértékek eltérők lesznek, győződjön meg róla, hogy eltávolította az attribútumokat.

    5. Végül az ldapadd segédprogrammal vegye fel az új sémát a címtárba:

      sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/cn\=dyngroup.ldif
      

    Ezután létre kell jönnie egy dn: cn={4}dyngroup,cn=schema,cn=config bejegyzésnek a cn=config fában.

LDAP-replikáció

Az LDAP sok esetben gyorsan a hálózat kritikus szolgáltatásává válik. Egyre több szolgáltatás fogja hitelesítésre, jogosultságkezelésre, beállításokhoz stb. használni az LDAP-t. Ilyenkor hasznos lehet replikáció használatával beüzemelni egy redundáns rendszert.

A replikáció a Syncrepl alrendszer segítségével valósul meg. A Syncrepl fogyasztó-termelő modell használatával teszi lehetővé a címtár szinkronizálását. A termelő a címtár frissítéseit elküldi a fogyasztóknak.

Termelő beállítása

Az alábbi példa a single-master konfigurációt mutatja be. Ebben a konfigurációban egy OpenLDAP-kiszolgáló van beállítva termelőként, egy pedig fogyasztóként.

  1. Első lépésként állítsa be a termelő kiszolgálót. Másolja a következőket egy provider_sync.ldif nevű fájlba:

    # Indexek hozzáadása a frontend adatbázisához.
    dn: olcDatabase={1}hdb,cn=config
    changetype: modify
    add: olcDbIndex
    olcDbIndex: entryCSN eq
    -
    add: olcDbIndex
    olcDbIndex: entryUUID eq
    
    # A syncprov és accesslog modulok betöltése.
    dn: cn=module{0},cn=config
    changetype: modify
    add: olcModuleLoad
    olcModuleLoad: syncprov
    -
    add: olcModuleLoad
    olcModuleLoad: accesslog
    
    # Accesslog adatbázis meghatározása
    dn: olcDatabase={2}hdb,cn=config
    objectClass: olcDatabaseConfig
    objectClass: olcHdbConfig
    olcDatabase: {2}hdb
    olcDbDirectory: /var/lib/ldap/accesslog
    olcSuffix: cn=accesslog
    olcRootDN: cn=admin,dc=példa,dc=hu
    olcDbIndex: default eq
    olcDbIndex: entryCSN,objectClass,reqEnd,reqResult,reqStart
    
    # Accesslog adatbázis syncprov.
    dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
    changetype: add
    objectClass: olcOverlayConfig
    objectClass: olcSyncProvConfig
    olcOverlay: syncprov
    olcSpNoPresent: TRUE
    olcSpReloadHint: TRUE
    
    # syncrepl termelő az elsődleges adatbázishoz
    dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config
    changetype: add
    objectClass: olcOverlayConfig
    objectClass: olcSyncProvConfig
    olcOverlay: syncprov
    olcSpNoPresent: TRUE
    
    # az accesslog overlay meghatározásai az elsődleges adatbázishoz
    dn: olcOverlay=accesslog,olcDatabase={1}hdb,cn=config
    objectClass: olcOverlayConfig
    objectClass: olcAccessLogConfig
    olcOverlay: accesslog
    olcAccessLogDB: cn=accesslog
    olcAccessLogOps: writes
    olcAccessLogSuccess: TRUE
    # az accesslog adatbázis vizsgálata minden nap, és a 7 napnál régebbi bejegyzések törlése
    olcAccessLogPurge: 07+00:00 01+00:00
    
  2. Az slapd AppArmor profilját módosítani kell az accesslog adatbázis helyének megadásához. Szerkessze az /etc/apparmor.d/usr.sbin.slapd fájlt, és vegye fel a következőt:

      /var/lib/ldap/accesslog/ r,
      /var/lib/ldap/accesslog/** rwk,
    

    Ezután hozza létre a könyvtárat, töltse újra az apparmor profilt, és másolja át a DB_CONFIG fájlt:

    sudo -u openldap mkdir /var/lib/ldap/accesslog
    sudo -u openldap cp /var/lib/ldap/DB_CONFIG /var/lib/ldap/accesslog/
    sudo /etc/init.d/apparmor reload
    
    [Megjegyzés]

    A fenti sudo parancsok -u openldap kapcsolóval való használata hatására később nem kell az új könyvtár jogosultságait módosítania.

  3. Szerkessze a fájlt, és módosítsa az olcRootDN értékét a címtárának megfelelően:

    olcRootDN: cn=admin,dc=példa,dc=hu
    
  4. Ezután vegye fel az LDIF-fájlt az ldapadd segédprogram használatával:

    sudo ldapadd -Y EXTERNAL -H ldapi:/// -f provider_sync.ldif
    
  5. Indítsa újra a slapd démont:

    sudo /etc/init.d/slapd restart
    

A termelő kiszolgáló beállítása ezzel kész, ideje beállítani a fogyasztó kiszolgálót.

A fogyasztó beállítása

  1. A fogyasztó kiszolgálót állítsa be ugyanúgy, mint a termelőt, a Syncrepl beállítási lépéseket kivéve.

    Vegye fel a kiegészítő sémafájlt:

    sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
    sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
    sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
    

    Hozza létre vagy másolja át a termelő kiszolgálóról a backend.példa.hu.ldif fájlt.

    # Dinamikus backend modulok betöltése
    dn: cn=module,cn=config
    objectClass: olcModuleList
    cn: module
    olcModulepath: /usr/lib/ldap
    olcModuleload: back_hdb
    
    # Adatbázis-beállítások
    dn: olcDatabase=hdb,cn=config
    objectClass: olcDatabaseConfig
    objectClass: olcHdbConfig
    olcDatabase: {1}hdb
    olcSuffix: dc=példa,dc=hu
    olcDbDirectory: /var/lib/ldap
    olcRootDN: cn=admin,dc=példa,dc=hu
    olcRootPW: titok
    olcDbConfig: set_cachesize 0 2097152 0
    olcDbConfig: set_lk_max_objects 1500
    olcDbConfig: set_lk_max_locks 1500
    olcDbConfig: set_lk_max_lockers 1500
    olcDbIndex: objectClass eq
    olcLastMod: TRUE
    olcDbCheckpoint: 512 30
    olcAccess: to attrs=userPassword by dn="cn=admin,dc=példa,dc=hu" write by anonymous auth by self write by * none
    olcAccess: to attrs=shadowLastChange by self write by * read
    olcAccess: to dn.base="" by * read
    olcAccess: to * by dn="cn=admin,dc=példa,dc=hu" write by * read
    

    Vegye fel az LDIF-fájlt:

    sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.példa.hu.ldif
    
  2. Tegye ugyanezt a fenti frontend.példa.hu.ldif fájllal, és vegye fel:

    sudo ldapadd -x -D cn=admin,dc=példa,dc=hu -W -f frontend.példa.hu.ldif
    

    A két kiszolgáló most a Syncrepl beállításoktól eltekintve azonos beállításokkal rendelkezik.

  3. Most hozza létre a consumer_sync.ldif fájlt a következő tartalommal:

    # A syncprov modul betöltése.
    dn: cn=module{0},cn=config
    changetype: modify
    add: olcModuleLoad
    olcModuleLoad: syncprov
    
    # a syncrepl-hez kapcsolódó utasítások
    dn: olcDatabase={1}hdb,cn=config
    changetype: modify
    add: olcDbIndex
    olcDbIndex: entryUUID eq
    -
    add: olcSyncRepl
    olcSyncRepl: rid=0 provider=ldap://ldap01.példa.hu bindmethod=simple binddn="cn=admin,dc=példa,dc=hu" 
     credentials=titok searchbase="dc=példa,dc=hu" logbase="cn=accesslog" 
     logfilter="(&(objectClass=auditWriteObject)(reqResult=0))" schemachecking=on 
     type=refreshAndPersist retry="60 +" syncdata=accesslog
    -
    add: olcUpdateRef
    olcUpdateRef: ldap://ldap01.példa.hu
    

    Módosítsa a következő attribútumokat:

    • A ldap01.pelda.hu helyett használja saját kiszolgálója gépnevét.

    • binddn

    • credentials

    • searchbase

    • olcUpdateRef:

  4. Vegye fel az LDIF-fájlt a konfigurációs fába:

    sudo ldapadd -c -Y EXTERNAL -H ldapi:/// -f consumer_sync.ldif
    

Az előtét-adatbázisnak most már szinkronizálódnia kell a kiszolgálók között. Igény esetén további kiszolgálókat a fenti lépések alkalmazásával vehet fel.

[Megjegyzés]

A slapd démon alapértelmezésben a /var/log/syslog fájlba küldi a naplóinformációkat. Ha probléma lépne fel, ebben a fájlban találhat a hibák elhárításával kapcsolatos információkat. Ne feledjen el meggyőződni arról, hogy minden kiszolgáló ismerje saját teljes képzésű tartománynevét (FQDN). Ez az /etc/hosts fájlban állítható be egy ehhez hasonló sorral:

127.0.0.1	ldap01.példa.hu ldap01

.

ACL beállítása

A hitelesítés a jelszó mező elérését igényli, ennek alapértelmezésben nem szabad elérhetőnek lennie. Ahhoz, hogy a felhasználók megváltoztathassák saját jelszavukat a passwd vagy egyéb segédprogramokkal, a shadowLastChange mezőnek is elérhetőnek kell lennie, miután a felhasználó hitelesítette magát.

A cn=config fa hozzáférés-vezérlési listájának (ACL) megjelenítéséhez használja az ldapsearch segédprogramot:

sudo ldapsearch -c -Y EXTERNAL -H ldapi:/// -LLL -b cn=config olcDatabase=config olcAccess
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: olcDatabase={0}config,cn=config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
 ,cn=auth manage by * break

Az előtét fájához tartozó ACL megjelenítéséhez adja ki a következőt:

sudo ldapsearch -c -Y EXTERNAL -H ldapi:/// -LLL -b cn=config olcDatabase={1}hdb olcAccess

TLS és SSL

Az OpenLDAP kiszolgálóra való bejelentkezés legjobb módja a titkosított munkamenet használata. Ez elvégezhető TLS vagy SSL használatával is.

A folyamat első lépése egy tanúsítvány beszerzése vagy létrehozása. Mivel a slapd a gnutls programkönyvtár használatával lett fordítva, a certtool segédprogrammal hozzuk létre a tanúsítványokat.

  1. A következő parancs kiadásával telepítse a gnutls-bin csomagot:

    sudo apt-get install gnutls-bin
    
  2. Ezután hozzon létre egy személyes kulcsot a hitelesítésszolgáltató (CA) számára:

    sudo sh -c "certtool --generate-privkey > /etc/ssl/private/cakey.pem"
    
  3. Hozzon létre egy /etc/ssl/ca.info nevű információs fájlt a CA tanúsítvány önaláírásához a következő tartalommal:

    cn = Példacég
    ca
    cert_signing_key
    
  4. Ezután hozza létre az önaláírt CA tanúsítványt:

    sudo certtool --generate-self-signed --load-privkey /etc/ssl/private/cakey.pem \ --template /etc/ssl/ca.info --outfile /etc/ssl/certs/cacert.pem
    
  5. Hozzon létre személyes kulcsot a kiszolgáló számára:

    sudo sh -c "certtool --generate-privkey > /etc/ssl/private/ldap01_slapd_key.pem"
    
    [Megjegyzés]

    A fájlnévbe az ldap01 helyett a saját kiszolgálójának gépnevét írja. A tanúsítvány és kulcs az azokat használó gép és szolgáltatás után való elnevezése segít a fájlnevek és elérési utak rendben tartásában.

  6. Hozza létre az /etc/ssl/ldap01.info nevű információs fájlt a következő tartalommal a kiszolgáló tanúsítványának aláírásához a CA-val:

    organization = Példacég
    cn = ldap01.példa.hu
    tls_www_server
    encryption_key
    signing_key
    
  7. Hozza létre a kiszolgáló tanúsítványát:

    sudo certtool --generate-certificate --load-privkey /etc/ssl/private/ldap01_slapd_key.pem \
     --load-ca-certificate /etc/ssl/certs/cacert.pem --load-ca-privkey /etc/ssl/private/cakey.pem \
     --template /etc/ssl/ldap01.info --outfile /etc/ssl/certs/ldap01_slapd_cert.pem
    

Miután a tanúsítvány, a kulcs és a CA is telepítve lett, az ldapmodify parancs segítségével vegye fel az új beállításokat:

sudo ldapmodify -Y EXTERNAL -H ldapi:///
Enter LDAP Password:
dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/ldap01_slapd_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/ldap01_slapd_key.pem

modifying entry "cn=config"

[Megjegyzés]

Módosítsa az ldap01_slapd_cert.pem, ldap01_slapd_key.pem és cacert.pem neveket, ha szükséges.

Ezután szerkessze az /etc/default/slapd fájlt, vegye ki megjegyzésből a SLAPD_SERVICES beállítást:

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

Most az openldap felhasználónak hozzá kell férnie a tanúsítványhoz:

sudo adduser openldap ssl-cert
sudo chgrp ssl-cert /etc/ssl/private/ldap01_slapd_key.pem
sudo chmod g+r /etc/ssl/private/ldap01_slapd_key.pem
[Megjegyzés]

Ha az /etc/ssl/private és /etc/ssl/private/server.key fájlok jogosultságai eltérnek, akkor ennek megfelelően módosítsa a fenti parancsokat.

Végül indítsa újra az slapd démont:

sudo /etc/init.d/slapd restart

Az slapd démonnak ezután már figyelnie kell az LDAPS kapcsolatokra, és képesnek kell lennie a STARTTLS használatára a hitelesítéshez.

[Megjegyzés]

Ha azt tapasztalja, hogy a kiszolgáló nem indul el, akkor nézze meg a /var/log/syslog fájlt. Ha a következőhöz hasonló hibákat lát: main: TLS init def ctx failed: -1, akkor valószínűleg a beállítások hibásak. Ellenőrizze, hogy a tanúsítványt a fájlokban megadott hitelesítésszolgáltató írta alá, és hogy az ssl-cert csoportnak van olvasási joga a személyes kulcsra.

TLS replikáció

Ha beállította a kiszolgálók között a Syncrepl használatát, akkor bölcs lépés titkosítani a replikációs forgalmat TLS használatával. A replikáció beállításával kapcsolatos részletekért lásd: „LDAP-replikáció”.

Feltételezzük, hogy a fenti utasításokat követte, és létrehozott egy CA tanúsítványt és kiszolgálótanúsítványt a termelő kiszolgálón. Tegye a következőket a fogyasztó kiszolgáló tanúsítványának és kulcsának létrehozásához.

  1. Hozza létre a fogyasztó kiszolgáló új kulcsát:

    mkdir ldap02-ssl
    cd ldap02-ssl
    certtool --generate-privkey > ldap02_slapd_key.pem
    
    [Megjegyzés]

    Az új könyvtár létrehozása nem nélkülözhetetlen, de segít a fájlokat rendben tartani, és a fogyasztó kiszolgálóra másolás is egyszerűbb.

  2. Ezután hozzon létre egy ldap02.info nevű információs fájlt a fogyasztó kiszolgálóhoz, módosítsa az attribútumokat a helységnek és kiszolgálónak megfelelően:

    country = HU
    state = Pest
    locality = Budapest
    organization = Példacég
    cn = ldap02.példa.hu
    tls_www_client
    encryption_key
    signing_key
    
  3. Hozza létre a tanúsítványt:

    sudo certtool --generate-certificate --load-privkey ldap02_slapd_key.pem \ --load-ca-certificate /etc/ssl/certs/cacert.pem --load-ca-privkey /etc/ssl/private/cakey.pem \ --template ldap02.info --outfile ldap02_slapd_cert.pem
    
  4. Másolja a cacert.pem fájlt a könyvtárba:

    cp /etc/ssl/certs/cacert.pem .
    
  5. Már csak az ldap02-ssl könyvtárat kell átmásolni a fogyasztó kiszolgálóra, majd az ldap02_slapd_cert.pem és cacert.pem fájlokat kell az /etc/ssl/certs, illetve az ldap02_slapd_key.pem fájlt az /etc/ssl/private könyvtárba másolni.

  6. Miután a fájlok a helyükre kerültek, módosítsa a cn=config fát a következő parancs kiadásával:

    sudo ldapmodify -Y EXTERNAL -H ldapi:///
    
    Enter LDAP Password:
    dn: cn=config
    add: olcTLSCACertificateFile
    olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
    -
    add: olcTLSCertificateFile
    olcTLSCertificateFile: /etc/ssl/certs/ldap02_slapd_cert.pem
    -
    add: olcTLSCertificateKeyFile
    olcTLSCertificateKeyFile: /etc/ssl/private/ldap02_slapd_key.pem
    
    modifying entry "cn=config"
    
    
  7. A termelőhöz hasonlóan szerkesztheti az /etc/default/slapd fájlt, és felveheti az ldaps:/// paramétert a SLAPD_SERVICES beállításhoz.

Most, hogy a TLS mindkét kiszolgálón be van állítva, módosítsa újra a fogyasztó kiszolgáló cn=config fáját a következő parancs kiadásával:

sudo ldapmodify -Y EXTERNAL -H ldapi:///
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0

dn: olcDatabase={1}hdb,cn=config
replace: olcSyncrepl
olcSyncrepl: {0}rid=0 provider=ldap://ldap01.példa.hu bindmethod=simple binddn="cn=ad
 min,dc=példa,dc=hu" credentials=titok searchbase="dc=példa,dc=hu" logbas
 e="cn=accesslog" logfilter="(&(objectClass=auditWriteObject)(reqResult=0))" s
 chemachecking=on type=refreshAndPersist retry="60 +" syncdata=accesslog starttls=yes

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

Ha az LDAP kiszolgáló gépneve nem egyezik a tanúsítványban lévő teljes képzésű tartománynévvel (FQDN), akkor szükség lehet az /etc/ldap/ldap.conf fájl szerkesztésére, és a következő TLS-beállítások felvételére:

TLS_CERT /etc/ssl/certs/ldap02_slapd_cert.pem
TLS_KEY /etc/ssl/private/ldap02_slapd_key.pem
TLS_CACERT /etc/ssl/certs/cacert.pem

Végül indítsa újra az slapd démont az összes kiszolgálón:

sudo /etc/init.d/slapd restart

LDAP hitelesítés

Ha az LDAP-kiszolgáló már működik, az auth-client-config és libnss-ldap csomagok leegyszerűsítik az Ubuntu kliens beállítását LDAP használatával való hitelesítésre. A csomagok telepítéséhez adja ki a következő parancsot:

sudo apt-get install libnss-ldap

A telepítés során egy párbeszédablak bekéri az LDAP-kiszolgáló kapcsolatinformációit.

Ha elrontotta az információk megadását, újra elindíthatja a párbeszédablakot:

sudo dpkg-reconfigure ldap-auth-config

A párbeszédablakban megadott adatok az /etc/ldap.conf fájlba kerülnek. Ha a kiszolgáló a menüben nem szereplő beállításokat igényel, akkor ezen fájl szerkesztésével megadhatja azokat.

Ezután a libnss-ldap beállítható az auth-client-config LDAP-profil engedélyezésére a következő parancs kiadásával:

sudo auth-client-config -t nss -p lac_ldap
  • -t: csak az /etc/nsswitch.conf fájlt módosítja.

  • -p: az engedélyezendő/letiltandó stb. profil neve.

  • lac_ldap: az auth-client-config profil, amely az ldap-auth-config csomag része.

A pam-auth-update segédprogram segítségével állítsa be a rendszert az LDAP használatára hitelesítésre:

sudo pam-auth-update

A pam-auth-update menüből válassza ki az LDAP-t, és az egyéb szükséges hitelesítési mechanizmusokat.

Most már képesnek kell lennie az LDAP-címtárban tárolt felhasználóhitelesítési adatokkal való bejelentkezésre.

[Megjegyzés]

Ha az LDAP címtárat Samba felhasználók tárolására fogja használni, akkor be kell állítania a kiszolgálót az LDAP használatával való hitelesítésre. A részletekért lásd: „Samba és LDAP”.

Felhasználó- és csoportkezelés

Az ldap-utils csomag több segédprogramot is tartalmaz a címtár karbantartásához, de a használatát megnehezítheti a szükséges kapcsolók hosszú sora. Az ldapscripts csomag az LDAP felhasználók és csoportok egyszerű kezeléséhez tartalmaz konfigurálható parancsfájlokat.

A csomag telepítéséhez adja ki a következő parancsot:

sudo apt-get install ldapscripts

Ezután szerkessze az /etc/ldapscripts/ldapscripts.conf konfigurációs fájlt, vegye ki megjegyzésből és módosítsa a következőket a környezetének megfelelően:

SERVER=localhost
BINDDN='cn=admin,dc=példa,dc=hu'
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
SUFFIX='dc=példa,dc=hu'
GSUFFIX='ou=Csoportok'
USUFFIX='ou=Emberek'
MSUFFIX='ou=Számítógépek'
GIDSTART=10000
UIDSTART=10000
MIDSTART=10000

Ezután hozza létre az ldapscripts.passwd fájlt a címtár hitelesített elérésének lehetővé tételéhez:

sudo sh -c "echo -n 'titok' > /etc/ldapscripts/ldapscripts.passwd"
sudo chmod 400 /etc/ldapscripts/ldapscripts.passwd
[Megjegyzés]

A „titok” helyére az LDAP admin felhasználójának tényleges jelszavát írja.

Az ldapscripts ezzel készen áll a címtára karbantartásának segítésére. Alább látható néhány példa a parancsfájlok használatára:

  • Új felhasználó létrehozása:

    sudo ldapadduser geza példa
    

    Ez létrehoz egy felhasználót geza felhasználónévvel és példa elsődleges csoporttal.

  • Felhasználó jelszavának módosítása:

    sudo ldapsetpasswd geza
    Changing password for user uid=geza,ou=Emberek,dc=példa,dc=hu
    New Password: 
    New Password (verify): 
    
  • Felhasználó törlése:

    sudo ldapdeleteuser geza
    
  • Csoport hozzáadása:

    sudo ldapaddgroup qa
    
  • Csoport törlése:

    sudo ldapdeletegroup qa
    
  • Felhasználó csoporthoz adása:

    sudo ldapaddusertogroup geza qa
    

    Ezután a qa csoport memberUid attribútumának értéke geza lesz.

  • Felhasználó eltávolítása csoportból:

    sudo ldapdeleteuserfromgroup geza qa
    

    A memberUid attribútum ezzel eltávolításra került a qa csoportból.

  • Az ldapmodifyuser parancsfájl lehetővé teszi felhasználó attribútumainak felvételét, eltávolítását vagy cseréjét. A parancsfájl az ldapmodify segédprogram szintaxisát használja, például:

    sudo ldapmodifyuser geza
    # About to modify the following entry :
    dn: uid=geza,ou=Emberek,dc=példa,dc=hu
    objectClass: account
    objectClass: posixAccount
    cn: geza
    uid: geza
    uidNumber: 1001
    gidNumber: 1001
    homeDirectory: /home/geza
    loginShell: /bin/bash
    gecos: geza
    description: Felhasználói fiók
    userPassword:: e1NTSEF9eXFsTFcyWlhwWkF1eGUybVdFWHZKRzJVMjFTSG9vcHk=
    
    # Enter your modifications here, end with CTRL-D.
    dn: uid=geza,ou=Emberek,dc=példa,dc=hu
    replace: gecos
    gecos: Hoffmann Géza
    

    A felhasználó gecos attribútumának értéke ezután „Hoffmann Géza” lesz.

  • Az ldapscripts másik nagyszerű szolgáltatása a sablonrendszer. A sablonok lehetővé teszik a felhasználó, csoport és gép objektumok attribútumainak személyre szabását. A user sablon engedélyezéséhez szerkessze az /etc/ldapscripts/ldapscripts.conf fájlt, és módosítsa:

    UTEMPLATE="/etc/ldapscripts/ldapadduser.template"
    

    Az /etc/ldapscripts könyvtárban minta sablonok találhatók. Másolja vagy nevezze át az ldapadduser.template.sample fájlt /etc/ldapscripts/ldapadduser.template névre:

    sudo cp /usr/share/doc/ldapscripts/examples/ldapadduser.template.sample /etc/ldapscripts/ldapadduser.template
    

    Szerkessze az új sablont a kívánt attribútumok felvételéhez. A következők az új felhasználókat az inetOrgPerson objectClass elemeként hozzák létre:

    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: Felhasználói fiók
    title: Alkalmazott
    

    Figyelje meg az ssn értékeként használt <ask> szöveget. Az <ask> segítségével az ldapadduser beállítható az attribútumérték bekérésére a felhasználó létrehozása során.

További hasznos parancsfájlok is találhatók a csomagban, a teljes lista a következő parancs kiadásával érhető el: dpkg -L ldapscripts | grep bin

Információforrások

  • Az Ubuntu wiki OpenLDAP oldala további részleteket tartalmaz.

  • További információkért lásd az OpenLDAP honlapját

  • Noha nem teljesen friss, az O'Reilly LDAP System Administration könyve a mélyebb LDAP információk hasznos forrása

  • A Packt Mastering OpenLDAP egy remek referencia, amely az OpenLDAP újabb verzióit mutatja be.

  • Az auth-client-config alkalmazással kapcsolatos további információkért lásd a kézikönyvoldalát: man auth-client-config.

  • Az ldapscripts csomaggal kapcsolatos további részletekért lásd a kézikönyvoldalakat: man ldapscripts, man ldapadduser, man ldapaddgroup stb.