|
|
In ultimele articole am aruncat o privire asupra procesului de creare a utilizatorilor si politicilor utilizatorilor. In acest articol, asi dori sa aruncam o privire asupra procesului de creare a politicii parolelor in FreeBSD. Pentru ca un utilizator sa acceseze un sistem FreeBSD, ei trebuie sa dispuna de un cont de utilizator si sa cunoasca parola asociata acestui cont. Una din responsabilitatile administratorilor de sistem este sa creeze o politica a parolelor, corespunzatoare utilizatorilor din retea. Cind se creaza politica de parole, trebuie de luat in consideratie urmatoarele: Care va fi lungimea minima a parolelor? De exemplu, sunt parolele vide (o idee rea) permise, sau parolele trebuie sa aiba o lungime minima? Care caractere sunt permise in parole? De exemplu, poate o parola sa contina numai litere mici, sau trebuie sa fie o combinatie dintre litere mici, mari, numere si simboluri? Care este data expirarii parolelor, adica cit de des trebuie sa fie fortati utilizatori sa-si schimbe parolele? Doriti ca sistemul sa duca evidenta istoriei parolelor? Aceasta inseamna ca atunci cind un utilizator isi schimba parola, ei nu o pot schimba pe cea veche sau pe o parola pe care au utilizato de acum. Aceasta uneori se mai numeste unicitatea parolelor. Doriti sa utilizati blocarea conturilor, daca da, dupa cite incercari esuate? Blocarea inseamna ca un utilizator nu va primi prompt-ul de login daca a gresit parola de un numar oarecare de incercari pe parcursul unei incercari de conectare. De multe ori, administratorii vor avea o politica de parole pentru utilizatori simpli si una separata pentru utilizatorul root. De exemplu, este des intilnit faptul ca sunt necesare 6 caractere pentru parolelor utilizator simpli, dar sunte necesare 11 caractere pentru parola utilizatorului root. Puteti decide ca este dificult sa fortati utilizatorii sa utilizeze parole care necesita caractere mici, mari si simboluri, dar doresc sa mentina aceasta ca o cerinta pentru parola root-ului pentru a fi mult mai greu de o ghicit. Sunt si elemente aditionale cind se creaza o politica de parole. Cind un cont de utilizator este creat, parola de asemenea este creata de administrator. Este recomandat ca utilizatorii sa schimbe imediat parolele dupa ce s-au conectat pentru prima data; aceasta va asigura ca nimeni nu cunoaste parola decit utilizatorul. Utilizatorii trebuie sa nu ofere nimarui parolele lor; retineti, chiar daca utilizatorul uita parola lui sau pleaca, dar este necesar acces la resursele lui, utilizatorul root are posibilitatea sa schimbe parola utilizatorului. Atit timp cit utilizatorii sunt responsabili pentru crearea propriilor lor parole, este responsabilitatea administratorului sa educe utilizatorii ca ei sa faca deosebirea intre intre o parola "buna" si una "rea". Pentru oameni, este mai usor sa retina parolele care sunt identice cu numele de utilizator, numele real, porecla, numele cainelui etc. Dar din pacate, acestea toate sunt exemple de parole rele. Multe articole au fost scrise pentru a oferi exemple atit de parole bune si rele si care este necesitatea crearii parolelor bune. Aci se gaseste un astfel de articol. Sa presupunem ca dorim sa implementam urmatoarea politica a parolelor: Userii simpli trebuie sa aiba parola de minim 8 caractere. Utilizatorul root trebuie sa aiba parola de minim 11 caractere. Toti utilizatorii trebuie sa-si schimbe parolele la fiecare 30 de zile. Utilizatorii trebuie sa aiba cel putin un simbol in parola lor. Blocarea trebuie sa aiba loc dupa 5 incercari esuate. Istoria parolelor nu trebuie sa permita utilizatorilor reutilizarea ultimilor 10 parole. Utilizatorilor nu se permite sa utilizeze numele de utilizator in calitate de parola. Unele din aceste masuri pot fi implementate prin editarea fisierului /etc/login.conf, iar altele necesita instalarea utilitelor sau utilizarea unui script. Sa incepem prin a vedea care parti din politica le putem implimenta prin intermediul fisierului /etc/login.conf. Deoarece acesta este un fisier nou pentru noi sa incepem prin colectarea informatiei despre el: file /etc/login.conf /etc/login.conf: C++ program text ls -l /etc/login.conf -rw-r--r-- 1 root wheel 6285 Nov 20 07:03 /etc/login.conf Seamana ca acest fisier este textul unui program in C++ si numai root-ul poate sa efectuieze schimbari in el. whatis login.conf login.conf(5) - login class capability database Dupa cum vedeti, /etc/login.conf este o baza de date; deci si sintaxa este un pic mai complicata. De asemenea, in calitate de baza de date, nu este de ajuns ca root-ul sa editeze acest fisier intr-un editor de texte. Daca au fost efectuate schimbari in acest fisier, baza de date trebuie innoita utilizind utilita cap_mkdb: whatis cap_mkdb cap_mkdb(1) - create capability database Sa aruncam o privire asupra sintaxei utilizata de aceasta baza de date. Deoarece este o baza de date cu clase, fiecare inregistrare contine informatii pentru o clasa. Bucatile de informatii sunt numite cimpuri, fiecare cimp contine o valoare si toate cimpurile sunt separate prin punct si virgula ( . Pentru a face fisierul un pic mai usor de citit si redactat, fiecare cimp se afla pe un rind; dar, deoarece toate cimpurile sunt grupate logic pentru fiecare inregistrare, un slash (/) este utilizat pentru a indica ca mai exista informatie corespunzatoare inregistrarii in urmatorul rind. Deci, sintaxa fiecarei inregistrari se termina ca in exemplul de mai jos: classname:\ :field_1=value:\ :field_2=value:\ :last_field=value: Notati ca fiecare cimp este incadrat intre doua puncte ( si ultimul cimp nu are slash (/), deoarece este ultima parte din inregistrare. Sistemul Dvs. FreeBSD vine cu citeva clase predefinite, si fiecare clasa are cimpuri predefinite in baza de date /etc/login.conf. Prima clasa, default, este utilizata de toti utilizatori, cu conditia ca nu iati atasat altei clase cind le-ati creat contul. A doua clasa, root, este utilizata e conturile utilizatorilor care au UID-ul 0. O alte clase predefinite sunt, xuser, staff, daemon, news si dialer. Fiecare din aceste inregistrari are un cimp care este acelasi pentru toate aceste inregistrari. Sa aruncam o privire asupra inregistrarii pentru xuser: ls /etc/login.conf user:\ :tc=default: Notati ca deoarece aici este numai un singur cimp, el nu se termina cu slash. tc= indica bazei de date sa substituie cimpul indicat in clasa default. Aceasta este, predefinit, daca includeti un utilizator in clasa "xuser", ei vor primi aceasti informatie ca si un utilizator din clasa "default". Daca doriti sa includeti utilizatorii in clase diferite, veti dori mai intii sa schimbati informatia disponibila pentru fiecare clasa. Deci, ce tip de informatie este atasa fiecarui cimp? Sunt multe cimpuri predefinite si ele sunt impartite in patru tipuri de functii oferite de catre baza de date: limitarea resurselor, mediul, autentificarea si limitarea conturilor. Urmatorul tabel arata cimpurile posibile: Numele Tip Note/Descrierea Limitarea resurselor cputime time Limita de utilizare a CPU-ului. filesize size Limita maxima a marimii fisierului. datasize size Limita maxima a marimii datelor. stacksize size Limita maxima a marimii stivei. coredumpsize size Limita maxima a "coredump"-ului. memoryuse size Limita marimii maxime a utilizarii "core memory". memorylocked size Limita maxima a marimii "locked-in core memory". maxproc number Numarul maxim de procese. openfiles number Numarul maxim de fisiere deschise per proces. sbsize size Marimea maxima permisa pentru socketbuffer. Mediu charset string Seteaza variabila de mediu $MM_CHARSET la o valoare specificata. hushlogin bool (false) Identic cu existenta fisierului ~/.hushlogin. ignorenologin bool (false) Login-ul nu este interzis de nologin. lang string Seteaza variabila de mediu $LANG la o valoare specificata. manpath path Calea predefinita de cautare a manpages. nologin file Daca fisierul exista, el va fi aratat dupa care sesiunea va finisa. path path (/bin /usr/bin) Calea predefinita de cautare. priority number Nivelul de prioritate (nice) initial. requirehome bool (false) Este necesar un director home valid. setenv list O lista de variabile de mediu, separate prin ( si valorile corespunzatoare. shell prog Executarea unui shell diferite de cel specificat in fisierul password. Variabila de mediu SHELL va contine shell-ul specificat in fisierul password. term string Tipul predefinit de terminal, daca nu este posibil de determinat din alte surse. timezone string Valoare predefinita a variabilei de mediu $TZ. umask number (022) Umask initial. Trebuie intotdeauna sa se inceapa cu 0 (zero) pentru a se asigura interpretarea octala. welcome file (/etc/motd) Fisierul care contine mesajul de "welcome". Autentificare minpasswordlen number (6) Lungimea minima a parolei. passwd_format string (md5) Formatul criptarii pe care parole noi sau schimbate trebuie sa-l utilizeze. Valorile acceptate sunt "md5" si "des". Clientii NIS care utilizeaza un NIS server non-FreeBSD probabil trebuie sa utilizeze "des". mixpasswordcase bool (true) Daca passwd(1) va atentiona utilizatorul ca utilizeaza o parola formata numai din minuscule. copyright file Fisierul care contine informatie copyright aditionala. host.allow list Lista wildcard-urilor masinilor indepartate pe care utilizatorii din clasa le pot accesa. host.deny list Lista wildcard-urilor masinilor indepartate pe care utilizatorii din clasa nu le pot accesa. times.allow list Lista perioadelor de timp cind conectarile sunt permise. times.deny list Lista perioadelor de timp cind conectarile sunt permise. ttys.allow list Lista tty-urilor si ttygroup-urilor pe care utilizatorii din clasa le pot utiliza pentru acces. ttys.deny list Lista tty-urilor si ttygroup-urilor pe care utilizatorii din clasa nu le pot utiliza pentru acces. Limitele conturilor accounted bool (false) Initializeaza inregistrarea timpului sesiunilor utilizatorilor din grupa. autodelete time Timpul dupa expirare cind contul se autodistruge. bootfull bool (false) Initializeaza strategia "boot only if ttygroup is full" cind se termina sesiunile. daytime time Durata maxima de conectare pe zi. expireperiod time Time for expiry allocation. graceexpire time Grace days for expired account. gracetime time Additional grace login time allowed. host.accounted list List of remote host wildcards from which login sessions will be accounted. host.exempt list List of remote host wildcards from which login session accounting is exempted. idletime time Maximum idle time before logout. monthtime time Durata maxima de conectare pe luna. passwordtime time Utilizat de passwd(1) pentru a seta urmatoarea data de expirare a parolei. refreshtime time New time allowed on account refresh. refreshperiod str How often account time is refreshed. sessiontime time Maximum login time per session. sessionlimit number Maximum number of concurrent login sessions on ttys in any group. ttys.accounted list List of ttys and ttygroups for which login accounting is active. ttys.exempt list List of ttys and ttygroups for which login accounting is exempt. warnexpire time Advance notice for pending account expiry. warnpassword time Advance notice for pending password expiry. warntime time Advance notice for pending out-of-time. weektime time Durata maxima de conectari pe saptamina. unii termeni din tabel nu au fost tradusi in romana Doua din aceste valori vor fi utile pentru noi in implementarea politicii de parole create de noi: minpasswordlen si passwordtime. Deoarece politica noastra are doua lungimi de parola diferite pentru utilizatori si pentru root, va trebui sa editam abmbele inregistrari "default" si "root". Sa aruncam o privire asurpa inregistrarilor predefinite din ambele clase: more /etc/login.conf # login.conf - login class capabilities database. # Remember to rebuild the database after each # change to this file: #cap_mkdb /etc/login.conf # This file controls resource limits, accounting # limits and default user environment settings. # $FreeBSD: src/etc/login.conf,v 1.34.2.2 # 2000/06/02 20:53:55 alfred Exp $ default:\ :copyright=/etc/COPYRIGHT:\ :welcome=/etc/motd:\ :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\ :path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin ~/bin:\ :nologin=/var/run/nologin:\ :cputime=unlimited:\ :datasize=unlimited:\ :stacksize=unlimited:\ :memorylocked=unlimited:\ :memoryuse=unlimited:\ :filesize=unlimited:\ :coredumpsize=unlimited:\ :openfiles=unlimited:\ :maxproc=unlimited:\ :sbsize=unlimited:\ :priority=0:\ :ignoretime@:\ :umask=022: # Root can always login root:\ :ignorenologin:\ :tc=default: Notati ca utilizatorul root contrine acea inregistrare tc=, ceea ce inseamna ca el va utiliza totul predefinit, fara a fi necesar sa scrieti totul din nou. Singura diferenta este ca "root" are setat valoarea ignorelogin. Daca noi vom citi descrierea acestei valori in tabel, vom vedea ca ea inseamna ca accesarea sistemului de catre root nu poate fi prevenita de un fisier nologin, deci root-ul intotdeauna poate sa acceseze sistemul. Acum, devenit superuser si, utilizind editorul de text preferat, adaugati urmatoarele rinduri in /etc/default.conf: Sub inregistrarea default, puneti un \ la sfirsitul liniei umask, dupa care adaugati inca doua rinduri, in final trebuie sa arate in felul urmator: :umask=022:\ :minpasswordlen=8:\ :passwordtime=30d: Observati ca noi am setat lungimea minima a parolei la 8 caractere si am setat data de expirare a parolei dupa 30 de zile. Acum, duceti-va la inregistrarea root, si adaugati intre rindul ignorelogin si tc= in felul urmator: root:\ :ignorenologin:\ :minpasswordlen=11:\ :tc=default: Notati ca noi nu am repetat schimbarile pe care le-am efectuat in inregistrarea default. Noi trebuie numai sa adaugam o inregistrare penru informatia care este diferita, o lungime mai mare pentru lungimea minima a parolei root-ului. Inainte de a salva fisierul, testati de doua ori sintaxa modificarilor efectuate. Dupa ce ati salvat fisierul dat, innoiti baza de date prin rularea urmatoarei comennzi: cap_mkdb /etc/login.conf Sa vedem daca schimbarile noastre functioneaza. Ma voi login-a ca utilizatorul "genesis" si voi incerca sa parola mea pe una compusa din opt caratere: login: genisis Password: passwd Changing local password for genisis. Old password: New password: Please enter a password at least 8 characters in length. New password: Retype new password: passwd: updating the database... passwd: done Seamana ca politica noastra functioneaza bine, deoarece utilizatorul simplu "genesis" poate crea parole cu lungimea de cel putine opt caractere. ACum sa testam politica noastra daca functioneaza pentru contul root-ului; din nou voi incerca sa schimb parola cu una mai scurta: su Password: passwd root Changing local password for root. New password: Please enter a password at least 11 characters in length. New password: Retype new password: passwd: updating the database... passwd: done Daca nu ati receptionat acelasi rezultat, testati din nou daca nu sunt erori in fisierul /etc/login.conf si daca nu ati uitat sa refaceti baza de date utilizind comanda cap_mkdb. Noi am acoperit mult material pentru o zi; vom continua sa implementam politica noastra de parole in unul din articolele urmatoare. 
_______________________________________

|
|