Oglas
Zajedničko gostovanje. Je li to jeftina opcija, zar ne? A za velik dio populacije, to je sve što će im ikada trebati da ugosti njihovu web stranicu ili web aplikaciju. A kad se dobro izvede, zajednički hosting je skalabilan, brz i siguran.
Ali što se događa kada nije dobro?
Tada počinju propadati opasni sigurnosni problemi. Tada postoji opasnost da će se web-lokacija pokvariti ili će se privatni podaci koje držite procuriti. Ali nemojte se brinuti. Ogromna većina web domaćina ima pristojne mjere sigurnosti. Morate biti oprezni samo domaćini koji lete po noći, i to samo po zemlji.
Preporučujemo Zajedničko gostovanje InMotion Hosting-a s SSD pohranom.
Istražit ćemo sigurnosna pitanja oko zajedničkog hostinga. Ali prvo, razgovarajmo o tome što čini zajedničku platformu za hosting sigurnom.
Što čini sigurnim web domaćinom
Postoji nekoliko sigurnosnih razmatranja koja se trebaju postaviti u vezi s zajedničkim hostingom.
- Svaki korisnik na poslužitelju trebao bi biti izoliran od drugih korisnika i ne bi smio pristupiti ili mijenjati datoteke drugih korisnika.
- Sigurnosna ranjivost u logici web mjesta koje se nalazi na poslužitelju ne bi trebala utjecati na druge korisnike.
- Poslužitelj se redovito zakrpa, ažurira i nadzire radi rješavanja problema arhitektonske sigurnosti.
- Svaki korisnik trebao bi imati vlastiti izolirani pristup bazi podataka i ne smije mu biti dopušteno mijenjati pohranjene zapise ili dopuštenja tablica drugih korisnika.
Opet, većina web-domaćina udovoljava tim zahtjevima za zajedničku ponudu. Ali ako gledate hostiranje više web lokacija na jednom poslužitelju ili želite znati kako se vaša hosting kompanija sprema, ili čak razmišljate o pokretanju vlastite hosting tvrtke i željeli biste utvrditi kako osigurati svoje korisnike, pa pročitajte na.
Ali prvo, odricanje
Prije nego što uđemo u meso gledanja uobičajenih napada izjednačenih na zajedničkom gostovanju, samo želim izjavite da ovaj post neće biti (i ne treba ga čitati kao) iscrpan popis potencijalnih sigurnosnih podataka pitanja.
Sigurnost je, jednom riječju, velika. Postoji puno načina na koje možete kompromitirati web mjesto. Ovo udvostručuje za zajedničko gostovanje. Pokrivanje istih u jednom članku nikada nije bilo na karticama.
Ako ste paranoični po pitanju svoje sigurnosti, nabavite VPS ili namjenski poslužitelj. Ovo su okruženja u kojima (uglavnom) imate apsolutnu kontrolu nad onim što se događa. Ako niste sigurni u različite vrste web hostinga, pogledajte ovaj post Objašnjeni različiti obrasci hostinga [Objasnio tehnologiju] Čitaj više od mog kolege Jamesa Brucea.
Također bih trebao naglasiti da se ovaj post ne smije tumačiti kao napad na zajedničko hosting. Umjesto toga, to je čisto akademski pogled na sigurnosna pitanja koja se tiču ove kategorije web hostinga.
Obilazak kataloga
Započnimo s napadima kroz presjek direktorija (često poznat kao "prelazak putem"). Ova vrsta napada omogućuje vam pristup datotekama i mapama koje se spremaju izvan web korijena.
Na običnom engleskom? Pa, zamislimo da Alice i Bob koriste isti poslužitelj za hosting svojih web stranica. Datoteke Alice pohranjuju se u / var / www / alice, dok se Bobovi dokumenti mogu pronaći u / var / www / bob. Nadalje, pretvaramo se da postoji još jedna mapa na poslužitelju (/ usr / crappyhosting / myfolder) koja sadrži nekodiranu datoteku otvorenog teksta (nazvat ćemo je pwd.txt) koja sadrži korisnička imena sustava i lozinke.
Sa mnom do sada? Dobro. Zamislimo da Bobova web-lokacija služi PDF datoteke koje se generiraju lokalno, a lokalna datoteka navedena je u URL-u. Nešto kao:
http://example.com/file?=report.pdf
Što bi se dogodilo ako zamijenim 'report.pdf' nekim UNIX parametrima koji mijenjaju direktorij?
http://example.com/file?=../alice/
Ako je poslužitelj pogrešno konfiguriran, to će vam omogućiti da vidite Aliceov korijen dokumenta. Zanimljivo, ali mnogo nas više zanima ta sočna datoteka putovnice. Accio lozinke!
http://example.com/file?=../../../usr/crappyhosting/myfolder/pwd.txt
Doista je lako kao to. Ali kako se nositi s tim? To je lako.
Da li ste ikada čuli za malo poznati alat Linux nazvan chroot? Vjerojatno ste već pogodili o čemu se radi. Linux / UNIX korijen postavlja u proizvoljnu mapu, onemogućujući mu korisnike da ga napuste. Učinkovito, zaustavlja napade kroz direktorij u njihovim zapisima.
Teško je reći ima li vaš domaćin ovo mjesto bez kršenja zakona. Napokon, da biste ga testirali, pristupili biste sustavima i datotekama za koje nemate dozvolu pristupa. Imajući to u vidu, možda bi bilo razumno razgovarati s vašim web domaćinom i raspitati se kako izoliraju svoje korisnike jedni od drugih.
Koristite li svoj vlastiti hosting server i ne upotrebljavate chroot za zaštitu svojih korisnika? Doduše, krotiranje okoline može biti teško. Srećom, postoji mnoštvo dodataka koji ovo olakšavaju. Pogledajte posebno mod_chroot.
Ubrizgavanje naredbe
Vratimo se Alice i Bobu. Dakle, znamo da Bobova web aplikacija ima nekoliko… Ahem… Sigurnosnih problema u njoj. Jedna od njih je ranjivost naredbenog ubrizgavanja, koja vam omogućuje pokretanje proizvoljne naredbe sustava Brzi vodič za početak rada s naredbenom linijom LinuxaMožete učiniti puno nevjerojatnih stvari s naredbama u Linuxu, a to je stvarno nije teško naučiti. Čitaj više .
Bobova web-lokacija omogućuje vam pokretanje Whois upita na drugoj web lokaciji koja se zatim prikazuje u pregledniku. Postoji standardni HTML okvir za unos koji prihvaća naziv domene, a zatim pokreće whois sistemsku naredbu. Ova se naredba izvršava pozivom PHP naredbe system ().
Što bi se dogodilo ako netko unese sljedeću vrijednost?
example.com && cd ../alice/ && rm index.html
Pa, hajde da ga razbijemo. Nešto od ovoga moglo bi vam biti poznato ako ste pročitali naše "Vodič za početak korištenja Linuxa" Početak rada s Linuxom i UbuntuomZainteresirani ste za prelazak na Linux... ali odakle ti započeti? Je li vaše računalo kompatibilno? Hoće li vaše omiljene aplikacije funkcionirati? Evo svega što trebate znati kako biste započeli s Linuxom. Čitaj više e-knjiga, koju smo prethodno objavili 2010. godine, ili je pogledala našu Linux naredbenog retka varalica.
Prvo će pokrenuti Whois upit na example.com. Tada bi promijenili trenutni radni imenik u korijenski dokument Alice. Tada će ukloniti datoteku pod nazivom "index.html" koja je indeksna stranica na njezinoj web stranici. To nije dobro. Ne gospodine.
Kao administratori sustava, kako ublažiti to? Pa, vrativši se prethodnom primjeru, svakog korisnika uvijek možemo staviti u njegovo izolirano, sanitizirano okruženje.
Tome možemo pristupiti i s jezične razine. Moguće je (iako, to može razbiti) globalno uklanjanje deklaracija funkcija s jezika. To znači, funkcionalnost je moguće ukloniti s jezika kojima korisnici imaju pristup.
Gledajući posebno PHP, možete ukloniti funkcionalnost pomoću Runkita - PHP službenog skupa alata za izmjenu funkcionalnosti jezika. Tamo je bogata dokumentacija. Pročitajte.
Možete i izmijeniti PHP-ovu konfiguracijsku datoteku (php.ini) tako da onemogućite funkcije koje hakeri često zloupotrebljavaju. Da biste to učinili, otvorite terminal na vašem poslužitelju i otvorite datoteku php.ini u uređivaču teksta. Uživam u korištenju VIM-a, ali prihvatljivo je i NANO.
Pronađite liniju koja započinje s onemogućenim funkcijama i dodajte definicije funkcija koje želite zabraniti. U ovom slučaju to bi bio exec, shell_exec i sustav, iako je vrijedno napomenuti da postoje i druge ugrađene funkcije koje hakeri mogu iskoristiti.
invalid_functions = exec, shell_exec, sustav
Napadi na temelju jezika i tumača
Dakle, pogledajmo PHP. Ovo je jezik koji pokreće zapanjujući broj web stranica. Također dolazi s nizom idiosinkrazija i čudnih ponašanja. Kao ovo.
PHP se obično koristi u kombinaciji s web poslužiteljem Apache. Uglavnom je nemoguće učitati više verzija jezika s ovom konfiguracijom.
Zašto je to problem? Pa, zamislimo, Bobova web-aplikacija izvorno je izrađena 2002. godine. To je već odavno Vratilo se kad je Michelle Branch još uvijek bila na vrhu ljestvice, Michael Jordan je još igrao za Washington Wizards i PHP je bio puno drugačiji jezik.
Ali Bobova web stranica još uvijek radi! Koristi čitav niz prekinutih i zastarjelih funkcija PHP-a, ali djeluje! Korištenje moderne verzije PHP-a učinkovito bi razbilo Bobovu web stranicu, i zašto bi Bob prepisivao svoju web stranicu kako bi se zadovoljio ćudima svog web domaćina?
To bi vam moglo dati ideju o dilemi s kojom su neki web domaćini suočeni. Moraju uravnotežiti održavanje arhitektonski zdravog i sigurnog servisa, a to je u skladu s osiguravanjem zadovoljstva kupaca koji plaćaju.
Kao rezultat toga, nije neuobičajeno da manji, neovisni domaćini koriste starije verzije tumača PHP (ili bilo koji drugi jezik).
Nije rijetkost vidjeti da manji, neovisni domaćini koriste starije verzije PHP-a, potencijalno izlažući korisnike sigurnosnim rizicima.
Zašto je to loše? Pa, prvo, to bi izložilo korisnike brojnim sigurnosnim rizicima. Poput većine glavnih softverskih paketa, PHP se stalno ažurira kako bi se riješio mnoštvo sigurnosnih ranjivosti koje se stalno otkrivaju (i otkrivaju).
Nadalje, to znači da korisnici ne mogu koristiti najnovije (i najveće) jezične funkcije. To također znači da ostaju funkcije koje su zastarjele s razlogom. U slučaju PHP programski jezik Naučite graditi s PHP-om: Crash CoursePHP je jezik koji Facebook i Wikipedija koriste za posluživanje milijardi zahtjeva dnevno; de facto jezik koji se koristio za podučavanje web programiranju ljudi. To je prekrasno jednostavno, ali sjajno snažno. Čitaj više , to uključuje smiješno (i nedavno zastarele) mysql_ funkcije koje se koriste za interakciju s MySQL relacijskim sustavom baza podataka i dl () koji korisnicima omogućuje uvoz vlastitog jezika proširenja.
Kao korisnik, trebali biste moći vidjeti koja verzija tumača radi na vašoj usluzi. Ako je zastario ili sadrži nekoliko sigurnosnih ranjivosti, obratite se svom domaćinu.
Što je s sysadminima? Ovdje imate nekoliko opcija. Prvo (i najperspektivnije) je koristiti Docker za svakog svog korisnika. Docker vam omogućuje istodobno pokretanje više izoliranih okruženja, slično kao što radi i virtualni stroj, iako ne morate pokrenuti neki drugi operativni sustav. Kao rezultat toga, ovo je brzo. Stvarno, stvarno brzo.
Na običnom engleskom? Možete pokrenuti najnoviji i najveći rubni tumač za većinu svojih korisnika, dok su korisnici koji koriste stare aplikacije koje koriste drevne, zastarjele tumače za to, a da pri tome ne ugrožavaju druge korisnici.
Ovo također ima prednost što je jezični agnostik. PHP, Python, Ruby. Što god. Sve je to isto.
Nemojte imati noćne more.
Ovaj je post bio namijenjen da uradi nekoliko stvari. Prvo, trebalo je upozoriti na broj sigurnosnih pitanja s kojima se web hosting tvrtke moraju suočiti kako bi osigurale sigurnost svojih kupaca i njihovih podataka.
Također se željelo pokazati kako web lokacije hostovane na istom poslužitelju mogu utjecati jedna na drugu. Želite li ubaciti udubljenje u ovome? Počnite se pridržavati dobrih, sigurnih standarda kodiranja. Konkretno, počnite sanirati unose i na prednjem i na stražnjem kraju.
Dobar početak je s novom funkcionalnošću provjere valjanosti obrasca HTML5. O tome smo već razgovarali u našem HTML5 vodiču. Kolektivno, web mjesta možemo učiniti sigurnijima boljim i savjesnijim programerima.
Kao i uvijek, čuo sam vaše misli. Spusti mi komentar ispod.
Fotografski kredit: Svi trebaju hakera (Alexandre Dulaunoy), Naljepnica na taksi prozoru (Cory Doctorow), Soba poslužitelja (Torkild Retvedt), Linux knjige i časopisi (library_mistress), PHP slon (Markus Tacker)
Matthew Hughes je programer i pisac softvera iz Liverpoola u Engleskoj. Rijetko se nađe bez šalice jake crne kave u ruci i apsolutno obožava svoj Macbook Pro i svoj fotoaparat. Njegov blog možete pročitati na http://www.matthewhughes.co.uk i slijedite ga na twitteru na @matthewhughes.