Evaluarea securitații bazei de date Oracle 11G Coordonator Absolvent Prof. D. Ing. Dorin Cârstoiu Alexandru Costin Berbece 22017 Cuprins 1…. [604012]
Universitatea POLITEHNICA Bucure ști
Facultatea Automatică și Calculatoare
Departamentul Automatică și Informatică Industrială
LUCRARE DE LICENȚĂ
Evaluarea securitații bazei de date
Oracle 11G
Coordonator Absolvent: [anonimizat]. D. Ing. Dorin Cârstoiu Alexandru Costin Berbece
22017
Cuprins
1. Introducere (de ex.: justificarea alegerii temei, descrierea succintă a conținutului
fiecărui capitol)…………………………………………………………………………………………………. 3
2. Prezentarea domeniului din care face parte lucrarea……………………………………………….. 5
3. Descrierea problemei abordate și a metodei de rezolvare propuse…………………………… 14
4. Documentație tehnică – prezentarea aplicației, echipamentelor, algoritmilor, experimen-
telor etc. și a rezultatelor obținute ………………………………………………………………………. 25
4.1. Echipamente utilizate…………………………………………………………………………………. 30
4.2. Tehnologii software…………………………………………………………………………………….40
4.3 Rezultate obținute……………………………………………………………………………………….50
5. Concluzii și dezvoltări ulterioare (contribuții originale, domenii de utilizare posibile,
comparații cu realizări similare – cu sublinierea avantajelor, performanțelor etc.-, alte
aspecte relevante) …………………………………………………………………………………………….. 59
7. Bibliografie……………………………………………………………………………………………………… 64
8. Anexe (cu fragmente de cod software sau/și diagrame sau alte elemente, dacă este cazul)
31. Introducere
Securitatea, prin definitie, reprezinta sentimentul de protectie si de aparare in
detrimentul oricarui pericol. Securitatea poate fi masurata prin gradul de rezistenta
impotriva actiunilor vatamatoare si se poate aplica tuturor bunurilor si/sau a persoanelor,
locuintelor, comunitatilor, natiunilor sau organizatiilor inconjuratoare.
Pentru a avea un grad de intelegere cat mai ridicat despre notiunea de securitate,
trebuie sa facem, mai intai, distinctia dintre date si informatie. O data reprezinta orice
mesaj primit de la receptor sub o anumita forma, fara a fi procesat sau interpretat prin orice
mijloc. In schimb, informatia reprezinta rezultatul procesarii datelor in vederea obtinerii
unui mesaj nou. Pentru a avea un sens, informatia are nevoie de un context. De exemplu, o
temperatura de 100 de grade nu are niciun sens daca nu ii stim contextul. Pot fi grade
Kelvin sau Celsius? Temperatura este a unui motor de la masina sau a unei persoane? In
schimb, daca prelucram mesajul primit si ii asociem o unitate de masura, capata un alt
sens. In acest fel, informatia proaspata poate fi folosita ca suport pentru luarea deciziilor.
Cand discutam despre securitate, discutam doar despre un concept care ne trimite
cu gandul la un sentiment de siguranta, dar nimic mai mult. Ca si alte multe domenii,
exista numeroase documente care analizeaza acest termen cat si multe categorii in care
acesta se poate imparti. Motivul care a dus la extinderea domeniului securitatii in mai
multe sub-domenii este ca cea mai simpla vulnerabilitate, in orice sector, reprezinta un bun
prilej de exploatare. In cele ce urmeaza, vom realiza o impartire a securitatii pe categorii.
Aceasta se imparte in:
Domeniul IT&C, cuprinzand:
o Securitatea in telecomunicatii, este disciplina care se ocupa cu preventia
interceptiilor neautorizate a mesajelor transmise de la emitator la receptor;
o Securitatea in domeniul calculatoarelor, cunoscuta si ca securitate
cibernetica, reprezinta modalitatea de a proteja sistemele de tip calculator
impotriva furtului de informatie ori a deteriorarii programelor (denumite
software) si/sau a componentelor interioare (denumite hardware);
o Securitatea Internetului/retelelor, domeniu ce implica realizarea unor reguli
si practici in domeniul retelelor pentru a stopa furtul de informatii dintr-un
sistem informatic conectat la internet;
o Securitatea datelor, domeniu ce isi propune protejarea datelor (stocate sau
nu intr-o baza de date) de actiuni mai putin pozitive menite sa extraga
informatii confidentiale dintr-un sistem informatic;
Domeniul fizic de pretutindeni, cuprinzand:
o Securitatea aeroporturilor;
o Securitatea locuintelor;
o Securitatea alimentara;
o Securitatea corporatiilor.
4 Domeniul Politic si Economic, cuprinzand:
o Securitate nationala;
o Securitate internationala;
o Securitate economica/financiara;
o Securitate sociala.
Acum ca am inteles catusi de putin despre notiunea de securitate, prezenta lucrare
isi doreste sa ofere un punct de vedere asupra securitatii in domeniul informatiei si a
tehnologiei, mai precis, in domeniul bazelor de date. Datele, precum si informatia in sine,
au reprezentat dintotdeauna subiecte sensibile. Inca de cand au aparut primele sisteme de
calcul, stocarea datelor a reprezentat un interes major, deoarece fara o unitate de stocare a
informatiei nu putem discuta despre un calculator. Pana in ziua de astazi, s-a realizat un
parcurs impresionant in ceea ce priveste unitatile de date cat si a modului in care
informatia este scrisa si citita in memorie.
Insa, odata cu progresul stocarii datelor, a evoluat si interesul furtului de date cat si
a modalitatilor de compromitere si periclitare a integritatii datelor. Pe langa intensificarea
numarului de atacuri cibernetice, acestea au evoluat si in ceea ce priveste performanta si
rata de succes.
Din fericire, pe langa dorinta nemarginita a anumitor indivizi de a periclita
integritatea sistemelor informatice, au luat nastere metode, algoritmi si aplicatii dezvoltate
de specialisti in securitate pentru a contracara si a stopa posibilitatea unui atac cibernetic.
Obiectul care va sta la baza lucrarii este baza de date a dezvoltatorului Oracle, 11G.
Prin intermediul acestei baze de date vom incerca sa ne indeplinim obiectivul studiind
posibilele vulnerabilitati, simulandu-le, observand efectele, iar apoi elaborand, in masura
posibilitatii, metode si practici prin care se poate limita riscul unui atac.
Oracle este o companie cu o intreaga istorie in spate. Aceasta s-a facut remarcata,
cand abia dupa ce a luat nastere in anul 1977, a fost angajata de Agentia Centrala de
Informatii din Statele Unite ale Americii pentru a pune la dispozitie o baza de date. In ziua
de astazi, Oracle este un gigant in domeniul IT cat si in mediul de afaceri, care pune la
dispozitie o gama larga de aplicatii software, baze de date, servere, medii de stocare si
servicii de tip cloud. Conform studiului[1] publicat de catre Oracle, solutiile oferite in
domeniul bazelor de date sunt pe primul loc, in ceea ce priveste instalarea pe sistemul de
operare Windows, cat si pe Linux si UNIX.
Pentru organizatiile precum Oracle care ofera servicii clientilor peste tot in lume,
securitatea in orice domeniu, nu numai in cel al bazelor de date, reprezinta o chestiune de
prestigiu si de credibilitate. Oracle a investit constant in asigurarea unui produs de top in
ceea ce priveste securitatea, insa niciodata nu este de ajuns pentru a putea spune ca solutia
oferita este impenetrabila si imuna la atacuri. Datorita acestui fapt , mi-am propus sa
studiez cateva metode de evaluare si sa elaborez solutii pentru a obtine in final o baza de
date cat mai sigura.
1 http://www.oracle.com/us/corporate/oracle-fact-sheet-079219.pdf
5Pe langa faptul ca bazele de date oferite de Oracle sunt considerate a fi cea mai
sigura si profesionala solutie pentru un client, dupa cum am vazut mai sus, aceasta fiind
principala justificare pentru care am ales sa studiez o baza de date Oracle, atentia mi-a fost
captata de un eveniment petrecut in San Francisco, Statele Unite ale Americii, care l-a avut
un prim plan pe co-fondatorul Oracle, Larry Ellison. La conferita petrecuta in ianuarie
2014, un membru din audienta l-a intrebat ce ar trebui sa-i raspunda unui potential client
care se teme ca Agentia de Securitate Nationala ar putea sa acceseze in mod neanuntat
informatiile dintr-o baza de date (sau un server) Oracle. Larry a raspuns: „Din cunostintele
noastre, o baza de date Oracle nu a fost sparta de cateva decenii de nimeni. Este atat de
sigura, incat sunt oameni care se plang in privinta asta”. (Randewich, Larry Ellison
Downplays Possibility Of NSA Snooping On Oracle Customers, 2014). Iar aceasta
afirmatie m-a determinat intru totul sa studiez daca ele sunt chiar atat de sigure precum co-
fondatorul companiei a afirmat.
In domeniul tehnologiei si a informatiei, regula „crede si nu cerceta” nu se aplica.
Sau cel putin nu ar trebui aplicata, deoarece presupunerile cum ca un sistem este
impenetrabil, nu aduc cu sine decat multe neplaceri.
Tocmai de aceea, la o simpla cautare pe motorul de cautare Google, descoperim ca
nu mai putin de 14[2] vulnerabilitati au fost identificate intre 2008 si 2009 aplicabile bazei
de date 11G. Cea mai grava dintre acestea, CVE-2009-0985, notata de catre cei de la CVE
(Expuneri si Vulnerabilitati Comune) cu 7.1 (minimum fiind 0 si maximum 9), nu necesita
decat ca atacatorul sa fie logat in sistem in linia de comanda via desktop sau interfata web
pentru a compromite securitatea sistemului si putand fura intr-o proportie de 100% fisiere
importante.
Faptul ca atacurile s-au intensificat atat ca numar cat si ca performanta nu ne
surprinde. Surprinzator insa este ca, pe langa atacurile obisnuite care necesita un potential
atacator cu abilitati bune in programare si un calculator conectat la internet, s-au inmultit
atacurile de tip „atac din interior”. Ce doresc sa spun prin acest lucru este ca, este mult mai
usor si ieftin de mituit in scopuri proprii un angajat care are deja acces si privilegii la
sistemele din interior pentru a fura informatii importante si compromitatoare, decat
incercarea de a angaja un programator specializat in furt de informatii sau chiar a incerca
pe cont propriu, insa acest lucru presupune cunostinte avansate in programare cat si
supunerea la infractiuni cibernetice grave. O alta vulnerabilitate care „ajuta” angajatii care
vor sa faca parte din categoria „infractorilor” platiti chiar de catre angajatorii lor este CVE-
2009-0981. Aceasta presupune trimiterea unei interogari catre baza de date in linia de
comanda de catre un utilizator care va returna hash-ul parolei (vom dezbate pe larg in
capitolele lucrarii ce urmeaza notiunea de hash si cum sunt parolele stocate in baza de
date), insemnand parola criptata prin diferiti algoritmi. Parola criptata returnata poate fi
apoi descifrata folosind anumite programe specializate in tehnici hash, iar in acest fel, cu
ajutorul unei clipe de neatentie sau un calculator lasat nesupravegheat, se pot afla parole la
baze de date care contin date confidentiale.
Din fericire, toate aceste vulnerabilitati au fost rezolvate prin intermediul unor
programe software oferite de dezvoltator, instalate peste baza de date. Aceste programe se
numesc „patch”-uri.
2 https://www.cvedetails.com/vulnerability-list/vendor_id-93/product_id-13824/Oracle-Database-11g.html
6Lucrarea isi propune o activitate de cercetare a posibilelor vulnerabilitati din mai
multe puncte de vedere. Pe langa furtul de informatii avand acces direct la o baza de date,
exista posibilitatea compromiterii sistemelor de operare pe care este instalata o baza de
date. Sistemele de operare nu sunt impenetrabile, iar integritatea lor poate fi atacata si
fisiere indispensabile pot fi accesate si compromise. Tocmai de aceea, se impune
elaborarea de idei si solutii din doua puncte de vedere: evaluarea la nivel de sistem de
operare, a fisierelor ce contin informatii importante bazei de date, cat si baza de date in
sine. La nivel de baza de date, cunoscand informatii vitale cum ar fi numele utilizatorului
si parola asociata, se pot extrage informatii fara niciun efort, reprezentand calea cea mai
usoara si cel mai rar intalnita. IP-ul bazei de date cat si identificatorul (numele) ei
reprezinta informatii vitale, insa accesul la informatii esentiale se rezuma tot la nume de
utilizator si parola. Iar pentru a afla parola, evident s-au inventat tehnici implementati in
aplicatii pentru a depasi banalul exercitiu de a ghici-o.
Pentru a acoperi intr-o proportie cat mai mare cele doua abordari pe care mi le-am
propus, am decis sa structurez lucrarea pe capitole, dupa cum urmeaza:
Pregatirea sistemului de operare Linux si instalarea bazei de date 11G, contine
descrierea pasilor care sunt necesari pentru a putea instala o baza de date pe Linux.
Aceasta operatie este diferita fata de instalarea propriu-zisa pe Windows, deoarece
Oracle necesita anumite valori pentru parametri de kernel cat si pachete Linux
indispensabile instalarii.
Securitatea sistemelor de operare, urmareste, in prima parte, securitatea sistemelor
de operare de tip Linux, tratarea utilitarului Tripwire si modul in care poate fi
folosit pentru detectarea modificarii integritatii fisierelor. In a doua si a treia parte,
vom studia cum putem sa ne folosim de o proprietate pe care o ofera Linux pentru a
securiza fisierele importante si vom descrie cum putem sa securizam parametrii
kernel ai sistemului de operare. Iar in final, restrictionarea accesului utilizatorilor
Linux si folosirea unui utilitar pentru a detecta parolele slabe ale conturilor.
„Capitolul 3” descrie o modalitate de securizare a datelor de tip „data-at-rest”
folosind o metoda oferita de sistemul de operare pentru criptarea dispozitivelor bloc
cat si securizarea back-up-urilor utilizand RMAN.
„Capitolul 4” prezinta trecerea de la evaluarea sistemelor de operare la evaluarea
propriu-zisa a bazei de date. Exista mai multe moduri de evaluare: evaluarea de
securitate generala a bazei de date utilizand „Oracle Enterprise Manager”, o
caracteristica a bazei de date datorita politicii de securitate, evaluarea parolelor
utilizand un utilitar care poate verifica complexitatea lor reala si in final verificarea
privilegiilor utilizatorilor bazei de date.
„Capitolul 5” prezinta aplicatia finala care va rula o serie de interogari peste baza
de date reprezentand teste oficiale de la Oracle. Aplicatia va finaliza un raport
HTML in care sunt prezentate teste efectuate, rezultatele obtinute cat si
recomandarile care se doresc.
72. Prezentarea domeniului din care face parte lucrarea
Tehnologia Informatiei, sau IT, este domeniul care vizeaza universul
calculatoarelor. Aceste dispozitive sunt capabile sa primeasca, sa studieze si prelucreze, sa
transmita si sa stocheze informatie, de cele mai multe ori in scopuri educationale iar apoi
business.
In majoritatea cazurilor, oamenii folosesc acest termen cu referire la calculatoare si
la programarea lor, insa acest domeniu include si alte subiecte cum ar fi: industria
electronica, industria semiconductorilor, Internetul, industria telecomunicatiilor cat si
comertul electronic.
Noi vom ramane insa la nivelul calculatoarelor, deoarece fara ele nu am fi astazi
aici discutand despre securitate in domeniul bazelor de date. Calculatoarele electronice au
aparut incepand cu anii 1940. Zuse Z3, calculator electromecanic, a fost primul calculator
programabil si complet automat. Apoi, in timpul celui de-al doilea razboi mondial,
Colossus a fost dezvoltat pentru decriptarea mesajelor naziste, fiind primul calculator
electronic digital. Chiar daca era programabil, nu a fost destinat uzului general deoarece
era programat doar pentru o singura sarcina. La sfarsitul anilor 1940, laboratoarele Bell au
dezvoltat tranzistoarele iar acest lucru a permis dezvoltarea unei noi generatii de
calculatoare care aveau capabilitatea de a consuma mai putina energie.
Calculatoarele electronice vechi precum Colossus foloseau benzi perforate pentru a
reprezenta informatia stocata, tehnologie de mult invechita. Stocarea folosita in
computerele moderne, electronica, s-a folosit pentru prima data din al doilea razboi
mondial, cand a fost dezvoltata memoria cu intarziere pentru eliminarea dezordinii de la
semnalele radar. Primul dispozitiv cu acces aleator (random) a fost tubul Williams, un tub
cu raze catodice, dar dezavantajul a constat in faptul ca memoria era volatila, trebuind sa
fie reinoita permanent deoarece in momentul in care puterea de la sursa era oprita, datele
dispareau. Aceasta problema a fost rezolvata utilizand memoria non-volatila. Cea mai
veche forma de memorie non-volatila utilizata la stocarea informatiei a fost tamburul
magnetic inventat in anul 1932, utilizat in calculatorul Ferranti Mark 1. Discurile hard au
fost introduse in anul 1956 de catre IBM si inca sunt folosite si in ziua de astazi pe
majoritatea calculatoarelor, desigur, suferind modificari de performanta si volum.
Sistemele de gestiune a bazelor de date (SGBD) au aparut in anii 1960 ca un
raspuns la problema stocarii si preluarii unor cantitati mari de date rapid si cu mare
exactitate. Un SGBD este un interpretor de interogari, trimise de utilizatori catre baza de
date. Acesta, pe baza interpretarii cererii, executa operatiile si returneaza rezultatul. Pe
scurt, un SGBD este un sistem de programe general care faciliteaza definirii si manipularii
datelor pentru diverse scopuri. Unul dintre cele mai vechi sisteme este Sistemul de
Gestiune a Informatiei a celor de la IBM care inca este implementat la scara larga chiar si
dupa 57 de ani de cand a fost dezvoltat. Tot IBM a dezvoltat un model alternativ de stocare
relationala bazat pe tabele, randuri si coloane. Modelul de baze de date relational a introdus
un limbaj de programare independent numit Limbaj de Interogare Structurat,
binecunoscutul SQL, bazat pe algebra relationala. Desi inventat de IBM, acestia nu au
vazut potentialul imens pe care il aveau in propria organizatie, iar primul care a introdus un
8sistem de gestionare a bazelor de date relationale in comert a fost Larry Ellison, co-
fondatorul Oracle, in anul 1978.
Insa, progresul SGBD-urilor nu s-a oprit aici. Pe baza articolului IBM s-au
dezvoltat si alte sisteme de gestiune a bazelor de date cum ar fi PostgreSQL si Mimer SQL.
Mimer SQL a introdus o forma de manipulare a tranzactiilor cu o robustete ridicata, idee
care a fost ulterior implementata pe majoritatea sistemelor de gestiune. Dupa 1980,
calculatoarele au devenit populare, insa nu oricine putea manipula cu usurinta un limbaj de
programare. Tocmai de aceea, pentru utilizatorii de rand, producatorii de calculatoare au
inventat foile de calcul pentru ca un utilizator sa lucreze cat mai usor cu un fisier de date.
Totodata, un program de baze de date s-a facut remarcat: dBASE. Acesta a fost apreciat
prin faptul ca toata logica a fost realizata in interiorul programului, iar utilizatorul nu a fost
nevoit sa se concentreze pe deschiderea unui fisier, citirea unui fisier si inchiderea lui, ci
doar pe introducerea comenzilor si asteptarea rezultatului. dBASE a fost unul dintre cele
mai vandute programe de baze de date din anii 1980 si chiar inceputul anilor 1990.
Dezvoltarea bazelor de date a fost influentata in anii 1990 de o alta filosofie de
programare, anume programarea orientata obiect. Programatorii incep sa trateze datele din
bazele lor de date ca obiecte. Datele unei persoane dintr-o baza de date, adica atributele
persoanei respective, cum ar fi numele, adresa, numarul de telefon, au fost considerate ca
apartinand acelei persoane, inloc sa fie considerate date straine. Acest lucru permite ca
relatiile dintre date sa fie relatii cu obiectele si atributele lor si nu cu campuri individuale.
Insa a aparut totusi o problema intre obiectele programate si tabelele bazei de date. Aceasta
problema este descrisa in literatura ca „nepotrivire obiect-relationala a impedantei”.
Rezolvarea acestei nepotriviri a venit in momentul in care programatorii au livrat limbaj
orientat obiect, alternativa SQL relational, cunoscut ca mapare obiect-relationale (ORM).
In zilele noastre, pe langa bazele de date relationale, au aparut si bazele de date
non-relationale (NoSQL). Bazele de date NoSQL ofera un mecanism diferit de stocare si
manipulare a datelor care este modelat in alte mijloace decat relatiile dintre tabelele
bazelor de date relationale. Popularitatea NoSQL a crescut odata cu declansarea nevoii
gigantilor IT cum ar fi Facebook sau Google de a manipula volume cat mai mari de date.
Cateva dintre motivele pentru care se aleg solutii de tip NoSQL: simplitatea designului,
viteza mare de procesare, evitarea legaturilor de tip „join” prin stocarea datelor
denormalizate, scalabilitatea pe „orizontala” a clusterelor (care reprezinta o problema
pentru bazele de date relationale) si un control mai bun asupra disponibilitatii datelor. Cea
mai cunoscuta companie in domeniul NoSQL este MongoDB.
93. Pregatirea sistemului de operare Linux si instalarea bazei de
date Oracle 11G
Instalarea unei baze de date Oracle nu este atat de usoara pe cat pare, chiar daca
este un software ca oricare altul si se se instaleaza folosind o interfata grafica. Oracle pune
la dispozitie un manual[3] care ofera toti pasii necesari unei instalari cu succes. Desi pe
pagina[4] principala de descarcari a producatorului exista suport si pentru sistemul de
operare Windows, in manualul tehnic toate sistemele recomandate sunt diferite distributii
Linux. De aici ni se confirma si faptul ca este recomandat si sustinut ca o baza de date
Oracle sa ruleze pe Linux.
Dintre toate variantele, bazandu-ma pe experienta anterioara in materie de Linux,
am ales solutia Red Hat Enterprise Linux (varianta agreata), insa m-am lovit de un
impediment: chiar daca solutiile oferite de ei sunt open-source (putand fi modificate in
scopuri proprii dupa bunul plac), nu sunt gratuite. Varianta gratuita pe care o ofera cei de la
Red Hat este Fedora. Dupa instalarea sistemului de operare Fedora 23 pe 64 de biti,
descarcam baza de date de pe pagina producatorului si incepem sa parcurgem pasii descrisi
in manualul oficial de instalare.
Nota: comenzile utilizate se vor pozitiona sub fiecare pas, inclusiv capturile de ecran, daca
este necesar.
Pasul 0 – logare pe contul de root pentru obtinerea drepturilor administrative
[oracle@localhost ~]$ su
Password:
[root@localhost oracle]#
Pasul 1 – extragerea arhivei descarcate de pe pagina producatorului.
[root@localhost oracle]# cd /home/oracle/Downloads/
[root@localhost Downloads]# unzip linux.x64_11gR2_database_1of2.zip
…………………………………………………………………………………………………………..
[root@localhost Downloads]# unzip linux.x64_11gR2_database_2of2.zip
…………………………………………………………………………………………………………..
In urma dezarhivarii obtinem in directorul „Downloads” un singur director numit
„database”.
Pasul 2 – verificarea corectitudinii fisierului de host care se afla in directorul /etc
Acesta trebuie sa fie de forma: <Adresa IP> <nume-intreg-masina> <nume-masina>
[root@localhost oracle]# vi /etc/hosts
3 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
4 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
10
Fig. 1. Verificarea corectitudinii fisierului de host
Dupa ce ne-am asigurat de existenta ip-ului si de corectitudinea numelui host-ului,
verificam fisierul /etc/hostname sa contina acelasi nume complet de masina precum
/etc/hosts : localhost.localdomain.
Fig. 2. Verificarea corectitudinii numelui din fisierul /etc/hostname
Pasul 3 – verificarea parametrilor de kernel din fisierul /etc/sysctl.conf:
Sunt recomandati urmatorii parametri kernel:
s.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
# valori pentru semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
Dupa deschiderea fisierului se urmaresc parametrii existenti, iar unde este necesar se
modifica sau in lipsa vreunui parametru, acesta se va adauga in fisier. Dupa adaugarea
valorilor, acestea persista dupa restartarea sistemului de operare. Pentru Fedora exista o
comanda pentru schimbarea imediata a parametrilor:
[root@localhost etc]# /sbin/sysctl –p
Pasul 4 – Verificarea limitelor resurselor pentru instalarea aplicatiei, in fisierul
/etc/security/limits.conf
Adaugam urmatoarele linii fisierului:
oracle soft nproc 2047
oracle hard nproc 16384
11oracle soft nofile 4096
oracle hard nofile 65536
oracle soft stack 10240
Pasul 5 – schimbarea modului de securitate Linux
Deoarece baza de date Oracle este atat de specializata, exista mai multe setari de sistem
care trebuie verificate sau configurate pentru ca 11G sa ruleze pe Linux. Multe dintre ele
ajusteaza modul in care Oracle poate utiliza memoria sistemului sau cate procese poate
porni. In mod implicit, baza de date se instaleaza intr-un mod numit „Security Enabled
Linu”, sau pe scurt, „SELinux”. Acest mod invoca un set de restrictii de securitate asupra
proceselor si fisierelor si in momentul instalarii, impiedica aplicatia sa le suprascrie, fapt
care conduce la esuarea instalarii. Urmatoarea schimbare permite aplicatiei sa scrie in
fisiere si face ca Oracle sa functioneze pe Linux: in fisierul /etc/selinux/config, ne
asiguram ca modificam linia SELINUX=enforcing in SELINUX=permissive.
Fig. 3. Schimbarea permisiunilor asupra fisierelor sistemului
Pasul 6 – instalararea urmatoarelor pachete necesare rularii bazei de date:
binutils-2.23.52.0.1-12.el7.x86_64
compat-libcap1-1.10-3.el7.x86_64
compat-libstdc++-33-3.2.3-71.el7.i686
compat-libstdc++-33-3.2.3-71.el7.x86_64
gcc-4.8.2-3.el7.x86_64
gcc-c++-4.8.2-3.el7.x86_64
glibc-2.17-36.el7.i686
glibc-2.17-36.el7.x86_64
glibc-devel-2.17-36.el7.i686
glibc-devel-2.17-36.el7.x86_64
ksh
libaio-0.3.109-9.el7.i686
libaio-0.3.109-9.el7.x86_64
libaio-devel-0.3.109-9.el7.i686
libaio-devel-0.3.109-9.el7.x86_64
libgcc-4.8.2-3.el7.i686
libgcc-4.8.2-3.el7.x86_64
libstdc++-4.8.2-3.el7.i686
libstdc++-4.8.2-3.el7.x86_64
12libstdc++-devel-4.8.2-3.el7.i686
libstdc++-devel-4.8.2-3.el7.x86_64
libXi-1.7.2-1.el7.i686
libXi-1.7.2-1.el7.x86_64
libXtst-1.2.2-1.el7.i686
libXtst-1.2.2-1.el7.x86_64
make-3.82-19.el7.x86_64
sysstat-10.1.5-1.el7.x86_64
Aceste pachete se instaleaza utilizand comanda: dnf install <nume_pachet>.
Pasul 7 – adaugarea grupurilor necesare
[root@localhost selinux]# groupadd oinstall
[root@localhost selinux]# groupadd dba
Utilizatorul oracle deja exista, insa grupul primar nu este oinstall si nu este membru al
grupului dba, prin urmare comanda urmatoare este vitala:
[root@localhost selinux]# usermod -g oinstall -G dba oracle
Pasul 8 – definirea directorului unde va fi instalata baza de date
[root@localhost selinux]# mkdir -p /u01/app/oracle/product/11.2.0.4/db_1
[root@localhost selinux]# chown -R oracle:oinstall /u01
[root@localhost selinux]# chmod -R 775 /u01
Pasul 9 – instalarea bazei de date Oracle 11G
[oracle@localhost database]$ ./runInstaller
Fig. 4. Initializarea aplicatiei de instalare a bazei de date
13Pe parcursul instalarii, vom intampina un mesaj care ne indruma sa executam sub
utilizatorul root urmatoarele scripturi:
Fig 5. Scripturi necesare instalarii
Oracle s-a instalat cu succes dupa rularea scripturilor, oferind calea catre consola
principala (Enterprise Manager Database Control) : http://localhost:1158/em
Pas 10 – initializare linie de comanda cu ajutorul utilitarului sqlplus
Fig. 6. Instalare cu succes Oracle 11G
144. Securitatea sistemelor de operare
Numarul amenintarilor la adresa securitatii in domeniul sistemelor de operare si
implicit al bazelor de date continua sa creasca in fiecare zi. Drept dovada sta ultimul tip de
atac care a facut peste 500[5] de companii in Romania, denumit generic „WannaCry” ( vrei-
sa-plangi) care patrunde in calculatorul personal si cripteaza toate datele existente din
sistem. Prin urmare, sunt necesare demersuri pentru a fi gasite si aplicate masuri eficiente
pentru a contracara amenintarile si a elimina riscul de penetrare al sistemului, iar cei care
pot sa gaseasca aceste masuri sunt administratorii de sistem si administratorii de baze de
date. Necesitatea pentru securizare si pentru a asigura ca bazele de date sunt operationale
este cruciala, mai ales in cazul in care medii de dezvoltare precum „Productia” necesita
acces neintrerupt la datele stocate in baze de date Oracle si nu numai.
In acest capitol ne vom axa pe cateva masuri succinte de securitate din punct de
vedere al sistemelor de operare, pentru a obtine un sistem fiabil, stabil si sigur, in cazul de
fata Fedora23. Desigur, ca si in cazul altor domenii de activitate, securitatea in acest sector
este un domeniu foarte vast si pentru a-l acoperi catusi de putin avem nevoie de mai mult
decat un capitol de licenta. Totusi, putem descrie in masura competentelor, mai multe
metode de luat in calcul pentru a avea un punct de plecare pentru abordarea unor
preocupari pe care le vom descrie in continuare.
4.1 Utilizarea utilitarului Tripwire
Permisiunile corespunzatoare pentru fisiere sunt esentiale in vederea asigurarii
integritatii fisierelor care contin informatii despre baza de date. Simplii utilizatori care nu
au drepturi administrative nu trebuie sa aiba drepturi de citire si mai ales drepturi de scriere
asupra fisierelor care contin fizic baza de date sau fisiere de configurare cum ar fi
listener.ora sau sqlnet.ora.
In momentul instalarii oricarei aplicatii, implicit este de inteles ca se vor modifica
fisierele in care aplicatia va incerca sa scrie informatie. Dar, sa ne gandim la urmatorul
scenariu: am terminat de instalat sistemul de operare, am terminat de instalat aplicatia, insa
observam in urma comenzii „ls” in linia de comanda ca ultima accesare a fisierului este o
data foarte apropiata de ziua curenta, desi nimeni din cunostintele noastre, nu a accesat acel
fisier. Care este explicatia?
Alterarea fisierelor si a directoarelor din punct de vedere al continutului si a
permisiunilor reprezinta primul semn ca un sistem de operare a fost accesat in mod
neautorizat. O prima solutie de verificare reprezinta utilizarea unor script-uri bash
personalizate pentru detectarea modificarilor fisierelor. Aceasta este o solutie eronata,
deoarece scripturile reprezinta si ele tot fisiere si totodata inseamna multe ore de efort
depus cand exista aplicatii specializate pentru aceasta problema.
5 http://economie.hotnews.ro/stiri-it-21775427-cert-numarul-uri-afectate-wannacry-ajuns-514-zece-dintre-
ele-apartin-unor-institutii-publice.htm
15O alta optiune o reprezinta utilizarea unor softuri specializate de detectie a
intruziunii care au algoritmi integrati pentru verificarea integritatii fisierelor si alerte in
timp real (e-mail sau SMS). Un astfel de soft este Tripwire. Aceste este un sistem de
detectie a intruziunii care este capabil sa verifice fisierele sistemului intr-o anumita
perioada de timp, sa le compare si sa detecteze eventualele modificari. In cele ce urmeaza,
voi ilustra pasii de instalare ai utilitarului care este gratuit si care ruleaza numai pe Linux.
Pas 1 – descarcare si instalare utilitar Tripwire
Ne logam ca utilizator root si rulam urmatoarea comanda:
[root@localhost database]# dnf install "tripwire"
Imediat un mesaj va aparea care ne atentioneaza ca pachetul a fost gasit. Vom confirma
instalarea.
Pas 2 – Initializare Tripwire si creare chei de securitate
Am spus mai sus in descriere ca una dintre solutii ar fi crearea de scripturi bash pentru
verificarea datei ultimei accesari sau modificari a fisierelor, dar ca acestea tot fisiere sunt si
ca pot fi modificate ulterior cu usurinta. Dar Tripwire, pana la urma, constituie tot fisiere.
Nimic mai adevarat, dar dezvoltatorii s-au gandit la acest aspect, iar cheia de securitate
vine in ajutorul acestei situatii. Acestea se folosesc pentru protectia utilitarului impotriva
atacatorilor care ar putea patrunde in sistem si modifica permisiunile fisierelor si implicit
continutul. Pentru initializarea Tripwire si setarea cheilor de securitate, utilizam
urmatoarea comanda:
[root@localhost sbin]# tripwire-setup-keyfiles
Fig. 7. Introducerea cheilor de securitate
16Dupa ce vom introduce prima cheie si apoi verificarea ei, vom fi indrumati sa repetam
procesul de 3 ori.
Pas 3 – Generarea fisierului „baza de date” si rulare Tripwire
Dupa ce am depasit partea cu generarea de chei de securitate, putem rula utilitarul.
Tripwire va porni procesul de verificare a tuturor fisierelor din sistem, le va cripta si va
genera un fisier denumit generit „baza de date” continand caracteristicile fisierelor
verificate. Rulam comanda:
[root@localhost sbin]# tripwire –init
Ni se va cere cheia de securitate, iar dupa ce procesul va rula o perioada de timp de circa 5
minute, vom fi intampinati cu un mesaj care ne informeaza ca procesul a rulat cu succes si
ca baza de date a fost creata.
Continuing…
Wrote database file: /var/lib/tripwire/localhost.localdomain.twd
The database was successfully generated.
[root@localhost sbin]#
Prima rulare va genera un fisier care trebuie sa fie gol, deoarece niciun fisier nu a fost
modificat dupa crearea bazei de date. Rulam utilitarul Tripwire, utilizand urmatoarea
comanda:
[root@localhost tripwire]# tripwire -m c | grep Filename >> /var/tmp/primarulare.txt
Accesand fisierul /var/tmp/primarulare.txt, vom avea o surpriza neplacuta: fisierul care ar
trebui sa fie gol, contine 143 de linii, indicand ca 143 de fisiere au fost modificate:
Fig 8. Depistarea fisierelor fals-pozitive
17O explicatie pentru aceasta problema consta in faptul ca programul instalat pe sistemul de
operare Fedora23 este gratuit si constituie varianta cu licenta oferita de compania
dezvoltatoare utilitarului Tripwire. Inainte de a rula Tripwire asupra fisierelor bazei de date
11G, vom elimina fisierele fals-pozitive pentru a nu avea rapoarte viitoare mai mari decat
ar trebui.
Pas 4 – eliminarea fisierelor fals-pozitive
Realizam o copie de back-up asupra fisierului /etc/tripwire/twpol.txt, reprezentand fisierul
de configurare a lui Tripwire.
[root@localhost tripwire]# cp twpol.txt twpol.txt.BKP
Cand modificam fisiere de configurare, este intotdeauna o buna practica sa facem o copie
de back-up. Desi Linux este un sistem de operare considerat peste Windows din punct de
vedere al dezvoltarii/programarii, nu are optiune de refacere. Exista un script in limbajul
de programare Perl disponibil pe Internet care citeste fisierul „baza de date” al aplicatiei
Tripwire si verifica fisierele fals-pozitive din prima rulare. Dupa identificarea lor, ruleaza
din nou o verificare comparativ cu baza de date pentru a determina daca intr-adevar sunt
modificate, asa cum a reiesit din primul raport si genereaza un fisier nou de configurare.
Vom denumi scriptul in mod generic, configurare_tripwire.pl . Codul sursa in Perl in vom
atasa in anexa lucrarii. Cream fisierul configurare_tripwire.pl:
[root@localhost tripwire]# vi configurare_tripwire.pl
Inseram codul in limbaj de scripting perl si apoi schimbam permisiunile fisierului facandu-
l executabil doar pentru utilizatorul root, urmand sa-l executam:
[root@localhost tripwire]# chmod 777 /etc/tripwire/configurare_tripwire.pl
[root@localhost tripwire]# chown root:root /etc/tripwire/configurare_tripwire.pl
[root@localhost tripwire]# /etc/tripwire/configurare_tripwire.pl
Fig. 9. Identificare fisiere fals-pozitive
18
Pas 5 – compararea noului fisier de configurare si back-up-ul creat de noi.
[root@localhost tripwire]# ls -lrt twpol*
Fig. 10. Diferenta dintre cele doua fisiere de configurare
Pas 6 – Reinitializare fisier de configurare si „baza de date” Tripwire
[root@localhost tripwire]# twadmin -m P /etc/tripwire/twpol.txt
………………………………………………………………………………………..
[root@localhost tripwire]# tripwire -m i
Fig. 11. Baza de date configurata cu succes
Pas 7 – Ce-a de-a doua rulare Tripwire si verificare dimensiune fisiere
[root@localhost tripwire]# tripwire -m c | grep Filename > /var/tmp/adouarulare.txt
Fig. 12. Fisiere fals-pozitive eliminate cu succes
19Dupa cum putem observa in figura 12, scriptul in Perl a reusit sa elimine problema cu care
ne confruntam. Acum ne vom putea concentra pe rularea efectiva a utilitarului asupra
sistemului de operare Fedora23.
Pas 8 – Verificarea integritatii fisierelor din sistem
Inainte de toate, rulam Tripwire pentru a vedea cum arata un raport asupra tuturor fisierelor
din sistem. Comanda [root@localhost tripwire]# tripwire -m c –check va genera
urmatoarele informatii:
Fig. 13. Informatii initiale despre rularea raportului
Fig. 14. Exemplificarea regulilor si numarul de fisiere corupte in raport cu „baza de date”
20Informatiile dupa rularea primului raport arata ca niciun fisier nu a fost corupt. In
momentul rularii, Tripwire a consultat fisierul care contine informatiile despre toate
fisierele din sistem. Pentru a arata ca programul functioneaza, vom realiza cateva
modificari asupra unor fisiere din folderul unde rezida baza de date Oracle 11G.
Vom realiza modificari asupra fisierelor de configurare listener.ora, sqlnet.ora, le vom
copia in fisierul /home/oracle si com crea un alt fisier urmand sa ii modificam
permisiunile.
Fig. 15. Fisierul listener.ora dupa modificare
Fig. 16. Fisierul sqlnet.ora dupa modificare
Copiem cele doua fisiere in directorul Desktop al utilizatorului oracle :
[root@localhost admin]# cp sqlnet.ora /home/oracle
[root@localhost admin]# cp listener.ora /home/oracle
Cream un fisier nou si ii schimbam permisiunile:
[root@localhost lib]# touch alex_licenta.txt
[root@localhost lib]# chmod 777 alex_licenta.txt
[root@localhost lib]# ls -lrt alex_licenta.txt
-rwxrwxrwx. 1 root root 0 Jun 13 22:06 alex_licenta.txt
Dupa ce am terminat toate aceste modificari, suntem pregatiti de rularea raportului care
trebuie sa ne afiseze toate modificarile facute de noi in interiorul sistemului, simuland
astfel un atac.
21Open Source Tripwire(R) 2.4.3.1 Integrity Check Report
Report generated by: root
Report created on: Wed 14 Jun 2017 11:21:55 AM EEST
Database last updated on: Wed 14 Jun 2017 11:05:36 AM EEST
================================================================
Report Summary:
================================================================
Host name: localhost.localdomain
Host IP address: 127.0.0.1
Host ID: None
Policy file used: /etc/tripwire/tw.pol
Configuration file used: /etc/tripwire/tw.cfg
Database file used: /var/lib/tripwire/localhost.localdomain.twd
Command line used: tripwire –check –interactive
================================================================
Rule Summary:
================================================================
––––––––––––––––––––––––––-
Section: Unix File System
––––––––––––––––––––––––––-
Rule Name Severity Level Added Removed Modified
––– ––––– –– ––- –––
User binaries 66 0 0 0
Tripwire Binaries 100 0 0 0
Libraries 66 0 0 0
File System and Disk Administraton Programs
100 0 0 0
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Evaluarea securitații bazei de date Oracle 11G Coordonator Absolvent Prof. D. Ing. Dorin Cârstoiu Alexandru Costin Berbece 22017 Cuprins 1…. [604012] (ID: 604012)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
