LDAP Autentifikacija za Scientific Linux

Uvod



U ovom uputstvu podesavacemo samo klijentsku stranu 1), naravno pre ovoga server mora biti ispravno podesen.

Glavna ideja je autentifikovati korisnika preko LDAP servisa iako ga nema u etc/passwd fajlu. To se radi pomocu PAM-a i NSS-a.

  • LDAP (Lightweight Directory Access Protocol)
  • PAM (Pluggable authentication module)
  • NSS (Name Service Switch)

Konektovacemo se na LDAP server, na kojem se nalaze korisnici koji treba da se loguju na klijentsku masinu.

Podesavanja



Ovo uputstvo je za SCLinux 6.2, ali ne bi trebalo biti nekih preteranih razlika i u prethodnim verzijama, kao ni kod ostalih RedHat based distribucija.

Potrebni paketi:
  • openldap-client
  • nss-pam-ldapd:

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

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

  • enableldap omogucava ldap, i konfigurise /etc/nsswitch.conf
  • enableldapauth omogucava ldap-autentifikaciju, konfigurise /etc/pam.d/system-auth da koristi i ldap usere pored lokalnih usera za autentifikaciju.
  • enablecache omogucava i konfigurise NSCD
  • za ldapserver stavite uri vaseg servera(npr. kod nas je to ldapserver=ldaps://spider.pmf.kg.ac.rs, ili npr. ldapserver=ldap://ldap.domain.com) 3)
  • ldpabasedn je distinguished name(DN) vase baze(npr. ldapbasedn=dc=pmf,dc=kg,dc=ac,dc=rs ili ldapbasedn=dc=domain,dc=com)
  • enablemkhomedir pravi home direktorijum za usera ako ne postoji
  • na kraju “apdejtuje” sve promene

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   

Fajlovi koje treba editovati su:

Napomena: # je oznaka za komentar.

  • /etc/nsswitch.conf
  • /etc/openldap/ldap.conf
  • /etc/pam_ldap.conf
  • /etc/nslcd.conf
/etc/nsswitch.conf

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.

/etc/openldap/ldap.conf

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).

/etc/pam_ldap.conf

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.

  • ssl on, omogucava SSL
  • pam_password specificira protokol za promenu sifre.

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 specificira distinguished name sa kojim treba da se bind-uje sa serverom, binddn cn=ime_naloga,vas-base (npr binddn cn=ime_naloga,dc=pmf,dc=kg,dc=ac,dc=rs)
  • bindpw tu unesite sifru (npr bindpw sifra)
  • mozete sami staviti port, mada po default-u je 636 za ldaps://, a 389 za ldap:// (npr port 636)

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).

/etc/nslcd.conf

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).

etc/nscd.conf

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.

/etc/pam.d fajlovi

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:

  • auth moduli obezbedjuju samu autentifikaciju, traze i proveravaju sifru itd.
  • account moduli proveravaju da je autentifikacija dozvoljena, npr da li je account istekao, da li user moze da se loguje u odredjeno vreme itd.
  • password moduli se koriste da se omoguci promena autentifikacionog tokena(sifre).
  • session moduli se koriste kada je user autentifikovan da im obezbede da koriste svoj account, npr da naprave home dir itd

Vise informacija ovde.

Testiranje



Restartovati racunar, i probati komandu getent passwd. Trebalo bi da pocne izlistavanje svih korisnika, prvo lokalnih pa posle i sa ldap-a.
Takodje mozete probati id nalog-sa-ldapa, trebao bi da vrati njegov UID i GID. Ako to radi probajte sa su - nalog-sa-ldapa da li mozete da se logujete kao neki user sa ldap-a.
1) Pod klijentskom stranom se misli na racunar koji ce “vuci” podatke sa ldap servera
2) Za ostale navedene komande i za editovanje konfiguracionih fajlova takodje je potrebna root privilegija.
3) SCLinux vas nece pustiti da se konektujete na server bez secure konekcije(znaci trebalo bi preko ldaps-a ili ldap preko tls-a), ali moze ako se u /etc/sysconfig/authconfig stavi FORCELEGACY=YES(ali nije preporucljivo!)
 
scientific-linux.txt · Last modified: 2012/05/21 14:43 by ognjen.andric
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki