Glavna ideja je autentifikovati korisnika preko LDAP servisa iako ga nema u etc/passwd fajlu. To se radi pomocu PAM-a i NSS-a.
Konektovacemo se na LDAP server, na kojem se nalaze korisnici koji treba da se loguju na klijentsku masinu.
Za instalaciju, kao root pokrenite sledece komande2):
yum -y install openldap-client nss-pam-ldapd
Pored ovih paketa, instalirace se i ostali potrebni paketi kao sto su NSCD i NSLCD.
OpenLdap je opensource varijanta Ldap-a, a openldap client nam je potreban da bi se uopste mogli povezati sa Ldap serverom(nevezano za autentifikaciju), i da bi se mogle izvrsavati komade poput ldapsearch, odnosno pretrazivati Ldap server. Vise o ldapsearch-u ovde.
Kada ste instalirali ove pakete, potrebno je omoguciti ldap autentifikaciju, a usput mozemo podesiti jos neke stvari i to se moze odraditi na sledeci nacin:
authconfig --enableldap --enableldapauth --disablenis --enablecache --ldapserver=uri-vaseg-servera --ldapbasedn=base-dn-vaseg-servera --enablemkhomedir --updateall
Za vise informacija o tome sta je pokrenuto, a sta ne daje sledeca komanda:
authconfig --test
Objasnjena komandi imate ovde ili ih mozete dobiti komandom:
authconfig
Postoje i graficka okruzenja za podesavanje authconfiga:
authconfig-tui ili authconfig-gtk
Napomena: # je oznaka za komentar.
Ovaj fajl se koristi za definisanje koji servisi ce pruzati informacije o userima, grupama, siframa itd. i u kojem redosledu.
Kao sto sam naveo gore, sa authconfig –enableldap smo vec podesili ovaj fajl i ne treba ga dodatno podesavati(za ono sto je nama potrebno).
Ovako bi otprilike trebao da izgleda:
passwd: files ldap shadow: files ldap group: files ldap
Ovo znaci da pored lokalnih fajlova(passwd, shadow, group), koristi i fajlove sa ldap-a.
Vise informacija ovde.
O openldap-u je vec bilo reci. Openldap koristi ovaj konfiguracioni fajl. Tu bi trebali biti uri i basedn vaseg servera(to smo podesili komandom –ldapserver i –ldapbasedn). Trebalo bi dodati sledecu liniju koja prihvata self-signed sertifikate:
TLS_REQCERT allow
Umesto allow moze biti never(sto znaci da uopste ne pita za certifikate), try ili demand. Ono sto bi se trebalo nalaziti u ovom fajlu:
TLS_REQCERT allow TLS_CACERTDIR /etc/openldap/cacerts URI ldaps://spider.pmf.kg.ac.rs BASE dc=pmf,dc=kg,dc=ac,dc=rs
TLS_CACERTDIR govori gde je direktorijum u kome ce se nalaziti certifikati(sto u ovom slucaju nije bitno).
pam_ldap je pam modul za ldap autentifikaciju.
Kada otvorite ovaj fajl videcete pod komentarima lepo objasnjeno sta koja komanda radi.
U ovom fajlu uri i base bi takodje trebali biti podeseni(proverite za svaki slucaj, obicno su dodati na kraj).
Ovako nesto bi se trebalo nalaziti na kraju:
uri ldaps://spider.pmf.kg.ac.rs base dc=pmf,dc=kg,dc=ac,dc=rs ssl on tls_reqcert allow tls_cacertdir /etc/openldap/cacerts pam_password md5
Trebalo bi promeniti ssl na on, i dodati tls_reqcert allow.
Na ovom linku imate vise informacija o ovom konfiguracionom fajlu, ponudjene opcije i sta svaka od njih radi.
Gore pri vrhu fajla, bi takodje trebalo staviti sledece komande:
binddn i bindpw stavljate samo ako je za pristup vasem ldap serveru potreban nalog. Ne treba stavljati neki nalog sa previse privilegija, dovoljno je samo da moze procitati sta se tamo nalazi. Takodje jos neke korisne stvari se mogu podesavati, npr bind_policy (Reconnect policy: hard (default) will retry connecting to the software with exponential backoff, soft will fail immediately.) Takodje se mogu podesavati timelimit(Search timelimit) i bind_timelimit (Bind/connect timelimit).
NSLCD je daemon koji izvrsava ldap upite. Vise o njemu ovde. Konfigurisan je u ovom konfiguracionom fajlu.
Podesavanja su slicna kao i pam_ldap.conf, takodje kada otvorite nslcd.conf docekace vas lepo uputstvo sta koja komanda radi. Na sledecem linku mozete naci jos nesto o njemu.
Pri dnu fajla bi trebalo biti ovako nesto:
uri ldaps://spider.pmf.kg.ac.rs base dc=pmf,dc=kg,dc=ac,dc=rs ssl on tls_reqcert allow tls_cacertdir /etc/openldap/cacerts
Iznad njih bi trebalo biti vec podeseno:
uid nslcd gid ldap
Takodje bi trebalo podesiti binddn i bindpw kao i u pam_ldap.conf(naravno ako je to potrebno).
Ovaj konfiguracioni fajl koristi NSCD. NSCD nije obavezan, ali je pozeljan(omogucili smo ga komandom –enablecache). U sustini on sluzi za kesiranje informacija sa ldap servera, i ako nije ukljucen, uvek kada treba da se odredjeni UID or GID da pridruze nekom useru ili grupi, ldap server ce biti kontaktiran(cak i kod ls -l komande). Takodje bi trebalo i kada nema internet konekcije da se useri sa ldapa mogu logovati.
Ovaj konfiguracioni fajl je vec podesen, ali za neka finija podesavanja pogledajte ovo.
Ovi fajlovi bi trebali biti podeseni, to smo uradili sa –enableldapauth, tj omogucili smo da se pored lokalnih usera(pam_unix.so modul) koriste i oni sa ldap-a(pam_ldap.so).
Evo npr kako treba da izgleda /etc/pam.d/system-auth:
#%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth sufficient pam_fprintd.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_ldap.so account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_ldap.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_ldap.so session optional pam_mkhomedir.so
Otprilike objasnjenja izgledaju ovako:
Vise informacija ovde.