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:
ldaps://192.168.0.2
dc=labs,dc=cs,dc=pub,dc=ro
3
cn=admin,dc=labs,dc=cs,dc=pub,dc=ro
student
ldaps://192.168.0.2
(valoarea implicită)dc=labs,dc=cs,dc=pub,dc=ro
(valoarea implicită)never
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:
# /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.
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.