OpenLDAP kasutamine Debianiga
Sisukord
Sissejuhatus
Kataloogiteenuse (ingl. k. directory service) kasutamine on populaarne kuna selle abil saab suhteliselt lihtsasti ja turvaliselt hallata keskselt andmeid ja kontrollida paindlikult kataloogiteenuse klientide ligipääsu neile andmetele. Nt võiks korraldada selliste probleemide lahendamist kataloogiteenuse abil
- mitmete arvutite kasutajate keskne haldus, st kasutaja saab sama kasutajanime ja parooliga logida sisse haldusala kõigisse arvutitesse
- aadressraamatu pidamine
- X509 jms sertifikaatide haldamine PKI pidamise kontekstis
LDAP (Lightweight Directory Access Protocol) on iseenesest protokoll ning üks selle implementatsioon OpenLDAP http://www.openldap.org/. OpenLDAP kasutamise muudab praktiliseks asjaolu, et ta on üsna paljude rakendustega (nt PAM) integreeritud ning OpenLDAP kasutamiseks on vajalikud teegid olemas mitmetes programmeerimiskeeltes (nt Perl, PHP).
OpenLDAP paigaldamine
LDAP serveri paigaldamiseks Debianil tuleb öelda
# apt-get install slapd
Paigaldamise ajal küsitakse LDAP kataloogi admin sissekande jaoks parooli. Paigaldamise tulemusena on tekitatud LDAP'i andmed organisatsiooni ja administraatori kohta
# ldapsearch -x # extended LDIF # # LDAPv3 # base <dc=auul> (default) with scope subtree # filter: (objectclass=*) # requesting: ALL # # auul dn: dc=auul objectClass: top objectClass: dcObject objectClass: organization o: auul dc: auul # admin, auul dn: cn=admin,dc=auul objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator
Kataloogi struktuuri moodustamine
Kui LDAP kasutamise eesmärgiks on hallata keskselt kasutajate ligipääsu arvutite shellile, siis sobib tekitada kaks sellist elementi
# cat people-group.ldif dn: ou=People,dc=auul ou: People objectClass: organizationalUnit dn: ou=Group,dc=auul ou: Group objectClass: organizationalUnit
öeldes
# ldapadd -c -x -D cn=admin,dc=auul -W -f /tmp/people-group.ldif
Kasutaja andmete lisamine kataloogi
Esimese grupi ja kasutaja tekitamiseks kasutada sellist ldif'i
# cat sissekanne.ldif dn: cn=mart,ou=group,dc=auul cn: mart gidNumber: 20000 objectClass: top objectClass: posixGroup dn: uid=mart,ou=people,dc=auul uid: mart uidNumber: 20000 gidNumber: 20000 cn: mart sn: mart objectClass: top objectClass: person objectClass: posixAccount objectClass: shadowAccount loginShell: /bin/bash homeDirectory: /home/mart
Kasutajale parooli kehtestamiseks tuleb öelda
# ldappasswd -x -D cn=admin,dc=auul -W -S uid=mart,ou=people,dc=auul New password: Re-enter new password: Enter LDAP Password: (ldap administraatori parool)
LDAP päringute sooritamine
Pärgingud LDAP kataloogi saab teha utiliidiga ldapsearch, nt kataloogis sisalduva kasutaja andmete küsimiseks sobib öelda
# ldapsearch -x uid=mart # extended LDIF # # LDAPv3 # base <dc=auul> (default) with scope subtree # filter: uid=mart # requesting: ALL # # mart, people, auul dn: uid=mart,ou=people,dc=auul uid: mart uidNumber: 20000 gidNumber: 20000 cn: mart sn: mart objectClass: top objectClass: person objectClass: posixAccount objectClass: shadowAccount loginShell: /bin/bash homeDirectory: /home/mart # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Või ainult näidatud attribuutide küsimiseks, kus -LLL ei näita kommentaare
$ ldapsearch -LLL -x "uid=mart" uid uidNumber gidNumber cn sn dn: uid=mart,ou=people,dc=auul uid: mart uidNumber: 20000 gidNumber: 20000 cn: mart sn: mart
Üldine ldapsearch kasutamise süntaks on selline
- '-LLL -x' - üldise tähendusega võtmed
- "uid=mart" - nn filter, vaikimisi samaväärne kui "(objectClass=*)"
- uid uidNumber gidNumber cn sn - küsitud attribuutide nimed
Lisaks saab päringu esitamisel kitsendada kui asutakse LDAP hierarhias -b "dc=auul" parameeetri abil
$ ldapsearch -LLL -x -b "dc=auul" "uid=tarmo" uid uidNumber gidNumber cn sn
Kui LDAP server on seadistatud logima, siis tekib /var/log/syslog'i viimase päringuga seoses sissekanne
Apr 11 09:42:49 arendus64 slapd[25883]: conn=670 fd=27 ACCEPT from IP=127.0.0.1:45114 (IP=0.0.0.0:389) Apr 11 09:42:49 arendus64 slapd[25883]: conn=670 op=0 BIND dn="" method=128 Apr 11 09:42:49 arendus64 slapd[25883]: conn=670 op=0 RESULT tag=97 err=0 text= Apr 11 09:42:49 arendus64 slapd[25883]: conn=670 op=1 SRCH base="dc=auul" scope=2 deref=0 filter="(uid=mart)" Apr 11 09:42:49 arendus64 slapd[25883]: conn=670 op=1 SRCH attr=uid uidNumber gidNumber cn sn Apr 11 09:42:49 arendus64 slapd[25883]: conn=670 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text= Apr 11 09:42:49 arendus64 slapd[25883]: conn=670 op=2 UNBIND Apr 11 09:42:49 arendus64 slapd[25883]: conn=670 fd=27 closed
Kust on näha
- ACCEPT from IP=127.0.0.1:45114 - päringu sooritanud arvuti ip aadress
- BIND dn="" - serverisse päringu esitamiseks kasutatud ühendusviis
- RESULT tag=97 err=0 - kas ühendumine andis vigu
- SRCH base="dc=auul" scope=2 deref=0 filter="(uid=mart)" - kasutatud otsingualus ning filter
- SRCH attr=uid uidNumber gidNumber cn sn - küsitud atribuudid
- SEARCH RESULT tag=101 err=0 nentries=1 text= - kas päringu tulemus andis vigu
Keskse kasutajate halduse korraldamine
Selleks, et LDAP kliendiks olev arvuti saaks oma kasutajate andmed kataloogist peab paigaldama klientarvutisse paketid libnss-ldapd ja libpam-ldap
# apt-get install libnss-ldapd libpam-ldap
NSS
Operatsioonüsteem kasutab NSS (Name Service Switch) süsteemi selleks, et arvuti tööks olulisi andmeid kindlaks teha. Muu hulgas näitab NSS seadistusfail /etc/nsswitch.conf, millistest allikatest neid andmeid saab.
Süsteemi NSS seadistamiseks tuleb fail /etc/nsswitch.conf asendada
# the following contain normal unix user and group information passwd: files ldap group: files ldap shadow: files ldap
# hostname lookups through ldap before dns should work now hosts: files ldap dns networks: files ldap
# normal flat-file definitions protocols: files ldap services: files ldap ethers: files ldap rpc: files ldap netgroup: ldap
# whether alias lookups really use NSS depends on the mail server aliases: files ldap
Lisaks tuleb näidata libnss-ldapd paketist paigaldatud deemoni nslcd seadistusfailis /etc/nss-ldapd.conf LDAP serveri kohta andmed
uid nslcd gid nslcd # The location at which the LDAP server(s) should be reachable. uri ldap://192.168.10.1 # The search base that will be used for all queries. base dc=auul # The LDAP protocol version to use. #ldap_version 3 # The DN to bind with for normal lookups. binddn cn=admin,dc=auul bindpw parool
ning deemon käivitada
# /etc/init.d/nslcd start
PAM
Operatsioonisüsteem kasutab PAM (Pluggable Authentication Modules) süsteemi selleks, et erinevad programmid saaksid kasutajaid autentida.
Nt selleks, et kasutajad saaksid ssh abil sisse logida, sobib PAM'i ssh seadistusfailis /etc/pam.d/sshd kasutada nt sellist sisu
#%PAM-1.0 auth required /lib/security/pam_nologin.so auth sufficient /lib/security/pam_ldap.so auth required /lib/security/pam_unix_auth.so try_first_pass account sufficient /lib/security/pam_ldap.so account required /lib/security/pam_unix_acct.so password required /lib/security/pam_cracklib.so password sufficient /lib/security/pam_ldap.so password required /lib/security/pam_pwdb.so use_first_pass session required /lib/security/pam_unix_session.so
Selleks, et kasutaja saaks oma parooli muuta peab sisalduma /etc/pam.d/common-passwd failis lisaks nt
password sufficient pam_unix.so nullok md5 password required pam_ldap.so try_first_pass
Kasutajate kodukataloogide automaatne külge ja lahti ühendamine
Kasutajate kodukataloogide automaatne külge ja lahti ühendamine tähendab seda, et kui nt kasutaja mart logib süsteemi sisse, siis tema kodukataloog /home/mart ühendatakse külge NFS serverist
$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 4128448 1007152 2911584 26% / tmpfs 131180 0 131180 0% /lib/init/rw udev 10240 12 10228 1% /dev tmpfs 131180 4 131176 1% /dev/shm 192.168.10.249:/data/export/mart 16513960 2482936 13192168 16% /home/mart
ja kui ta logib välja, siis see ühendatakse nt kümnete sekundite jooksul lahti (eeldusel, et sealt mingeid protsesse tööle ei jäänud).
Süsteem koosneb põhimõtteliselt kolmest komponendist
- NFS server - jagab välja kasutajatele nende kodukatalooge
- LDAP server - autendib kasutajaid ning autoriseeb kasutama ressursse, nt kasutaja kodukataloogi
- klient - arvuti, kuhu logib kasutaja sisse ja mis kontrollib kasutaja andmeid LDAP serverist ning ühendab kasutaja kodukataloogi külge NFS serverist autofs abil
Üle NFS'i autofs'iga ressursside kasutamise ettevalmistamine
NFS'i ettevalmistamine
Tuleb paigaldada NFS kliendi jaoks vajalik tarkvara
# apt-get install nfs-common
Eelduseks, et edasine töötaks, peavad NFS server ja klient peavad olema seadistatud selliselt, et kliendis saab ühendada tavapärasel viisil üle NFS'i külge kasutaja kodukataloogi, st peab töötama käsk
# mount 192.168.10.249:/data/export/mart /home/mart
AutoFS ettevalmistamine
Tuleb paigaldab AutoFS kasutamiseks koos LDAP'iga vajalik tarkvara
# apt-get install autofs autofs-ldap
Kui NFS osas on iseenesest ettevalmistatud, maksab kontrollida, et autofs süsteem klientarvutis samuti töötab. Selleks sobib moodustada sellise sisuga /etc/auto.master fail
# cat /etc/auto.master /home /etc/auto.home
ning sellise sisuga /etc/auto.home fail
# cat /etc/auto.home mart -ro,soft,intr 192.168.10.249:/data/export/mart
Seejärel tuleb käivitada autofs deemon ning veenduda, et kui öelda 'ls -l /home/mart', siis ühendatakse see kataloog külge NFS serverist.
LDAP serveri ettevalmistamine
Eelmises punktis AutoFS kasutamise kontrollimiseks moodustatud seadistusfailide
/etc/auto.master /etc/auto.home
sisu võtab õieti ettevalmistatud süsteemi klient LDAP'ist.
- /etc/auto.master failis toodud andmetega on samaväärsed sellised LDAP kataloogi sissekanded
dn: ou=auto.master,ou=autofs,dc=auul ou: auto.master objectClass: top objectClass: automountMap dn: cn=/home,ou=auto.master,ou=autofs,dc=auul objectClass: automount cn: /home automountInformation: ldap:192.168.10.51:ou=auto.import,ou=autofs,dc=auul
Selle info sisestamiseks kataloogi tuleb ülaltoodud tekst salvestada faili /tmp/auto.master.ldif ning öelda
$ ldapadd -c -x -D cn=admin,dc=auul -W -f /tmp/auto.master.ldif
Sisestatud andmete kontrollimiseks sobib öelda
$ ldapsearch -LLL -x -b "ou=autofs,dc=auul" "(objectClass=automountMap)" dn: ou=auto.master,ou=autofs,dc=auul ou: auto.master objectClass: top objectClass: automountMap
- /etc/auto.home failis toodud andmetega on samaväärsed LDAP kataloogi sissekanded
dn: ou=auto.home,ou=autofs,dc=auul ou: auto.home objectClass: top objectClass: organizationalUnit dn: cn=mart,ou=auto.home,ou=autofs,dc=auul cn: mart objectClass: automount automountInformation: -rsize=8192,wsize=8192,intr 192.168.10.249:/data/export/mart
Selle info sisestamiseks kataloogi tuleb ülaltoodud tekst salvestada faili /tmp/auto.home.ldif ning öelda
$ ldapadd -c -x -D cn=admin,dc=auul -W -f /tmp/auto.home.ldif
Sisestatud andmete kontrollimiseks sobib öelda
$ ldapsearch -LLL -x -b "ou=autofs,dc=auul" "(objectClass=automount)" dn: cn=/home,ou=auto.home,ou=autofs,dc=auul cn: /home objectClass: top objectClass: automount automountInformation: ldap:ou=auto.master,ou=autofs,dc=auul
Lisaks neile sissekannetele peab olema kataloogis nö tavaline sissekanne kasutaja mart jaoks.
Kliendi LDAP seadistused tuleb kirjeldada failis /etc/default/autofs
LDAPURI="ldap://192.168.10.51/" LDAPBASE="ou=auto.master,ou=autofs,dc=auul"
LDAP kliendid
Tundub, et 2009 aastal on populaarsed sellised LDAP kliendid
- ldap-utils - Debiani paketihaldus, ldapsearch jt programmid, kasutamine käsurealt
- luma - graafiline LDAP klient Debian Lennile, http://luma.sourceforge.net/
- gq - graafiline LDAP kliend Debian Etchile, http://sourceforge.net/projects/gqclient
- phpmyldap - http://sourceforge.net/projects/phpmyldap/
- Apache Directory Studio
Tundub, et Luma on graafilistest suhteliselt elujõuline, kuigi annab vigu episoodiliselt
Kasulikud lisamaterjalid
- Sari Debiani koolitusmaterjale, muuhulgas pala OpenLDAP'ist, http://techpubs.spinlocksolutions.com/dklar/ldap.html
- http://www.saas.nsw.edu.au/solutions/ldap-auth-pam.html
- Linux Magazine'is kolm artiklik, ligipääs registreeritud kasutajatele - http://www.linux-mag.com/id/3722/
- Kasutajate kodukataloogide ühendamine üle NFS'i - http://efod.se/blog/archive/2006/06/27/autofs-and-ldap
- https://help.ubuntu.com/community/OpenLDAPServer