reklama
Sdílený hosting. Je to levná varianta, že? A pro obrovské množství obyvatel je to vše, co budou potřebovat k hostování svých webových stránek nebo webových aplikací. A když se to povede dobře, sdílený hosting je škálovatelný, rychlý a bezpečný.
Ale co se stane, když se to nedělá dobře?
V tu chvíli začnou pronikat nebezpečné bezpečnostní problémy. V takovém případě hrozí, že bude váš web poškozen nebo dojde k úniku soukromých údajů, které držíte. Ale nedělej si starosti. Drtivá většina webových hostitelů má důstojná bezpečnostní opatření. Je to jen hostitelé létající v noci, výhodní suterén, se kterým musíte být opatrní.
Doporučujeme Sdílené hostování InMotion Hosting s úložištěm SSD.
Budeme zkoumat bezpečnostní problémy spojené se sdíleným hostingem. Nejprve si ale promluvíme o tom, co dělá sdílenou hostingovou platformu bezpečnou.
Co dělá zabezpečeného webového hostitele
S ohledem na sdílený hosting by mělo být provedeno několik bezpečnostních hledisek.
- Každý uživatel na serveru by měl být izolován od ostatních uživatelů a neměl by mít přístup k souborům jiných uživatelů ani je upravovat.
- Chyba zabezpečení v logice webů hostovaných na serveru by neměla mít vliv na ostatní uživatele.
- Server je pravidelně opravován, aktualizován a monitorován za účelem řešení architektonických bezpečnostních problémů.
- Každý uživatel by měl mít svůj vlastní izolovaný přístup k databázi a neměl by mít dovoleno provádět změny uložených záznamů nebo oprávnění tabulek jiných uživatelů.
Většina webových hostitelů opět splňuje tyto požadavky na své sdílené nabídky. Pokud se však díváte na hostování více webových stránek na jednom serveru nebo jste zvědaví, jak se vaše hostitelská společnost hromadí, nebo dokonce přemýšlíte o spuštění své vlastní hostingové společnosti a dychtivě přijde na to, jak zabezpečit své uživatele, pak si prosím přečtěte na.
Ale nejprve, Zřeknutí se odpovědnosti
Než se dostaneme do masa pohledu na společné útoky zaměřené na sdílený hosting, chci jen uveďte, že tento příspěvek nebude (a neměl by být chápán jako) vyčerpávající seznam potenciální bezpečnosti problémy.
Bezpečnost je jedním slovem velká. Existuje mnoho způsobů, jak můžete kompromitovat web. V případě sdíleného hostování se to zdvojnásobí. Zakrývat je do jediného článku nebylo nikdy na kartách.
Pokud jste o své bezpečnosti paranoidní, získejte VPS nebo dedikovaný server. Toto jsou prostředí, ve kterých máte (z větší části) absolutní kontrolu nad tím, co se děje. Pokud si nejste jisti různými druhy webhostingu, podívejte se na tento příspěvek Různé formy hostování webových stránek vysvětleny [vysvětleny technologie] Přečtěte si více od mého kolegy Jamese Bruce.
Chtěl bych také zdůraznit, že tento příspěvek nelze chápat jako útok na sdílený hosting. Spíše jde o čistě akademický pohled na bezpečnostní otázky související s touto kategorií webhostingů.
Adresář Traversal
Začněme útoky na procházení adresáře (často se nazývají ‘cesta na procházení). Tento druh útoku umožňuje přístup k souborům a adresářům, které jsou uloženy mimo webový kořenový adresář.
Jednoduše anglicky? Představme si, že Alice a Bob používají stejný server k hostování svých webových stránek. Alice je uložena v adresáři / var / www / alice, zatímco Bobovy dokumenty najdete v adresáři / var / www / bob. Předpokládejme také, že na serveru je další složka (/ usr / crappyhosting / myfolder) který obsahuje nešifrovaný prostý text (nazýváme jej pwd.txt) obsahující systémová uživatelská jména a hesla.
Zatím se mnou? Dobrý. Nyní si představme, že Bobův web zobrazuje soubory PDF, které jsou generovány místně, a na místní soubor se odkazuje v adrese URL. Něco jako:
http://example.com/file?=report.pdf
Co by se stalo, kdybych nahradil soubor „report.pdf“ některými parametry systému UNIX, které mění adresář?
http://example.com/file?=../alice/
Pokud je server nakonfigurován nesprávně, umožní vám to vidět kořen dokumentu Alice. Zajímavé, ale mnohem více se zajímáme o tento šťavnatý soubor pasů. Hesla Accio!
http://example.com/file?=../../../usr/crappyhosting/myfolder/pwd.txt
Je to opravdu tak snadné. Ale jak se s tím vypořádáme? To je jednoduché.
Slyšeli jste někdy o nějakém známém linuxovém nástroji nazvaném chroot? Pravděpodobně jste už uhodli, co to dělá. Nastaví kořenový adresář Linux / UNIX na libovolnou složku, což uživatelům znemožní jeho ukončení. Účinně zastaví útoky adresářů v jejich stopách.
Je těžké říci, zda to váš hostitel má, aniž by porušil zákon. Koneckonců, abyste to otestovali, měli byste přistupovat k systémům a souborům, ke kterým nemáte oprávnění. S ohledem na to by asi bylo rozumné mluvit se svým webovým hostitelem a zeptat se, jak izolují své uživatele od sebe.
Provozujete svůj vlastní sdílený hostingový server a nepoužíváte chroot k ochraně svých uživatelů? Je pravda, že chrootování prostředí může být obtížné. Naštěstí existuje spousta pluginů, které to usnadňují. Podívejte se zejména na mod_chroot.
Příkazové vstřikování
Vraťme se k Alice a Bobovi. Takže víme, že Bobova webová aplikace má několik… Ahem… bezpečnostních problémů. Jedním z nich je zranitelnost příkazového injekce, která vám umožní spustit libovolné systémové příkazy Stručný průvodce, jak začít s příkazovým řádkem LinuxV Linuxu můžete dělat spoustu úžasných věcí a naučit se to opravdu není těžké. Přečtěte si více .
Bobův web vám umožňuje spustit dotaz whois na jiném webu, který se poté zobrazí v prohlížeči. K dispozici je standardní vstupní pole HTML, které přijímá doménové jméno, a poté spustí příkaz whois system. Tento příkaz se provede voláním příkazu PHP systému ().
Co by se stalo, kdyby někdo zadal následující hodnotu?
example.com && cd ../alice/ && rm index.html
Pojďme to rozebrat. Něco z toho vám může být známo, pokud jste si přečetli náš „Začínáme s průvodcem Linuxem“ Začínáme s Linuxem a UbuntuMáte zájem o přechod na Linux... ale kde začít? Je váš počítač kompatibilní? Budou vaše oblíbené aplikace fungovat? Zde je vše, co potřebujete vědět, abyste mohli začít s Linuxem. Přečtěte si více e-kniha, kterou jsme dříve publikovali v roce 2010, nebo jsme se podívali na naši Cheat Sheet příkazového řádku systému Linux.
Nejprve spustí dotaz whois na webu example.com. Poté by změnil aktuální pracovní adresář na kořenový adresář Alice. Poté by odstranila soubor s názvem „index.html“, který je indexovou stránkou jejího webu. To není dobré. Ne, pane.
Jak se tedy jako správci systému proti tomu zmírníme? Vrátíme-li se k předchozímu příkladu, můžeme vždy dát každého uživatele do svého izolovaného, dezinfikovaného, chrootovaného prostředí.
Můžeme k tomu přistupovat také z jazykové úrovně. Je možné (i když to může zlomit věci) globálně odstranit prohlášení o funkcích z jazyků. To znamená, že je možné odebrat funkce z jazyků, ke kterým mají uživatelé přístup.
Zejména při pohledu na PHP můžete odstranit funkčnost pomocí Runkit - oficiální sady nástrojů PHP pro úpravu funkčnosti jazyka. Je tam spousta dokumentace. Přečtěte si to.
Můžete také upravit konfigurační soubor PHP (php.ini) tak, aby deaktivoval funkce, které hackeři často zneužívají. Chcete-li to provést, otevřete terminál na serveru a otevřete soubor php.ini v textovém editoru. Baví mě používat VIM, ale NANO je také přijatelné.
Najděte řádek začínající deaktivačními funkcemi a přidejte definice funkcí, které chcete zakázat. V tomto případě by to bylo exec, shell_exec a system, ačkoli stojí za zmínku, že existují další vestavěné funkce, které mohou hackeři využít.
disable_functions = exec, shell_exec, system
Útoky na základě jazyka a tlumočníka
Pojďme se tedy podívat na PHP. To je jazyk, který pohání překvapující počet webů. Také přichází s řadou zvláštností a podivným chováním. Takhle.
PHP se obvykle používá ve spojení s webovým serverem Apache. Z větší části je nemožné načíst více verzí jazyka s touto konfigurací.
Proč je to problém? Představme si, že Bobova webová aplikace byla původně vytvořena v roce 2002. To je už dávno. To je zpět, když Michelle Branch stále trvala na žebříčku, Michael Jordan stále hrál za Washington Wizards a PHP bylo mnohem odlišný jazyk.
Ale Bobův web stále funguje! Využívá celou řadu ukončených a zastaralých funkcí PHP, ale funguje to! Používání moderní verze PHP by účinně rozbilo Bobův web, a proč by měl Bob přepsat svůj web tak, aby vyhovoval rozmarům svého hostitele?
To by vám mělo poskytnout představu o dilematu, kterému čelí weboví hostitelé. Musí se vyrovnat s udržováním architektonicky spolehlivé a bezpečné služby a zároveň ji udržovat v souladu se zajištěním spokojenosti platících zákazníků.
V důsledku toho není neobvyklé vidět, že menší nezávislí hostitelé používají starší verze tlumočníka PHP (nebo v jakémkoli jazyce).
Není neobvyklé, že menší nezávislí hostitelé používají starší verze PHP a potenciálně vystavují uživatele bezpečnostním rizikům.
Proč je to špatná věc? Za prvé, vystavilo by to uživatelům řadu bezpečnostních rizik. Stejně jako většina hlavních softwarových balíčků je PHP neustále aktualizován, aby reagoval na množství bezpečnostních chyb, které jsou neustále objevovány (a zveřejňovány).
Navíc to znamená, že uživatelé nemohou používat nejnovější (a největší) jazykové funkce. To také znamená, že funkce, které byly z nějakého důvodu zamítnuty, zůstanou. V případě Programovací jazyk PHP Naučte se stavět s PHP: Crash CoursePHP je jazyk, který Facebook a Wikipedia používají k obsazení miliard žádostí denně; de-facto jazyk používaný pro výuku programování lidí na webu. Je to krásně jednoduché, ale brilantně silné. Přečtěte si více , to zahrnuje směšně hrozné (a nedávno zastaralé) funkce mysql_, které se používají k interakci se systémem MySQL Relational Database System a dl (), který umožňuje uživatelům importovat jejich vlastní jazyk rozšíření.
Jako uživatel byste měli mít možnost vidět, jakou verzi tlumočníka ve vaší službě běží. Pokud je zastaralý nebo obsahuje řadu bezpečnostních chyb, kontaktujte svého hostitele.
A co sysadminové? Máte zde několik možností. Prvním (a nejslibnějším) je použití doku pro každého z vašich uživatelů. Docker vám umožňuje spouštět více izolovaných prostředí současně, podobně jako virtuální stroj, i když nemusíte spouštět jiný operační systém. V důsledku toho je to rychlé. Opravdu, opravdu rychle.
Jednoduše anglicky? Můžete spustit nejnovější a největší tlumič krvácejících hran pro většinu uživatelů, zatímco pro zákazníky kteří k tomu používají staré aplikace využívající staré, zastaralé tlumočníky, aniž by to kompromitovaly ostatní uživatelé.
To má také tu výhodu, že je jazyková agnostika. PHP, Python, Ruby. To je jedno. Je to všechno stejné.
Nemějte noční můry.
Tento příspěvek měl za cíl udělat pár věcí. Za prvé, bylo to upozornit na řadu bezpečnostních problémů, kterým musí webhostingové společnosti čelit, aby zajistily bezpečnost svých zákazníků a jejich dat.
Účelem bylo také ukázat, jak se weby hostované na stejném serveru mohou vzájemně ovlivňovat. Chcete do toho vložit důlek? Začněte se řídit dobrými a bezpečnými standardy kódování. Zejména začněte dezinfikovat své vstupy na front-endu i back-endu.
Dobrý začátek je s novou funkcí ověřování formátu HTML5. O tom jsme již mluvili v našem průvodci HTML5. Společně můžeme webové stránky bezpečnější tím, že budeme lepší a svědomitější programátoři.
Jako vždy jsem připraven slyšet vaše myšlenky. Zašlete mi komentář níže.
Fotografický kredit: Každý potřebuje hackera (Alexandre Dulaunoy), Nálepka na Taxi Window (Cory Doctorow), Serverová místnost (Torkild Retvedt), Knihy a časopisy Linux (library_mistress), PHP Elephant (Markus Tacker)
Matthew Hughes je vývojář a spisovatel softwaru z anglického Liverpoolu. Málokdy je nalezen bez šálku silné černé kávy v ruce a absolutně zbožňuje svůj Macbook Pro a fotoaparát. Jeho blog si můžete přečíst na adrese http://www.matthewhughes.co.uk a následujte ho na twitteru na @ matthewhughes.