LDAP je skratka pre Lightweight Directory Access Protocol (protokol odľahčeného prístupu k adresárom), ktorý je zjednodušenou verziou protokolu X.500. Nastavenie adresárov v tejto časti použijeme na autentifikáciu. LDAP sa však dá použiť aj na rôzne ďalšie účely, ako napríklad zdielaný adresár (pre mailových klientov), adresár kontaktov, atď.
Ak by sme chceli zjednodušene povedať, čo je LDAP, povedali by sme, že sú to informácie usporiadané do stromovej štruktúry (označuje sa cn=nazov_stromu). V OpenLDAP môžeme slobodne určiť rozvetvenie adresárov (tzv. DIT – Directory Information Tree). My začneme vytvorením dvoch organizačných jednotiek (označuje sa ou=nazov_jednotky) na najvyššej úrovni:
Pred tým, ako začneme, mali by sme zistiť, ako sa volá uzol najvyššej úrovne LDAP adresára. Za normálnych okolností je meno stromu určené tzv. Fully Qualified Domain Name (FQDN) – úplným menom domény (označuje sa dc=nazov_domeny). Ak je vaša doména nieco.sk (ktorú budeme v tomto príklade používať), názov hlavného uzla bude dc=nieco,dc=sk.
Najskôr nainštalujeme démon OpenLDAP servera slapd a balík ldap-utils, ktorý obsahuje nástroje pre správu LDAP:
sudo apt-get install slapd ldap-utils
V predvolenom stave je slapd nastavený s minimálnymi voľbami potrebnými na beh démona slapd.
Príklad konfigurácie v nasledujúcich častiach sa zhoduje s doménovým názvom servera. Napríklad počítač s FQDN adresou ldap.nieco.sk bude mať príponu dc=nieco,dc=sk.
Adresár na pozadí cn=config má len minimálnu konfiguráciu a bude potrebné nastaviť ďalšie voľby, aby bolo možné naplniť adresár v popredí. Adresár v popredí napliníme pomocou schémy "classical", ktorá je kompatibilná s adresármi v aplikáciách a s kontami Unix Posix. Kontá Posix umožňujú autentifikáciu do rôznych aplikácií, vrátane webových aplikácií, emailových aplikácií Mail Transfer Agent (MTA), atď.
|
Ak chcete, aby externé aplikácie používali LDAP pri autentifikácii, je potrebné každú z nich nastaviť osobitne. Viac informácii získate v dokumentácii konkrétnej aplikácie. Nezabudnite zmeniť dc=nieco,dc=sk v nasledujúcich príkladoch, na zodpovedajúce vašej konfigurácii LDAP. |
Najskôr je potrebné načítať niektoré prídavné schémy. Do príkazového riadka zadáme:
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
Teraz niekde v systéme vytvoríme súbor s názvom pozadie.nieco.sk.ldif a skopírujeme do neho nasledujúci ukážkový obsah LDIF súboru:
# Načítanie dynamických modulov pozadia dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulepath: /usr/lib/ldap olcModuleload: back_hdb # Nastavenia databázy dn: olcDatabase=hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {1}hdb olcSuffix: dc=nieco,dc=sk olcDbDirectory: /var/lib/ldap olcRootDN: cn=admin,dc=nieco,dc=sk olcRootPW: tajne 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=nieco,dc=sk" 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=nieco,dc=sk" write by * read
|
Zmeňte olcRootPW: tajne na vami vybrané heslo. |
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f pozadie.nieco.sk.ldif
Teraz môžeme naplniť adresár v popredí. Vytvoríme súbor popredie.nieco.sk.ldif s nasledujúcim obsahom:
# Vytvorenie najvrchnejšieho objektu v doméne dn: dc=nieco,dc=sk objectClass: top objectClass: dcObject objectclass: organization o: Organizácia Nieco dc: Nieco description: Ukážka LDAP # Používateľ Admin. dn: cn=admin,dc=nieco,dc=sk objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword: tajne dn: ou=ludia,dc=nieco,dc=sk objectClass: organizationalUnit ou: ludia dn: ou=skupiny,dc=nieco,dc=sk objectClass: organizationalUnit ou: skupiny dn: uid=jozef,ou=ludia,dc=nieco,dc=sk objectClass: inetOrgPerson objectClass: posixAccoun objectClass: shadowAccount uid: jozef sn: Mrkva givenName: Jozef cn: Jozef Mrkva displayName: Jozef Mrkva uidNumber: 1000 gidNumber: 10000 userPassword: heslo gecos: Jozef Mrkva loginShell: /bin/bash homeDirectory: /home/jozef shadowExpire: -1 shadowFlag: 0 shadowWarning: 7 shadowMin: 8 shadowMax: 999999 shadowLastChange: 10877 mail: jozef.mrkva@nieco.sk postalCode: 81100 l: Bratislava o: Nieco mobile: +421 (0)9xx xx xx xx homePhone: +421 (0)2 xx xx xx xx title: Systemový administrátor postalAddress: initials: JM dn: cn=priklad,ou=skupiny,dc=nieco,dc=sk objectClass: posixGroup cn: priklad gidNumber: 10000
V tomto príklade je nastavená štruktúra adresára, používateľ a skupina. V iných príkladoch konfigurácie môžeme naraziť na nastavenie objectClass: top, ktoré býva pridané ku každému záznamu. Toto nastavenie však nemusíme pridávať explicitne, pretože je predvolené.
Pridáme záznamy do LDAP adresára :
sudo ldapadd -x -D cn=admin,dc=nieco,dc=sk -W -f popredie.nieco.sk.ldif
Pomocou nástroja ldapsearch môžeme overiť, či bol obsah správne pridaný. Spustíme vyhľadávanie v LDAP adresári:
ldapsearch -xLLL -b "dc=nieco,dc=sk" uid=jozef sn givenName cn
dn: uid=jozef,ou=ludia,dc=nieco,dc=sk cn: Jozef Mrkva sn: Mrkva givenName: Jozef
Rýchle vysvetlenie:
Strom cn=config sa dá upravovať pomocou nástrojov z balíka ldap-utils. Napríklad takto:
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=configsudo 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: entryUUID eqmodifying entry "olcDatabase={1}hdb,cn=config" uid_index.ldif:
dn: olcDatabase={1}hdb,cn=config add: olcDbIndex olcDbIndex: uid eq,pres,sub
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"/etc/ldap/schema obsahuje niektoré schémy v súboroch, ktoré sú už skonvertované do LDIF formátu, podobne ako sme to demonštrovali v predchádzajúcej časti. Našťastie sa program slapd dá použiť na zautomatizovanie konverzie. V nasledujúcom príklade pridáme schému dyngroup.schema:
schema_convert.conf a uložíme do neho nasledujúce riadky:
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
mkdir /tmp/ldif_output
slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={5}dyngroup,cn=schema,cn=config" > /tmp/cn=dyngroup.ldi
ldif_output nemusíme mazať, môžeme ho využiť neskôr, keď budeme pridávať ďalšie schémy.
/tmp/cn\=dyngroup.ldif, zmeníme nasledujúce atribúty:
dn: cn=dyngroup,cn=schema,cn=config ... cn: dyngroup
structuralObjectClass: olcSchemaConfig entryUUID: 10dae0ea-0760-102d-80d3-f9366b7f7757 creatorsName: cn=config createTimestamp: 20080826021140Z entryCSN: 20080826021140.791425Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20080826021140Z
|
Hodnoty atribútov môžu byť iné, preto si pri mazaní dajte pozor, aby ste zmazali všetky uvedené atribúty. |
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/cn\=dyngroup.ldif
Teraz by sme v strome cn=config mali mať záznam dn: cn={4}misc,cn=schema,cn=config.
LDAP sa veľmi rýchlo stane kľúčovou službou v našej sieti. Viaceré systémy budú závislé od LDAP autentifikácie, autorizácie, konfigurácie, atď. Z tohto dôvodu je dobré systém nastaviť tak, aby bol redundantný.
Replikácia sa vykonáva pomocou Syncrepl. Syncrepl umožňuje synchronizáciu adresára buď pomocou modelu výrobca – spotrebiteľ. Výrobca poskytuje zmeny v adresári spotrebiteľovi
My použijeme tzv. Single-Master konfiguráciu. V našom príklade bude jeden OpenLDAP server výrobca a druhý spotrebiteľ.
provider_sync.ldif:
# Pridá indexy do databázy popredia. dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: entryCSN eq - add: olcDbIndex olcDbIndex: entryUUID eq #Načíta moduly syncprov a accesslog. dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: syncprov - add: olcModuleLoad olcModuleLoad: accesslog # Definície databázy accesslog 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=nieco,dc=sk olcDbIndex: default eq olcDbIndex: entryCSN,objectClass,reqEnd,reqResult,reqStart # Accesslog db syncprov. dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov olcSpNoPresent: TRUE olcSpReloadHint: TRUE # syncrepl Výrobcu pre primárnu db dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov olcSpNoPresent: TRUE # Prekryje definície accesslog pre primárnu db dn: olcOverlay=accesslog,olcDatabase={1}hdb,cn=config objectClass: olcOverlayConfig objectClass: olcAccessLogConfig olcOverlay: accesslog olcAccessLogDB: cn=accesslog olcAccessLogOps: writes olcAccessLogSuccess: TRUE # Prehľadá accesslog DB každý deň a odstráni záznamy staršie ako 7 dní olcAccessLogPurge: 07+00:00 01+00:00
Teraz je potrebné upraviť profil AppArmor pre slapd a zadať do neho umiestnenie databázy
accesslog. Otvoríme súbor /etc/apparmor.d/usr.sbin.slapd
a pridáme:
/var/lib/ldap/accesslog/ r, /var/lib/ldap/accesslog/** rwk,
Potom vytvoríme priečinok, znova načítame profil apparmor a skopírujeme súbor DB_CONFIG:
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
|
Pomocou voľby -u openldap za príkazom sudo odstránime potrebu nastavovania práv pre novovytvorený priečinok. |
olcRootDN: cn=admin,dc=nieco,dc=sk
Potom LDIF súbor pridáme pomocou nástroja ldapadd utility:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f provider_sync.ldi
Reštartujeme slapd:
sudo /etc/init.d/slapd restart
Na serveri v úlohe spotrebiteľa nastavíme to isté ako na serveri v úlohe výrobcu s výnimkou konfiguračných krokov pre Syncrepl.
Pridáme dodatočné súbory schém:
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
Tiež vytvoríme alebo z výrobcu skopírujeme súbor pozadie.nieco.sk.ldif
# Načítanie dynamických modulov pozadia dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulepath: /usr/lib/ldap olcModuleload: back_hdb # Nastavenia databázy dn: olcDatabase=hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {1}hdb olcSuffix: dc=nieco,dc=sk olcDbDirectory: /var/lib/ldap olcRootDN: cn=admin,dc=nieco,dc=sk olcRootPW: tajne 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=nieco,dc=sk" 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=nieco,dc=sk" write by * read
a pridáme LDIF zadaním príkazu:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.nieco.sk.ldif
To isté urobíme so súborom popredie.nieco.sk.ldif zobrazeným vyššie a tiež ho pridáme:
sudo ldapadd -x -D cn=admin,dc=nieco,dc=sk -W -f frontend.nieco.sk.ldif
Oba servery by teraz mali mať rovnakú konfiguráciu až na voľby Syncrepl.
Teraz vytvoríme súbor s názvom consumer_sync.ldif
obsahujúci:
#Načítanie modulu syncprov. dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: syncprov # Ukazovatele špecifické pre syncrepl dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: entryUUID eq - add: olcSyncRepl olcSyncRepl: rid=0 provider=ldap://ldap01.nieco.sk bindmethod=simple binddn="cn=admin,dc=nieco,dc=sk" credentials=tajne searchbase="dc=nieco,dc=sk" logbase="cn=accesslog" logfilter="(&(objectClass=auditWriteObject)(reqResult=0))" schemachecking=on type=refreshAndPersist retry="60 +" syncdata=accesslog - add: olcUpdateRef olcUpdateRef: ldap://ldap01.nieco.sk
Bude pravdepodobne potrebné zmeniť tieto atribúty:
Pridáme LDIF súbor do konfiguračného stromu:
sudo ldapadd -c -Y EXTERNAL -H ldapi:/// -f consumer_sync.ldi
Databáza popredia by teraz mala byť synchronizovaná medzi oboma servermi. Podľa predchádzajúcich krokov môžeme v prípade potreby pridať aj ďalšie servery.
|
Démon slapd
bude v predvolenom stave odosielať záznamy do súboru 127.0.0.1 ldap01.nieco.sk ldap01 . |
Autentifikácia vyžaduje prístup k poľu s heslom, ktoré by nemalo byť prístupné bežným spôsobom. Aby si používatelia po prihlásení mohli zmeniť svoje heslo pomocou passwd alebo iných nástrojov, potrebujú prístup k shadowLastChange.
Ak chceme zobraziť tzv. Access Control List (ACL) – zoznam prístupových práv pre cn=config, použijeme nástroj ldapsearch:
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 * breakKeď chceme zobraziť ACL pre strom popredia zadáme:
sudo ldapsearch -c -Y EXTERNAL -H ldapi:/// -LLL -b cn=config olcDatabase={1}hdb olcAccess
Ak sa prihlasujeme k OpenLDAP serveru, je vhodné to robiť pomocou šifrovaného pripojenia. Toto je možné zabezpečiť pomocou použitia Transport Layer Security (TLS) a/alebo Secure Sockets Layer (SSL).
Prvý krok, ktorý je potrebné vykonať, je získanie alebo vytvorenie certifikátu. Pretože démon slapd je kompilovaný pomocou knižnice gnutls, na vytvorenie certifikátu je potrebné použiť nástroj certtool.
Najskôr nainštalujeme balík gnutls-bin zadaním nasledujúceho príkazu:
sudo apt-get install gnutls-bin
Potom vytvoríme súkromný kľúč pre Certifikačnú autoritu (CA):
sudo sh -c "certtool --generate-privkey > /etc/ssl/private/cakey.pem"
Vytvoríme súbor /etc/ssl/ca.info s podrobnosťami
pre sebou podpísaný certifikát CA obsahujúci:
cn = Spoločnosť Niečo ca cert_signing_key
Teraz vytvoríme sebou podpísaný certifíkát CA:
sudo certtool --generate-self-signed --load-privkey /etc/ssl/private/cakey.pem \ --template /etc/ssl/ca.info --outfile /etc/ssl/certs/cacert.pem
Vytvoríme súkromný kľúč pre server:
sudo sh -c "certtool --generate-privkey > /etc/ssl/private/ldap01_slapd_key.pem"
|
V názve súboru nahraďte ldap01 vami používaným názvom hostiteľskej stanice. Správne pomenovanie certifikátu a kľúča pre stanicu a službu, ktorú používame, je dôležité kvôli poriadku. |
Keď chceme podpísať serverový certifikát pomocou CA, vytvoríme súbor /etc/ssl/ldap01.info obsahujúci:
organization = Spoločnosť Niečo cn = ldap01.nieco.sk tls_www_server encryption_key signing_key
Vytvoríme serverový certifiká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
Keď máme nainštalovaný certifikát, kľúč a certifikát CA, pomocou nástroja ldapmodify pridáme nové voľby konfigurácie:
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"
|
Zmeňte názvy |
Teraz otvoríme súbor /etc/default/slapd a odpoznámkujeme voľbu SLAPD_SERVICES:
SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
Teraz povolíme používateľovi menom openldap prístup k certifikátu:
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
|
Ak |
Nakoniec reštartujeme slapd:
sudo /etc/init.d/slapd restart
Odteraz démon slapd bude akceptovať aj šifrované LDAPS pripojenia a bude môcť použiť STARTTLS počas autentifikácie.
|
Ak nastane problém a server sa nedá naštartovať, skontrolujeme /var/log/syslog. Ak zbadáme chybu podobnú: TLS init def ctx failed: -1, je pravdepodobné, že sme urobili chybu v konfigurácii. Skontrolujeme, či je certifikát podpísaný autoritou aká je nastavená v konfiguračných súboroch, a či má skupina ssl-cert právo na čítanie súkromného kľúča. |
Ak sme medzi servermi nastavili Syncrepl, je rozumné zašifrovať replikačnú komunikáciu pomocou Transport Layer Security (TLS). Viac informácii o replíkácii nájdeme v časti “Replikácia LDAP”.
Za predpokladu, že sme sa pomocou predchádzajúcich inštrukcií dostali až sem, vytvorili sme certifikát CA a certifikát pre server v úlohe výrobcu. Pomocou nasledujúcich krokov teraz vytvoríme certifikát a kľuč pre server v úlohe spotrebiteľa.
Vytvoríme nový kľúč pre server v úlohe spotrebiteľa:
mkdir ldap02-ssl cd ldap02-ssl certtool --generate-privkey > ldap02_slapd_key.pem
|
Vytvorenie nového priečinka nie je nevyhnutne potrebné, ale pomôže nám to udržať poriadok a budú sa nám ľahšie kopírovať súbory na server v úlohe spotrebiteľa. |
Teraz vytvoríme súbor ldap02.info
s informáciami pre server v úlohe spotrebiteľa, pričom zmeníme parametre aby súhlasili s našou lokalitou a serverom:
Vytvoríme certifikát:
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
Skopírujeme cacert.pem do priečinka:
cp /etc/ssl/certs/cacert.pem .
Poslednú vec, ktorú musíme urobiť, je skopírovať priečinok ldap02-ssl dna server v úlohe spotrebiteľa, potom skopírovať súbory
ldap02_slapd_cert.pem a cacert.pem do priečinka /etc/ssl/certs
a súbor ldap02_slapd_key.pem do priečinka /etc/ssl/private.
Keď sú súbory na správnom mieste, uprevíme vetvu cn=config zadaním:
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"
Tak, ako pri výrobcovi, teraz môžeme otvoriť súbor /etc/default/slapd a pridať parameter ldaps:/// do voľby SLAPD_SERVICES.
Teraz, keď je TLS nastavené na každom serveri, ešte raz upravíme vetvu cn=config na spotrebiteľovi zadaním:
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.nieco.sk bindmethod=simple binddn="cn=ad
min,dc=nieco,dc=sk" credentials=secret searchbase="dc=nieco,dc=sk" logbas
e="cn=accesslog" logfilter="(&(objectClass=auditWriteObject)(reqResult=0))" s
chemachecking=on type=refreshAndPersist retry="60 +" syncdata=accesslog starttls=yesmodifying entry "olcDatabase={1}hdb,cn=config"
Ak adresa stanice LDAP servera nesúhlasí s FQDN v certifikáte, mali
by sme otvoriť súbor /etc/ldap/ldap.conf a pridať
nasledujúce TLS nastavenia:
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
Nakoniec reštartujeme slapd na každom serveri:
sudo /etc/init.d/slapd restart
Keď máme funkčný LDAP server, balíky auth-client-config a libnss-ldap nám pomôžu prekonať ťažkosti pri nastavovaní Ubuntu klientov tak, aby sa prihlasovali pomocou LDAP. Ak chceme balíky nainštalovať, zadáme:
sudo apt-get install libnss-ldap
Počas inštalácie bude potrebné zadať parametre pripojenia k LDAP serveru.
Ak sa pomýlime pri zadávaní informácií, môžeme dialóg vyvolať znova pomocou príkazu:
sudo dpkg-reconfigure ldap-auth-configHodnoty, ktoré zadáme do dialógu, môžeme vidieť v súbore /etc/ldap.conf. Ak náš server vyžaduje nastavenie, ktoré sa nenachádza v dialógu, môžeme ho v tomto súbore doplniť.
Teraz, keď je libnss-ldap nakonfigurované, zapneme pomocou auth-client-config LDAP profil:
sudo auth-client-config -t nss -p lac_ldap
/etc/nsswitch.conf.
Použitím nástroja pam-auth-update nastavíme systém tak, aby používal na autentifikáciu LDAP:
sudo pam-auth-updateZ ponuky pam-auth-update vyberieme LDAP a ktorékoľvek ďalšie autentifikačné mechanizmy, ktoré ešte potrebujeme.
Teraz by sme mali byť schopný prihlásiť používateľa, ktorý je uložený v LDAP adresáre.
|
Ak sa chystáte použiť LDAP na uloženie používateľov systému Samba, bude potrebné nastaviť server tak, aby na autentifikáciu využíval LDAP. Viac informácii sa dozviete v časti “Samba a LDAP”. |
Balík ldap-utils obsahuje viacero nástrojov na správu adresára, ale pri potrebe nastavenia dlhších reťazcov môže byť ich použitie ťažkopádne. Balík ldapscripts obsahuje konfiguračné skripty na správu LDAP používateľov a skupín.
Ak tento balíček chceme nainštalovať, zadáme:
sudo apt-get install ldapscripts
Potom otvoríme konfiguračný súbor /etc/ldapscripts/ldapscripts.conf a odkomentujeme a zmeníme nasledujúce riadky tak, aby zodpovedali nášmu prostrediu:
SERVER=localhost BINDDN='cn=admin,dc=nieco,dc=sk' BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd" SUFFIX='dc=nieco,dc=sk' GSUFFIX='ou=Skupiny' USUFFIX='ou=Ludia' MSUFFIX='ou=Pocitace' GIDSTART=10000 UIDSTART=10000 MIDSTART=10000
Teraz vytvoríme súbor ldapscripts.passwd, aby sme umožnili autentifikovaný prístup k adresáru:
sudo sh -c "echo -n 'tajne' > /etc/ldapscripts/ldapscripts.passwd" sudo chmod 400 /etc/ldapscripts/ldapscripts.passwd
|
Slovo “tajne” nahraďte aktuálnym heslom LDAP administrátora. |
Odteraz sú skripty ldapscripts pripravené pomôcť nám pri správe adresára. Nasledujúce príklady hovoria o tom, ako sa skripty používajú:
sudo ldapadduser juro pokussudo ldapsetpasswd juroChanging password for user uid=juro,ou=Ludia,dc=nieco,dc=sk New Password: New Password (verify):
sudo ldapdeleteuser jurosudo ldapaddgroup qasudo ldapdeletegroup qasudo ldapaddusertogroup juro qasudo ldapdeleteuserfromgroup juro qasudo ldapmodifyuser juro# About to modify the following entry : dn: uid=juro,ou=Ludia,dc=nieco,dc=sk objectClass: account objectClass: posixAccount cn: juro uid: juro uidNumber: 1001 gidNumber: 1001 homeDirectory: /home/juro loginShell: /bin/bash gecos: juro description: User account userPassword:: e1NTSEF9eXFsTFcyWlhwWkF1eGUybVdFWHZKRzJVMjFTSG9vcHk= # Enter your modifications here, end with CTRL-D. dn: uid=juro,ou=Ludia,dc=nieco,dc=sk
replace: gecos gecos: Juraj Jánošík
/etc/ldapscripts/ldapscripts.conf a pridáme riadok:
UTEMPLATE="/etc/ldapscripts/ldapadduser.template"
/etc/ldapscripts. Skopírujeme súbor ldapadduser.template.sample do
/etc/ldapscripts/ldapadduser.template:
sudo cp /usr/share/doc/ldapscripts/examples/ldapadduser.template.sample /etc/ldapscripts/ldapadduser.template
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: User account title: Employee
Existuje viac užitočných skriptov. Ak chceme zobraziť ich zoznam, zadáme príkaz: dpkg -L ldapscripts | grep bin