Tänään 16.12.2018 nimipäiviä viettää: Auli, Aulikki, Aada, Ada ja Adele onnea!

LDAP-palvelin

Aluksi:

Palvelin käyttöjärjestelmänä on CentOS 4 jolle tämä ohje. CentOS 4 pohjautuu RedHat enterprise linuxiin (RHEL). Openldap on kuitenkin mahdollista asentaa muihinkin linuxeihin joten tämä ohje toimii hyvin pitkälle myös muihin linux julkaisuihin.

Tässä ohjeessa asennetaan askel-askeleelta ldap palvelin ja tehdään asetukset joilla hallitaan sisäverkon työasemien käyttäjätunnuksia keskitetysti ldap -palvelimelta käsin.

  • Lähtötilanne:

    • Sisäverkko 192.168.0.0/24, joka kuuluu domainiin esimerkki.com. Tämä määrittelee domain componentin (dc) eli: dc=esimerkki, dc=com
    • Palvelimen nimi on "palvelin" ja IP 192.168.0.100. Tässä käytettävän asiakaskoneen nimi on "tyoasema3" ja sen IP 192.168.0.3
    • Tehdään ldap -palvelimelle kaksi Organization Unit:ia (OU) joita kutsutaan Users ja Group nimisiksi.

Asennus:

Voit asentaa tarvittavat paketit CentOSin yläpanelista löytyvällä: Sovellukset->Järjestelmäasetukset->Lisää/Poista sovelluksia -ohjelmalla. Katso kuva. Openldap-servers paketti löytyy verkkopalvelimet osan takaa, jonka valitset. Tämän paketin mukana pitäisi asentua myös muut tarvittavat paketit. Voit myös asentaa paketit "käsin" päätteeltä käyttäen roottina yum -ohjelmaa: yum install openldap openldap-devel nss-ldap openldap-clients openldap-servers Kun olet asentanut, tehdään asetukset.

Asetukset:

Tietokanta sijaitsee /var/lib/ldap -kansiossa, jossa oikeudet kuuluu olla (user ja group) ldap:llä, eli ldap demoni hallinnoi. Jos haluat vaihtaa kansion sijaintia tarkista nuo oikeudet lopuksi. Muuten asennuksen jäljiltä oikeudet pitäisi olla valmiiksi oikein.

Ensimmäiseksi tehdään ldap root käyttäjälle salasana avaa pääte mene rootiksi ja käskytä:
slappasswd -h {MD5}, kysyy uutta salasanaa ja pyytää vielä varmistuksen. Jos onnistuit syöttämään kahdesti saman salasanan, ilman typoa :) niin näet luomasi salasanan md5 cryptattuna tyyliin {MD5}5WcnZ/31XJXf72pyS5Nv2z3sjNVrpm2m==. Ota luomasi salasana talteen eli copy pasteta se vaikka johonkin teksti edittorille, tarvitset sitä heti kohta seuraavaksi.
Huomaa: Että voit valita salasanaksesi ihan minkä haluat. Sen ei tarvitse olle palvelinkoneen rootin salasanana, on suositeltavaa että se olisikin joku muu.

Asetetaan /etc/openldap/slapd.conf -tiedostoa

Ota seuraavat alla näkyvät rivit käyttöön poistamalla rivin alusta # merkki, joka on siis kommentti merkki palvelin ei lue rivejä tai merkkejä jotka tulevat tuon merkin perässä.
Huomio: Kaikki rivit jotka alkavat tab, tai välilyönnillä luetaan edelliseen riviin kuuluvaksi tässä /etc/openldap/slapd.conf tiedostossa.

TLSCACertificateFile /usr/share/ssl/certs/ca-bundle.crt
TLSCertificateFile /usr/share/ssl/certs/slapd.pem
TLSCertificateKeyFile /usr/share/ssl/certs/slapd.pem

Nämä yllä olevat sertifikaatit on luotu automaattisesti kun asensit palvelimen, voit tietysti tarkistaa että ne myös löytyvät mainitusta polusta.

Ja jottei kuka tahansa saisi selata tietokantaa, tehdään rajoituksia:

access to attrs=userPassword
by self write
by anonymous auth
by dn="uid=root,ou=users,dc=esimerkki,dc=com" write
by * none
access to *
by dn="uid=root,ou=users,dc=esimerkki,dc=com" write
by * read

Haluan käyttää tietokantana oletuksen bdb sijasta ldbm kantaa, joten muutan sen. Lbdm tietokanta tukee hierarkista tapaa, kun taas bdb on lattea. Voit jättää kaiken muun tiedostossa niin kuin ne on asennuksen jäljiltä, mutta seuraavat tulee asettaa:

database    bdb tai ldbm, valitse kumpaa käytät vain yksi voi olla tässä määriteltynä!
suffix    "dc=esimerkki,dc=com"
rootdn    "cn=manager,dc=esimerkki,dc=com"
rootpw    {MD5}5WcnZ/31XJXf72pyS5Nv2z3sjNVrpm2m

Tuohon siis laitat sen aiemmin tekemäsi salasanan.

Huomaa: Jos muutit hakemiston /var/lib/ldap sijaintia laita myös sen asetus vastaamaan paikkaa johon sen siirsit...

# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recomended.
directory    /var/lib/ldap

...Jos et vaihtanut kansion paikkaa, anna olla niinkuin se on. Nyt on asetukset tehty ja on aika käynnistää palvelin.

Käske roottina service ldap start Ldap -palvelin käynnistyy ja käynnistyksen yhteydessä tsekkaa slapd.conf tiedoston, jos kaikki on ok palvelin käynnistyy. Varmista että palvelu myös käynnistyy aina uudestaan bootin jälkeen, käske roottina: chkconfig service ldap on --levels 345

Nyt jos olet tehnyt kaiken oikein ylläolevien ohjeiden mukaisesti, pitäisi /etc/openldap/slapd.conf tiedostosi näyttää tältä

Tietokannan perustaminen:

Tietokannan perustamiseen on muutamia vaihtoehtoja tarjolla, tässä yksi:

Siirry hakemistoon /usr/share/openldap/migration/ ja editoi tiedostoa migrate_common.ph
Ensiksi täytyy asettaa domain nimi: muuta dc=padl,dc=com esim. dc=esimerkki,dc=com (vastaamaan domainiasi) Muuta myös ou=People muotoon ou=Users tällä muutoksella saadaan yhteensopivuus SAMBAn kanssa.

Muutat siis kohdan:
$NAMINGCONTEXT{'passwd'} = "cn=People";
näin:
$NAMINGCONTEXT{'passwd'} = "cn=Users";

Huomio: Riippuen käyttämästäsi versiosta saattaa $NAMINGCONTEXT{'passwd'} parametri esiintyä useita kertoja muuta kaikki "ou=People" kohdat kuten mainittu.

Lisäksi tulisi muuttaa seuraavat kohdat, vastaamaan domainiasi:
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "esimerkki.com";
# Default base
$DEFAULT_BASE = "dc=esimerkki,dc=com";

Kun olet nuo asetukset tehnyt migrate_common.ph tiedostoon voidaan ajaa käsky (roottina):
/usr/share/openldap/migration/migrate_base.pl > /etc/openldap/base.ldif

Tämä käsky luo base.ldif nimisen tiedoston /etc/openldap -kansioon. Tiedosto on siis ldap:n haluamassa ldif muodossa.

Jos teit muutokset migration_common.ph tiedostoon vastaamaan domain määrityksiäsi on base.ldif valmis. Voit tietysti tarkistaa että tiedostossa olevat määritykset ovat kuin pitikin. Avaa tiedosto teksti edittorilla ja tarkista sisältö.

Jos taas et tehnyt mitään muutoksia tai huomaat base.ldif tiedostossa jotain minkä haluat muuttaa on se mahdollista, sen kun muutat. Voit myös poistaa sieltä kohdat joita et tarvitse, esimerkki: Haluat tehdä vain yksinkertaisesti käyttäjien ja ryhmien keskitetyn etähallinnan, joten voit poistaa kakki muut kentät paitsi Users ja Group jotka täytyy olla käyttäjien ja ryhmien määrityksiä varten. On mahdollista myöhemmin lisätä näitä kenttiä eli (ou) Organization Unitteja.

Tässä kohtaa täytyy base.ldif tiedoston sisältö näyttää minimissään kuten alla, tietty voit sivuttaa kaikki edellä mainitun ja copy pasteta alla näkyvän muuttaen dc=esimerkki,dc=com omaan domainiisi oikeaksi.

dn: dc=esimerkki,dc=com
dc: esimerkki
objectClass: top
objectClass: domain

dn: ou=Users,dc=esimerkki,dc=com
ou: Users
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=esimerkki,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

Nyt voit ajaa base.ldif tiedoston ldap tietokantaan.
Käskytä: ldapadd -x -D "cn=manager,dc=esimerkki,dc=com" -W -f /etc/openldap/base.ldif Salasanaa kysyessä annat salasanan.

Ryhmien ja käyttäjien lisäys:

Nyt sinulla on tietokannassa taulut käyttäjille (Users) ja ryhmille (Group) on aika laittaa käyttäjä sekä ryhmä tietokantaan. Ryhmiä ja käyttäjiä voi lisätä kerralla myös useampi, onnistuu jatkamalla luetteloa erottaen luetellut ryhmät tai käyttäjät toisistaan yhdellä tyhjällä rivillä.

Huomio: On olemassa gui-työkaluja ldap hallintaan esimerkkeinä, gq ja luma. Itse suosin gq:ta, tosin sen asentaminen ei 64 bittiseen CentOS:ään tunnu onnistuvan joten käytänkin sitä asiakaskoneelta käsin. Näillä työkaluilla voi lisätä ja poistaa ryhmiä ja syöttää tietenkin muuta tietoa kantaan.

Ryhmä:

Tehdään ensin "esimerkki" niminen ryhmä teksti edittorilla ja tallennetaan tiedosto nimellä ryhmä.ldif:

dn: cn=esimerkki,ou=Group,dc=esimerkki,dc=com
objectClass: top
objectClass: posixGroup
cn: esimerkki
gidNumber: 500
memberUid: 500

Huomio: Laita gidNumber, memberUid ja muut määritykset vastaamaan tarvitsemaasi.

Käyttäjä:

Tehdään vielä "esimerkki" niminen käyttäjä teksti edittorilla käyttäjä.ldif näin:

dn: uid=esimerkki,ou=Users,dc=esimerkki,dc=com
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
cn: esimerkki
sn: esimerkki
uid: esimerkki
uidNumber: 500
gidNumber: 500
homeDirectory: /home/esimerkki
userPassword: {MD5}nVwrlFsjG840i7odeDU3Xg==
shadowLastChange: 13540
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash

Huomio: Tee käyttäjälle oma MD5 salasana samalla tavalla kun teit jo aiemmin, mutta älä käytä sitä ldap rootin salasanaa! Vaan tee oma salasana alikäyttäjälle kuten normaalistikin linuxissa, sitten copy pastetat sen käyttäjä.ldif tiedostoon yllä näkyvään kohtaan. Laita myös uidNumber ja gidNumber määritykset vastaamaan tarvitsemaasi.

Ajetaan tietokantaan ensin ryhmä käskyllä:
ldapadd -x -D "cn=manager,dc=esimerkki,dc=com" -W -f /etc/openldap/ryhmä.ldif
Ja sitten käyttäjä:
ldapadd -x -D "cn=manager,dc=esimerkki,dc=com" -W -f /etc/openldap/käyttäjä.ldif

Nyt ldap kannassa on yksi käyttäjä joten voidaan siirtyä tekemään asiakaskoneeseen asetuksia LDAP-asiakas, tarkoituksena on siis kirjautua asiakas koneelle käyttäen juuri luotua käyttäjätiliä. Tämä käyttäjä ei ole olemassa kyseisellä asiakaskoneella, eikä sitä ole palvelin koneessakaan muualla kuin ldap -kannassa.