Jak zabezpečit Drupal

Drupal je v základu kvalitní systém tvořený i s ohledem na bezpečnost. Má ale pár nedostatků a to platí i pro jeho doplňkové moduly. Pokud chcete Drupal využívat v takovém prostředí, kde je nutné důrazněji dbát na bezpečnost, je třeba k němu přistupovat odlišně. Jak Drupal udělat opravdu bezpečný odhaluje následující text.

Zabezpečení lze řešit jak na straně systému, tak na straně uživatelů. Pro oboje existují podrobné postupy a nástroje.

ServerSide – zabezpečení na straně serveru

Ze všeho nejdůležitější je server samotný. Pokud nepovolaná osoba získá kontrolu nad vaším serverem, máte problém. Když útočník získá přístup k souborům Drupalu (především k settings.php), získá i přístupové údaje k databázi. A v databázi je kompletní obsah webu. Toto je nejčernější scénář a příliš mnoho optimizmu nenabízí. Na druhou stranu, pokud máte databázový server zvláště a útočník se dostane pouze na něj, nemusí to znamenat, že se následně dostane i na souborový server a do Drupalu. Jenže aby se tak nestalo, je potřeba to útočníkovi ztížit.

Až Drupal 7 totiž šifruje hesla uživatelů uložených v databázi. Do verze 6 hesla nejsou v databázi šifrována, pouze hashována MD5 algoritmem. A to je nedostatečné a umožňuje to útočníkovi snadný zisk hesel z databáze. Problém řeší modul Secure Password Hashes (phpass), který hesla důkladně šifruje.

Zbytek dat ale zůstává v databázi poměrně snadno přístupný. Nabízí se otázka, zda by nebylo vhodné data šifrovat podobně, jako hesla. V některých případech určitě ano. Do Drupalu lze sice snadno přidat API pro šifrování, ale trochu zde chybí uživatelsky přívětivější (neprogramátorské) řešení. Za zvážení stojí snad jen modul Private Number. Tento modul umožňuje využívat textová pole, která jsou ukládána šifrovaně a pomocí Drupalu k nim má přístup jen jejich zadavatel (případně administrátor). Modul je primárně určen na šifrování rodných čísel, čísel bankovních účtů a podobně citlivých informací. Lze jej ale modifikovat i pro rozsáhlejší textový vstup.

Ze strany Drupalu jsme tedy znesnadnili přístup k datům případnému vetřelci na serveru. Určitě je ale vhodné dbát i na cestu na server z webu. Některé soubory by rozhodně neměly být přístupné světu skrze webový server. To si částečně hlídá samotný Drupal. Dále je to ale hlavně věc nastavení webového serveru a jeho přístupu k uživatelským oprávněním a rolím. Když bude webserver špatně nastaven, se striktním nastavením přístupu k souborům nepochodíte. Základní bezpečnostní nastavení včetně přístupu k souborům za vás otestuje modul Security Review.

TransportSide – zabezpečení datové komunikace

Opomenout nesmíme ani ztrátu bezpečí po cestě, tedy tehdy, když data putují od a k uživateli. Pro uživatele můžeme udělat hned několik věcí. Především mu umožnit využití šifrovaného spojení se serverem (HTTPS). K tomu je vhodné mít na serveru důvěryhodný SSL certifikát. Aby celá komunikace neběžela šifrovaně a nezatěžovala tak server, je vhodné si nainstalovat moduly Secure Pages a Secure Pages Prevent Hijack, které zajistí šifrování jen u citlivých stránek.

 

UserSide – bič na uživatele

Dohlédnout také musíme na „ základní hygienické“ návyky uživatelů v oblasti hesel. Vnucovat jim příliš složitá hesla (Password Strength a nebo Password Policy) není nejlepší, protože potom si je jen někam zapíší a tak zpřístupní nepovolaným očím. Zato je vhodné zapnout ověřování nového uživatelského účtu mailem a po prvním přihlášení vygenerovaným heslem donutit uživatele nastavit si vlastní nové heslo (Force Password Change).

Cílený útok na přihlašovací údaje lze výrazně ztížit pomocí pravidel pro neúspěšná přihlášení (Login Security). Drupal 6 ve výchozím stavu nevyžaduje při změně hesla zadání původního hesla. Tuto nepříjemnou bezpečnostní chybu řeší modul Password change confirm.

Když už jsme u útoku na drupalovský web, není od věci si také zabezpečit cron.php. Tento skript lze ve výchozím stavu volat kýmkoli a odkudkoli. To může zahltit server (cron může vykonávat poměrně náročné úkoly).

Níže najdete seznam zajímavých bezpečnostních modulů pro Drupal. Další zajímavé tipy a postupu můžete sdělit ostatním v komentářích…

Tags: