This shows you the differences between two versions of the page.
saisp:labs:02:contents:01 [2013/11/11 00:46] 127.0.0.1 external edit |
saisp:labs:02:contents:01 [2014/03/03 13:22] (current) alexandru.carp [01. [15p] Configurare autentificare Unix prin LDAP] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 01. Lorem ipsum ==== | + | ==== 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 [[:saisp:labs:01:contents:07|DokuWiki]] și [[:saisp:labs:01:contents:07|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:<code bash> | ||
+ | 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 | ||
+ | |||
+ | [...] | ||
+ | </code> | ||
+ | |||
+ | 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//: ''<nowiki>ldaps://192.168.0.2</nowiki>'' | ||
+ | * //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//: ''<nowiki>ldaps://192.168.0.2</nowiki>'' (valoarea implicită) | ||
+ | * //Configuring nslcd, LDAP server search base//: ''dc=labs,dc=cs,dc=pub,dc=ro'' (valoarea implicită) | ||
+ | * //Check server's SSL certificate//: ''never'' | ||
+ | |||
+ | <note important> | ||
+ | Configuarea ''never'' pentru verificarea certificatului serverului nu este recomandată în mediile de producție. O folosim aici pentru simplitate. | ||
+ | </note> | ||
+ | |||
+ | 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'':<code bash> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | 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:<file none 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 | ||
+ | </file> | ||
+ | |||
+ | După configurarea NSS în fișierul ''/etc/nsswitch.conf'', repornim ''nscd'':<code bash> | ||
+ | root@ldap-client:~# service nscd restart | ||
+ | [ ok ] Restarting Name Service Cache Daemon: nscd. | ||
+ | </code> | ||
+ | și apoi verificăm servirea datelor prin LDAP folosind comenzi precum ''getent'', ''id'' și ''finger'':<code bash> | ||
+ | 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. | ||
+ | </code> | ||
+ | |||
+ | <note important> | ||
+ | Parola utilizatorului ''amengsk'' trebuie setata folosind ''ldappasswd''. | ||
+ | |||
+ | Revedeti Laboratorul 1: http://ocw.cs.pub.ro/courses/saisp/labs/01/contents/06 | ||
+ | </note> | ||
+ | |||
+ | 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:<code bash> | ||
+ | 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:/$ | ||
+ | </code> | ||
+ | |||
+ | 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:<code> | ||
+ | session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 | ||
+ | </code> | ||
+ | |||
+ | 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:<code bash> | ||
+ | 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:~$ | ||
+ | </code> | ||
+ | Mai sus apare mesajul creării directorului home al utilizatorului ''amengsk''. Sistemul funcționează corespunzător cu autentificarea utilizatorilor prin intermediul LDAP. |