Erinevus lehekülje "OpenLDAP kasutamine Debianiga" redaktsioonide vahel

Allikas: Kuutõrvaja
(LDAP päringute sooritamine)
(LDAP päringute sooritamine)
148. rida: 148. rida:
 
   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 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=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=tarmo)"
+
   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 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=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
159. rida: 159. rida:
 
* BIND dn="" - serverisse päringu esitamiseks
 
* BIND dn="" - serverisse päringu esitamiseks
 
* RESULT tag=97 err=0 - kas ühendumine andis vigu
 
* RESULT tag=97 err=0 - kas ühendumine andis vigu
* SRCH base="dc=auul" scope=2 deref=0 filter="(uid=tarmo)" - kasutatud otsingualus ning filter
+
* 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
 
* 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
 
* SEARCH RESULT tag=101 err=0 nentries=1 text= - kas päringu tulemus andis vigu

Redaktsioon: 11. aprill 2009, kell 16:47

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