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.
-
Adding additional schemas to slapd requires the schema to be converted to LDIF format. The
/etc/ldap/schema
directory contains some schema files already converted to LDIF format as demonstrated in the previous section. Fortunately, the slapd program can be used to automate the conversion. The following example will add the dyngoup.schema:-
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
Módosítsa a konfigurációs fájl nevét és az átmeneti könyvtár nevét, ha a sajátja eltér. Érdemes lehet megtartani az
ldif_output
könyvtárat, amennyiben további sémákat szeretne felvenni a jövőben. -
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.
To view the Access Control List (ACL), use the ldapsearch utility:
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=exampl
e,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=example,dc=com" write by * read
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/x01-test_slapd_key.pem \ --load-ca-certificate /etc/ssl/certs/cacert.pem --load-ca-privkey /etc/ssl/private/cakey.pem \ --template /etc/ssl/x01-test.info --outfile /etc/ssl/certs/x01-test_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 /etc/ldapscripts/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 a cn é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.