Kerberose ja OpenLDAP seadistamine: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Krats (talk | contribs)
Krats (talk | contribs)
 
(23 intermediate revisions by the same user not shown)
Line 5: Line 5:
; 0.1 - 18.12.2009 : Lehe struktuuri loomine, esmane nõudmeste ja eelduste määramine
; 0.1 - 18.12.2009 : Lehe struktuuri loomine, esmane nõudmeste ja eelduste määramine
; 0.2 - 26.01.2010 : Ikka veel poolik tööversioon, kuid paigaldamine, seadistamine, varundamine ja taastamine on jõudnud  ''hakkab looma'' olekusse; täiesti puudu on testimine.
; 0.2 - 26.01.2010 : Ikka veel poolik tööversioon, kuid paigaldamine, seadistamine, varundamine ja taastamine on jõudnud  ''hakkab looma'' olekusse; täiesti puudu on testimine.
; 0.3 - 30.01.2010 : Parandatud ja natuke täiendatud vastavalt diskussiooni lehel toodud soovitustele.
; 0.3 - 30.01.2010 : Parandatud ja natuke täiendatud vastavalt diskussiooni lehel toodud soovitustele, kuid ikka veel poolik.
; 0.4 - 31.01.2010 : Eelkõige on parandatud eelmisesse versiooni alles jäänud vead. Lisatud on mõningate käskude väljundid.


== Autor ==
== Autor ==
Line 13: Line 14:
== Sissejuhatus ==
== Sissejuhatus ==


Käesolevas juhendi eesmärk on luua Kerberose ja LDAP vahenditega suhteliselt universaalne baas kasutajate autentimiseks erinevate serverite ja teenuste poolt. Juhend on loodud Debian GNU/Linux versioonile 5.0.3 ja kasutab temaga kaasas olevaid Heimdali ja OpenLDAP pakette. (Seega võiks antud juhendi pealkiri olla ka Heimdali ja OpenLDAP seadistamine.)
Käesolevas juhendi eesmärk on luua Kerberose ja LDAP vahenditega suhteliselt universaalne baas kasutajate autentimiseks erinevate serverite ja teenuste poolt. Juhend on loodud Debian GNU/Linuxi baasil ja kasutab temaga kaasas olevaid Heimdali ja OpenLDAP pakette.  


Kuigi juhend on püütud kirjutada nii, et sellest peaks sobima ka täiesti algajale, tasub lugejal enne siiski veenduda, et  
Kuigi juhend on püütud kirjutada nii, et sellest peaks sobima ka täiesti algajale, tasub lugejal enne siiski veenduda, et  
ta on suuteline seadistama [[OpenLDAP-i seadistamine]] teenuse. Samuti eeldatakse Kerberose ja X.509 sertifikaatide loomise põhitõdede tundmist.  
ta on suuteline seadistama [[OpenLDAP-i seadistamine]] teenuse. Samuti eeldatakse Kerberose ja X.509 sertifikaatide loomise põhitõdede tundmist.  


Alljärgnevas eeldatakse, et kõik käsud käivitatakse juurkasutaja (root) õigustes, kui seda ei öelda ilmutatult teisiti.
Alljärgnevas eeldatakse, et kõik käsud käivitatakse juurkasutaja (''root'') õigustes, kui seda ei öelda ilmutatult teisiti.
 
=== Paigaldatav ja seadistatav tarkvara ===
 
{| class="wikitable"
| '''''Programm'''''
| '''''Versioon'''''
|-
| Debian
| 5.0.3
|-
| Heimdal
| 1.2.dfsg.1-2.1
|-
| OpenLDAP
| 2.4.11-1+lenny1
|-
| Cyrus SASL2 teek
| 2.1.22.dfsg1-23+lenny1
|}


=== Nõuded ===
=== Nõuded ===
Line 39: Line 59:
; demo.localnet.ee : server, mis hakkab pakkuma kerberose autentimise ja LDAP kataloogi teenuseid.
; demo.localnet.ee : server, mis hakkab pakkuma kerberose autentimise ja LDAP kataloogi teenuseid.


=== Kerberos lühitutvustus ===
=== Kerberose lühitutvustus ===


(''Järgnev jutt on tõlgitud [http://en.wikipedia.org/wiki/Kerberos_(protocol) wikipeediast].'')
(''Järgnev jutt on tõlgitud [http://en.wikipedia.org/wiki/Kerberos_(protocol) wikipeediast]. Eesti keeles on juttu veel [http://kuutorvaja.eenet.ee/wiki/Kerberos Kuutõrvajas]'')


Kerberos on arvutivõrgu autentimisprotokoll, mis lubab turvamata võrgus olevatel seadmetel üksteist identifitseerida turvaliselt. Sama nime kannab ka Massachusettsi Tehnoloogia Instituudi poolt loodud tarkvarapakett, mis on vabalt kasutatav.  
Kerberos on arvutivõrgu autentimisprotokoll, mis lubab turvamata võrgus olevatel seadmetel üksteist identifitseerida turvaliselt. Sama nime kannab ka Massachusettsi Tehnoloogia Instituudi poolt loodud tarkvarapakett, mis on vabalt kasutatav.  
Line 47: Line 67:
Kerberos on loodud klient-server mudeli põhjal ja võimaldab vastastikust autentimist - nii kasutaja kui ka server kontrollivad teineteise identiteeti. Kerberose protokolli sõnumid on kaitsud nii pealtkuulamise kui ka korduvkasutamise eest. Protokoll põhineb salajase võtme krüptograafial ja nõuab usaldatavat kolmandat osapoolt. Protokolli on laiendatud toetama avaliku võtme krüptograafiat autenitmise mõnedes faasides.
Kerberos on loodud klient-server mudeli põhjal ja võimaldab vastastikust autentimist - nii kasutaja kui ka server kontrollivad teineteise identiteeti. Kerberose protokolli sõnumid on kaitsud nii pealtkuulamise kui ka korduvkasutamise eest. Protokoll põhineb salajase võtme krüptograafial ja nõuab usaldatavat kolmandat osapoolt. Protokolli on laiendatud toetama avaliku võtme krüptograafiat autenitmise mõnedes faasides.


<!-- FIXME: lisa seletav pilt kerberose põhikäitumisest -->
FIXME: lisa pilt ja seletus kerberose põhikäitumisest
 
 
'''Kasutajate nimetamine kerberose andmebaasis'''
 
Kerberose andmebaasis defineeritud kasutajate nimed on kujul prefiks@haldusüksus. Prefiks koosneb põhinimest ja täpsustavast instantsist; neid eraldab kaldkriips (/).
 
Eelnevalt on kokku lepitud, et kõigi haldusüksuses olevate masinate-seadmete põhinimi on '''host''' ja instants '''masina täispikk nimi'''. Näiteks serverile demo.localnet.ee vastav kerberose kasutajanimi on ''host/demo.localnet.ee@LOCALNET.EE''.
 
Analoogne kokkulepe kehtib ka teenuste osas. Siin on põhinimeks teenuse nimi ja instants '''masina täispikk nimi'''. Näiteks LDAP teenusele vastav kerberose kasutajanimi serveris demo.localnet.ee on ''ldap/demo.localnet.ee@LOCALNET.EE''.


== Paigaldamine ==
== Paigaldamine ==
Line 53: Line 82:
=== Põhiprogrammid: Heimdal ja OpenLDAP ===
=== Põhiprogrammid: Heimdal ja OpenLDAP ===


Paigalda paketid slapd, heimdal-kcm ja heimdal-kdc:
Paigalda paketid '''slapd''', '''heimdal-kcm''' ja '''heimdal-kdc''':


  apt-get install slapd heimdal-kcm heimdal-kdc
  apt-get install slapd heimdal-kcm heimdal-kdc


Lisaks hulgale pakettidele lisatakse süsteemi veel kasutaja ja grupp ''openldap'', mille õigustes hakkab töötama OpenLDAP deemon ''slapd''.
Lisaks hulgale pakettidele lisatakse süsteemi veel kasutaja ja grupp ''openldap'',  
mille õigustes hakkab töötama OpenLDAP deemon ''slapd''.


Paketi slapd eelkonfigureerimisel küsitakse LDAP kataloogi administraatori parooli, mis tuleks meelde jätta.
Paketi '''slapd''' eelkonfigureerimisel küsitakse LDAP kataloogi administraatori  
parooli, mis tuleks meelde jätta.


Paketi krb5-config seadistamisel tuletatakse arvuti domeenist automaatselt Kerberose vaikimis realmi nimi  
Paketi '''krb5-config''' seadistamisel tuletatakse arvuti domeenist automaatselt  
(antud juhendis LOCALNET.EE), millele küsitakse võtmete ja paroolivahetuse serverite nimesid.  
kerberose vaikimis haldusüksuse nimi (''LOCALNET.EE''), millele küsitakse võtmete  
Mõlemal juhul on serveriks ''demo.localnet.ee''.
ja paroolivahetuse serverite nimesid. Mõlemal juhul on serveriks ''demo.localnet.ee''.


=== Heimdali ja OpenLDAP põimimisvahendid: libsasl2-modules-gssapi-heimdal ja sasl2-bin ===
=== Heimdali ja OpenLDAP põimimisvahendid: sasl2-bin ja libsasl2-modules-gssapi-heimdal ===


Paketid sasl2-bin ja libsasl2-modules-gssapi-heimdal sisaldavad vahendeid,  
Paketid sasl2-bin ja libsasl2-modules-gssapi-heimdal sisaldavad vahendeid,  
mis võimaldavad kokku siduda OpenLDAP ja Heimdali teenused nii, et tekib mõnes mõttes ringsõltuvus LDAP ja Kerberose vahel.
mis võimaldavad kokku siduda OpenLDAP ja Heimdali teenused nii,  
et tekib mõnes mõttes ringsõltuvus LDAP ja Kerberose vahel.


Paigaldamine on lihtne nagu ikka:
Paigaldamine on lihtne nagu ikka:
Line 110: Line 142:
#Selleks pane programm tööle. Kui menüüst ei leia, siis toksi programmi nimi tinyca2 kas terminali või käivitusdialoogi.  
#Selleks pane programm tööle. Kui menüüst ei leia, siis toksi programmi nimi tinyca2 kas terminali või käivitusdialoogi.  
#Kui TinyCA2 ei leia käivitamisel ühtegi CA-d, siis pakub ta võimaluse ühe loomiseks. Selleks kuvab ta dialoogi Create CA, mis tuleks täita näiteks nii:
#Kui TinyCA2 ei leia käivitamisel ühtegi CA-d, siis pakub ta võimaluse ühe loomiseks. Selleks kuvab ta dialoogi Create CA, mis tuleks täita näiteks nii:
* Name: localnet.ee
* Name: '''localnet.ee'''
* Common Name: Testimise CA
* Common Name: '''Testimise CA'''
* Country Name: EE
* Country Name: '''EE'''
* Password (2x): testca
* Password (2x): '''testca''' ''(mida keerulisem, seda parem)''
* State or Province Name: Harju
* State or Province Name: '''Harju'''
* Locality Name: Tallinn
* Locality Name: '''Tallinn'''
* Organization Name: AS localnet.ee
* Organization Name: '''AS localnet.ee'''
* Organizational Unit Name: IT
* Organizational Unit Name: '''IT'''
* eMail Address: testca@localnet.ee
* eMail Address: '''testca@localnet.ee'''
* Valid for: 3650
* Valid for: '''3650'''
* Keylength: 4096
* Keylength: '''4096'''
* Digest: SHA-1
* Digest: '''SHA-1'''
# Kliki nupul OK
# Kliki nupul "OK"
# Avaneb CA seadistamise dialoog. Siin määratakse ära, kuidas antud CA-d kasutada. Tesimiseks sobivad vaikeseaded küll, mistõttu kliki OK.
# Avaneb CA seadistamise dialoog. Siin määratakse ära, kuidas antud CA-d kasutada. Tesimiseks sobivad vaikeseaded küll, mistõttu kliki nupul "OK".
# Nüüd läheb sõltuvalt masinast ja juhuarvude generaatori koormatusest natuke aega (genereeritakse RSA võtmeid) ning siis antaksegi teada, et CA on loodud.
# Nüüd läheb sõltuvalt masinast ja juhuarvude generaatori koormatusest natuke aega (genereeritakse RSA võtmeid) ning siis antaksegi teada, et CA on loodud.


Line 129: Line 161:


Järgmisena ekspordime vastloodud CA juursertifikaadi kõigile kättesaadavale kujule faili.
Järgmisena ekspordime vastloodud CA juursertifikaadi kõigile kättesaadavale kujule faili.
# Aktiveeri vahekaart CA
# Aktiveeri vahekaart "CA"
# Kliki tööriistariba paremalt teisel nupul (disketi pildiga), et avaneks juursertifikaadi eksportimise dialoog.
# Kliki tööriistariba paremalt teisel nupul (disketi pildiga), et avaneks juursertifikaadi eksportimise dialoog
# Soovi korral muuda failinimi sobivaks; ära muuda vormingut.
# Soovi korral muuda failinimi sobivaks; ära muuda vormingut
# Kliki 'Save' ja 'OK'.
# Kliki "Save" ja "OK"


Lõpetuseks asja eksporditud sertifikaadi kõigile huvilistele kättesaadavaks.
Lõpetuseks tee äsja eksporditud sertifikaat kõigile huvilistele kättesaadavaks.
 
# Loo kataloog /etc/ssl/local: '''mkdir /etc/ssl/local'''
# Loo kataloog /etc/ssl/local: mkdir /etc/ssl/local
# Kontrolli, et kataloog oleks kõigile loetav: '''chmod 755 /etc/ssl/local'''
# Kontrolli, et kataloog oleks kõigile loetav: chmod 755 /etc/ssl/local
# Kopeeri eelnevalt eksporditud juursertifikaadi fail äsja loodud kataloogi: '''cp /root/localnet.ee-cacert.pem /etc/ssl/local/cacert.pem'''
# Kopeeri eelnevalt eksporditud juursertifikaadi fail äsja loodud kataloogi: cp /root/localnet.ee-cacert.pem /etc/ssl/local/cacert.pem
# Muuda kopeeritud sertifikaat kõigile ainult loetavaks: '''chmod 444 /etc/ssl/local/cacert.pem'''
# Muuda kopeeritud sertifikaat kõigile ainult loetavaks: chmod 444 /etc/ssl/local/cacert.pem


Kui on soov teha loodud juursertifikaat tuntuks enamikele programmidele, siis tasub mõelda paketi ca-certificates paigaldamisele.  
Kui on soov teha loodud juursertifikaat tuntuks enamikele programmidele, siis tasub mõelda paketi ca-certificates paigaldamisele.  
Line 150: Line 181:
# Kliki tööriistariba paremamalt neljandal nupul
# Kliki tööriistariba paremamalt neljandal nupul
# Avanes sertifikaadi nõude loomise dialoog, mis täida järgmiselt:
# Avanes sertifikaadi nõude loomise dialoog, mis täida järgmiselt:
## Common Name: ''serveri.täispikk.nimi.domeeniga.ee''
## Common Name: '''''serveri.täispikk.nimi.domeeniga.ee'''''
## eMail Address: (täitmine ei ole vajalik)
## eMail Address: (täitmine ei ole vajalik)
## Password (2x): ''mida keerulisem, seda parem'' (kasutatakse sertifikaadi võtme eksportimisel faili)
## Password (2x): '''''mida keerulisem, seda parem''''' (seda on vaja sertifikaadi võtme eksportimisel faili)
## Organizational Unit Name: ''siia sobib kirjutada seda, milleks sertifikaati kasutatakse''
## Organizational Unit Name: '''''siia sobib kirjutada seda, milleks sertifikaati kasutatakse'''''
## Ülejäänud väljade väärtust ei ole vaja muuta
## Ülejäänud väljade väärtust ei ole vaja muuta
# Kliki OK, mille tulemusel lisatakse sertifikaadi nõue nimekirja.
# Kliki "OK", mille tulemusel lisatakse sertifikaadi nõue nimekirja
# Vali nimekirjast loodud nõue.
# Vali nimekirjast loodud nõue
# Kliki tööriistariba paremamalt teisel nupul
# Kliki tööriistariba paremamalt teisel nupul
# Avaneb nõude allkirjastamise dialoog, mis täida järgmiselt
# Avaneb nõude allkirjastamise dialoog, mis täida järgmiselt:
## CA Password: testca
## CA Password: '''testca'''
## Ülejäänud väljade väärtust ei ole vaja muuta
## Ülejäänud väljade väärtust ei ole vaja muuta
# Kliki OK, mille tulemusel sertifikaat allkirjastatakse
# Kliki OK, mille tulemusel sertifikaat allkirjastatakse
Line 165: Line 196:
# Otsi üles äsjaloodud sertifikaadi võti ja aktiveeri see hiireklikiga
# Otsi üles äsjaloodud sertifikaadi võti ja aktiveeri see hiireklikiga
# Kliki tööriistariba paremamalt teisel nupul
# Kliki tööriistariba paremamalt teisel nupul
# Avaneb sertifikaadi võtme eksportimise dialoog, mis täida järgmiselt
# Avaneb sertifikaadi võtme eksportimise dialoog, mis täida järgmiselt:
## File: muuda ära, kui vaikeväärtus ei meeldi või kattub olemasolevaga
## File: muuda ära, kui vaikeväärtus ei meeldi või kattub olemasolevaga
## Export Format: PEM (Key)
## Export Format: '''PEM (Key)'''
## Without Passphrase: Yes
## Without Passphrase: '''Yes'''
## Include Certificate: No
## Include Certificate: '''No'''
# Kliki Save
# Kliki "Save"
# Aktiveeri vahekaart "Certificates"
# Aktiveeri vahekaart "Certificates"
# Otsi üles allkirjastatud sertifikaat ja aktiveeri see hiireklikiga
# Otsi üles allkirjastatud sertifikaat ja aktiveeri see hiireklikiga
Line 176: Line 207:
# Avaneb sertifikaadi eksportimise dialoog, mis täida järgmiselt
# Avaneb sertifikaadi eksportimise dialoog, mis täida järgmiselt
## File: muuda ära, kui vaikeväärtus ei meeldi või kattub olemasolevaga
## File: muuda ära, kui vaikeväärtus ei meeldi või kattub olemasolevaga
## Export Format: PEM (Key)
## Export Format: '''PEM (certificate)'''
## Include Key: No
## Include Key: '''No'''
## Include Fingerprint: No
## Include Fingerprint: '''No'''
# Kliki Save
# Kliki "Save"


----
----
=== Migrationtools ===
=== Migrationtools ===


Line 213: Line 245:
Järgmisena muuda faili '''/etc/default/slapd'''.
Järgmisena muuda faili '''/etc/default/slapd'''.


Otsi faili keskelt üles rida, mis algab #SLAPD_SERVICES= ja muuda ta järgmiseks
Otsi faili keskelt üles rida, mis algab ''#SLAPD_SERVICES='' ja muuda ta järgmiseks


  SLAPD_SERVICES="ldap:/// ldaps:/// ldapi:///"
  SLAPD_SERVICES="ldap:/// ldaps:/// ldapi:///"
Line 222: Line 254:
(Kahte esimest meetodit saab kasutada võrgust, kolmandat aga ainult kohalikust arvutist.)
(Kahte esimest meetodit saab kasutada võrgust, kolmandat aga ainult kohalikust arvutist.)


Järgmisena otsi faili lõpus üles rida, mis algab #export KRB5_KTNAME= ja muuda ta järgmiseks
Järgmisena otsi faili lõpust üles rida, mis algab ''#export KRB5_KTNAME='' ja muuda ta järgmiseks


  export KRB5_KTNAME=/etc/ldap/ldap.keytab
  export KRB5_KTNAME=/etc/ldap/ldap.keytab


See muudatus ütleb slapd'le, et SASL teegi GSSAPI moodul peab Kerberose võtmeid otsima failist /etc/ldap/ldap.keytab.
See muudatus ütleb LDAP deemonile, et SASL teegi GSSAPI moodul peab Kerberose võtmeid otsima failist /etc/ldap/ldap.keytab.


Ja ongi kõik. Lõppkujul fail peaks sisaldama järgmist informatsiooni.  
Ja ongi kõik. Lõppkujul fail peaks sisaldama järgmist informatsiooni.  
Line 248: Line 280:
  include  /etc/ldap/schema/hdb.schema
  include  /etc/ldap/schema/hdb.schema


Failis /etc/ldap/schema/hdb.schema on kirjeldatud LDAP objektid ja atribuudid,  
Failis '''/etc/ldap/schema/hdb.schema''' on kirjeldatud LDAP objektid ja atribuudid,  
mis võimaldavad Heimdali deemonitel kasutada LDAP kataloogi oma andmebaasina.
mis võimaldavad Heimdali deemonitel kasutada LDAP kataloogi oma andmebaasina.


<!-- Umbes 15 rida allpool on slapd laiendusmoodulite konfigureerimine. Lisa sinna rida
Umbes 15 rida allpool on slapd laiendusmoodulite konfigureerimine (''moduleload''). Lisa sinna rida


  moduleload  syncprov
  moduleload  syncprov


Selle tulemusel muutub slapd kataloogi(de) replitseerimise võimeliseks.
See võimaldab slapdil olla efektiivne replitseerimise allikas. Rida ei ole vajalik, kui repliteerimist ei planeerita.


Veel ~kümmekond rida allpool on koht, kus hakatakse konfigreerima andmebaaside mootoreid (''backend''). -->
Veel ~kümmekond rida allpool on koht, kus hakatakse konfigreerima andmebaaside mootoreid (''backend'').
Umbes 25 rida allpool on koht, kus hakatakse konfigreerima andmebaaside mootoreid (''backend'').  
Enne vastavat sektsiooni on sobiv koht, kuhu lisada CA ja teenuse sertifikaadid ja võtmed. Lisa read
Enne vastavat sektsiooni on sobiv koht, kuhu lisada CA ja teenuse sertifikaadid ja võtmed. Lisa read


Line 264: Line 295:
  TLSCertificateFile    /etc/ssl/local/slapd_demo.localnet.ee_cert.pem
  TLSCertificateFile    /etc/ssl/local/slapd_demo.localnet.ee_cert.pem
  TLSCertificateKeyFile  /etc/ssl/local/slapd_demo.localnet.ee_key.pem
  TLSCertificateKeyFile  /etc/ssl/local/slapd_demo.localnet.ee_key.pem
TLSVerifyClient        allow
Viimane rida lubab LDAP teenusel nõuda ühenduse alguses kliendilt ta sertifikaati, et olla kindel ka kliendi identiteedis. Kui klient sertifikaati ei paku, või esitab vale või vigase sertifikaadi, siis jätkatakse ühendust nii nagu kliendisertifikaati ei olekski esitatud.


Järgnevalt lisa autentimisraamistiku tõlkereegel, mis tõlgib SASL'i pakutud kasutajanime OpenLDAP'le arusaadavaks.
Järgnevalt lisa autentimisraamistiku tõlkereegel, mis tõlgib SASL'i pakutud kasutajanime OpenLDAP'le arusaadavaks.
Line 275: Line 310:


  localSSF 0
  localSSF 0
#sasl-secprops minssf=0
<!-- #sasl-secprops minssf=0 -->


Sellega on slapd globaalne konfiguratsioon valmis. Järgnev kehtib ainult ühe konkreetse kataloogi kohta.
Sellega on slapd globaalne konfiguratsioon valmis. Järgnev kehtib ainult ühe konkreetse kataloogi kohta.


Lisame LDAP administraatorile ajutiselt parooli; kui heimdali deemonid töötavad korralikult, ei ole parooli enam vaja.
Lisame LDAP administraatorile '''ajutiselt''' parooli. Kui kõik seadistatavad komponendid töötavad korralikult,  
Otsi üles rida rootdn ja lisa peale seda järgmine rida:
on õigem jätta autentimine SASLi teegi abil kerberose hooleks. Otsi üles rida ''rootdn'' ja lisa peale seda järgmine rida:


  rootpw  {SSHA}qsOaO/rjPUXDhBctf8xPO4pLm5IUmuN0
  rootpw  {SSHA}qsOaO/rjPUXDhBctf8xPO4pLm5IUmuN0


Siin on parool demo ''salted SSH-1'' räsina; selle tekitab käsk '''slappasswd'''.
Siin on parool demo ''salted SSH-1'' räsina; selle tekitab käsk '''slappasswd'''.
Kataloogi replitseerimise seadistamine on valikuline, kuid soovitatav. Replitseerimise lubamiseks lisa read
overlay                syncprov
syncprov-checkpoint    100 10
syncprov-sessionlog    100
Esimene rida kolmest kohustab slapdi genereerima kõigile kataloogis olevatele objektidele
replitseerimisel kasutatavad atribuudid ''entryCSN'' ja ''entryUUID''. Ülejäänud kaks seadistavad replitsserimisinfo uuendamist.


Järgmisena täiendame indekseeritavate atribuutide valikut, sest indekseerimata atribuutide küsimine  
Järgmisena täiendame indekseeritavate atribuutide valikut, sest indekseerimata atribuutide küsimine  
Line 290: Line 334:
Defineeri indekseerimiseks täiendavad atribuudid:
Defineeri indekseerimiseks täiendavad atribuudid:


index  entryCSN eq
index  entryUUID eq
  index  uid eq
  index  uid eq
  index  uidNumber eq
  index  uidNumber eq
Line 297: Line 343:
  index  cn eq,sub,pres
  index  cn eq,sub,pres
  index  mail eq,sub,pres
  index  mail eq,sub,pres
  index  surname eq,sub,pres
  index  surname eq,sub,pres
  index  givenname eq,sub,pres
  index  givenname eq,sub,pres


Nüüd käi läbi kõik ligipääsukontrolli (ACL) reeglid (algavad fraasiga '''access to''') ja täienda neid reaga
Nüüd käi läbi kõik ligipääsukontrolli (''ACL'') reeglid (algavad fraasiga '''access to''') ja täienda neid reaga


  by dn.exact="uid=heimdal,dc=services,dc=localnet,dc=ee" write
  by dn.exact="uid=heimdal,dc=services,dc=localnet,dc=ee" write
Line 325: Line 371:
  modulepath  /usr/lib/ldap
  modulepath  /usr/lib/ldap
  moduleload  back_hdb
  moduleload  back_hdb
'''moduleload  syncprov'''
  sizelimit    500
  sizelimit    500
  tool-threads 1
  tool-threads 1
Line 330: Line 377:
  '''TLSCertificateFile    /etc/ssl/local/slapd_demo.localnet.ee_cert.pem'''
  '''TLSCertificateFile    /etc/ssl/local/slapd_demo.localnet.ee_cert.pem'''
  '''TLSCertificateKeyFile  /etc/ssl/local/slapd_demo.localnet.ee_key.pem'''
  '''TLSCertificateKeyFile  /etc/ssl/local/slapd_demo.localnet.ee_key.pem'''
'''TLSVerifyClient        allow'''
  '''authz-regexp "gidNumber=.*\\\+uidNumber=0,cn=peercred,cn=external,cn=auth"'''
  '''authz-regexp "gidNumber=.*\\\+uidNumber=0,cn=peercred,cn=external,cn=auth"'''
  '''      "uid=heimdal,dc=services,dc=localnet,dc=ee"'''
  '''      "uid=heimdal,dc=services,dc=localnet,dc=ee"'''
Line 343: Line 391:
  dbconfig    set_lk_max_locks  1500
  dbconfig    set_lk_max_locks  1500
  dbconfig    set_lk_max_lockers 1500
  dbconfig    set_lk_max_lockers 1500
'''overlay                syncprov'''
'''syncprov-checkpoint    100 10'''
'''syncprov-sessionlog    100'''
  index        objectClass        eq
  index        objectClass        eq
'''index        entryCSN          eq'''
'''index        entryUUID          eq'''
  '''index        uid                eq'''
  '''index        uid                eq'''
  '''index        uidNumber          eq'''
  '''index        uidNumber          eq'''
Line 372: Line 425:


Loo sertifikaat, mille  
Loo sertifikaat, mille  
* common name: demo.localnet.ee
* common name: '''demo.localnet.ee'''
* password: midagi omal valikul
* password: '''''midagi omal valikul''' järgides põhimõtet, mida keerulisem, seda parem''
* organizational unit: LDAP teenus
* organizational unit: '''LDAP teenus'''


Ekspordi sertifikaat faili '''/etc/ssl/local/slapd_demo.localnet.ee_cert.pem''' <br />
Ekspordi sertifikaat faili '''/etc/ssl/local/slapd_demo.localnet.ee_cert.pem''' <br />
Line 389: Line 442:
Lõpetuseks väikese test, et veenduda teenuse ja sertifikaadi õiges seadistuses. Käivita slapd käsurealt nii:
Lõpetuseks väikese test, et veenduda teenuse ja sertifikaadi õiges seadistuses. Käivita slapd käsurealt nii:


  slapd -h 'ldap:/// ldaps:/// ldapi:///' -g openldap -u openldap -f /etc/ldap/slapd.conf
  slapd -h 'ldap:/// ldaps:/// ldapi:///' -g openldap -u openldap -f /etc/ldap/slapd.conf -d 0


Kui slapd jääb tööle, siis on kõik korras ja ta töö võib lõpetada Ctrl+C klahvikombinatsiooniga. Kui ei jää, siis on kusagil mingi viga tehtud.
Kui slapd jääb tööle, siis on kõik korras ja ta töö võib lõpetada Ctrl+C klahvikombinatsiooniga. Kui ei jää, siis on kusagil mingi viga tehtud.
 
Tavalised vead on näiteks sertifikaadi faili nime valesti kirjutamine või faili omaniku muutmata jätmine.


==== LDAP teenuse andmebaas ====
==== LDAP teenuse andmebaas ====
Line 401: Line 456:
  cp -a /var/lib/ldap /var/lib/ldap_old
  cp -a /var/lib/ldap /var/lib/ldap_old


Kustuta kataloogist /var/lib/ldap kõik failid peale faili DB_CONFIG. (Tegemist on andmebaasimootori konfiguratsioonifailiga.)
Kustuta kataloogist /var/lib/ldap kõik failid peale faili DB_CONFIG. Tegemist on andmebaasimootori konfiguratsioonifailiga.


  rm /var/lib/ldap/*
  rm /var/lib/ldap/*
Line 414: Line 469:
  perl -I/etc/migrationtools/ /usr/share/migrationtools/migrate_passwd.pl /etc/passwd >> /root/ldap_init.ldif
  perl -I/etc/migrationtools/ /usr/share/migrationtools/migrate_passwd.pl /etc/passwd >> /root/ldap_init.ldif


Ava loodud fail tekstiredaktoris ja kustuta sellest kõik kirjed, mis viitavad NIS'le. Samuti kustata ka kasutajad ja grupid, mis LDAP kataloogi kuuluma ei pea.<br />
Ava loodud fail tekstiredaktoris ja kustuta sellest kõik kirjed, mis viitavad NIS teenusele.  
Samuti kustata ka kasutajad ja grupid, mis LDAP kataloogi kuuluma ei pea.<br />
Alljärgnev näide on "üle keskmise" töödeldud:  
Alljärgnev näide on "üle keskmise" töödeldud:  
* sealt on kustutatud liigsed kataloogi harud, mis jäävad hetkel nagunii täitmata,  
* sealt on kustutatud liigsed kataloogi harud, mis jäävad hetkel nagunii täitmata,  
Line 470: Line 526:
  slapadd -l /root/ldap_init.ldif
  slapadd -l /root/ldap_init.ldif


Edasi muuda failide omanikuks openldap (hetkel on juurkasutaja)
Edasi muuda failide omanikuks openldap (hetkel on juurkasutaja).


  chown openldap:openldap /var/lib/ldap/*
  chown openldap:openldap /var/lib/ldap/*


==== LDAP teenuse käivitamine ====
==== LDAP teenuse käivitamine ====


Nüüd saab lõpuks käivita OpenLDAP deemoni slapd
Nüüd saab lõpuks käivitada OpenLDAP deemoni slapd:


  demo# /etc/init.d/slapd start
  /etc/init.d/slapd start
Starting OpenLDAP: slapd.
demo#


Lõpetuseks kiirkontroll, kas slapd töötab ja andmed on kättesaadavad LDAP juurkasutajale
Lõpetuseks kiirkontroll, kas slapd töötab ja andmed on kättesaadavad LDAP juurkasutajale
Line 487: Line 540:
  ldapsearch -x -H "ldap://localhost/" -D "cn=admin,dc=localnet,dc=ee" -w demo -b "dc=localnet,dc=ee"
  ldapsearch -x -H "ldap://localhost/" -D "cn=admin,dc=localnet,dc=ee" -w demo -b "dc=localnet,dc=ee"


Kui väljund on peaaegu sama, mis initsialiseerimisel, siis on kõik korras. Väljundi esimesel real olev LDIF vormingu versiooni number ja lisatud kommentaarid on oodatud ja lubatud erinevused.
Käsu väljund peab olema peaaegu sama, mis initsialiseerimisel. Lisatud kommentaarid on oodatud ja lubatud erinevused.<br />
Ülaltoodud sisendfaili kasutamisel on väljund selline:


==== Sasl teegi konfiguratsioon ====
  # extended LDIF
 
Loo fail '''/etc/ldap/sasl2/slapd.conf''' järgmise sisuga.
 
  # SASL2 configuration file for slapd from OpenLDAP
  #
  #
  # Place this file to /usr/lib/sasl2
  # LDAPv3
  # In case of Debian 5.0 build, it can also be in /etc/ldap/sasl2
  # base <dc=localnet,dc=ee> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
  #
  #
# All used parameters are documented in file options.html in Cyrus SASL2 package.
# In Debian system one will get this file as /usr/share/doc/cyrus-sasl2-doc/options.html
# after installing cyrus-sasl2-doc package.
#
#
# Interesting SASL library parameters
#  auto_transition: <boolean>
#  log_level: <number>
#  mech_list: <string list>
#  pwcheck_method: <string list>
#  auxprop_plugin: <string list>
   
   
  # Interesting GSSAPI parameters
  # localnet.ee
  #  keytab: <string>
dn: dc=localnet,dc=ee
dc: localnet
objectClass: top
objectClass: domain
# Groups, localnet.ee
dn: ou=Groups,dc=localnet,dc=ee
ou: Groups
objectClass: top
objectClass: organizationalUnit
# Users, localnet.ee
dn: ou=Users,dc=localnet,dc=ee
ou: Users
objectClass: top
objectClass: organizationalUnit
  # users, Groups, localnet.ee
dn: cn=users,ou=Groups,dc=localnet,dc=ee
objectClass: posixGroup
objectClass: top
  cn: users
userPassword:: e2NyeXB0fXg=
gidNumber: 100
memberUid: tester
# tester, Groups, localnet.ee
dn: cn=tester,ou=Groups,dc=localnet,dc=ee
objectClass: posixGroup
objectClass: top
cn: tester
userPassword:: e2NyeXB0fXg=
gidNumber: 1001
# tester, Users, localnet.ee
dn: uid=tester,ou=Users,dc=localnet,dc=ee
uid: tester
cn: test kasutaja
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQxJEJHLk9qNFVSJFJ6OU42dUJxM094OEhIbnJpT2RLdS8=
shadowLastChange: 14618
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/tester
gecos: test kasutaja,,,
# search result
search: 2
result: 0 Success
# numResponses: 7
# numEntries: 6
 
==== Teegi SASL2 konfiguratsioon ====
 
Loo fail '''/etc/ldap/sasl2/slapd.conf''' järgmise sisuga.
   
   
  keytab: /etc/ldap/ldap.keytab
  keytab: /etc/ldap/ldap.keytab
Line 517: Line 619:
  log_level: 7
  log_level: 7
  #mech_list: GSSAPI PLAIN LOGIN CRAM-MD5 DIGEST-MD5
  #mech_list: GSSAPI PLAIN LOGIN CRAM-MD5 DIGEST-MD5
#auxprop_plugin: sasldb
   
   
Siin on kirjas, et  
Siin on kirjas, et  
* GSSAPI (Kerberose) võtmefail on /etc/ldap/ldap.keytab
* GSSAPI (Kerberose) võtmefail on /etc/ldap/ldap.keytab
* paroole kontrollitakse saslauthd deemoni abil
* paroole kontrollitakse saslauthd deemoni abil
* SASL2 teegi teateid logitakse maksimaalsel tasemel
* SASL2 teegi teateid logitakse maksimaalsel tasemel
Toetatud autentimismehanismide nimekiri on hetkel väljakommenteeritud.
See kohustab teeki proovima kõiki süsteemi paigaldatud autentimismeetodeid.
<!-- Artikli järgmistes versioonides võib antud rea sisu muutuda. -->


==== LDAP klienditeegi seadistus ====
==== LDAP klienditeegi seadistus ====


Ava tekstiredaktoris fail /etc/ldap/ldap.conf ja lisa järgmised read:
Ava tekstiredaktoris fail '''/etc/ldap/ldap.conf''' ja lisa järgmised read:


  TLS_CACERT /etc/ssl/local/cacert.pem
BASE            dc=localnet,dc=ee
  TLS_verify? allow
URI            ldap://demo.localnet.ee
  TLS_CACERT     /etc/ssl/local/cacert.pem
  #TLS_REQCERT    allow
'''BASE''' defineerib vaikimis kasutatava kataloogi juure. <br />
'''URI''' määrab vaikimisi serveri ja ühendusprotokolli. <br />
'''TLS_CACERT''' võimaldab kirjeldada kasutatava juursertifikaadi.


BASE dC=localnet,dc=ee
Hetkel on kommenteeritud '''TLS_REQCERT''', mis võimaldab määrata, kui põhjalikult on vaja kontrollida serveri sertifikaati.


----
----
Line 553: Line 662:


Lisa järgmised read väljakommenteeritud rea alla (nagu näed muutus antud direktiivi asukoht).
Lisa järgmised read väljakommenteeritud rea alla (nagu näed muutus antud direktiivi asukoht).
  database = {
  database = {
     dbname = ldap:ou=KerberosPrincipals,dc=localnet,dc=ee
     dbname = ldap:ou=KerberosPrincipals,dc=localnet,dc=ee
Line 559: Line 669:
     mkey_file = /var/lib/heimdal-kdc/mkey
     mkey_file = /var/lib/heimdal-kdc/mkey
  }
  }
Siin on kirjas järgmine:
Siin on kirjas järgmine:
* andmebaas on LDAP kataloogi harus ou=KerberosPrincipals,dc=localnet,dc=ee,
* andmebaas on LDAP kataloogi harus ou=KerberosPrincipals,dc=localnet,dc=ee,
Line 564: Line 675:
* milline objektiklass võtta uue kasutaja loomisel baasiks (vajalik ainult siis, kui on plaan kasutada Sambat), ja
* milline objektiklass võtta uue kasutaja loomisel baasiks (vajalik ainult siis, kui on plaan kasutada Sambat), ja
* millisesse faili salvestada kerberose andmebaasi võti (vajalik siis, kui ei taha seda salvestada LDAP kataloogi).
* millisesse faili salvestada kerberose andmebaasi võti (vajalik siis, kui ei taha seda salvestada LDAP kataloogi).
FIXME: kirjuta, miks pannakse Samba kasutamisel andmebaas ou=Users,dc=localnet,dc=ee harusse ja mis probleemid sellega kaasnevad.


==== /etc/heimdal-kdc/kadmind.acl ====
==== /etc/heimdal-kdc/kadmind.acl ====
Line 573: Line 686:
  */admin@LOCALNET.EE    *
  */admin@LOCALNET.EE    *


See lubab kõigil administratiivsetel tegelinskitel kõike majandada.
See lubab kõigil kerberose andmebaasis defineeritud kasutajatel, kellel haldusüksuses ''LOCALNET.EE'' on instantsiks defineeritud ''admin'', kõike majandada.
 
Tulevikus tuleb seda faili üsna kindlasti täiendada.


==== Andmebaasi uuesti initsialiseerimine ====
==== Andmebaasi uuesti initsialiseerimine ====
Line 871: Line 986:


Käesolevast juhendist jäid olulistest komponentidest välja:
Käesolevast juhendist jäid olulistest komponentidest välja:
* LDAP replitseerimine,
* LDAP replitseerimine (käideldavuse tõstmine ja kiirema vastamise tagamine),
* Kerberose täiendavad võtmejaotusserverid,
* Kerberose täiendavad võtmejaotusserverid, mis tõstavad käideldavust ja tagavad ka kiirema vastamise,
* DNS kirjete lisamine, et vältida serverite staatilit konfigureerimist failidesse.
* DNSi kirjete lisamine, et vältida serverite staatilist konfigureerimist /etc/krb5.conf failidesse.
* NTP teenuse seadistamine, et garanteerida haldusüksuse moodustavate masinate kellade samasus. Siinkohal on vale öelda õigsus (seadmete kell on õige), sest Keberos eeldab ainult seda, et haldusüksuse sees on kõigil seadmetel enam-vähem sama kellaaeg-kuupäev. Vaikeseadistuses on lubatud erinevus viis minutit.


== Kasutatud kirjandus ==
== Kasutatud kirjandus ==

Latest revision as of 19:56, 31 January 2010

Tähelepanu! See artikkel on ikka veel poolik; siit ei saa töötavat süsteemi.

Versioonide ajalugu

0.1 - 18.12.2009
Lehe struktuuri loomine, esmane nõudmeste ja eelduste määramine
0.2 - 26.01.2010
Ikka veel poolik tööversioon, kuid paigaldamine, seadistamine, varundamine ja taastamine on jõudnud hakkab looma olekusse; täiesti puudu on testimine.
0.3 - 30.01.2010
Parandatud ja natuke täiendatud vastavalt diskussiooni lehel toodud soovitustele, kuid ikka veel poolik.
0.4 - 31.01.2010
Eelkõige on parandatud eelmisesse versiooni alles jäänud vead. Lisatud on mõningate käskude väljundid.

Autor

Kristjan Räts / AK-41

Sissejuhatus

Käesolevas juhendi eesmärk on luua Kerberose ja LDAP vahenditega suhteliselt universaalne baas kasutajate autentimiseks erinevate serverite ja teenuste poolt. Juhend on loodud Debian GNU/Linuxi baasil ja kasutab temaga kaasas olevaid Heimdali ja OpenLDAP pakette.

Kuigi juhend on püütud kirjutada nii, et sellest peaks sobima ka täiesti algajale, tasub lugejal enne siiski veenduda, et ta on suuteline seadistama OpenLDAP-i seadistamine teenuse. Samuti eeldatakse Kerberose ja X.509 sertifikaatide loomise põhitõdede tundmist.

Alljärgnevas eeldatakse, et kõik käsud käivitatakse juurkasutaja (root) õigustes, kui seda ei öelda ilmutatult teisiti.

Paigaldatav ja seadistatav tarkvara

Programm Versioon
Debian 5.0.3
Heimdal 1.2.dfsg.1-2.1
OpenLDAP 2.4.11-1+lenny1
Cyrus SASL2 teek 2.1.22.dfsg1-23+lenny1

Nõuded

  • Luua OpenLDAP ja Heimdali Kerberose baasil toorik, mis sobib muude teenuste autentimise tuumaks.
  • Seadistada Kerberos nii, et ta andmebaas on OpenLDAP serveris.

Terminid ja lühendid

Juhendis on kasutatud järgmiseid mõisteid ja lühendeid.

realm
haldusüksus, mida kerberose abil hallatakse-kaitstakse. Haldusüksuse moodustavad tavakasutajad, masinad ja nendes töötavad teenused.
principal
kasutaja, ehk süsteemi tavakasutaja, teenus või masin.
KDC (Key Distribution Center)
Kerberose võtmete ja piletite jaotamise teenus
LDAP (Lightweight Directory Access Protocol)
lihtne kataloogi pöördusprotokoll. Sõna lihtne (lightweight) on tegelikult ääretult võlts; LDAP on lihtne ainult X.500 DAP protokolliga võrreldes...
mkey (master key)
võti, millega krüpteeritakse Kerberose andmebaas
localnet.ee
fiktiivne domeen, millele luuakse kerberose haldusüksus ja LDAP kataloog.
LOCALNET.EE
loodava haldusüksuse nimi. Kerberose haldusüksused on harilikult läbivate suurtähtedega, kuid väiketähed on lubatud.
dc=localnet,dc=ee
LDAP kataloogi juur, mille alla luuakse kõik ülejäänud kataloogi objektid. Ka kataloogi juurt võib muuta, kuid on olemas programme, mis ei tööta muul kujul juurega.
demo.localnet.ee
server, mis hakkab pakkuma kerberose autentimise ja LDAP kataloogi teenuseid.

Kerberose lühitutvustus

(Järgnev jutt on tõlgitud wikipeediast. Eesti keeles on juttu veel Kuutõrvajas)

Kerberos on arvutivõrgu autentimisprotokoll, mis lubab turvamata võrgus olevatel seadmetel üksteist identifitseerida turvaliselt. Sama nime kannab ka Massachusettsi Tehnoloogia Instituudi poolt loodud tarkvarapakett, mis on vabalt kasutatav.

Kerberos on loodud klient-server mudeli põhjal ja võimaldab vastastikust autentimist - nii kasutaja kui ka server kontrollivad teineteise identiteeti. Kerberose protokolli sõnumid on kaitsud nii pealtkuulamise kui ka korduvkasutamise eest. Protokoll põhineb salajase võtme krüptograafial ja nõuab usaldatavat kolmandat osapoolt. Protokolli on laiendatud toetama avaliku võtme krüptograafiat autenitmise mõnedes faasides.

FIXME: lisa pilt ja seletus kerberose põhikäitumisest


Kasutajate nimetamine kerberose andmebaasis

Kerberose andmebaasis defineeritud kasutajate nimed on kujul prefiks@haldusüksus. Prefiks koosneb põhinimest ja täpsustavast instantsist; neid eraldab kaldkriips (/).

Eelnevalt on kokku lepitud, et kõigi haldusüksuses olevate masinate-seadmete põhinimi on host ja instants masina täispikk nimi. Näiteks serverile demo.localnet.ee vastav kerberose kasutajanimi on host/demo.localnet.ee@LOCALNET.EE.

Analoogne kokkulepe kehtib ka teenuste osas. Siin on põhinimeks teenuse nimi ja instants masina täispikk nimi. Näiteks LDAP teenusele vastav kerberose kasutajanimi serveris demo.localnet.ee on ldap/demo.localnet.ee@LOCALNET.EE.

Paigaldamine

Põhiprogrammid: Heimdal ja OpenLDAP

Paigalda paketid slapd, heimdal-kcm ja heimdal-kdc:

apt-get install slapd heimdal-kcm heimdal-kdc

Lisaks hulgale pakettidele lisatakse süsteemi veel kasutaja ja grupp openldap, mille õigustes hakkab töötama OpenLDAP deemon slapd.

Paketi slapd eelkonfigureerimisel küsitakse LDAP kataloogi administraatori parooli, mis tuleks meelde jätta.

Paketi krb5-config seadistamisel tuletatakse arvuti domeenist automaatselt kerberose vaikimis haldusüksuse nimi (LOCALNET.EE), millele küsitakse võtmete ja paroolivahetuse serverite nimesid. Mõlemal juhul on serveriks demo.localnet.ee.

Heimdali ja OpenLDAP põimimisvahendid: sasl2-bin ja libsasl2-modules-gssapi-heimdal

Paketid sasl2-bin ja libsasl2-modules-gssapi-heimdal sisaldavad vahendeid, mis võimaldavad kokku siduda OpenLDAP ja Heimdali teenused nii, et tekib mõnes mõttes ringsõltuvus LDAP ja Kerberose vahel.

Paigaldamine on lihtne nagu ikka:

apt-get install sasl2-bin libsasl2-modules-gssapi-heimdal

Eelkonfigureerimist ei toimu.

Abiprogrammid: Migration tools, TinyCA2

migrationtools

Paketi migrationtools abil saab luua LDAP kataloogi alglaadimisfaili, mis sisaldab hetkel süsteemi flat-andmebaasides (/etc/passwd, /etc/group, jt.) kirjeldatid kasutajad. teenused, grupid. Lisaks paigaldatakse tänu sõltuvustele veel pakett ldap-utils, milles olevaid utiliite kasutame hiljem testimiseks.

Paketi migrationtools saad paigaldada nii:

apt-get install migrationtools

TinyCA2

OpenLDAP teenuse seadistamisel on vaja luua ka mitmeid sertifikaate. Seda võib tega nii nagu on kirjas artiklis veebiserveri laboris või kasutada mõnda sertifikaatide haldamise programmi. Käesoleva juhendi autorile esimene variant ei meeldi ning soovitab kasutada programmi TinyCA2.

Tähelepanu: tegemist on programmiga, mis töötab X11 keskkonnas, mille paigaldamine serverisse ei ole alati mõttekas tegu. Samuti tasub arvestada sellega, et TinyCA2 hoiab kõiki sertifikaate kasutaja kodukataloogis.

Soovitus: palun paigaldage tegelikuks kasutuseks mõeldud TinyCA2 Internetist võimalikult eraldatud arvutisse.

Paigaldamine

apt-get install tinyca


Seadistamine

TinyCA2

TinyCA2 seadistamine tähendab tegelikult testimiseks mõeldud CA loomist.

  1. Selleks pane programm tööle. Kui menüüst ei leia, siis toksi programmi nimi tinyca2 kas terminali või käivitusdialoogi.
  2. Kui TinyCA2 ei leia käivitamisel ühtegi CA-d, siis pakub ta võimaluse ühe loomiseks. Selleks kuvab ta dialoogi Create CA, mis tuleks täita näiteks nii:
  • Name: localnet.ee
  • Common Name: Testimise CA
  • Country Name: EE
  • Password (2x): testca (mida keerulisem, seda parem)
  • State or Province Name: Harju
  • Locality Name: Tallinn
  • Organization Name: AS localnet.ee
  • Organizational Unit Name: IT
  • eMail Address: testca@localnet.ee
  • Valid for: 3650
  • Keylength: 4096
  • Digest: SHA-1
  1. Kliki nupul "OK"
  2. Avaneb CA seadistamise dialoog. Siin määratakse ära, kuidas antud CA-d kasutada. Tesimiseks sobivad vaikeseaded küll, mistõttu kliki nupul "OK".
  3. Nüüd läheb sõltuvalt masinast ja juhuarvude generaatori koormatusest natuke aega (genereeritakse RSA võtmeid) ning siis antaksegi teada, et CA on loodud.

Sellega on TinyCA2 seadistamine lõppenud.

Järgmisena ekspordime vastloodud CA juursertifikaadi kõigile kättesaadavale kujule faili.

  1. Aktiveeri vahekaart "CA"
  2. Kliki tööriistariba paremalt teisel nupul (disketi pildiga), et avaneks juursertifikaadi eksportimise dialoog
  3. Soovi korral muuda failinimi sobivaks; ära muuda vormingut
  4. Kliki "Save" ja "OK"

Lõpetuseks tee äsja eksporditud sertifikaat kõigile huvilistele kättesaadavaks.

  1. Loo kataloog /etc/ssl/local: mkdir /etc/ssl/local
  2. Kontrolli, et kataloog oleks kõigile loetav: chmod 755 /etc/ssl/local
  3. Kopeeri eelnevalt eksporditud juursertifikaadi fail äsja loodud kataloogi: cp /root/localnet.ee-cacert.pem /etc/ssl/local/cacert.pem
  4. Muuda kopeeritud sertifikaat kõigile ainult loetavaks: chmod 444 /etc/ssl/local/cacert.pem

Kui on soov teha loodud juursertifikaat tuntuks enamikele programmidele, siis tasub mõelda paketi ca-certificates paigaldamisele. See võimaldab vähese vaevaga teha suvalise juursertifikaadi debianiseeritult kõigile kasutatavaks.


Serverisertifikaadi loomine TineCA2 abil

  1. Aktiveeri vahekaart "Requests"
  2. Kliki tööriistariba paremamalt neljandal nupul
  3. Avanes sertifikaadi nõude loomise dialoog, mis täida järgmiselt:
    1. Common Name: serveri.täispikk.nimi.domeeniga.ee
    2. eMail Address: (täitmine ei ole vajalik)
    3. Password (2x): mida keerulisem, seda parem (seda on vaja sertifikaadi võtme eksportimisel faili)
    4. Organizational Unit Name: siia sobib kirjutada seda, milleks sertifikaati kasutatakse
    5. Ülejäänud väljade väärtust ei ole vaja muuta
  4. Kliki "OK", mille tulemusel lisatakse sertifikaadi nõue nimekirja
  5. Vali nimekirjast loodud nõue
  6. Kliki tööriistariba paremamalt teisel nupul
  7. Avaneb nõude allkirjastamise dialoog, mis täida järgmiselt:
    1. CA Password: testca
    2. Ülejäänud väljade väärtust ei ole vaja muuta
  8. Kliki OK, mille tulemusel sertifikaat allkirjastatakse
  9. Aktiveeri vahekaart "Keys"
  10. Otsi üles äsjaloodud sertifikaadi võti ja aktiveeri see hiireklikiga
  11. Kliki tööriistariba paremamalt teisel nupul
  12. Avaneb sertifikaadi võtme eksportimise dialoog, mis täida järgmiselt:
    1. File: muuda ära, kui vaikeväärtus ei meeldi või kattub olemasolevaga
    2. Export Format: PEM (Key)
    3. Without Passphrase: Yes
    4. Include Certificate: No
  13. Kliki "Save"
  14. Aktiveeri vahekaart "Certificates"
  15. Otsi üles allkirjastatud sertifikaat ja aktiveeri see hiireklikiga
  16. Kliki tööriistariba paremamalt neljandal nupul
  17. Avaneb sertifikaadi eksportimise dialoog, mis täida järgmiselt
    1. File: muuda ära, kui vaikeväärtus ei meeldi või kattub olemasolevaga
    2. Export Format: PEM (certificate)
    3. Include Key: No
    4. Include Fingerprint: No
  18. Kliki "Save"

Migrationtools

Paketi konfiguratsioonifail on /etc/migrationtools/migrate_common.ph.

Muuda selles konstantide DEFAULT_MAIL_DOMAIN ja DEFAULT_BASE väärtused nii:

  • $DEFAULT_MAIL_DOMAIN = "localnet.ee";
  • $DEFAULT_BASE = "dc=localnet,dc=ee";

Kustuta kommentaarimärk järgmiste ridade eest:

  • $IGNORE_UID_BELOW = 1000;
  • $IGNORE_GID_BELOW = 100;
  • $IGNORE_UID_ABOVE = 9999;
  • $IGNORE_GID_ABOVE = 9999;

Allpool eeldatakse, et muudeti ka järgmised read, kuid see on otseselt maitseasi.

  • $NAMINGCONTEXT{'passwd'} = "ou=Users"; # oli: "ou=People"
  • $NAMINGCONTEXT{'group'} = "ou=Groups"; # oli: "ou=Group"

OpenLDAP

LDAP teenuse peatamine

Peale paigaldamist LDAP teenus küll töötab, kuid kahjuks vale seadistusega. Seetõttu tuleb ta seisata.

/etc/init.d/slapd stop

LDAP teenuse käivitamise seadistamine

Järgmisena muuda faili /etc/default/slapd.

Otsi faili keskelt üles rida, mis algab #SLAPD_SERVICES= ja muuda ta järgmiseks

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

Selle muudatuse tulemusel hakkab slapd deemon järgmisel käivitamisel teenindama sissetulevaid ühendusi nii LDAP teenuse tavalisel pordil (389) kui ka SSL krüpteeringuga pordil (636) ning lõpetuseks veel POSIXi kohalikust protsessidevahelise suhtluse soklist. (Kahte esimest meetodit saab kasutada võrgust, kolmandat aga ainult kohalikust arvutist.)

Järgmisena otsi faili lõpust üles rida, mis algab #export KRB5_KTNAME= ja muuda ta järgmiseks

export KRB5_KTNAME=/etc/ldap/ldap.keytab

See muudatus ütleb LDAP deemonile, et SASL teegi GSSAPI moodul peab Kerberose võtmeid otsima failist /etc/ldap/ldap.keytab.

Ja ongi kõik. Lõppkujul fail peaks sisaldama järgmist informatsiooni. Lühiduse mõttes ei ole siin kommentaare ja tühje ridu; muudetud read on rasvasemas kirjas.

SLAPD_CONF=
SLAPD_USER="openldap"
SLAPD_GROUP="openldap"
SLAPD_PIDFILE=
SLAPD_SERVICES="ldap:/// ldaps:/// ldapi:///"
SLAPD_SENTINEL_FILE=/etc/ldap/noslapd
export KRB5_KTNAME=/etc/ldap/ldap.keytab
SLAPD_OPTIONS=""

LDAP teenuse seadistamine

Nüüd ava tekstiredaktoris OpenLDAP deemoni seadistuste fail /etc/ldap/slapd.conf.

Üsna selle faili alguses on 4-5 include-lauset, mille taha lisa veel üks

include   /etc/ldap/schema/hdb.schema

Failis /etc/ldap/schema/hdb.schema on kirjeldatud LDAP objektid ja atribuudid, mis võimaldavad Heimdali deemonitel kasutada LDAP kataloogi oma andmebaasina.

Umbes 15 rida allpool on slapd laiendusmoodulite konfigureerimine (moduleload). Lisa sinna rida

moduleload   syncprov

See võimaldab slapdil olla efektiivne replitseerimise allikas. Rida ei ole vajalik, kui repliteerimist ei planeerita.

Veel ~kümmekond rida allpool on koht, kus hakatakse konfigreerima andmebaaside mootoreid (backend). Enne vastavat sektsiooni on sobiv koht, kuhu lisada CA ja teenuse sertifikaadid ja võtmed. Lisa read

TLSCACertificateFile   /etc/ssl/local/cacert.pem
TLSCertificateFile     /etc/ssl/local/slapd_demo.localnet.ee_cert.pem
TLSCertificateKeyFile  /etc/ssl/local/slapd_demo.localnet.ee_key.pem

TLSVerifyClient        allow

Viimane rida lubab LDAP teenusel nõuda ühenduse alguses kliendilt ta sertifikaati, et olla kindel ka kliendi identiteedis. Kui klient sertifikaati ei paku, või esitab vale või vigase sertifikaadi, siis jätkatakse ühendust nii nagu kliendisertifikaati ei olekski esitatud.

Järgnevalt lisa autentimisraamistiku tõlkereegel, mis tõlgib SASL'i pakutud kasutajanime OpenLDAP'le arusaadavaks. OpenLDAP dokumentatsioonis on öeldud, et asendamise tulemusel tekkivat objekti ei pea kataloogis eksisteerima.

authz-regexp "gidNumber=.*\\\+uidNumber=0,cn=peercred,cn=external,cn=auth"
       "uid=heimdal,dc=services,dc=localnet,dc=ee"

Kuna Heimdali ja OpenLDAP hakkavad omavahel suhtlema POSIX IPC sokli kaudu, siis on vaja lisa ka järgmine rida, mille mõte on keelata suhtluskanalil kasutatav turvalisus.

localSSF 0

Sellega on slapd globaalne konfiguratsioon valmis. Järgnev kehtib ainult ühe konkreetse kataloogi kohta.

Lisame LDAP administraatorile ajutiselt parooli. Kui kõik seadistatavad komponendid töötavad korralikult, on õigem jätta autentimine SASLi teegi abil kerberose hooleks. Otsi üles rida rootdn ja lisa peale seda järgmine rida:

rootpw  {SSHA}qsOaO/rjPUXDhBctf8xPO4pLm5IUmuN0

Siin on parool demo salted SSH-1 räsina; selle tekitab käsk slappasswd.

Kataloogi replitseerimise seadistamine on valikuline, kuid soovitatav. Replitseerimise lubamiseks lisa read

overlay                 syncprov
syncprov-checkpoint     100 10
syncprov-sessionlog     100

Esimene rida kolmest kohustab slapdi genereerima kõigile kataloogis olevatele objektidele replitseerimisel kasutatavad atribuudid entryCSN ja entryUUID. Ülejäänud kaks seadistavad replitsserimisinfo uuendamist.

Järgmisena täiendame indekseeritavate atribuutide valikut, sest indekseerimata atribuutide küsimine on suure kattaloogi puhul suhteliselt aeglane tegevus ja vaikimisi luuakse indeks ainult atribuudile objectClass. Defineeri indekseerimiseks täiendavad atribuudid:

index   entryCSN		eq
index   entryUUID		eq
index   uid			eq
index   uidNumber		eq
index   gidNumber		eq
index   memberUid		eq
index   krb5PrincipalName	eq
index   cn			eq,sub,pres
index   mail			eq,sub,pres
index   surname			eq,sub,pres
index   givenname		eq,sub,pres

Nüüd käi läbi kõik ligipääsukontrolli (ACL) reeglid (algavad fraasiga access to) ja täienda neid reaga

by dn.exact="uid=heimdal,dc=services,dc=localnet,dc=ee" write

Näide lõpptulemusest

access to attrs=userPassword,shadowLastChange
       by dn="cn=admin,dc=localnet,dc=ee" write
       by dn.exact="uid=heimdal,dc=services,dc=localnet,dc=ee" write
       by anonymous auth
       by self write
       by * none

Ja ongi kõik. Kui kommentaarid välja visata, siis peaks lõppkujul fail olema selline (lisatud read on poolpaksus kirjas):

include      /etc/ldap/schema/core.schema
include      /etc/ldap/schema/cosine.schema
include      /etc/ldap/schema/nis.schema
include      /etc/ldap/schema/inetorgperson.schema
include      /etc/ldap/schema/hdb.schema
pidfile      /var/run/slapd/slapd.pid
argsfile     /var/run/slapd/slapd.args
loglevel     none
modulepath   /usr/lib/ldap
moduleload   back_hdb
moduleload   syncprov
sizelimit    500
tool-threads 1
TLSCACertificateFile   /etc/ssl/local/cacert.pem
TLSCertificateFile     /etc/ssl/local/slapd_demo.localnet.ee_cert.pem
TLSCertificateKeyFile  /etc/ssl/local/slapd_demo.localnet.ee_key.pem
TLSVerifyClient        allow
authz-regexp "gidNumber=.*\\\+uidNumber=0,cn=peercred,cn=external,cn=auth"
      "uid=heimdal,dc=services,dc=localnet,dc=ee"
localSSF 0
backend      hdb
database     hdb
suffix       "dc=localnet,dc=ee"
rootdn       "cn=admin,dc=localnet,dc=ee"
rootpw       {SSHA}qsOaO/rjPUXDhBctf8xPO4pLm5IUmuN0	# demo
directory    "/var/lib/ldap"
dbconfig     set_cachesize      0   2097152   0
dbconfig     set_lk_max_objects 1500
dbconfig     set_lk_max_locks   1500
dbconfig     set_lk_max_lockers 1500
overlay                 syncprov
syncprov-checkpoint     100 10
syncprov-sessionlog     100
index        objectClass        eq
index        entryCSN           eq
index        entryUUID          eq
index        uid                eq
index        uidNumber          eq
index        gidNumber          eq
index        memberUid          eq
index        krb5PrincipalName  eq
index        cn                 eq,sub,pres
index        mail               eq,sub,pres
index        surname            eq,sub,pres
index        givenname          eq,sub,pres
lastmod      on
checkpoint   512 30
access to attrs=userPassword,shadowLastChange
      by dn="cn=admin,dc=localnet,dc=ee" write
      by dn.exact="uid=heimdal,dc=services,dc=localnet,dc=ee" write
      by anonymous auth
      by self write
      by * none
access to dn.base="" by * read
access to *
      by dn="cn=admin,dc=localnet,dc=ee" write
      by dn.exact="uid=heimdal,dc=services,dc=localnet,dc=ee" write
      by * read

LDAP teenuse sertifikaat

Ülalpool OpenLDAP teenust seadistades läks konfiguratsioonifaili sisse ka sertifikaadi kasutamine. Seega on vaja luua sertifikaat. Põhimõtteliselt võib luua ühe sertifikaadi terve masina jaoks, kuid kuna slapd töötab eraldi kasutaja õigustes, siis peaks võimaluse korral kasutama ainult talle loodud sertifikaati. <FIXME: lisa põhjendus>

Loo sertifikaat, mille

  • common name: demo.localnet.ee
  • password: midagi omal valikul järgides põhimõtet, mida keerulisem, seda parem
  • organizational unit: LDAP teenus

Ekspordi sertifikaat faili /etc/ssl/local/slapd_demo.localnet.ee_cert.pem
Ekspordi sertifikaadi võti faili /etc/ssl/local/slapd_demo.localnet.ee_key.pem

Muuda failide õigused ja omanik:

chown openldap:openldap /etc/ssl/local/slapd_demo.localnet.ee_*.pem
chmod 644 /etc/ssl/local/slapd_demo.localnet.ee_cert.pem
chmod 600 /etc/ssl/local/slapd_demo.localnet.ee_key.pem

Ära unusta kontrollimast ka juursertifikaadi olemasolu!

Lõpetuseks väikese test, et veenduda teenuse ja sertifikaadi õiges seadistuses. Käivita slapd käsurealt nii:

slapd -h 'ldap:/// ldaps:/// ldapi:///' -g openldap -u openldap -f /etc/ldap/slapd.conf -d 0

Kui slapd jääb tööle, siis on kõik korras ja ta töö võib lõpetada Ctrl+C klahvikombinatsiooniga. Kui ei jää, siis on kusagil mingi viga tehtud.

Tavalised vead on näiteks sertifikaadi faili nime valesti kirjutamine või faili omaniku muutmata jätmine.

LDAP teenuse andmebaas

Järgmise sammuna on mõttekas tühjendada LDAP andmebaas.

Tee varukoopia olemasolevast andmebaasist

cp -a /var/lib/ldap /var/lib/ldap_old

Kustuta kataloogist /var/lib/ldap kõik failid peale faili DB_CONFIG. Tegemist on andmebaasimootori konfiguratsioonifailiga.

rm /var/lib/ldap/*
cp /var/lib/ldap_old/DB_CONFIG /var/lib/ldap/

Nüüd konverteeri migrationtoolsi abil süsteemi flat-andmebaasid LDAP kataloogi lähteandmeteks. Kuigi migrationtools võimaldab genereeritava info laadimist otse kataloogi, on mõttekam see salvestada kõigepealt faili, üle vaadata ja alles siis manuaalselt kataloogi laadida. Järgnevad käsud genereerivad faili /root/ldap_init.ldif.

perl -I/etc/migrationtools/ /usr/share/migrationtools/migrate_base.pl               >  /root/ldap_init.ldif
perl -I/etc/migrationtools/ /usr/share/migrationtools/migrate_group.pl  /etc/group  >> /root/ldap_init.ldif
perl -I/etc/migrationtools/ /usr/share/migrationtools/migrate_passwd.pl /etc/passwd >> /root/ldap_init.ldif

Ava loodud fail tekstiredaktoris ja kustuta sellest kõik kirjed, mis viitavad NIS teenusele. Samuti kustata ka kasutajad ja grupid, mis LDAP kataloogi kuuluma ei pea.
Alljärgnev näide on "üle keskmise" töödeldud:

  • sealt on kustutatud liigsed kataloogi harud, mis jäävad hetkel nagunii täitmata,
  • kustutatud on mitmed süsteemsed kasutajad ja grupid (ssh, openldap, ...)
dn: dc=localnet,dc=ee
dc: localnet
objectClass: top
objectClass: domain

dn: ou=Users,dc=localnet,dc=ee
ou: Users
objectClass: top
objectClass: organizationalUnit

dn: ou=Groups,dc=localnet,dc=ee
ou: Groups
objectClass: top
objectClass: organizationalUnit

dn: cn=users,ou=Groups,dc=localnet,dc=ee
objectClass: posixGroup
objectClass: top
cn: users
userPassword: {crypt}x
gidNumber: 100
memberUid: tester

dn: cn=tester,ou=Groups,dc=localnet,dc=ee
objectClass: posixGroup
objectClass: top
cn: tester
userPassword: {crypt}x
gidNumber: 1001

dn: uid=tester,ou=Users,dc=localnet,dc=ee
uid: tester
cn: test kasutaja
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$BG.Oj4UR$Rz9N6uBq3Ox8HHnriOdKu/
shadowLastChange: 14618
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/tester
gecos: test kasutaja,,,

Nüüd laeme algandmed LDAP andmebaasi (ja ühtlasi loome selle).

slapadd -l /root/ldap_init.ldif

Edasi muuda failide omanikuks openldap (hetkel on juurkasutaja).

chown openldap:openldap /var/lib/ldap/*

LDAP teenuse käivitamine

Nüüd saab lõpuks käivitada OpenLDAP deemoni slapd:

/etc/init.d/slapd start

Lõpetuseks kiirkontroll, kas slapd töötab ja andmed on kättesaadavad LDAP juurkasutajale

ldapsearch -x -H "ldap://localhost/" -D "cn=admin,dc=localnet,dc=ee" -w demo -b "dc=localnet,dc=ee"

Käsu väljund peab olema peaaegu sama, mis initsialiseerimisel. Lisatud kommentaarid on oodatud ja lubatud erinevused.
Ülaltoodud sisendfaili kasutamisel on väljund selline:

# extended LDIF
#
# LDAPv3
# base <dc=localnet,dc=ee> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# localnet.ee
dn: dc=localnet,dc=ee
dc: localnet
objectClass: top
objectClass: domain

# Groups, localnet.ee
dn: ou=Groups,dc=localnet,dc=ee
ou: Groups
objectClass: top
objectClass: organizationalUnit

# Users, localnet.ee
dn: ou=Users,dc=localnet,dc=ee
ou: Users
objectClass: top
objectClass: organizationalUnit

# users, Groups, localnet.ee
dn: cn=users,ou=Groups,dc=localnet,dc=ee
objectClass: posixGroup
objectClass: top
cn: users
userPassword:: e2NyeXB0fXg=
gidNumber: 100
memberUid: tester

# tester, Groups, localnet.ee
dn: cn=tester,ou=Groups,dc=localnet,dc=ee
objectClass: posixGroup
objectClass: top
cn: tester
userPassword:: e2NyeXB0fXg=
gidNumber: 1001

# tester, Users, localnet.ee
dn: uid=tester,ou=Users,dc=localnet,dc=ee
uid: tester
cn: test kasutaja
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQxJEJHLk9qNFVSJFJ6OU42dUJxM094OEhIbnJpT2RLdS8=
shadowLastChange: 14618
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/tester
gecos: test kasutaja,,,

# search result
search: 2
result: 0 Success

# numResponses: 7
# numEntries: 6

Teegi SASL2 konfiguratsioon

Loo fail /etc/ldap/sasl2/slapd.conf järgmise sisuga.

keytab: /etc/ldap/ldap.keytab
pwcheck_method: saslauthd
log_level: 7
#mech_list: GSSAPI PLAIN LOGIN CRAM-MD5 DIGEST-MD5

Siin on kirjas, et

  • GSSAPI (Kerberose) võtmefail on /etc/ldap/ldap.keytab
  • paroole kontrollitakse saslauthd deemoni abil
  • SASL2 teegi teateid logitakse maksimaalsel tasemel

Toetatud autentimismehanismide nimekiri on hetkel väljakommenteeritud. See kohustab teeki proovima kõiki süsteemi paigaldatud autentimismeetodeid.

LDAP klienditeegi seadistus

Ava tekstiredaktoris fail /etc/ldap/ldap.conf ja lisa järgmised read:

BASE            dc=localnet,dc=ee
URI             ldap://demo.localnet.ee
TLS_CACERT      /etc/ssl/local/cacert.pem
#TLS_REQCERT    allow

BASE defineerib vaikimis kasutatava kataloogi juure.
URI määrab vaikimisi serveri ja ühendusprotokolli.
TLS_CACERT võimaldab kirjeldada kasutatava juursertifikaadi.

Hetkel on kommenteeritud TLS_REQCERT, mis võimaldab määrata, kui põhjalikult on vaja kontrollida serveri sertifikaati.


Heimdal

Deemonite peatamine

Analoogselt OpenLDAP deemonile on ka Heimdali deemonite seadistus vale, mistõttu peab nad seiskama.

/etc/init.d/heimdal-kdc stop
/etc/init.d/heimdal-kcm stop

/etc/heimdal-kdc/kdc.conf

Ava tekstiredaktoris Heimdali võtmejaotusteenuse seadistuste fail /etc/heimdal-kdc/kdc.conf.

Lisa kommentaarimärk (#) rea acl_file = FILE:/etc/heimdal-kdc/kadmind.acl ette.

Lisa järgmised read väljakommenteeritud rea alla (nagu näed muutus antud direktiivi asukoht).

database = {
    dbname = ldap:ou=KerberosPrincipals,dc=localnet,dc=ee
    acl_file = FILE:/etc/heimdal-kdc/kadmind.acl
    hdb-ldap-structural-object = inetOrgPerson
    mkey_file = /var/lib/heimdal-kdc/mkey
}

Siin on kirjas järgmine:

  • andmebaas on LDAP kataloogi harus ou=KerberosPrincipals,dc=localnet,dc=ee,
  • administreerimisteenuse ligipääsuõigusi sisaldava faili asukoht,
  • milline objektiklass võtta uue kasutaja loomisel baasiks (vajalik ainult siis, kui on plaan kasutada Sambat), ja
  • millisesse faili salvestada kerberose andmebaasi võti (vajalik siis, kui ei taha seda salvestada LDAP kataloogi).

FIXME: kirjuta, miks pannakse Samba kasutamisel andmebaas ou=Users,dc=localnet,dc=ee harusse ja mis probleemid sellega kaasnevad.

/etc/heimdal-kdc/kadmind.acl

Peale Heimdali paigaldamist on administratiivserveri ligipääsu haldamise fail sisuliselt tühi.

Lisa sinna rida

*/admin@LOCALNET.EE     *

See lubab kõigil kerberose andmebaasis defineeritud kasutajatel, kellel haldusüksuses LOCALNET.EE on instantsiks defineeritud admin, kõike majandada.

Tulevikus tuleb seda faili üsna kindlasti täiendada.

Andmebaasi uuesti initsialiseerimine

Kahjuks ei leidnud võimalust veenda Heimdali ise looma ülalpool ette antud organiseerimisüksust, mille all andmebaasi hoitakse. Seega tuleb see ise luua. Kõige lihtsam on sisestada järgmine käsk:

ldapadd -x -H "ldap://localhost/" -D "cn=admin,dc=localnet,dc=ee" -w demo <<EOF
dn: ou=KerberosPrincipals,dc=localnet,dc=ee
objectClass: organizationalUnit
objectClass: top
ou: KerberosPrincipals
EOF

Järgmisena loo võti andmebaasi krüpteerimiseks:

kstash --random-key

Nüüd on kõik valmis, et andmebaas initsialiseerida. Selleks käivita

kadmin -l init LOCALNET.EE

ja vasta küsimustele piletite eluea kohta enteriga, et aktsepteerida vaikeväärtus (igavesed).

Nüüd on saabunud järjekordne enesekontrolli koht. Vaatame, kas lisatud kasutajad on LDAP kataloogis kirjas:

ldapsearch -H ldap://demo.localnet.ee/ -x -s base -b "" supportedSASLMechanisms -LLL
ldapsearch -H ldaps://demo.localnet.ee/ -x -s base -b "" supportedSASLMechanisms -LLL

Mõlemal juhul peab väljund olema midagi järgnevat

dn:
supportedSASLMechanisms: CRAM-MD5
supportedSASLMechanisms: NTLM
supportedSASLMechanisms: GSSAPI
supportedSASLMechanisms: PLAIN
supportedSASLMechanisms: DIGEST-MD5
supportedSASLMechanisms: LOGIN

Kasutajate lisamine

Kui andmebaas on loodud ja lähteadmetega täidetud, on aeg lisada andmebaasi mõned kasutajad.

Tavakasutaja lisamise protseduur näeb välja järgmine:

  1. Pane tööle administreerimisprogramm kadmin kohalikus režiimis:
    kadmin -l add kasutajanimi
  2. vajuta viis korda enter-klahvi, kui ei ole soovi muuta kandilistes sulgudes olevaid vaikeväärtusi
  3. lõpetuseks sisesta kaks korda parool

Programmi kadmin käsk add võimaldab ka parooli automaatset genereerimist, mis on mõistlik eelkõige teenuste puhul. Selleks lisa käsule parameeter --random-key. Käsureal näeb asi välja selline: kadmin -l add --random-key kasutajanimi

Lisa kasutajad root, root/admin, tester ja tester/admin. Kõigi paroolid peaksid olema erinevad ja need tuleb meelde jätta!

Lisa Kerberose andmebaasi ka LDAP teenust pakkuva server ja teenus ise; parool lase genereerida ja piletite kehtivus sea piiramatuks. Kasutajad on:

  • host/demo.localnet.ee
  • ldap/demo.localnet.ee


Ja jälle väike enesekontroll: vaatame, kas lisatud kasutajad on LDAP kataloogis olemas.

ldapsearch -x -H "ldaps://demo.localnet.ee/" -D "cn=admin,dc=localnet,dc=ee" -w demo -b "ou=KerberosPrincipals,dc=localnet,dc=ee" krb5PrincipalName
ldapsearch -x -H "ldapi:///" -D "cn=admin,dc=localnet,dc=ee" -w demo -b "ou=KerberosPrincipals,dc=localnet,dc=ee" krb5PrincipalName

Mõlemal juhul peab väljund olema midagi sellist:

# extended LDIF
#
# LDAPv3
# base <ou=KerberosPrincipals,dc=localnet,dc=ee> with scope subtree
# filter: (objectclass=*)
# requesting: krb5PrincipalName
#

# KerberosPrincipals, localnet.ee
dn: ou=KerberosPrincipals,dc=localnet,dc=ee

# tester@LOCALNET.EE, KerberosPrincipals, localnet.ee
dn: krb5PrincipalName=tester@LOCALNET.EE,ou=KerberosPrincipals,dc=localnet,dc=
 ee
krb5PrincipalName: tester@LOCALNET.EE

# tester/admin@LOCALNET.EE, KerberosPrincipals, localnet.ee
dn: krb5PrincipalName=tester/admin@LOCALNET.EE,ou=KerberosPrincipals,dc=localn
 et,dc=ee
krb5PrincipalName: tester/admin@LOCALNET.EE

# krbtgt/LOCALNET.EE@LOCALNET.EE, KerberosPrincipals, localnet.ee
dn: krb5PrincipalName=krbtgt/LOCALNET.EE@LOCALNET.EE,ou=KerberosPrincipals,dc=
 localnet,dc=ee
krb5PrincipalName: krbtgt/LOCALNET.EE@LOCALNET.EE

# kadmin/changepw@LOCALNET.EE, KerberosPrincipals, localnet.ee
dn: krb5PrincipalName=kadmin/changepw@LOCALNET.EE,ou=KerberosPrincipals,dc=loc
 alnet,dc=ee
krb5PrincipalName: kadmin/changepw@LOCALNET.EE

# kadmin/admin@LOCALNET.EE, KerberosPrincipals, localnet.ee
dn: krb5PrincipalName=kadmin/admin@LOCALNET.EE,ou=KerberosPrincipals,dc=localn
 et,dc=ee
krb5PrincipalName: kadmin/admin@LOCALNET.EE

# changepw/kerberos@LOCALNET.EE, KerberosPrincipals, localnet.ee
dn: krb5PrincipalName=changepw/kerberos@LOCALNET.EE,ou=KerberosPrincipals,dc=l
 ocalnet,dc=ee
krb5PrincipalName: changepw/kerberos@LOCALNET.EE

# kadmin/hprop@LOCALNET.EE, KerberosPrincipals, localnet.ee
dn: krb5PrincipalName=kadmin/hprop@LOCALNET.EE,ou=KerberosPrincipals,dc=localn
 et,dc=ee
krb5PrincipalName: kadmin/hprop@LOCALNET.EE

# default@LOCALNET.EE, KerberosPrincipals, localnet.ee
dn: krb5PrincipalName=default@LOCALNET.EE,ou=KerberosPrincipals,dc=localnet,dc
 =ee
krb5PrincipalName: default@LOCALNET.EE

# root/admin@LOCALNET.EE, KerberosPrincipals, localnet.ee
dn: krb5PrincipalName=root/admin@LOCALNET.EE,ou=KerberosPrincipals,dc=localnet
 ,dc=ee
krb5PrincipalName: root/admin@LOCALNET.EE

# root@LOCALNET.EE, KerberosPrincipals, localnet.ee
dn: krb5PrincipalName=root@LOCALNET.EE,ou=KerberosPrincipals,dc=localnet,dc=ee
krb5PrincipalName: root@LOCALNET.EE

# ldap/demo.localnet.ee@LOCALNET.EE, KerberosPrincipals, localnet.ee
dn: krb5PrincipalName=ldap/demo.localnet.ee@LOCALNET.EE,ou=KerberosPrincipals,
 dc=localnet,dc=ee
krb5PrincipalName: ldap/demo.localnet.ee@LOCALNET.EE

# host/demo.localnet.ee@LOCALNET.EE, KerberosPrincipals, localnet.ee
dn: krb5PrincipalName=host/demo.localnet.ee@LOCALNET.EE,ou=KerberosPrincipals,
 dc=localnet,dc=ee
krb5PrincipalName: host/demo.localnet.ee@LOCALNET.EE

# search result
search: 2
result: 0 Success

# numResponses: 14
# numEntries: 13


LDAP võtmete eksportimine

Vaikimisi hoiatakse exporditud Kerberose võtmeid failis /etc/krb5.keytab. See fail on loetav ja kirjutatav ainult juurkasutajale.

Samas peab slapd autentimisel kasutama talle loodud võtmeid (ühte mitmest; täpne valik sõltub juba Kerberosest) ja ei pääse antud failile ligi, sest ta töötab kasutaja openldap õigustes. Probleemi lahendus on hosti ja LDAP teenuse võtmete eksportimine faili /etc/ldap/ldap.keytab ja selle fail slapd-le kättesaadavaks tegemine.

kadmin -l ext -k /etc/ldap/ldap.keytab host/demo.localnet.ee
kadmin -l ext -k /etc/ldap/ldap.keytab ldap/demo.localnet.ee
chown openldap:openldap /etc/ldap/ldap.keytab 


Testimiseks vaatame, mis võtmed on võtmefailis kirjas. Käivita käsk

ktutil -k /etc/ldap/ldap.keytab list

Käsu väljund on selline:

FILE:/etc/ldap/ldap.keytab:
Vno  Type                     Principal
  1  des-cbc-md5              host/demo.localnet.ee@LOCALNET.EE
  1  des-cbc-md4              host/demo.localnet.ee@LOCALNET.EE
  1  des-cbc-crc              host/demo.localnet.ee@LOCALNET.EE
  1  aes256-cts-hmac-sha1-96  host/demo.localnet.ee@LOCALNET.EE
  1  des3-cbc-sha1            host/demo.localnet.ee@LOCALNET.EE
  1  arcfour-hmac-md5         host/demo.localnet.ee@LOCALNET.EE
  1  des-cbc-md5              ldap/demo.localnet.ee@LOCALNET.EE
  1  des-cbc-md4              ldap/demo.localnet.ee@LOCALNET.EE
  1  des-cbc-crc              ldap/demo.localnet.ee@LOCALNET.EE
  1  aes256-cts-hmac-sha1-96  ldap/demo.localnet.ee@LOCALNET.EE
  1  des3-cbc-sha1            ldap/demo.localnet.ee@LOCALNET.EE
  1  arcfour-hmac-md5         ldap/demo.localnet.ee@LOCALNET.EE

Heimdali deemonite käivitamine

Sisesta käsud

/etc/init.d/heimdal-kdc start
/etc/init.d/heimdal-kcm start

Saslauthd

Ava fail /etc/default/saslauthd.

  1. Muuda START=no -> START=yes
  2. Muuda MECHANISMS="pam" -> MECHANISMS="kerberos5 pam"

Pane saslauthd tööle:

/etc/init.d/saslauthd start


Testimine

Testimiseks on plaanis paigaldada libnss-ldap (kasutajate info) ja libpam-krb5 (autentimine).


Varundamine ja taastamine

Varundamine

Tee väljavõte LDAP kataloogist:

slapcat > /var/ldap/backup_`date +"%Y%m%d"`.ldif

Varunda failid:

  • /etc/ldap/*
  • /etc/heimdal-kdc/*
  • /etc/ssl/local/*
  • /etc/krb5.conf
  • /etc/default/slapd
  • /etc/default/saslauthd
  • /var/lib/heimdal-kdc/mkey
  • Uusim versioon failist /var/ldap/backup*.ldif

Kui süsteemis ei ole kasutusel varundamistarkvara, siis ajab asja ära ka järgmine skriptike. Selle tulemusel luuakse fail /var/

#!/bin/bash

BACKUP_DIR="/var/backup_`date +"%Y%m%d"`"

mkdir $BACKUP_DIR

cp -a --parents \
 /etc/ldap/ldap.conf /etc/ldap/ldap.keytab /etc/ldap/slapd.conf \
 /etc/ldap/sasl2/slapd.conf \
 /etc/heimdal-kdc/kdc.conf /etc/heimdal-kdc/kadmind.acl \
 /etc/krb5.conf \
 /etc/default/slapd /etc/default/saslauthd \
 /etc/ssl/local/cacert.pem \
 /etc/ssl/local/slapd_demo.localnet.ee_cert.pem /etc/ssl/local/slapd_demo.localnet.ee_key.pem \
 /var/lib/heimdal-kdc/mkey \
 `find /var/lib/ldap/ -type f -name backup_\*.ldif -print | sort -r | head -1` \
 $BACKUP_DIR
cd $BACKUP_DIR
tar jcf /var/`basename $BACKUP_DIR`.tar.bz2 *

Taastamine

  • Kontrolli üle konfiguratsioonifailid; asenda muudetud failid või taasta valesti muudetud kohad.
  • Vajadusel lae LDAP andmebaas uuesti.

Ülaltoodud varundamise skripti väljundist saab taastamisel muudatustest aimu järgmise skripti abil.

#!/bin/bash

# $1 on arhiiv, millest taastada
$BACKUP=$1

mkdir /tmp/restore
cd /tmp/restore
tar jxf $BACKUP

for D in `find -type d -print`; do
  if [ ! -d /$D ]; then
    echo -n "Kataloog $D on puudu!"
  fi
done

for F in `find -type f -print | grep -v backup*ldif | grep -v mkey`; do
  if [ ! -f /$F ]; then 
    echo "Fail /$F on puudu!"
    continue
  fi
  OUT=`diff -u $F /$F`
  if [ $? -ne 0 ]; then
    echo "Faili /$F on muudetud. Muudatused on"
    cat <<EOF
$OUT
EOF
  fi
done

Skripti kasutamisel anna talle argumendiks üks varukoopiatest.

LDAP andmebaasi taastamiseks peata LDAP deemon:

/etc/init.d/slapd stop

Nüüd saab kataloogi taastada failist programmi slapadd abil:

slapadd -l /tmp/restore/var/lib/ldap/backup*.ldif

Käivita LDAP deemon uuesti:

/etc/init.d/slapd start

Kuidas jätkata

Käesolevast juhendist jäid olulistest komponentidest välja:

  • LDAP replitseerimine (käideldavuse tõstmine ja kiirema vastamise tagamine),
  • Kerberose täiendavad võtmejaotusserverid, mis tõstavad käideldavust ja tagavad ka kiirema vastamise,
  • DNSi kirjete lisamine, et vältida serverite staatilist konfigureerimist /etc/krb5.conf failidesse.
  • NTP teenuse seadistamine, et garanteerida haldusüksuse moodustavate masinate kellade samasus. Siinkohal on vale öelda õigsus (seadmete kell on õige), sest Keberos eeldab ainult seda, et haldusüksuse sees on kõigil seadmetel enam-vähem sama kellaaeg-kuupäev. Vaikeseadistuses on lubatud erinevus viis minutit.

Kasutatud kirjandus

Käesoleva juhendi lähtematerjaliks olid järgmised resursid: