Oglas
Skupno gostovanje. Je poceni možnost, kajne? In za velik del prebivalstva je to vse, kar bodo kdaj morali, da gostijo svoje spletno mesto ali spletno aplikacijo. In ko je dobro opravljeno, je skupno gostovanje prilagodljivo, hitro in varno.
Toda kaj se zgodi, ko ni vse dobro?
No, takrat se začnejo pojavljati nevarne varnostne težave. Takrat obstaja nevarnost, da bo vaše spletno mesto onemogočeno ali če bodo zasebni podatki, ki jih imate, puščeni. Ampak ne bodi beden. Velika večina spletnih gostiteljev ima dostojne varnostne ukrepe. Pri tem morate biti previdni le za gostitelje, ki jih imajo leteče ponoči in v kletnih prostorih.
Priporočamo InMotion Hosting je skupno gostovanje s shrambo SSD.
Preučili bomo varnostna vprašanja v zvezi s skupnim gostovanjem. Najprej pa se pogovorimo o tem, kaj naredi skupno platformo gostovanja varno.
Kaj je varen spletni gostitelj
Obstaja nekaj varnostnih pomislekov glede samostojnosti, ki jih je treba upoštevati pri skupnem gostovanju.
- Vsak uporabnik na strežniku mora biti izoliran od drugih uporabnikov in ne sme imeti dostopa do datotek drugih uporabnikov ali jih spreminjati.
- Varnostna ranljivost v logiki spletnega mesta, ki gostuje na strežniku, ne bi smela vplivati na druge uporabnike.
- Strežnik se redno popravlja, posodablja in spremlja za reševanje varnostnih vprašanj arhitekture.
- Vsak uporabnik mora imeti lasten osamljen dostop do baze podatkov in ne sme imeti dovoljenj za spreminjanje shranjenih zapisov ali dovoljenj tabel drugih uporabnikov.
Ponovno večina spletnih gostiteljev izpolnjuje te zahteve za svoje skupne ponudbe. Če pa želite videti gostovanje več spletnih mest na enem strežniku ali želite vedeti, kako se vaše gostovanje nahaja, ali celo razmišljate o ustanovitvi lastnega gostovalnega podjetja in želite pripraviti, kako zaščititi svoje uporabnike, preberite naprej.
Najprej pa odpoved
Preden se lotimo pogleda na skupne napade, ki so izravnani na skupnem gostovanju, želim samo to navedite, da ta objava ne bo (in je ne bi smeli brati kot) izčrpen seznam možnih varnosti vprašanja.
Varnost je, z eno besedo, velika. Obstaja veliko načinov, kako lahko ogrožate spletno mesto. Za skupno gostovanje gre to dvojno. Pokrivanje le-teh v enem samem članku ni bilo nikoli na karticah.
Če ste paranoični glede svoje varnosti, si priskrbite VPS ali namenski strežnik. To so okolja, v katerih imate (večinoma) absolutni nadzor nad dogajanjem. Če niste prepričani o različnih vrstah spletnega gostovanja, Oglejte si to objavo Razložene različne oblike gostovanja spletnih strani [Pojasnjena tehnologija] Preberi več od mojega kolega Jamesa Brucea.
Poudariti moram tudi, da tega objave ne gre razumeti kot napad na skupno gostovanje. Namesto tega gre za čisto akademski pogled na varnostna vprašanja v zvezi s to kategorijo spletnega gostovanja.
Prehod v imenik
Začnimo z napadi na imenik (pogosto znan tudi kot "prehodi poti"). Ta vrsta napada omogoča dostop do datotek in imenikov, ki so shranjeni zunaj spletnega korena.
V navadni angleščini? Pa si predstavljajmo, da Alice in Bob uporabljata isti strežnik za gostovanje svojih spletnih mest. Datoteke Alice so shranjene v / var / www / alice, medtem ko je Bobove dokumente mogoče najti v / var / www / bob. Poleg tega se pretvarjajmo, da je na strežniku še ena mapa (/ usr / crappyhosting / myfolder) ki vsebuje nedifrirano datoteko v preprostem besedilu (poimenovali jo bomo pwd.txt), ki vsebuje sistemska uporabniška imena in gesla.
Z mano do zdaj? Dobro. Zdaj pa si predstavljajmo, da Bobovo spletno mesto poslužuje datoteke PDF, ki so ustvarjene lokalno, lokalna datoteka pa je navedena v URL-ju. Nekaj kot:
http://example.com/file?=report.pdf
Kaj bi se zgodilo, če bi "report.pdf" zamenjal z nekaterimi parametri UNIX, ki spreminjajo imenik?
http://example.com/file?=../alice/
Če je strežnik pravilno konfiguriran, bi vam to omogočilo ogled korenine Aliceinega dokumenta. Zanimivo, vendar nas veliko bolj zanima ta sočna datoteka potnih listov. Accio gesla!
http://example.com/file?=../../../usr/crappyhosting/myfolder/pwd.txt
Res je tako enostavno kot to. Toda kako se lotimo tega? To je lahko.
Ste že kdaj slišali za malo znani pripomoček Linux, imenovan chroot? Verjetno ste že uganili, kaj počne. Linux / UNIX koren nastavi v poljubno mapo, zaradi česar uporabniki ne morejo zapustiti. Učinkovito ustavi napredovanje imenikov v njihovih skladbah.
Težko je ugotoviti, ali ima gostitelj to na svojem mestu, ne da bi kršil zakon. Konec koncev bi lahko preskusili sisteme in datoteke, do katerih nimate dovoljenja za dostop. Glede na to bi bilo morda smiselno govoriti s svojim spletnim gostiteljem in se pozanimati o tem, kako izolirajo svoje uporabnike drug od drugega.
Ali upravljate svoj lastni strežnik gostovanja in ne uporabljate chroota za zaščito svojih uporabnikov? Res je, da je hrotanje v vašem okolju težko. K sreči obstaja veliko vtičnikov, ki to olajšajo. Poglejte predvsem mod_chroot.
Ukazovanje ukazov
Vrnimo se k Alice in Bobu. Torej vemo, da ima spletna aplikacija Boba nekaj... Ahem... Varnostne težave. Ena od teh je ranljivost ukazov ukaza, ki omogoča zagon poljubni sistemski ukazi Kratek vodnik za začetek z ukazno vrstico LinuxZ ukazi v Linuxu lahko naredite veliko neverjetnih stvari in tega se res ni težko naučiti. Preberi več .
Bobovo spletno mesto vam omogoča izvajanje Whois poizvedbe na drugem spletnem mestu, ki je nato prikazano v brskalniku. Obstaja standardno polje za vnos HTML, ki sprejme ime domene in nato zažene sistemski ukaz whois. Ta ukaz se izvede s klicem ukaza sistema PHP ().
Kaj bi se zgodilo, če bi nekdo vnesel naslednjo vrednost?
example.com && cd ../alice/ && rm index.html
No, razčlenimo ga. Nekaj tega bi vam bilo morda znano, če ste prebrali naše "Vodnik za začetek uporabe Linuxa" Uvod v Linux in UbuntuZanima vas prehod na Linux... ampak kje začnete? Ali je vaš računalnik združljiv? Ali bodo vaše najljubše aplikacije delovale? Tu je vse, kar morate vedeti, da začnete uporabljati Linux. Preberi več e-knjigo, ki smo jo predhodno izdali leta 2010 ali smo se ozrli po naši Linija ukazne vrstice Linux.
Najprej bo sprožil poizvedbo Whois na example.com. Nato bi trenutni delovni imenik spremenil v korenino dokumenta Alice. Nato bi na njenem spletnem mestu odstranila datoteko z imenom „index.html“, ki je kazala. To ni dobro. Ne, gospod.
Kot sistemski skrbniki kako torej ublažimo to? No, ko se vrnemo na prejšnji primer, lahko vsakega uporabnika vedno postavimo v njegovo izolirano, sanirano, kritirano okolje.
K temu lahko pristopimo tudi z jezikovne ravni. Možno je (čeprav to lahko pokvari stvari) globalno odstranjevanje deklaracij funkcij iz jezikov. To pomeni, da je mogoče odstraniti funkcionalnost iz jezikov, do katerih imajo uporabniki dostop.
Zlasti pogledate na PHP, lahko funkcijo odstranite z Runkit - PHP-jevim uradnim orodjem za spreminjanje funkcionalnosti jezika. Tam je bogata dokumentacija. Preberite si ga.
Prav tako lahko spremenite konfiguracijsko datoteko PHP-a (php.ini), da onemogočite funkcije, ki jih hekerji pogosto zlorabljajo. Če želite to narediti, na strežniku odprite terminal in datoteko php.ini odprite v urejevalniku besedil. Uživam v uporabi VIM, sprejemljiv pa je tudi NANO.
Poiščite vrstico, ki se začne z onemogočenimi funkcijami, in dodajte definicije funkcij, ki jih želite prepovedati. V tem primeru bi to bili exec, shell_exec in sistem, čeprav je treba opozoriti, da obstajajo tudi druge vgrajene funkcije, ki jih hekerji izkoriščajo.
onesposobiti_funkcije = exec, shell_exec, sistem
Jezikovni in tolmačni napadi
Torej, poglejmo PHP. To je jezik, ki poganja presenetljivo število spletnih mest. Prihaja tudi s številnimi idiosinkrazijami in čudnim vedenjem. Všečkaj to.
PHP se običajno uporablja v povezavi s spletnim strežnikom Apache. S to konfiguracijo večinoma ni mogoče naložiti več različic jezika.
Zakaj je to problem? Pa si predstavljajmo, da je Bobova spletna aplikacija prvotno izdelana leta 2002. To je že zdavnaj. Ko se je Michelle Branch še uvrstila na lestvico, je Michael Jordan še igral za Washington Wizards in PHP je bil precej drugačen jezik.
Toda Bobovo spletno mesto še vedno deluje! Uporablja cel kup ukinjenih in zastarelih funkcij PHP, vendar deluje! Uporaba sodobne različice PHP bi učinkovito prekinila Bobovo spletno mesto, in zakaj naj bi Bob prepisal svoje spletno mesto, da bi poskrbel za muhe svojega spletnega gostitelja?
To bi vam moralo predstavljati dilemo, s katero se srečujejo nekateri spletni gostitelji. Morajo uravnotežiti ohranjanje arhitekturno neoporečnih in varnih storitev, hkrati pa to v skladu z zagotavljanjem zadovoljnih strank, ki plačujejo.
Zato ni redko, da manjši neodvisni gostitelji uporabljajo starejše različice tolmača PHP (ali katerega koli jezika za to zadevo).
Ni redko videti, da manjši neodvisni gostitelji uporabljajo starejše različice PHP-ja, ki uporabnike potencialno izpostavljajo varnostnim tveganjem.
Zakaj je to slabo? No, najprej bi uporabnike izpostavil številnim varnostnim tveganjem. Tako kot večina glavnih programskih paketov se tudi PHP nenehno posodablja, da bi odpravil množico varnostnih ranljivosti, ki se nenehno odkrivajo (in razkrivajo).
Poleg tega pomeni, da uporabniki ne morejo uporabljati najnovejših (in največjih) jezikovnih funkcij. Pomeni tudi, da ostanejo funkcije, ki so bile z razlogom opuščene. V primeru Programski jezik PHP Naučite se graditi s PHP: Crash CoursePHP je jezik, ki ga Facebook in Wikipedia uporabljata za vsakdanje milijarde zahtev; de facto jezik, ki se uporablja za poučevanje ljudi spletnega programiranja. Je čudovito preprost, a briljantno močan. Preberi več , to vključuje smešno grozne (in nedavno zastarele) funkcije mysql_, ki se uporabljajo za interakcijo z relacijskim sistemom baz podatkov MySQL in dl (), ki uporabnikom omogoča uvoz lastnega jezika razširitve.
Kot uporabnik bi si moral ogledati, katera različica tolmača deluje v vaši storitvi. Če je zastarel ali vsebuje številne varnostne ranljivosti, se obrnite na svojega gostitelja.
Kaj pa sysadmini? Tu imate nekaj možnosti. Prva (in najbolj obetavna) je uporaba Dockerja za vsakega od vaših uporabnikov. Docker vam omogoča, da hkrati zaženete več osamljenih okolij, podobno kot virtualni stroj, čeprav ne potrebujete zagon drugega operacijskega sistema. Kot rezultat, je to hitro. Res, zelo hitro.
V navadni angleščini? Za večino uporabnikov lahko zaženete najnovejši in največji tolmač za krvavitve, medtem ko stranke ki uporabljajo stare aplikacije, ki za to uporabljajo starodavne, zastarele tolmače, ne da bi pri tem ogrožali druge uporabnikov.
To ima tudi prednost, ker je jezikovni agnostik. PHP, Python, Ruby. Karkoli. Vse je enako.
Naj nimajo nočnih mor.
Ta objava je bila namenjena nekaj stvarem. Prvič, opozoriti je bilo treba na številna varnostna vprašanja, s katerimi se morajo srečati podjetja za gostovanje, da bi zagotovili varnost svojih strank in njihovih podatkov.
Namenjen je bil tudi prikazu, kako lahko spletna mesta, gosti na istem strežniku, vplivajo drug na drugega. Želite vstaviti vdolbino v tem? Začnite upoštevati dobre, varne standarde kodiranja. Zlasti začnite sanirati svoje vložke tako na sprednjem kot na zadnjem delu.
Dober začetek je z novo funkcionalnostjo potrditve obrazca HTML5. O tem smo že govorili v našem vodniku HTML5. Kolektivno lahko spletna mesta naredimo bolj varne s tem, da smo boljši in vestni programerji.
Kot vedno, sem zaslišal vaše misli. Spusti mi komentar spodaj.
Fotograf: Vsi potrebujejo hekerja (Alexandre Dulaunoy), Nalepka na taksi oknu (Cory Doctorow), Strežniška soba (Torkild Retvedt), Linux knjige in revije (library_mistress), PHP slon (Markus Tacker)
Matthew Hughes je razvijalec programske opreme in pisatelj iz Liverpoola v Angliji. Redko ga najdemo brez skodelice močne črne kave v roki in absolutno obožuje svoj Macbook Pro in svoj fotoaparat. Njegov blog lahko preberete na http://www.matthewhughes.co.uk in mu sledite na twitterju na @matthewhughes.