Warning: Table './d1394_drupal/cache' is marked as crashed and last (automatic?) repair failed query: SELECT data, created, headers, expire, serialized FROM cache WHERE cid = 'variables' in /data/web/virtuals/1394/virtual/www/includes/database.mysql.inc on line 136

Warning: Table './d1394_drupal/cache' is marked as crashed and last (automatic?) repair failed query: UPDATE cache SET data = 'a:996:{s:13:\"theme_default\";s:5:\"fever\";s:13:\"filter_html_1\";s:1:\"1\";s:18:\"node_options_forum\";a:1:{i:0;s:6:\"status\";}s:18:\"drupal_private_key\";s:64:\"5fe6eae150af4e56112c001190001c50f30fff335724864ea3d95df181c7224f\";s:10:\"menu_masks\";a:30:{i:0;i:127;i:1;i:125;i:2;i:63;i:3;i:62;i:4;i:61;i:5;i:60;i:6;i:59;i:7;i:58;i:8;i:57;i:9;i:56;i:10;i:31;i:11;i:30;i:12;i:29;i:13;i:28;i:14;i:25;i:15;i:24;i:16;i:22;i:17;i:21;i:18;i:15;i:19;i:14;i:20;i:13;i:21;i:12;i:22;i:11;i:23;i:7;i:24;i:6;i:25;i:5;i:26;i:4;i:27;i:3;i:28;i:2;i:29;i:1;}s:12:\"install_task\";s:4:\"done\";s:13:\"menu_expanded\";a:1:{i:0;s:9:\"menu-user\";}s:9:\"site_name\";s:5:\"FLOPS\";s:19:\"file_directory_temp\";s:23:\"sites/default/files/tmp\&quo in /data/web/virtuals/1394/virtual/www/includes/database.mysql.inc on line 136

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/1394/virtual/www/includes/database.mysql.inc:136) in /data/web/virtuals/1394/virtual/www/includes/bootstrap.inc on line 726

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/1394/virtual/www/includes/database.mysql.inc:136) in /data/web/virtuals/1394/virtual/www/includes/bootstrap.inc on line 727

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/1394/virtual/www/includes/database.mysql.inc:136) in /data/web/virtuals/1394/virtual/www/includes/bootstrap.inc on line 728

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/1394/virtual/www/includes/database.mysql.inc:136) in /data/web/virtuals/1394/virtual/www/includes/bootstrap.inc on line 729
Security by Module: Bezpečnost CMS systému Drupal | FLOPS

Security by Module: Bezpečnost CMS systému Drupal

Obory článku
internet, bezpečnost, CMS

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ěji zabezpečí.

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. Pro využíti SSL certifikátu musíte mít nastaven server (hosting) a většinou je třeba mít i vlastní IPv4 adresu, která stojí okolo 600 korun ročně. Také certifikát není většinou zdarma, i když i takový se dá pořídit (www.startssl.com).

Těm, kterým se nechce zaobírat SSL certifikáty potom může posloužit alespoň modul Safer Login, který šifruje heslo při jeho zadávání v prohlížeči, takže jej není tak snadné odchytit na straně uživatele např. keyloggerem. Ale je to jen slabší příbuzný Secure Pages. 

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 drobnou bezpečnostní dírku ř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). V nastavení webového serveru (např. vhost Apache) nebo pomocí htaccess určete možnost spouštět tento skript pouze lokálně. 

Váš hlas: Žádné Průměr: 10 (2 hlasy)