Publicitate
Gazduire partajata Este opțiunea ieftină, nu-i așa? Și pentru o mulțime mare de populație, este tot ce va avea nevoie pentru a găzdui site-ul sau aplicația web. Și atunci când este bine, găzduirea partajată este scalabilă, rapidă și sigură.
Dar ce se întâmplă când nu este bine?
Ei bine, atunci vor începe să apară probleme periculoase de securitate. Acest lucru este atunci când site-ul dvs. este expus riscului de a fi defăimat sau datele private pe care le dețineți sunt scurse. Dar nu te speria. Marea majoritate a gazdelor web au măsuri decente de securitate. Sunt doar gazdele de la subsol cu chilipiruri, de care trebuie să aveți grijă.
Iti recomandam Găzduirea partajată a InMotion Hosting cu stocare SSD.
Vom explora problemele de securitate din jurul găzduirii partajate. Dar mai întâi, să vorbim despre ceea ce face ca o platformă de găzduire partajată să fie sigură.
Ce face o gazdă web sigură
Există câteva considerente de securitate deosebite care ar trebui făcute în ceea ce privește găzduirea partajată.
- Fiecare utilizator de pe server ar trebui izolat de alți utilizatori și nu ar trebui să poată accesa sau modifica fișierele altor utilizatori.
- O vulnerabilitate a securității în logica unui site web găzduit pe server nu ar trebui să poată avea impact asupra altor utilizatori.
- Serverul este patchiat, actualizat și monitorizat în mod regulat pentru a aborda probleme de securitate arhitecturală.
- Fiecare utilizator ar trebui să aibă propriul său acces izolat la baza de date și nu ar trebui să li se permită să facă modificări la înregistrările stocate sau la permisiunile din tabel ale altor utilizatori.
Din nou, majoritatea gazdelor web îndeplinesc aceste cerințe pentru ofertele lor comune. Dar dacă te uiți la găzduirea mai multor site-uri web pe un singur server sau ești curios să vezi cum se întrerupează compania de găzduire, sau chiar vă gândiți să lansați propria companie de găzduire și sunteți dornici să vă descoperiți cum să vă asigurați utilizatorii, atunci citiți pe.
Dar mai întâi, o exonerare
Înainte de a intra în carnea de a privi atacurile comune nivelate la găzduirea partajată, vreau doar să precizați că această postare nu va fi (și nu trebuie citită) ca o listă exhaustivă de securitate potențială probleme.
Securitatea este, într-un cuvânt, mare. Există o mulțime de modalități prin care poți compromite un site. Acest lucru este dublu pentru găzduirea partajată. Acoperirea lor într-un singur articol nu a fost niciodată pe cărți.
Dacă sunteți paranoic cu privire la securitatea dvs., obțineți un VPS sau un server dedicat. Acestea sunt medii în care aveți (în mare parte) control absolut asupra a ceea ce se întâmplă. Dacă nu sunteți sigur de diferitele tipuri de găzduire web, consultați acest post Diferitele forme de găzduire a site-ului web explicate [Tehnologia explicată] Citeste mai mult de la colegul meu, James Bruce.
Ar trebui să subliniez, de asemenea, că această postare nu trebuie interpretată ca un atac asupra găzduirii partajate. Mai degrabă, este un aspect pur academic asupra problemelor de securitate din această categorie de găzduire web.
Director Traversal
Să începem cu atacuri de traversare a directorilor (adesea cunoscute sub denumirea de „trasee de traversare”). Acest tip de atac vă permite să accesați fișiere și directoare care sunt stocate în afara rădăcinii web.
În engleză simplă? Ei bine, să ne imaginăm că Alice și Bob folosesc același server pentru a-și găzdui site-urile. Fișierele lui Alice sunt stocate în / var / www / alice, în timp ce documentele lui Bob pot fi găsite în / var / www / bob. Mai mult, să ne prefacem că există un alt folder pe server (/ usr / crappyhosting / myfolder) care deține un fișier cu text în format ncriptat (îl vom numi pwd.txt) care conține nume de utilizator ale sistemului și parole.
Cu mine până acum? Bun. Acum, să ne imaginăm că site-ul web al lui Bob servește fișiere PDF care sunt generate local, iar fișierul local este trimis în URL. Ceva asemănător cu:
http://example.com/file?=report.pdf
Ce s-ar întâmpla dacă aș înlocui „raport.pdf” cu unii parametri UNIX care schimbă directorul?
http://example.com/file?=../alice/
Dacă serverul este configurat incorect, acest lucru vă va permite să vedeți rădăcina documentului lui Alice. Interesant, dar, suntem mult mai interesați de acel fișier suportabil de pașapoarte. Parolele Accio!
http://example.com/file?=../../../usr/crappyhosting/myfolder/pwd.txt
Este într-adevăr atât de ușor. Dar cum ne descurcăm? Asta e ușor.
Ați auzit vreodată despre un utilitar Linux puțin cunoscut chroot? Probabil ați ghicit deja ce face. Setează rădăcina Linux / UNIX pe un folder arbitrar, ceea ce face imposibilă ieșirea utilizatorilor. În mod efectiv, oprește atacurile de traversare a directorilor în piesele lor.
Este greu de spus dacă gazda dvs. are acest lucru în loc, fără a încălca legea. La urma urmei, pentru a-l testa, ați accesa sisteme și fișiere pe care nu aveți permisiunea de a le accesa. Având în vedere acest lucru, poate ar fi bine să discutați cu gazda dvs. web și să vă informați despre modul în care își izolează utilizatorii unul de celălalt.
Operați propriul dvs. server de găzduire partajat și nu utilizați chroot pentru a vă proteja utilizatorii? Desigur, să îți desfășori mediul înconjurător poate fi greu. Din fericire, există o mulțime de pluginuri care fac acest lucru ușor. Aruncați o privire în mod_chroot, în special.
Injecția de comandă
Să revenim la Alice și Bob. Deci, știm că aplicația web a lui Bob are câteva... Ahem... Probleme de securitate în ea. Unul dintre acestea este vulnerabilitatea la injectarea comenzii, care vă permite să rulați comenzile sistemului arbitrar Un ghid rapid pentru a începe cu linia de comandă LinuxPuteți face multe lucruri uimitoare cu comenzi în Linux și chiar nu este dificil să înveți. Citeste mai mult .
Site-ul lui Bob vă permite să rulați o interogare whois pe un alt site web, care este apoi afișat în browser. Există o casetă de intrare HTML standard care acceptă un nume de domeniu și apoi execută comanda sistemului whois. Această comandă este executată prin apelarea la comanda PHP sistem ().
Ce s-ar întâmpla dacă cineva ar introduce următoarea valoare?
exemplu.com && cd ../alice/&&m index.html
Ei bine, să o dărâmăm. Unele dintre acestea vă pot fi familiare dacă le citiți „Ghid introductiv pentru Linux” Noțiuni introductive cu Linux și UbuntuVă interesează trecerea la Linux... dar de unde incepi? PC-ul dvs. este compatibil? Aplicațiile preferate vor funcționa? Iată tot ce trebuie să știți pentru a începe cu Linux. Citeste mai mult carte electronică, pe care am publicat-o anterior în 2010, sau am aruncat o privire asupra noastră Fișă de înșelare a liniei de comandă Linux.
În primul rând, va rula o interogare whois pe example.com. Apoi, ar schimba directorul de lucru curent în rădăcina documentelor lui Alice. Apoi, ar elimina fișierul numit „index.html”, care este pagina index a site-ului ei. Asta nu e bine. Nu, domnule.
Deci, ca administratori de sistem, cum să ne atenuăm împotriva acestui lucru? Ei bine, revenind la exemplul precedent, putem oricând să punem fiecare utilizator în propriul său mediu izolat, igienizat, îngroșat.
Putem aborda acest lucru și de la un nivel de limbă. Este posibil (deși, acest lucru poate rupe lucrurile) să elimine global declarațiile de funcții din limbi. Adică, este posibil să eliminați funcționalitatea din limbile în care utilizatorii au acces.
Privind în special PHP, puteți elimina funcționalitatea cu Runkit - setul de instrumente oficial PHP pentru modificarea funcționalității limbii. Există o mulțime de documente acolo. Citiți în ea.
De asemenea, puteți modifica fișierul de configurare PHP (php.ini) pentru a dezactiva funcțiile care sunt adesea abuzate de hackeri. Pentru a face acest lucru, deschideți un terminal pe serverul dvs. și deschideți fișierul dvs. php.ini într-un editor de text. Îmi place să folosesc VIM, dar este acceptabil și NANO.
Găsiți linia care începe cu disable_functions și adăugați definițiile funcției pe care doriți să le interziceti. În acest caz, ar fi execuția, shell_exec și sistemul, deși este de remarcat faptul că există alte funcții încorporate care pot fi exploatate de hackeri.
disable_functions = exec, shell_exec, system
Atacuri bazate pe limbaj și interpret
Deci, să ne uităm la PHP. Acesta este limbajul care alimentează un număr uimitor de site-uri web. De asemenea, vine cu o serie de idiosincrasii și comportamente ciudate. Asa.
PHP este de obicei utilizat împreună cu serverul web Apache. În cea mai mare parte, este imposibil să încărcați mai multe versiuni ale limbii cu această configurație.
De ce este o problemă? Să ne imaginăm că aplicația web a lui Bob a fost construită inițial în 2002. Asta a fost cu mult timp în urmă. Atunci s-a întors Michelle Branch încă în topul clasamentelor, Michael Jordan încă juca pentru Washington Wizards, iar PHP era un limbaj mult diferit.
Dar site-ul lui Bob încă funcționează! Utilizează o mulțime de funcții PHP întrerupte și învechite, dar funcționează! Utilizarea unei versiuni moderne de PHP ar rupe în mod eficient site-ul web al lui Bob și de ce Bob ar trebui să își rescrie site-ul pentru a răspunde capriciilor gazdei sale web?
Acest lucru ar trebui să vă dea o idee despre dilema cu care se confruntă unele gazde web. Trebuie să echilibreze păstrarea unui serviciu sigur din punct de vedere arhitectural și sigur, păstrând acest lucru în armonie cu asigurarea clienților plătiți.
Drept urmare, nu este neobișnuit să vezi că gazdele mai mici și independente folosesc versiuni mai vechi ale interpretului PHP (sau orice limbă, în acest sens).
Nu este neobișnuit să vezi că gazdele mai mici și independente folosesc versiuni mai vechi de PHP, putând expune utilizatorii la riscurile de securitate.
De ce este un lucru rău? Ei bine, în primul rând, ar expune utilizatorii la o serie de riscuri de securitate. La fel ca majoritatea pachetelor software majore, PHP este actualizat constant pentru a aborda multitudinea de vulnerabilități de securitate care sunt descoperite (și dezvăluite) în mod constant.
În plus, înseamnă că utilizatorii nu pot utiliza cele mai recente (și cele mai mari) funcții de limbă. Înseamnă, de asemenea, că funcțiile care au fost depășite pentru un motiv rămân. În cazul Limbaj de programare PHP Învață să creezi cu PHP: un curs de accidentPHP este limba pe care Facebook și Wikipedia o folosesc pentru a servi zilnic miliarde de solicitări; limbajul de facto folosit pentru predarea programării web a oamenilor. Este foarte simplu, dar puternic. Citeste mai mult , aceasta include funcțiile mysql_ groaznice (și recent deprețate), care sunt folosite pentru interacțiune cu sistemul de baze de date relaționale MySQL și dl (), care permite utilizatorilor să își importe propria limbă extensii.
Ca utilizator, ar trebui să poți vedea ce versiune a unui interpret rulează pe serviciul tău. Dacă este depășit sau conține o serie de vulnerabilități de securitate, contactați gazda.
Ce zici de sysadmins? Aveți câteva opțiuni aici. Primul (și cel mai promițător) este să folosiți Docker pentru fiecare dintre utilizatorii dvs. Docker vă permite să rulați simultan mai multe medii izolate, la fel cum o face o mașină virtuală, deși fără a fi necesar să rulați un alt sistem de operare. Drept urmare, acest lucru este rapid. Într-adevăr, foarte repede.
În engleză simplă? Puteți rula cel mai recent și cel mai mare interpret de margine pentru sângerare pentru majoritatea utilizatorilor dvs., în timp ce clienții care utilizează aplicații vechi, care folosesc interpreți antici, învechite, pentru a face acest lucru, fără a compromite alte utilizatori.
Acest lucru are și avantajul de a fi agnostic al limbii. PHP, Python, Ruby. Indiferent de. Totul e la fel.
Nu aveți coșmaruri.
Acest post a fost menit să facă câteva lucruri. În primul rând, a fost de a aduce în atenție numărul de probleme de securitate cu care trebuie să se confrunte companiile de găzduire web pentru a asigura securitatea clienților și a datelor lor.
De asemenea, a fost conceput să vă arate modul în care site-urile găzduite pe același server se pot afecta reciproc. Vrei să pui o adâncitură în asta? Începeți să respectați standardele de codificare bune și sigure. În special, începeți să vă igienizați intrările atât în partea frontală, cât și în partea din spate.
Un început bun este cu noua funcționalitate de validare a formularului HTML5. Am mai vorbit despre acest lucru în ghidul nostru HTML5. Colectiv, putem face site-urile web mai sigure prin faptul că suntem programatori mai buni, mai conștiincioși.
Ca întotdeauna, sunt pregătit să aud gândurile tale. Lasă-mi un comentariu mai jos.
Credit foto: Toată lumea are nevoie de un hacker (Alexandre Dulaunoy), Autocolant pe fereastra taxiului (Cory Doctorow), Cameră server (Torkild Retvedt), Cărți și reviste Linux (library_mistress), PHP Elephant (Markus Tacker)
Matthew Hughes este un dezvoltator de software și scriitor din Liverpool, Anglia. Foarte rar este găsit fără o ceașcă de cafea neagră puternică în mână și își adoră absolut Macbook Pro și camera foto. Îi poți citi blogul la http://www.matthewhughes.co.uk și urmăriți-l pe twitter la adresa @matthewhughes.