Pravidla pro domovské stránky

Z Nagano.cz - OK0NAG
Verze z 3. 12. 2009, 10:13, kterou vytvořil Ok1zia (diskuse | příspěvky) (Založena nová stránka: Nedávný hack serveru Nagano.cz potvrdil, že je potřeba věnovat větší péči zabezpečení uživatelských prezentací. Do teď mohl v podstatě kdokoli cokoli a byl…)

(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání

Nedávný hack serveru Nagano.cz potvrdil, že je potřeba věnovat větší péči zabezpečení uživatelských prezentací. Do teď mohl v podstatě kdokoli cokoli a byla jen otázka času, kdy toho nějaký útočník zneužije. Nejprve uvedu závazná pravidla pro autory stránek, pak se pokusím sepsat zásady zabezpečení tak, aby byly pochopitelné i pro ty, co neprogramují.

Pravidla

  1. V PHP skriptech striktně kontrolovat vstupy od uživatelů
  2. Není-li to pro běh skriptů bezpodmínečně nutné, nenastavovat právo zápisu pro ostatní uživatele
  3. Potřebujete-li zapisovat, je nejvhodnější, aby adresář s právy pro zápis ležel mimo oblast dostupnou WWW serveru, tj. nebyl podadresářem adresáře public_html.
  4. Druhá možnost je vyčlenit jeden adresář s právy zápisu a v něm souborem .htaccess zakázat provádění PHP skriptů:
php_flag engine off
  1. Redakční systém je nutné udržovat aktualizovaný na nejnovější stabilní verzi.

Vysvětlení

Statické stránky

Že používáte statické stránky, poznáte tak, že veškeré soubory, které na Nagano nahráváte, mají příponu .HTML, .HTM, .TXT případně obrázky .JPG, .PNG, GIF. Tyto soubory nepředstavují pro server prakticky žádné riziko, nemusíte řešit nic dalšího.

Dynamické stránky v PHP pouze pro čtení

Využíváte-li programovací jazyk PHP, je na místě opatrnost. PHP skript se spouští s právy WWW serveru(to je program běžící na serveru, který poskytuje webový obsah uživatelům). Skript může využívat veškeré funkce opreračního systému, což může být nebezpečné. Samozřejmě předpokládáme, že naši uživatelé nechtějí hackovat Nagano. Ale člověk snadno udělá chybu.

Nejdůležitější zásada zní: "Nikdy nevěř datům od uživatele". Uživatel je potenciální útočník. Možná to zní tvrdě, ale je to tak a situace se bude pouze zhoršovat. Je NUTNÉ všechna data od uživatele (parametry skriptů, obsah formulářů) pečlivě kontrolovat, útočník se bude snažit vstupní údaje podvrhnout, aby tak docílil chování skriptu ve svůj prospěch.

Například skript je volaný: index.php?stranka=anketa . A uvnitř skriptu je:

include $_GET["stranka"]; 

Co to znamená? Programátor chtel vložit do výstupu skriptu soubor anketa. Ale neošetřil vstupy a zavoláním index.php?stranka=/etc/passwd si může útočník přečíst seznam uživatelů serveru.

Dynamické stránky v PHP, které zapisují na disk

Je to jedna z nejnebezpečnějších věcí. Programátor například dovolí nahrát na disk serveru obrázek. Útočník místo obrázku podstrčí útočný PHP skript. Místo obrázku pak spustí tento skript. Tím má kontrolu nad celým Naganem. Zatím jen s právy uživatele, pod kterým běží WWW server. I tak už může zneužívat napadený počítač například pro rozesílání spamů.

Tato práva jsou relativně omezená, ale je to první krok k úspěšnému hacku. Druhý krok se nazývá local root exploit. Česky jde o program, který využívá nějaké chyby v operačním systému, aby získal práva správce systému. Díry se postupně objevují v každém i nejbezpečnějším operačním systémům, proto je nutné zabránit útočníkovi, aby to zkoušel spouštěním vlastního kódu.

Uspěje-li útočník, pak se stává správcem počítače a může si s ním doslova dělat, co chce.