obr. 2 |
obr. 3 |
Poslednú verziu OpenLDAP serveru je možné stiahnuť z http://www.openldap.org/, prípadne University of Michigan LDAP server ftp://terminator.rs.itd.umich.edu/ldap. V našom prípade sa zmienime o OpenLDAP serveri.
Rozbalíme .tgz súbor a skompilujeme tradične
$
./configure
$ make
depend
$ make
$ make test #(testujeme či kompilácia prebehla
úspešne)
$ make install
/etc/slapd.conf- skladá sa z globálnej
konfigurácie, konfigurácie backendu a konfigurácie databázy.Ukážková
konfigurácia je v adresári /usr/local/etc/openldap, ukážková schéma
adresárového stromu v/usr/local/etc/openldap/schema.Podrobné
informácie /etc/nsswitch.conf - definuje akým spôsobom sa majú pre rôzne
systémové tabuľky vyhľadávať informácie. To znamená napr. pre databázu užívateľov alebo preklad mien (DNS) či
pre dtb. služieb (/etc/services).
Tento príkaz teda nájde na
serveri ldap.fi.muni.cz v podstrome
'dc=fi,dc=muni,dc=cz' všetky objekty, ktoré majú
hodnotu atribútu uid rovnú
'xgregus'. Prístupové práva, autentizácia pomocou SASL a PAM
LDAP poskytuje mechanizus autentizácie
klienta, umožnuje popísať kto má aké práva k danému objektu, pričom poskytuje
okrem tradičných práv na čítanie zápis, prehľadávanie aj právo na porovnanie,
kedy jedinou informáciu, ktorú dotazujúci sa klient dostane je áno/nie podľa
výsledku porovnania. Implementácia OpenLDAP podporuje natívne SSL alebo
spoluprácu so SASL. LDAP je možné využiť aj pri autentizácii pomocou PAM (Pluggable
Authentication Module). Zdrojové súbory príslušného modulu nájdeme na: http://www.padl.com/OSS/pam_ldap.html. Replikácia ldap serveru prebieha nasledovne: LDAP-server vyrobí replikačný log, ktorý si prečíta slurpd (Standalone LDAP Update Replication Daemon). Ten ho vypropaguje na sekundárne LDAP-servery. Aby server vyrábal replikačný log, je treba pridať parameter replogfile do globálnej sekcie v slapd.conf. Tento parameter využíva aj slurpd. Ostatné nastavenie (TLS) si slurpd berie zo súboru /etc/ldap/ldap.conf.include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/redhat/rfc822-MailMember.schema
include /etc/openldap/schema/redhat/autofs.schema
include /etc/openldap/schema/redhat/kerberosobject.schema
TLSCertificateFile /usr/share/ssl/certs/slapd.pem
TLSCertificateKeyFile /usr/share/ssl/certs/slapd.pem
TLSCACertificateFile /usr/share/ssl/certs/slapd.pem
database ldbm
suffix "dc=organizacia, dc=korporacia, dc=com"
rootdn "cn=admin, dc=organizacia, dc=korporacia, dc=com"
rootpw {MD5}HESLO
directory /var/lib/ldap
index objectClass,uid,uidNumber,gidNumber eq
index cn,mail,surname,givenname eq,subinitial
defaultaccess none
sizelimit 100000
replica host=ldap.organizacia.korporacia.com
binddn="cn=replicator,dc=organizacia,dc=korporacia,dc=com"
bindmethod=simple credentials=""XXXXXXX"
replogfile /var/lib/ldap/ldap.replog
access to dn=".*ou=group,dc=organizacia,dc=korporacia,dc=com"
by dn="cn=backup,ou=admins,dc=organizacia,dc=korporacia,dc=com" read
by domain=.* read
access to dn=".*ou=people,dc=organizacia,dc=korporacia,dc=com"
by dn="cn=backup,ou=admins,dc=organizacia,dc=korporacia,dc=com" read
by domain=.* read
access to "dn=.*ou=admins,dc=organizacia,dc=korporacia,dc=com"
by dn="cn=backup,ou=admins,dc=organizacia,dc=korporacia,dc=com" read
by * compare
access to "dn=.*"
by dn="cn=backup,ou=admins,dc=organizacia,dc=korporacia,dc=com" read
by * read
V uvedenom konfiguračnom súbore musíme definovat kde má LDAP
pri štarte hľadať schému svojho stromu - teda ako budú vyzerať informácie v
databáze. Ďalej je možné definovať DN správcu databázy a jeho heslo. Heslo sa vo
svete LDAPu zapisuje obvykle vo forme {typ}hash, teda napr.
{MD5}Md5_hash_hesla. Nakoniec zmienim možnosť definovať prístupové
práva na daný objekt databázy direktívou access, kde na daný objekt
(napr. dn=".*ou=group,dc=organizacia,dc=korporacia,dc=com") definujeme
napríklad právo čítania pre
dn="cn=backup,ou=admins,dc=organizacia,dc=korporacia,dc=com" a pre
domain=.* (teda pre objekt v databáze s daným DN a pre prístup z
akejkoľvek domény). Detaily viď slapd.conf(5).
passwd: files nisplus
shadow: files nisplus
group: files nisplus
hosts: files nisplus dns
ethers: files
netmasks: files
networks: files
protocols: nisplus [NOTFOUND=return] files
rpc: files
services: files nisplus
automount: files nisplus
aliases: files nisplus
V súbore je pre jednu tabuľku (jeden typ služby) určený riadok, tak že
na začiatku je identifikovaná tabuľka a potom usporiadaný zoznam podľa,
ktorého sa bude napr. prekladať doménové meno. Teda ak riadok
obsahuje:
hosts: files nisplus
ldap dns
najprv sa meno bude hľadať v lokálnych konf. súboroch
(/etc/hosts) v prípade neúspechu sa bude skúšať NIS, potom LDAP a nakoniec sa
použije DNS dotaz. V prípade, že do zoznamu uvedieme [NOTFOUND=return]
hľadanie sa zastaví ak hľadanie v predchádzajúcej položke nič nevrátilo. Ak
však hľadanie skončilo neúspechom, pretože služba nebola dostupná pokračuje sa
ďalej.
/etc/nscd a
nscd.conf - nscd (Name Service Cache
Daemon) je démon, ktorý robí cache pre dotazy na rozne systémové tabuľky,
DNS iné. Konfiguračný súbor sa nachádza v /etc/nscd.conf a vyzerá napríklad
takto:
server-user nscd
debug-level 0
enable-cache passwd yes
positive-time-to-live passwd 600
negative-time-to-live passwd 20
suggested-size passwd 211
check-files passwd yes
enable-cache hosts yes
positive-time-to-live hosts 3600
negative-time-to-live hosts 20
suggested-size hosts 211
check-files hosts yes
Definuje službu pre akú sa má cachovanie vykonávať a rozne
parametre pre danú cache. Je vhodné cachovanie zapnúť z dovodu zníženia
dotazov napr. na LDAP server.
Práca s
LDAP
Na prácu s LDAPom nám slúži mnoho
nástrojov základom je balík ldap-clients,
obsahujúci programy ako ldapsearch, ldapadd, ldapmodify a podobne. Všetky tieto programy používajú formát LDIF
(LDAP Data Interchange Format, vid. ldif(5)), ktorý vyzerá napríklad takto:
LDIF obsahuje jednu dvojicu
atribút: hodnota na jednom riadku. Tento výpis sme získali príkazom:
dn:uid=xgregus,ou=People,dc=fi,dc=muni,dc=cz
uid: xgregus
cn: xgregus
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
userPassword:: e2NyeXB0fXg=
loginShell: /bin/zsh
uidNumber: 13644
gidNumber: 10100
homeDirectory: /home/xgregus
gecos: Peter Gregus
host: aisa
host: anxur
host: atys
host: erigona
host: erinys
host: nereus
host: nymfe
host: oreias
host: pyrrha
Parametre znamenajú:
$ ldapsearch -h ldap.fi.muni.cz -b 'dc=fi,dc=muni,dc=cz' -x -LLL 'uid=xgregus'
-h
LDAP server,
ktorému sa položí otázka
-b
base otázky, teda podstrom v ktorom sa má
vyhľadávat
-x
použije sa
jednoduchá autentizácia namiesto SASL
-LLL
výpis bude v LDIFv1
formáte bez komentárov a verzie LDIFu
'uid=xgregus'
vyhľadávací
filter
Vytvoríme súbor vo
formáte LDIF v ktorom popíšeme požadované zmeny, napr.:
dn: uid=xgregus,ou=People,dc=fi,dc=muni,dc=cz
changetype: modify
add: description
description: ahoj
ldapmodify -H ldaps://ldap.organizacia.korporacia.com -W -x \
-D 'cn=user,ou=organizacia,dc=korporacia,dc=com' -f xgregus.ldif
Enter LDAP Password: XXXXXXX
SASL (Simple Authentication and Security Layer (RFC 2222)) špecifikuje
challenge-response protokol pre výmenu dát medzi serverom a klientom za účelom
autentizácie a zabezpečenie bezpečného kanálu pre ďalšiu komunikáciu. Balík Cyrus-SASL je možné nájsť na http://asg.web.cmu.edu/sasl/sasl-library.html.
Replikácia
Literatúra