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.
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 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é.
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. |
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
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.
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
-
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
-
Ezután hozzon létre egy átmeneti könyvtárat a kimenet tárolásához:
mkdir /tmp/ldif_output
-
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.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.
-
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
Az attribútumértékek eltérők lesznek, győződjön meg róla, hogy eltávolította az attribútumokat.
-
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.
-
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.
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.
-
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
-
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
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.
-
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
-
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
-
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ó 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
-
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.
-
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:
-
-
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.
A slapd démon alapértelmezésben a 127.0.0.1 ldap01.példa.hu ldap01 . |
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
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.
-
A következő parancs kiadásával telepítse a gnutls-bin csomagot:
sudo apt-get install gnutls-bin
-
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"
-
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
-
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
-
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"
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.
-
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
-
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"
Módosítsa az |
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
Ha az |
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.
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. |
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.
-
Hozza létre a fogyasztó kiszolgáló új kulcsát:
mkdir ldap02-ssl cd ldap02-ssl certtool --generate-privkey > ldap02_slapd_key.pem
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.
-
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
-
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
-
Másolja a
cacert.pem
fájlt a könyvtárba:cp /etc/ssl/certs/cacert.pem .
-
Már csak az
ldap02-ssl
könyvtárat kell átmásolni a fogyasztó kiszolgálóra, majd azldap02_slapd_cert.pem
éscacert.pem
fájlokat kell az/etc/ssl/certs
, illetve azldap02_slapd_key.pem
fájlt az/etc/ssl/private
könyvtárba másolni. -
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" -
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
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.
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”. |
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
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 azldapadduser.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
-
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.