Reklama
Zdieľaný hosting. Je to lacná voľba, nie? A pre obrovské množstvo obyvateľov je všetko, čo kedy budú potrebovať na hosťovanie svojich webových stránok alebo webových aplikácií. A keď sa darí dobre, zdieľaný hosting je škálovateľný, rýchly a bezpečný.
Čo sa však stane, keď sa to nedarí?
V tom prípade sa začnú plížiť nebezpečné bezpečnostné problémy. V takom prípade hrozí riziko poškodenia vašich stránok alebo úniku súkromných údajov, ktoré vlastníte. Ale nebojte sa. Drvivá väčšina webových hostiteľov má dôstojné bezpečnostné opatrenia. Je treba si dať pozor len hostia, s ktorými sa môžete stretnúť v noci, za výhodných podmienok.
Odporúčame Zdieľaný hosting InMotion Hosting s úložiskom SSD.
Budeme skúmať bezpečnostné problémy súvisiace so zdieľaným hostingom. Najprv si však povedzme, čo robí zdieľanú hostingovú platformu bezpečnou.
Čo robí zabezpečeného webhostingu
Pokiaľ ide o zdieľaný hosting, je potrebné vziať do úvahy niekoľko bezpečnostných hľadísk.
- Každý užívateľ na serveri by mal byť izolovaný od ostatných používateľov a nemal by mať prístup k súborom iných používateľov ani ich upravovať.
- Chyba zabezpečenia v logike webových stránok hostených na serveri by nemala mať vplyv na ostatných používateľov.
- Server je pravidelne opravovaný, aktualizovaný a monitorovaný, aby riešil problémy architektonickej bezpečnosti.
- Každý užívateľ by mal mať svoj vlastný izolovaný prístup k databáze a nemal by mať dovolené vykonávať zmeny v uložených záznamoch alebo oprávneniach tabuliek iných používateľov.
Väčšina webových hostiteľov opäť spĺňa tieto požiadavky na svoje zdieľané ponuky. Ak sa však pozeráte na hosťovanie viacerých webových stránok na jednom serveri, alebo ste zvedaví, ako sa vaša hostiteľská spoločnosť hromadí, alebo dokonca uvažujete o spustení svojej vlastnej hostingovej spoločnosti a dychtivo pracujete na tom, ako zabezpečiť svojich používateľov ďalej.
Najprv však vylúčenie zodpovednosti
Než sa dostaneme do mäsa pri pohľade na spoločné útoky na úrovni zdieľaného hostingu, chcem len uviesť, že tento príspevok nebude (a nemal by sa čítať) vyčerpávajúci zoznam potenciálnej bezpečnosti záležitosti.
Jedným slovom je bezpečnosť. Existuje veľa spôsobov, ako môžete kompromitovať web. Pre zdieľaný hosting je to dvojnásobné. Zakrytie v jednom článku nebolo nikdy na kartách.
Ak ste o svojej bezpečnosti paranoidní, získajte VPS alebo vyhradený server. Sú to prostredia, v ktorých máte (z väčšej časti) absolútnu kontrolu nad tým, čo sa deje. Ak si nie ste istí rôznymi druhmi webhostingu, pozrite sa na tento príspevok Rôzne formy webhostingu vysvetlili [vysvetlili technológie] Čítaj viac od môjho kolegu Jamesa Bruceho.
Chcel by som tiež zdôrazniť, že tento príspevok sa nemá interpretovať ako útok na zdieľaný hosting. Ide skôr o čisto akademický pohľad na otázky zabezpečenia týkajúce sa tejto kategórie webhostingu.
Adresár Traversal
Začnime útokmi s priechodmi adresármi (často sa nazývajú „priechodové cesty“). Tento druh útoku vám umožňuje prístup k súborom a adresárom, ktoré sú uložené mimo web root.
V jednoduchej angličtine? Predstavme si, že Alice a Bob používajú ten istý server na hosťovanie svojich webových stránok. Alenky súbory sú uložené v adresári / var / www / alice, zatiaľ čo Bobove dokumenty nájdete v adresári / var / www / bob. Ďalej, predstierajme, že na serveri je iný priečinok (/ usr / crappyhosting / myfolder) ktorý obsahuje nezašifrovaný súbor obyčajného textu (nazývame ho pwd.txt) obsahujúci systémové užívateľské mená a hesiel.
Zatiaľ so mnou? Dobre. Teraz si predstavme, že Bobova webová stránka zobrazuje súbory PDF, ktoré sa generujú lokálne, a na miestny súbor sa odkazuje v adrese URL. Niečo ako:
http://example.com/file?=report.pdf
Čo by sa stalo, keby som nahradil súbor „report.pdf“ niektorými parametrami systému UNIX, ktoré menia adresár?
http://example.com/file?=../alice/
Ak je server nakonfigurovaný nesprávne, umožní vám to vidieť koreň dokumentu Alice. Zaujímavé, ale oveľa viac nás zaujíma tento šťavnatý súbor cestovných pasov. Heslá Accio!
http://example.com/file?=../../../usr/crappyhosting/myfolder/pwd.txt
Je to skutočne také ľahké. Ako to však zvládneme? To je ľahké.
Už ste niekedy počuli o málo známom systéme Linux s názvom chroot? Pravdepodobne ste už uhádli, čo to robí. Nastavuje koreňový adresár Linux / UNIX na ľubovoľný priečinok, takže užívatelia ho nemôžu ukončiť. Účinne zastaví útoky adresárov v ich stopách.
Je ťažké povedať, či váš hostiteľ má toto miesto bez porušenia zákona. Nakoniec, na otestovanie by ste mali prístup k systémom a súborom, ku ktorým nemáte povolenie na prístup. S ohľadom na to by asi bolo rozumné hovoriť so svojím hostiteľom a opýtať sa, ako izolujú svojich používateľov od seba.
Prevádzkujete svoj vlastný zdieľaný hostingový server a nepoužívate chroot na ochranu svojich používateľov? Je pravda, že chrootovanie prostredia môže byť ťažké. Našťastie existuje množstvo doplnkov, ktoré to uľahčujú. Pozrite sa najmä na mod_chroot.
Príkazové vstrekovanie
Vráťme sa k Alice a Bobovi. Takže vieme, že Bobova webová aplikácia má niekoľko... Ahem... bezpečnostných problémov. Jedným z nich je zraniteľnosť príkazu injekcie, ktorá vám umožní spustiť ľubovoľné systémové príkazy Stručný sprievodca, ako začať s príkazovým riadkom systému LinuxV systéme Linux môžete robiť veľa úžasných vecí a naozaj sa to nedá naučiť. Čítaj viac .
Bobova webová stránka vám umožňuje spustiť dopyt whois na inej webovej stránke, ktorá sa potom zobrazí v prehliadači. K dispozícii je štandardné vstupné pole HTML, ktoré akceptuje názov domény, a potom spustí príkaz whois system. Tento príkaz sa vykoná volaním príkazu PHP systému ().
Čo by sa stalo, keby niekto zadal nasledujúcu hodnotu?
example.com && cd ../alice/ && rm index.html
Poďme si to rozobrať. Niektoré z nich by vás mohli poznať, ak ste si prečítali naše „Príručka Začíname so systémom Linux“ Začíname s operačným systémom Linux a UbuntuMáte záujem o prechod na Linux... ale kde začínate? Je váš počítač kompatibilný? Fungujú vaše obľúbené aplikácie? Tu je všetko, čo potrebujete vedieť, aby ste mohli začať s Linuxom. Čítaj viac e-kniha, ktorú sme predtým publikovali v roku 2010, alebo sa pozerali nad našou Linux Cheat Sheet príkazového riadku.
Najprv spustí dopyt whois na stránke example.com. Potom by sa zmenil aktuálny pracovný adresár na koreň dokumentu Alice. Potom by odstránil súbor s názvom „index.html“, ktorý je indexovou stránkou jej webových stránok. To nie je dobré. Nie Pane.
Ako teda ako správcovia systému, ako to zmierňovať? Vráťme sa k predchádzajúcemu príkladu a vždy môžeme dať každého používateľa do svojho izolovaného, dezinfikovaného, chrootovaného prostredia.
Môžeme k tomu pristupovať aj z jazykovej úrovne. Je možné (hoci to môže zlomiť veci) globálne odstrániť funkčné vyhlásenia z jazykov. To znamená, že z jazykov, ku ktorým majú používatelia prístup, je možné odstrániť funkčnosť.
Najmä pri PHP sa dá odstrániť funkčnosť pomocou Runkit - oficiálnej sady nástrojov PHP na úpravu funkčnosti jazyka. Existuje veľa dokumentácie. Prečítajte si to.
Môžete tiež upraviť konfiguračný súbor PHP (php.ini) tak, aby zakázal funkcie, ktoré hackeri často zneužívajú. Ak to chcete urobiť, otvorte terminál na serveri a otvorte súbor php.ini v textovom editore. Baví ma používanie VIM, ale NANO je tiež prijateľné.
Nájdite riadok, ktorý začína na disable_functions a pridajte definície funkcií, ktoré chcete zakázať. V tomto prípade by to bolo spustenie, shell_exec a systém, hoci stojí za zmienku, že existujú ďalšie vstavané funkcie, ktoré hackeri využívajú.
disable_functions = exec, shell_exec, system
Útoky na základe jazyka a tlmočníka
Pozrime sa teda na PHP. Toto je jazyk, ktorý poháňa prekvapivý počet webových stránok. Prichádza tiež s množstvom zvláštnych správania a podivných správaní. Páči sa ti to.
PHP sa zvyčajne používa v spojení s webovým serverom Apache. Z väčšej časti je nemožné načítať viac verzií jazyka s touto konfiguráciou.
Prečo je to problém? Predstavme si, že Bobova webová aplikácia bola pôvodne postavená v roku 2002. To je už dávno. To je späť, keď sa Michelle Branch stále umiestňovala na rebríčkoch, Michael Jordan stále hral za Washington Wizards a PHP bol oveľa odlišný jazyk.
Ale Bobova webová stránka stále funguje! Využíva veľa zrušených a zastaraných funkcií PHP, ale funguje to! Použitie modernej verzie PHP by účinne narušilo Bobovu webovú stránku a prečo by mal Bob prepísať svoju webovú stránku tak, aby vyhovovala rozmarom svojho webového hostiteľa?
To by vám malo poskytnúť predstavu o dileme, ktorej čelia niektorí hostitelia webu. Musia vyvážiť udržiavanie architektonicky spoľahlivých a bezpečných služieb a zároveň to udržiavať v harmónii so zabezpečením spokojnosti platiacich zákazníkov.
Výsledkom je, že nie je nezvyčajné vidieť, že menší nezávislí hostitelia používajú staršie verzie tlmočníka PHP (alebo v akomkoľvek jazyku).
Nie je neobvyklé, že menší nezávislí hostitelia používajú staršie verzie PHP a potenciálne vystavujú používateľov bezpečnostným rizikám.
Prečo je to zlá vec? Po prvé, vystavilo by to používateľom niekoľko bezpečnostných rizík. Rovnako ako väčšina hlavných softvérových balíkov, aj PHP sa neustále aktualizuje, aby riešilo množstvo bezpečnostných zraniteľností, ktoré sa neustále objavujú (a zverejňujú).
Okrem toho to znamená, že používatelia nemôžu používať najnovšie (a najlepšie) jazykové funkcie. Znamená to tiež, že funkcie, ktoré boli z nejakého dôvodu zamietnuté, zostanú zachované. V prípade Programovací jazyk PHP Naučte sa stavať s PHP: Crash CoursePHP je jazyk, ktorý Facebook a Wikipedia používajú na doručovanie miliárd žiadostí denne; de facto jazyk používaný na výučbu programovania ľudí na webe. Je to krásne jednoduché, ale brilantne silné. Čítaj viac , zahŕňa to smiešne hrozné (a nedávno zastarané) funkcie mysql_, ktoré sa používajú na interakciu pomocou systému relačných databáz MySQL a dl (), ktorý umožňuje používateľom importovať ich vlastný jazyk rozšírenie.
Ako používateľ by ste mali vedieť, ktorá verzia tlmočníka je vo vašej službe spustená. Ak je neaktuálny alebo obsahuje niekoľko slabých miest zabezpečenia, kontaktujte svojho hostiteľa.
A čo sysadmini? Máte tu niekoľko možností. Prvým (a najsľubnejším) je použitie doku pre každého z vašich používateľov. Docker vám umožňuje spustiť viac izolovaných prostredí súčasne, podobne ako virtuálny počítač, aj keď nie je potrebné spustiť iný operačný systém. V dôsledku toho je to rýchle. Naozaj, naozaj rýchlo.
V jednoduchej angličtine? Môžete spustiť najnovší a najväčší tlmočník krvácania pre väčšinu používateľov, zatiaľ čo pre zákazníkov ktorí používajú staré aplikácie, ktoré používajú starodávnych, zastaraných tlmočníkov, aby tak urobili bez ohrozenia ostatných užívateľov.
Výhodou je aj to, že je jazykovo agnostický. PHP, Python, Ruby. Hocičo. Je to všetko rovnaké.
Nemajte nočné mory.
Tento príspevok bol určený na vykonanie niekoľkých vecí. Po prvé, bolo to upozorniť na množstvo bezpečnostných problémov, ktorým musia webhostingové spoločnosti čeliť, aby sa zaistila bezpečnosť ich zákazníkov a ich údajov.
Účelom bolo tiež ukázať, ako môžu weby hostené na rovnakom serveri navzájom ovplyvňovať. Chcete do toho vložiť priehlbinu? Začnite sa riadiť dobrými a bezpečnými štandardmi kódovania. Najmä začnite s dezinfekciou vstupov na front-end aj back-end.
Dobrý začiatok je s novou funkciou overovania formátu HTML5. O tom sme už hovorili v našom sprievodcovi HTML5. Spoločne môžeme webové stránky zvýšiť pomocou lepších a svedomitejších programátorov.
Ako vždy, som pripravený počuť vaše myšlienky. Dajte mi komentár nižšie.
Fotografický kredit: Každý potrebuje hackera (Alexandre Dulaunoy), Nálepka na okno Taxi (Cory Doctorow), Serverová miestnosť (Torkild Retvedt), Knihy a časopisy Linux (library_mistress), Slon PHP (Markus Tacker)
Matthew Hughes je vývojár a spisovateľ softvéru z anglického Liverpoolu. Málokedy ho nájde bez šálky silnej čiernej kávy v ruke a úplne zbožňuje jeho Macbook Pro a fotoaparát. Jeho blog si môžete prečítať na stránke http://www.matthewhughes.co.uk a sledujte ho na Twitteri na adrese @matthewhughes.