01. [15p] Configurare autentificare Unix prin LDAP

Serviciul de LDAP poate fi folosit ca mod centralizat de a permite autentificarea altor servicii. În laboratorul 1, am configurat DokuWiki și MediaWiki pentru a folosi serviciul de LDAP pentru autentificare. O formă frecventă, mai ales în mediile care folosesc Active Directory, este autentificare utilizatorilor locali prin LDAP.

În cele ce urmează vom configura sistemul client pentru a folosi back-end-ul LDAP server pentru autentificarea utilizatorilor. Adică să fie folosite numele de utilizator și parola din baza de date LDAP pentru autentificarea unui utilizator local în Unix. Pentru aceasta vom configura PAM (Pluggable Authentication Module) și NSS (Name Service Switch) pentru a permite autentificarea prin LDAP. În baza de date LDAP sunt deja configurați utilizatori, fiecare cu parola student. Pentru a vedea utilizatorii rulăm, pe stația client, comanda:

root@ldap-client:~# ldapsearch -x -LLL dn
dn: dc=labs,dc=cs,dc=pub,dc=ro
 
dn: cn=admin,dc=labs,dc=cs,dc=pub,dc=ro
 
[...]

Configurarea autentificării Unix prin LDAP o vom face pe stația client. Utilizatorii de pe stația client vor fi autentificați folosind datele din cadrul serverului de LDAP. Vom configura întâi NSS și apoi vom configura PAM.

Pentru configurarea NSS cu suport LDAP instalăm pe stația client pachetul libnss-ldap și răspundem la întrebări cu datele de conectare la serverul de LDAP, ca mai jos:

  • LDAP server Uniform Resource Identifier: ldaps://192.168.0.2
  • Distinguished name of the search base: dc=labs,dc=cs,dc=pub,dc=ro
  • LDAP version to use: 3
  • LDAP account for root: cn=admin,dc=labs,dc=cs,dc=pub,dc=ro
  • LDAP root account password: student
  • Configuring nslcd, LDAP server URI: ldaps://192.168.0.2 (valoarea implicită)
  • Configuring nslcd, LDAP server search base: dc=labs,dc=cs,dc=pub,dc=ro (valoarea implicită)
  • Check server's SSL certificate: never

Configuarea never pentru verificarea certificatului serverului nu este recomandată în mediile de producție. O folosim aici pentru simplitate.

După acest proces de instalare și configurare a fost instalat și pornit Name Service Caching Daemon. Acesta cache-uiește informații transmise de NSS (Name Service Switch) pentru a evita overhead-ul cauzat de interogări continue.

Pentru a valida configurarea inspectăm pe stația client fișierele /etc/libnss-ldap.conf și /etc/libnss-ldap.secret:

root@ldap-client:/etc/ldap/ldif# cat /etc/libnss-ldap.conf | grep -v '^#' | grep -v '^[ \t]*$'
base dc=labs,dc=cs,dc=pub,dc=ro
uri ldaps://192.168.0.2
ldap_version 3
rootbinddn cn=admin,dc=labs,dc=cs,dc=pub,dc=ro
 
root@ldap-client:~# cat /etc/libnss-ldap.secret 
student

Pentru a activa suportul LDAP în NSS, configurăm fișierul /etc/nsswitch.conf. Folosim un editor și edităm liniile aferente categoriilor passwd, group și shadow, ca mai jos:

nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
 
passwd:         files ldap
group:          files ldap
shadow:         files ldap
 
hosts:          files mdns4_minimal [NOTFOUND=return] dns
networks:       files
 
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
 
netgroup:       nis

După configurarea NSS în fișierul /etc/nsswitch.conf, repornim nscd:

root@ldap-client:~# service nscd restart
[ ok ] Restarting Name Service Cache Daemon: nscd.

și apoi verificăm servirea datelor prin LDAP folosind comenzi precum getent, id și finger:

root@ldap-client:~# getent passwd amengsk
amengsk:x:1001:1000:Arcturus Mengsk,,,:/home/amengsk:/bin/bash
 
root@ldap-client:~# id amengsk
uid=1001(amengsk) gid=1000(student) groups=1000(student)
 
root@ldap-client:~# finger amengsk
Login: amengsk        			Name: Arcturus Mengsk
Directory: /home/amengsk            	Shell: /bin/bash
Never logged in.
No mail.
No Plan.

Parola utilizatorului amengsk trebuie setata folosind ldappasswd.

Revedeti Laboratorul 1: http://ocw.cs.pub.ro/courses/saisp/labs/01/contents/06

Observăm că acum sistemul furnizează informații despre utilizatori din baza de date LDAP. Întrucât a fost instalat și configurat simultan pachetul libpam-ldap, vom putea sa ne și autentificăm la utilizatorul amengsk. Putem face acest lucru folosind comanda ssh de pe sistemul fizic:

student@mjolnir:~/vm/kvm$ ssh -l amengsk 192.168.0.3
amengsk@192.168.0.3's password: 
[...]
Could not chdir to home directory /home/amengsk: No such file or directory
amengsk@ldap-client:/$

Observăm că nu a fost creat directorul home pentru utilizator pe stația client. Pentru aceasta cel mai simplu este să activăm modulul pam_mkhomedir prin editarea fișierului /etc/pam.d/common-session și adăugarea liniei:

session required        pam_mkhomedir.so skel=/etc/skel/ umask=0022

După configurarea liniei de mai sus va funcționa conectarea la stația client și crearea directorului home al utilizatorului cu care a fost realizată autentificarea:

razvan@einherjar:~/vm/kvm$ ssh -l amengsk 192.168.0.3
amengsk@192.168.0.3's password: 
Creating directory '/home/amengsk'.
[...]
amengsk@ldap-client:~$ 

Mai sus apare mesajul creării directorului home al utilizatorului amengsk. Sistemul funcționează corespunzător cu autentificarea utilizatorilor prin intermediul LDAP.

saisp/labs/02/contents/01.txt · Last modified: 2014/03/03 13:22 by alexandru.carp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0