Data postarii 2012-05-17      Subiect: Securitate web      Categorie: WEB

 SECURIZAREA SERVERELOR WEB

 Un server web este un program care ruleaza pe un calculator, asteapta pe un port o conexiune TCP

 

venita de la un client si serveste acestuia pagini web folosind protocolul HTTP. Schema de principiu a functionarii unui server web este

       Serverul web este un software, un program de sine statator, un executabil cu o functie bine stabilita: acea de a servi la cerere pagini de Internet intr-un mod bine determinat.

 

       Acest software poate fi: Apache HTTP Server, Microsoft Internet Information Services (IIS), iPlanet Web Server, Roxen WebServer, Zeus WebServer, s.a.

 

Exista numeroase alte implementari de web server, cele numite mai sus ocupind primele locuri in topul celor mai folosite servere web. Intern, procesul de functionare al acestor programe este foarte complex, ele urmarind in special performanta, securitatea si scalabilitatea. Fiecare server web dispune de un set caracteristic de astfel de tehnologii, care alaturi de capacitatea si scalabilitatea sa il individualizeaza printre celelalte produse.

 

       Alegerea unui server este de aceea puternic influentata de tehnologia pe care acesta o suporta, cistig de cauza avind de aceea probabil servere proiectate modular cum ar fi Apache, lider consacrat pe piata serverelor web. Acest succes se bazeaza in mare parte pe faptul ca crearea de aplicatii suplimentare este influentata de intreaga comunitate Open Source precum si datorita gratuitatii si extensibilitatii sale. Printre criteriile de diferentiere intre produsele existente pe piata se mai numarasi instalarea, configurarea si administrarea procesului general de web-serving.

 

Un server web ruleaza pe un calculator.

 

       Prin calculator trebuie sa intelegem platforma pe care va rula programul descris anterior. Platforma este caracterizata de hardware-l si de sistemul de operare pe care va fi instalat serverul web. Platforma hardware este in general un calculator ale carui performante incep de la cele mai minimale pina la servere de tip mainframe. Acest calculator va fi cel mai probabil un server dedicat, conectat permanent la o retea (Intranet sau Internet). Pentru alegerea tipului de hardware dispunem de o gama foarte larga de sisteme, insa un criteriu necesar alegerii este compatibilitatea cu softul ales ca web server. Asta deoarece serverele web sunt dependente de arhitectura pe care vor rula si mai ales de sistemul de operare instalat pe acea arhitectura.

 

       De exemplu, IIS ruleaza numai pe Windows, Zeus necesita Unix, Roxen si iPlanet ruleaza fie pe Unix, fie pe Windows, Apache se gaseste ca open-source, putind fi compilat pe o larga varietate de versiuni Unix/Linux, dar se gaseste si in versiuni precompilate pentru Windows sau Mac. Capacitatea de a rula pe mai multe tipuri de sisteme de operare le confera acestora o raspindire mai larga, cu toate ca performantele sunt superioare in cazul rularii pe Unix. Asadar, intre serverul web si sistemul de operare folosit este o legatura strinsa, alegerea unei configuratii raminind o problema comerciala. Un server web asteapta pe un port o conexiune TCP.

 

       Serverul web - ca orice aplicatie server -va asculta un port. Acest port este in mod standard portul 80, acesta fiind cel folosit implicit la introducerea unei adrese normale de web. Daca serverul web a fost configurat sa asculte alt port, de exemplu 8080, atunci adresa va trebui sa continasi numarul portului la care trebuie sa se faca conexiunea (exemplu: http://www.dlsit.ro:8080/). Folosirea altui port decit 80 poate fi datorata rularii simultane pe aceeasi masina a mai multor servere web: de exemplu, Apache poate fi instalat pentru teste pe portul 8080, pe cind portul 80 sa fie folosit de IIS. Odata stabilit portul si pornit serverul, un client se poate conecta la serverul web folosind adresa masinii in cauza.

 

       Aceasta adresa se numeste URL (Uniform Resource Locator) si este folosita exclusiv pentru a localiza si determina masina gazda, protocolul folosit si fisierul dorit. De exemplu, orice adresa din spatiul de adrese rominesc are forma: [http[s]://]subdomeniu.domeniu.ro [:n][/localizare/fisier]. De asemenea, se poate folosi adresa IP a masinii gazda in mod direct sau aliasul localhost daca conexiunea se face direct de pe masina gazda. Datorita folosirii protocolului TCP - protocol orientat pe conexiuni, in care o conexiune se creeaza la cerere si se inchide de indata ce nu mai este nevoie de ea - conexiunea intre client si serverul web se va termina de indata ce fisierul a fost trimis de catre web-server. Starea conexiunii, in cazul fisierelor mai mari decit un pachet TCP, se pastreaza activat atit de catre client, cit si de catre server.

 

Exemple de accesare a web-serverelor: http://www.dlsit.ro/ : cel mai simplu mod de adresare http://www.dlsit.ro/index.php: adresarea fisierului index.php, http://localhost:8080/test/test1.htm: pentru a accesa fisierul test1.htm din directorul test de pe masina locala prin intermediul serverului care asculta pe portul 8080 https://www.dlsit.ro/test.php: adresarea securizata a fisierului test.php folosind IP-ul masinii gazda Clientul folosit pentru accesarea serverului web este cel mai probabil un browser (sau "navigator") web, dar poate fi si alt program capabil sa se conecteze la un port TCP (de exemplu: telnet).

 

       Browserul web este programul folosit la afisarea de continut web.

 

       Trebuie deci sa stie sa interpreteze pagini HTML, sa afiseze imagini si alte forme de continut multimedia, sa foloseasca referinte (linkuri) etc. Cea mai importanta caracteristica asa este probabil capacitatea de a se conecta prin protocolul TCP la un server web.

Metoda de conectare am prezentat-o anterior. Mai trebuie mentionat ca introducerea unei adrese web (de exemplu: http://www.dlsit.ro/fisier.htm) in browser, produce urmatorul lant de actiuni:

- Browserul determina protocolul pe care il va folosi in dialogul cu serverul web (http:// = HTTP -HyperText Transfer Protocol;

- Browserul determina adresa web a serverului (www.dlsit.ro); - Browserul determina ce anume trebuie sa ceara de la serverul web (fisier.htm);

- Pe baza adresei web, browserul determina adresa IP a masinii pe care ruleaza serverul web prin interogari DNS (Domain Name Service);

- Pe baza adresei IP determinata anterior, browserul instaureaza o conexiune TCP pe portul specificat in URL sau implicit pe portul 80;

- Browserul trimite o cerere GET catre server specificind fisierul dorit: GET /fisier.htm;

- Serverul web raspunde trimitind fisierul dorit sau o eroare corespunzatoare in cazul in care trimiterea nu este posibila (lipsa fisierului, drepturi de acces insuficiente etc.).

 

Aici conexiunea dintre client si server se incheie.

 

- Browserul analizeaza fisierul primit si il afiseaza corespunzator. Un server web serverste pagini web. Dupa cum am mai spus, rolul dedicat al serverului web este acela de a servi fisiere.

 

       In principal aceste fisiere sunt fisiere in format HTML, dar nu numai. Serverul web poate sa serveascasi alte fisiere: imagini, sunete, animatii, arhive etc. Fisierele care sunt puse la dispozitia navigatorului se afla stocate intr-un director vazut ca radacina de catre web server (exemplu: C:\Internetpub\wwwroot pentru IIS sau /var/www/html/ pentru Apache). Acest director se specifica in configuratia serverului si in el se vor stoca fisierele si structura de subdirectoare pe care le va folosi serverul web in cautarea unui fisier cerut de catre un client ("bucataria restaurantului"). Servirea unui fisier se efectueaza daca fisierul specificat exista, daca este accesibil de catre serverul web si daca drepturile de acces nu interzic acest lucru. In cazul neindeplinirii uneia dintre aceste conditii, serverul va trimite un cod de eroare sau o pagina predefinita care sa informeze despre eroarea aparuta.

 

       De multe ori, fisierele pe care trebuie sa le serveasca depind de alte programe externe de generare de cod (PHP, ASP, JSP, PHP). Fisierele care necesita astfel de prelucrari vor fi generate de programul extern, a carui rezultat va fi un fisier HTML nou creat. Acest fisier va fi transferat serverului web, pe care acesta poate sa-l serveasca ca pe orice alt fisier. Acest proces sta la baza tuturor siturilor dinamice si este absolut necesar pentru pagini al caror continut necesita modificari in functie de anumite criterii. Un server web foloseste protocolul HTTP. "Dialogul" dintre client si server se efectueaza prin protocolul HTTP, care este un protocol la nivel de aplicatie. "Transportul" comunicatiei dintre client si server se efectueaza folosind protocolul TCP, protocol la nivel de retea. Protocolul HTTP defineste modul prin care se inteleg clientul si serverul.

 

       Clientul va trimite o cerere (o comanda HTTP in mod text simplu, (exemplu: GET, POST, HEAD, PUT) prin care informeaza serverul despre actiunea pe care vrea sa o intreprinda. Daca, spre exemplu, serverul va primi o cerere de tip GET /index.htm, el va raspunde cu un status code prin care informeaza browserul despre succesul cererii sau eventualele erori aparute (de exemplu: codul 404 indica faptul ca fisierul specificat in URL nu exista, codul 200 indica succesul cererii). In caz de succes, serverul va transmite un antet (header) catre browser, cu informatii ca: tipul si versiunea protocolului folosit, limba continutului, daca este necesara salvarea in cache-ul browserului sau nu, tipul continutului transmis (MIME type), data serverului, numele serverului etc. Dupa antet, va fi transmis continutul fisierului cerut (in cazul unei cereri HEAD, doar antetul va fi trimis, nu si continutul fisierului).

 

Un exemplu de dialog intre server si client:

 

 

Securitatea serverelor web

 

       Datorita faptului ca serverul web are acces direct la fisiere din sistemul pe care ruleaza, securitatea este un punct de maxim interes si a necesitat multe versiuni ale serverelor web pentru a ajunge la un anumit nivel de siguranta. Securitatea serverelor web presupune o cunoastere a modului de accesare al clientilor la datele de pe server.

 

Unele din problemele care trebuie avute in vedere sunt:

 

Amplasarea datelor

 

       O problema majora este aplasarea datelor private in directoarele publice ale serverului de web. Multi dintre cei care ofera servicii internet ofera doar spatiu pe web. Solutia lor de gazduire mapeaza directorul de root al serverului ftp pe directorul de root al serverului web, in comcluzie directorul „/home/www/dlsit/www.dlsit.ro/" va fi accesibil clientilor folosind ftp-ul cu „/”, directorul radacina, deasemenea este accesibil folosind URL-ul „http: //www.dlsit.ro/”. Multe dintre site-urile comerciale isi inregistreaza comenzile si informatiile pentru depanarea „aplicatiei” in unul sau mai multe fisiere de log, sau au fisiere de configuratii parolate. Daca aceste date sunt salvate in fisiere care se afla mai jos de directorul de root al serverului web, atunci automat vor avea un URL asociat, deci utilizatorul va avea acces la date. Treaba unui atacator este doar de a ghici care este numele fisierului , acest lucru putinduse realiza prin folosirea de aplicatii care scaneaza serverul web. Aceste lucruri nu se intimpla pentru solutii de gazduire care au fost proiectate pentru a oferi stocare privata a datelor. Aici serverul de web si cel de ftp se afla in directoare separate aflate sub directorul clientului. De exemplu directorul principal este "/home/www/dlsit/www.dlsit.ro/", directorul de ftp este "/home/www/dlsit/www.customer.com/public_ftp" iar directorul pentru documente html este "/home/www/servers/www.customer.com/public_html". Folosind aceasta configurare se pot creea directoare care nu vor fi accesibile publicului. O modalitate de a combate accesul la directoare , desi sunt amplasate in directoare public, este restrictionarea accesului prin folosirea fisierelor .htaccess. De exeemplu pentru serverul Apache pentru a limita accesul la directorul „/hack” se poate folosi: $ cat /hack/.htaccess order deny, allow deny from all

 

Accesul la servicii private

 

       Multi dintre cei care ofera servicii de gazduire nu au avut niciodata curiozitatea de asi privi sistemul din afara, de a folosi un program pentru scanarea porturilor accesibile de la o adresa IP. Un exemplu este serverul celor de la Heise. Acesta nu folosea un firewall (din motive de performanta), lucru ce a dus la posibilitatea accesarii serviciilor private de catre oricine. In consecinta exista posibilitatea accesarii serverului bazelor de date Oracle. Parolele pentru conexiunea cu acest server erau stocate in scripturi aflate in directoare care erau accesibile publicului. Aceasta greseala este combinata cu folosirea serviciilor nesecurizate. De exemplu multi dintre cei care ofera servicii de gazduire oferasi servicii POP3 precum si access FTP sau access la baze de date, pentru upload-are. Aceste protocoale pot oferi autentificare securizata sau transmisie securizata (de exemplu versiunea SSL a protocolului POP sau FTP), dar multi folosesc versiuni nesecurizate. Unele protocoale, cum ar fi serverul de baze de date MySQL, nu ofera nici ometoda de autentificare.

 

Securizarea conexiunii

 

       Pentru a oferi o comunicare securizata intre client si serverul web se poate folosi module de criptare. Unul dintre aceste module este mod_ssl folosit petru serverul Apache. Sa presupunem ca dorim sa facem un transfer de bani, comunicarea cu banca sa se realizeze intr-un mod privat, doarece inlcud informatii private.

www.dlsit.ro   >> design - linux - servicii - it.ro Pentru orice problema tehnica contactati-ne