Kerberose ja OpenLDAP seadistamine

From ICO wiki
Revision as of 01:39, 26 January 2010 by Krats (talk | contribs) (Paigaldamine + konfimine on nüüd vist OK)
Jump to navigationJump to search

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.

Autor

Kristjan Räts / AK-41

Sissejuhatus

Käesolevas juhendis tuleb juttu sellest, kuidas võiks seadistada Kerberose teenus nii, et ta andmebaas on OpenLDAP kataloogis ja samuti ka seda, kuidas seadistada OpenLDAP teenus kasutama Kerberosel põhinevat autentimist.

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 teenuse. Samuti eeldatakse X.509 sertifikaatide loomise põhitõdede tundmist.

Käesoleva juhendi aluseks on Debian GNU/Linux 5.0 release 3 levitatavad OpenLDAP ja Heimdali programmid. (Seega võiks antud juhendi pealkiri olla ka Heimdali ja OpenLDAP seadistamine.)

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

Näites kasutatavad serverid

Kogu alljärgnev jutt toimub fiktiivse domeeni localnet.ee ümber. Sellest tulenevalt on seadistatav Kerberose realm LOCALNET.EE ja LDAP kataloogi juur dc=localnet,dc=ee. Põhimõtteliselt on võimalik ja lubatud realmi ja juurt muuta, kuid see ei ole soovitatav, sest on programme, mis teevad analoogse tuletuse ja keelduvad tunnistamast muid võimalusi.

Server, mille ümber (õigemini: sees) tants käib, kannab nime demo.localnet.ee. Tema hakkab pakkuma nii LDAP kataloogi kui ka Kerberose autentimisteenuseid.

Nõuded

  • Seadistada Kerberos nii, et ta andmebaas on OpenLDAP serveris.

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 realmi nimi (antud juhendis LOCALNET.EE), millele küsitakse võtmete ja paroolivahetuse serverite nimesid. Mõlemal juhul on serveriks demo.localnet.ee.

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

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 sertifikaatide loomine 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
  • 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 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 asja eksporditud sertifikaadi 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 (kasutatakse 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 (Key)
    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õpus üles rida, mis algab #export KRB5_KTNAME= ja muuda ta järgmiseks

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.

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 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

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

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
#sasl-secprops minssf=0

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. 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.

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   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 rasvasemas 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
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
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
index        objectClass        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
  • 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!

Kõik käsud konsoolil koos

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

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

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.

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'le. 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 root)

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


Kõik käsud konsoolil koos

demo# cp -a /var/lib/ldap /var/lib/ldap_old
demo# rm /var/lib/ldap/*
demo# cp /var/lib/ldap_old/DB_CONFIG /var/lib/ldap/
demo# perl -I/etc/migrationtools/ /usr/share/migrationtools/migrate_base.pl               >  /root/ldap_init.ldif
demo# perl -I/etc/migrationtools/ /usr/share/migrationtools/migrate_group.pl  /etc/group  >> /root/ldap_init.ldif
demo# perl -I/etc/migrationtools/ /usr/share/migrationtools/migrate_passwd.pl /etc/passwd >> /root/ldap_init.ldif
demo# nano /root/ldap_init.ldif
demo# slapadd -l /root/ldap_init.ldif
demo# chown openldap:openldap /var/lib/ldap/*
demo#

LDAP teenuse käivitamine

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

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

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

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.

Sasl teegi konfiguratsioon

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

# SASL2 configuration file for slapd from OpenLDAP
#
# Place this file to /usr/lib/sasl2
# In case of Debian 5.0 build, it can also be in /etc/ldap/sasl2
#
# 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
#  keytab: <string>

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

Siin on kirjas, et

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

LDAP klienditeegi seadistus

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

TLS_CACERT /etc/ssl/local/cacert.pem
TLS_verify? allow
BASE dC=localnet,dc=ee


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).

/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 administratiivsetel tegelinskitel kõike majandada.

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

Varundamine ja taastamine

Varundamine

Tee väljavõte LDAP kataloogist:

slapcat | bzip -9c > /var/ldap_backup.bz2

Varunda failid:

  • /etc/ldap/*
  • /etc/heimdal-kdc/*
  • /etc/krb5.conf
  • /etc/default/slapd
  • /etc/default/saslauthd
  • /var/ldap_backup.bz2

Taastamine

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

Kuidas jätkata

Kasutatud kirjandus

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