Facultatea de electronica, telecomunicatii si tehnologia informatiei



Yüklə 318.29 Kb.
səhifə1/4
tarix28.10.2017
ölçüsü318.29 Kb.
  1   2   3   4


FACULTATEA DE ELECTRONICA, TELECOMUNICATII SI TEHNOLOGIA INFORMATIEI


Indrumător,

Conf. dr. ing. Ştefan Stăncescu


Partea I. Gestiunea sigură a drepturilor şi a resurselor locale.

Vidraşcu Mihai


Partea a II-a. Principalele tipuri de atac la sistem: atacuri din interior, erori conceptuale, malware.

Tică Andra Maria


Partea a III-a. Modalităţi de imbunătăţire a securităţii sistemelor de operare.

Lecu Radu Serban


Grupa 432A
-2011-

Partea I . Gestiunea sigură a drepturilor şi a resurselor locale

1. Conceptul de securitate
Deseori termenii de „securitate” şi „protecţie” se folosesc interschimbabil. Totuşi, este utilă o diferenţiere între problemele care apar la asigurarea faptului că fişierele nu sunt citite sau modificate de către persoane neautorizate, şi mecanismele specifice sistemului de operare, folosite pentru a oferi securitate. Pentru a elimina orice confuzie, voi folosi „securitate” pentru a face referire la problemă, în general, şi „mecanisme de protecţie” pentru mecanismele specifice sistemului de operare, folosite pentru păstrarea sigură a informaţiei în calculator. Totuşi, graniţa intre cei doi termeni nu este bine definită. Securitatea mai multe aspecte. Cele mai importante se concretizează în ameninţari, intruziuni în sistem şi pierdere accidentală de date.
1.1 Ameninţările
Din punctul de vedere al securitaţiii, calculatorul are de indeplinit 4 sarcini majore, fiecare având anumite ameninţari asociate (figura 1). Confidenţialitatea informaţiilor: datele secrete trebuie să rămână secrete. Mai precis, dacă detinatorul sistemului a decis ca anumite date sa poată fi accesate de anumite persoane şi de nimeni altcineva, sistemul trebuie sa garanteze faptul ca acele informaţii nu vor ajunge la altcineva. Ca serviciu minim, proprietarul ar trebui sa poată specifica cine poate vedea şi ce, iar sistemul să accentueze aceste specificaţii.


Scop

Ameninţare

Confidenţialitatea datelor

Expunerea datelor

Integritatea datelor

Modificari ale datelor

Disponibilitatea sistemului

Imposibilitatea folosirii serviciilor

Excluderea intruşilor

Preluarea controlului de către viruşi

FIG. 1: Sarcinile unui calculator în privinta securitaţiii
Al doilea scop, integritatea datelor, presupune ca utilizatorii neautorizaţi să nu poată modifica datele fără acordul proprietarului. Modificarea înseamnă nu numai schimbarea lor, ci şi ştergerea sau adăugarea de alte informaţii, care pot fi false/eronate.

Disponibilitatea sistemului, al treilea scop, înseamnă ca nimeni nu poate deranja sistemul, pentru a-l face inutilizabil. Astfel de atacuri, imposibilitatea accesului la servicii, devin din ce în ce mai comune. Un exemplu: pentru un server de internet, cererile flood îl pot bloca, consumâd tot timpul de procesare al CPU prin primirea de cereri şi respingerea lor. Există tehnologii pentru respingerea acestor atacuri, dar pentru cele de tip lipsă de acces la servicii, problema este mai dificilă.

Un alt tip de ameninţare este preluarea controlului computer-ului de către intruşi (folosind viruşi sau alte mijloace) şi executarea comenzilor acestora. Deseori, aceste atacuri sunt folosite pentru a trimite mesaje spam, astfel încât cei care iniţiaza atacul să fie mai greu de urmărit.

Mai există şi ameninţari care tintesc întreaga societate, în locul unui utilizator individual. Este cazul persoanelor care au o antipatie pentru un anumit grup etnic sau chiar pentru întreaga societate, şi care doresc să distrugă cât mai mult din infrastructura, indiferent cine sunt victimele. Astfel de atacuri nu sunt concentrate pe ceva concret.

Un alt aspect al problemei securitaţii îl constituie intimitatea; protecţia individului faţă de informaţii eronate despre el. În cazul acesta se ajunge la probleme de legalitate şi de morală.


1.2 Intruşii
În domeniul acesta, intruşii se definesc ca persoane care acceseaza date care în mod normal sunt destinate altor utilizarori sau sunt secrete. Ei acţioneaza în 2 moduri diferite: cei pasivi doar citesc informaţiile la care nu au acces autorizat. Cei activi, provoacă mai multe pagube: ei modifică datele în mod neautorizat. La proiectarea sistemului trebuie ţinut cont de ce tip de intruşi trebuie respinşi (unii mai mult decât ceilalţi):


  • Curiozitate ocazională din partea utilizatorilor nespecializaţi: de exemplu, utilizatorii conectaţi la un server de partajare („sharing”), vor incerca să citeasca e-mail-urile celorlalti sau să acceseze fişierele lor dacă nu există de la inceput o metoda de blocare.




  • Spionajul din interior: operatori, programatori de sistem şi alte persoane specializate care considera compromiterea securitaţiii sistemelor locale o provocare. Sunt foarte priceputi şi investesc mult timp şi efort în aceste acţivitati.




  • Incercari de castig financiar: unii programatori din banci au incercat sa fure bani de la locul de munca. Metodele variaza de la modificarea software-ului pentru a păstra o cantitate mică de bani la fiecare tranzacţie sau extragerea de fonduri de la conturi nefolosite de mult timp, până la şantaj.




  • Spionaj comercial sau militar. Spionajul se referă aici la o incercare bine organizata de un competitor sau de o alta ţara de a fura programe, idei patentabile, secrete comerciale, tehnologie etc.

Aceste categorii difera enorm intre ele, deci efortul investit în protejarea sistemelor depinde de cine este presupusul inamic.

O altă categorie de probleme de securitate este virusul. Pe scurt, un virus este o secvenţă de cod care se cloneaza şi introduce anumite defecţiuni (creatorul virusului poate fi şi el considerat un intrus, cu cunostiinte avansate). Diferenta intre un intrus simplu şi în virus este ca primul este o persoana reala, un individ care incearcă sa intre în sistem şi sa provoace pagube, iar ultimul este un program scris de o astfel de persoana, care este lansat în speranţa ca va ajunge într-un loc unde va provoca stricăciuni. Intruşii folosesc atacuri specializate, tintind anumite obiective, în timp ce creatorul virusului vrea sa provoace defecte la modul general, indiferent unde şi cui.
1.3 Pierderile accidentale de date
Inafară de neajunsurile provocate de intruşi şi de viruşi, datele se mai pot pierde şi accidental. Cauze comune:


  • Acte „divine”: incendii, calamitaţi naturale, războaie, sau ghinion pur.

  • Erori hardware sau software: funcţionare incorectă a CPU, imposibilitatea citirii suportului de memorie, erori de telecomunicaţie, erori de program etc.

  • Erori umane: introducere incorectă a datelor, incarcarea unui CD-ROM gresit, suport pierdut sau alte greşeli similare.

O soluţie este păstrarea unor copii de siguranta, preferabil în zona diferită de locul de origine. Deşi este mai usor de implementat protecţia impotriva accidentelor, decât impotriva intruşilor, cele mai multe pagube sunt provocate de prima categorie decât de ultima.



2. Mecanisme de protecţie
Este mai usor de realizat un mediu de lucru sigur dacă se cunoaste clar ceea ce trebuie protejat şi ce este permis şi ce nu. Există multe mecanisme de protecţie şi soluţii. În continuare sunt prezentate câteva modele generale şi metodele de implementare.
2.1 Domenii de protecţie
Un computer are multe obiecte de protejat, atât hardware (CPU, segmente de memorie, hard-disk, periferice), cât şi software (procese, fişiere, baze de date etc).

Fiecare obiect are un nume unic dupa care este identificat, şi asupra lui este permisă realizarea unui numar finit de operaţii de către procese. Evident, este necesară o cale de a bloca accesul proceselor în locaţii neautorizate. De asemenea, mecanismul trebuie sa poată constrange procesele la un set de operaţii atunci cand este nevoie (exemplu: un proces poate citi un fişier, dar nu poate scrie în el).

Un domeniu este un set de perechi (obiect - drepturi). Fiecare pereche specifica un obiect şi un subset de operaţii pe care poate sa le execute. Un drept, în acest context înseamnă permisiunea de a executa o anumită operaţie. Deseori, un domeniu corespunde unui singur utilizator, specificandu-i ce poate face şi ce nu, dar poate fi extins şi la un grup de utilizatori. Exemplu: membrii unei echipe de programare care lucrează la un proiect aparţin toti aceluiaşi domeniu şi pot accesa toti fişierele proiectului. Modul în care obiectele sunt alocate unui domeniu se face în funcţie de cine are acces şi la ce. Un concept de bază este POLA („Principle Of Least Authority”), sau strictul necesar. În general, securitatea este mai stricta şi mai eficient implementată cand fiecare domeniu are un minim de obiecte şi de privilegii, suficiente pentru a-şi indeplini sarcinile, şi nimic mai mult.

Figura 2 ilustrează 3 domenii, indicand fiecare obiect din domeniu şi drepturile asociate (R – citire, X – execuție, W – scriere). De observat că imprimanta 1 (Printer1) se află în doua domenii simultan şi are aceleaşi drepturi în ambele. La fel şi fişierul 1 (File1), însă are drepturi diferite în fiecare domeniu.




Domeniu 1

Domeniu 2

Domeniu 3


File1 [R]


File2[RW]

File3 [RW]

File4[RWX]

File5[RW]

Printer1 [W]



File6[RWX]

Plotter2[W]


FIG. 2: Domenii de protecţie


In fiecare moment de timp, fiecare proces rulează într-un domeniu de protecţie. Altfel spus, există o colectie de obiecte pe cale le poate accesa, iar pentru fiecare obiect are un set de drepturi. Procesele pot să şi treaca dintr-un domeniu în altul în timpul execuției, totuşi, regulile de schimbare a domeniului sunt puternic dependente de sistem.

Un exemplu concret: UNIX. Aici, domeniu unui proces este delimitat de UID şi GID al lui. Cand un utilizator se logheaza, shell-ul lui primește UID şi GID conținute în fişierul cu parola, iar acestea sunt mostenite şi de procesele pe care le va incepe acesta. Știind combinația (UID, GID), se poate crea o listă completă a tuturor obiectelor (fişiere, dispozitive I/O descrise de fişiere specializate etc,) care pot fi accesate, indiferent dacă se scriu, citesc sau executa. Două procese cu aceeaşi pereche (UID, GID) vor avea acces la acelaşi set de obiecte. Procesele cu (UID, GID) vor avea acces la seturi diferite de fişiere, deşi se pot intercala.

In plus, fiecare proces în UNIX este divizat în doua: jumătatea pentru utilizator şi cea pentru kernel. Cand procesul iniţiaza un apel de sistem, va comuta de la partea de utilizator la cea de kernel. Aceasta are acces la un set diferit de obiecte faţă de jumătatea pentru utilizator. Exemplu: kernel-ul poate accesa toate paginile din memoria fizica, întregul hard-disk, şi toate celelalte resurse protejate. Deci apelul de sistem iniţiază o comutare de domeniu.

Cand un proces face o execuție pe un fişier cu bitul SETUID sau SETGID setat, va lua un UID sau GID efectiv nou. Cu o combinație (UID, GID) diferită, are la dispozitie noi fişiere şi noi operaţii. În final, rularea unui program cu SETUID sau SETGID produce o comutare de domeniu.



O problema este modul în care sistemul stie ce obiect aparţine carui domeniu. Conceptual, se poate imagina o matrice, unde randurile sunt domeniile şi coloanele sunt obiectele. Fiecare intrare listeaza drepturile, dacă există, pe care domeniul le are pentru obiectul respectiv. Matricea pentru domeniile din figura 2 se afla în figura 3. Știind aceasta matrice şi numarul domeniului curent, sistemul poate spune dacă este permis accesul la un anumit obiect, din punctul de vedere al citirii, scrierii sau execuției.
Obiect




File1

File2

File3

File4

File5

File6

Printer1

Plotter2

1

R

RW



















2







R

RWX

RW




W




3
















RWX

W

W

FIG. 3: Matrice de protecţie
Comutarea domeniului poate fi usor inclusă în modelul matricii considerând domeniul ca obiect, cu operaţia de intrare (E – Enter). Figura 4 ilustrează aceeaşi matrice de mai sus, cu deosebirea ca acum sunt incluse şi cele 3 domenii ca obiecte. Se observa ca procesele din domeniul 1 care comuta în domeniul 2 nu se pot intoarce. Acesta situatie modelează execuția unui program cu SETUID în UNIX. (Alte comutări nu sunt permise în acest exemplu).
Obiect




File1

File2

File3

File4

File5

File6

Printer1

Plotter2

Domeniu1

Domeniu2

Domeniu3

1

R

RW






















Enter




2







R

RWX

RW




W













3
















RWX

W

W










FIG 4: Matrice de protecţie cu domenii ca obiecte.

2.2 Liste de control al accesului
Practic, stocarea efectivă a matricii din figurile precedente se face foarte rar, deoarece este foarte mare. Majoritatea domeniilor nu au acces deloc la multe obiecte, deci ocuparea unor locaţii cu spații goale înseamnă o mare rişipa de memorie. Doua situatii mai pracţice sunt stocarea matricii numai pe randuri sau pe coloane, şi apoi păstrarea elementelor care nu sunt goale (numai a lor). Deşi par similare, cele doua metode sunt foarte diferite.
2.2.1 Stocarea pe coloane
Aceasta metodă constă în asocierea fiecarui obiect a unei liste ordonate care conține toate domeniile care pot accesa domeniul, împreună cu modul de acces. Aceasta lista se numeste lista de control al accesului (ACL – Access Control List), şi este ilustrata în figura 5. Se observa 3 procese, fiecare aparţinand unui domeniu diferit, A, B, C, şi 3 fişiere F1, F2, F3. Pentru simplitate, se presupune că fiecare domeniu corespunde unui singur utilizator (user-ii A, B şi C, denumiti şi subiecti).


Proces

Utilizator










C

A


B
Spațiul utilizatorului



Fişier




ACL

F1


A:RW; B:R



F2


A:R; B:RW; C:R

Spațiull kernel-ului


F3



B:RWX; C:RX


FIG 5: Folosirea listelor de control al accesului.
Fiecare fişier are asociat un ACL. Fişierul F1 are doua intrări în ACL-ul lui. Prima indica faptul ca orice proces iniţiat de utilizatorul A poate ciri şi scrie în fişier. A doua intrare spune ca orice proces al utilizatorului B poate citi F1. Toate celelalte accesări ale acestor utilizatori sunt nepermise, iar cele ale altor user-i sunt total interzise. De reținut ca drepturile sunt date de către utilizator, nu de proces, şi ca fişierul F1 poate fi accesat de orice proces de la A (nu conteaza ID-ul lui).

Fişierul F2 are 3 intrări în ACL: A, B şi C pot citi fişierul, iar B poate sa il şi scrie. F3 este executabil numai de către B şi C, iar B poate scrie.

Acest exemplu ilustrează funcţionarea de bază a protecţiei cu ACL, în realitate se folosesc sisteme complexe. De asemenea, şi numarul de drepturi este mai mare, unele aplicându-se tuturor obiectelor, altele numai anumitor obiecte. Exemplu de drepturi valabile pentru toate obiectele: destroy şi copy. Exemplu de drepturi specifice anumitor obiecte: append message pentru obiectele din cutia poștală şi sort alphabetically pentru obiectul director.

Până acum am analizat cazul în care campurile din ACL se refereau la utilizatori individuali. Majoritatea sistemelor suporta şi grupuri de utilizatori. Grupurile au nume care pot fi incluse în ACL. Există 2 variante în privinta semnificatiei grupurilor. În unele sisteme fiecare proces are un ID de utilizator (UID) şi un ID de grup (GID). În astfel de sisteme, campurile au forma aceasta:


UID1, GID1: drepturi_1; UID2, GID2: drepturi_2 ...
In aceste conditii, cand se face o cerere de acces la un obiect, se face o verificare folosind UID şi GID apelantului. Dacă se afla în ACL, sunt gasite şi drepturile, iar dacă nu, accesul nu este permis. Folosind astfel grupurile, se poate introduce conceptul de rol. Exemplu: fie A administratorul de sistem (aparţine grupului sysadmin). Se prespune ca firma are niste departamente, iar M face parte din cel al contabililor. Membrii departamentului aparţin grupului CNT şi au acces la computerele firmei pentru baza de date financiara. O parte din ACL arata ca în figura următoare:


Fişier

ACL

Parola

M, sysadmin: RW

Finante.data

ang1, CNT: RW; M, CNT: RW...

FIG 6: Doua liste de control al accesului
Dacă M incearcă sa acceseze unul din aceste fişiere, rezultatul depinde de grupul în care este logat. La logare, sistemul cere sa aleaga un grup, sau există nume şi parola diferită pentru fiecare, pentru a fi separate. Scopul este de a preveni accesul la parola cand M este logat ca aparţinand grupului de contabili. Există inca cazuri cand anumite fişiere pot fi accesate indiferent de grupul în care este logat. Astfel se introduce conceptul de wildcard, care înseamnă „toata lumea”. De exemplu:
M, *:RW
pus la fişierul „Parola” da posibilitatea accesului la parola indiferent de grupul pe care este logat. O alta situatie este aceea în care unui utilizator care aparţine oricarui grup care are anumite drepturi, sa i se poată permite accesul. Avantajul aici este acela ca un utilizator care aparţine mai multor grupuri nu este nevoit sa schimbe grupul pentru a avea anumite drepturi. Dezavantajul este un grad mai mic de incapsulare. Folosirea grupurilor şi a wildcard-urilor introduce posibilitatea de a bloca selectiv accesul unor utilizatori la fişier. Exemplu:
V, *: ; *,*: RW Aceasta intrare da permis de scriere şi citire tuturor, mai putin lui V. Aceasta metoda funcţioneaza pentru ca intrările sunt scanate în ordine, iar prima este ce care se aplica. Cand se descopera potrivirea cu numele la verificare, lui V ii sunt alocate drepturile specificate, în cazul de faţă nici unul, iar ce urmeaza în intrare dupa acestea nici nu mai este luat în considerare.

O alta metoda de a utiliza grupuri este aceea de a nu avea ACL care sa contina perechi (UID, GID), ci numai un UID sau GID. Exemplu:


D:RW; P: RW; CNT:RW;
Aceasta intrare semnifica faptul ca D, P şi toti membrii CNT au drepturi de R şi W pentru fişier. Uneori se intampla ca detinatorul fişierului sa anuleze anumite drepturi. În ACL, acest lucru se face simplu, editand intrările. Totuşi, ACL este verificat de sistem numai la deschidere, deci modificarea va avea loc la următoarea deschidere. Orice fişier care este deja deschis va avea aceleaşi drepturi pe care le avea la deschidere, chiar dacă cel care le-a deschis nu mai este autorizat sa le foloseasca.

Dostları ilə paylaş:
  1   2   3   4


Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2017
rəhbərliyinə müraciət

    Ana səhifə