Jak zabezpečit WordPress web s online kurzy

U WordPress webů s online kurzy je bezpečnost webu o něco zásadnější otázkou než u statické webové prezentace. Na webu s online kurzy se registrují zákazníci, probíhají tam nákupy, někteří přidávají komentáře či fotky. Všichni zákazníci mají svá uživatelská data uložená v databázi webu. Při kompromitaci webu může dojít k úniku těchto dat a jejich zneužití. Pojďme se tedy podívat, jak zabezpečit WordPress web.

Bezpečnost WordPressu

Bezpečnost zajišťovaná prostřednictvím pluginů, tak jak je to ve WordPressu zvykem, je obecně málo silná a prolomitelná. Ať už se jedná o bezpečnostní pluginy typu all-in-one jako WordFence nebo iThemes Security nebo pluginy pro 2FA či limitování počtu pokusů o přihlášení. Všechny tyto pluginy jsou také svázané s WordPress databází, tedy pokud se útočník zmocní databáze, může si v podstatě dělat, co chce.

Dalším problémem jsou často používaná slabá hesla. Algoritmus, který WP používá pro zabezpečení hesel v databázi, je zastaralý a dávno překonaný. Hesla administrátorů webu by neměla mít povolenou možnost resetování pomocí e-mailu, což se v praxi neděje.

Taky se neradi přihlašujete do svého webu zadáním jména a hesla a jste rádi, když zůstanete přihlášeni několik dní? A víte, že je to dost nebezpečné? Zvláště pokud jste administrátoři. Vaše přihlášení je uloženo pomocí tzv. session cookie ve vašem prohlížeči. Pokud útočník tuto cookie ukradne, dostane přístup do vašeho webu, jako byste to byli vy. Může ji ukradnout např. pomocí malware ve vašem počítači, proto nepodceňujte použití antivirového programu a naplánování pravidelných kontrol počítače.

Co můžete udělat vy jako administrátorky/administrátoři webu s online kurzy

Aktualizace a zálohy

Nejdůležitější věc, kterou můžete jako uživatel WordPressu udělat, je pravidelně aktualizovat všechny pluginy a udržovat si neustále funkční zálohu. Pravidelně rozhodně neznamená 4x ročně. Záleží samozřejmě na tom, jak často máte aktualizace na webu dostupné, obecně však lze říci, že pro web s online kurzy je vhodný interval jednou týdně. Ne všechny pluginy je však dobré aktualizovat okamžitě. Jedná se o větší pluginy zajišťující základní funkce, jako např. LMS plugin nebo e-shop. Tam je třeba zvážit, jak „velká“ je to aktualizace a pokud je to jedna z těch hlavních „větších“, která přidává nové funkce nebo zásadně mění ty stávající, tak je lepší počkat pár dní, kdy jsou většinou vydány opravné aktualizace k této hlavní.

Zálohu byste si měli dělat každý den a v ideálním případě občas vyzkoušet její obnovu např. na subdoménu, abyste měli jistotu, že jsou zálohy funkční. Zálohy většinou zajišťuje i hosting, otázka je, jak často. Vždy je nejlepší mít alespoň nějakou zálohu vlastní. Je třeba však nezapomínat na to, že obnova zálohy je závislá na pluginu, který byl pro její vytvoření použit., proto i zálohy prováděné hostingem jsou velmi důležité.

V rámci svých technických služeb pro weby s online kurzy zálohuji data každý den na tři místa, jednak na server, na kterém web běží, a pak do dvou geograficky oddělených lokalit.

Bezpečnostní plugin

Pokud váš webhosting nezajišťuje dostatečnou bezpečnost pro váš web, je možné si nainstalovat bezpečnostní plugin. Vždy je však lepší eliminovat rizika před tím, než se dostanou k webu, nejlépe na úrovni DNS nebo serveru, na kterém web běží. Bezpečnostní plugin totiž sám o sobě představuje bezpečnostní riziko a ne zřídka se stává, že web je napaden právě prostřednictvím chyby v bezpečnostním pluginu. Kromě toho také zpomaluje váš web.

Dobrou volbou je nainstalovat plugin, který omezí počet pokusů o přihlášení, např. Limit Login Attempts. Dále pak plugin, který nahradí funkce firewallu, např. BBQ Firewall nebo NinjaFirewall. Zvažte také malware skener, ideálně takový, který běží mimo váš web a má tedy mnimální dopad na rychlost webu, např. Malcare. Malcare je služba třetí strany, která nabízí ve free verzi malware skener, firewal a upozorňování na zranitelnosti. Pokud se v nějakém pluginu, který máte nainstalovaný, vyskytne zranitelnost – bezpečnostní riziko – Malcare vám zašle upozornění e-mailem, abyste plugin mohli co nejdříve aktualizovat (jakmile je vydána aktualizace s bezpečnostní záplatou). Monitoring zranitelností nabízí také služba Patchstack, která je v tomto zlatým standardem. Ve free verzi se jedná pouze o monitoring, v placené verzi má Patchstack i tzv. virtual patching, neboli virtuální záplatování zranitelností. Toto záplatování je účinnou prevencí před výskytem malware.

Myslete na to, že některé funkce se mohou překrývat, proto je vždy třeba si dobře přečíst, co vše daný plugin zajišťuje.

Limit na pokusy o přihlášení a firewall je dobré doplnit ještě změnou adresy přihlašovací stránky do WordPressu. Přihlašovací stránka, která je na adrese https://vasedomena.cz/wp-login.php (za vasedomena.cz dosaďte svou doménu) by měla směrovat na chybovou stránku 404 a nová přihlašovací stránka být na jiné adrese, kterou si sami zvolíte. Toho můžete dosáhnout např. pluginem WPS Hide Login.

Přihlašování do svého webu a případně i další formuláře na webu je vhodné zabezpečit také nějakou formou Captcha nebo alespoň honeypotu. Doporučuji použít službu Cloudflare Turnstile, která je zdarma a neporušuje soukromí návštěvníků webu jako některé jiné Captcha služby. Turnstile získáte založením účtu u Cloudflare, nastavíte si úroveň ochrany (např. Non-interactive – nevyžaduje žádnou interakci ze strany uživatele, uživatel uvidí pouze widget Cloudflare s aktivní ochranou, nebo Invisible – uživatel neuvidí nic) a zkopírujete si údaje pro propojení s webem. Poté nainstalujte plugin Simple Cloudflare Turnstile a postupujte podle jeho instrukcí.

Dvoufaktorová autentizace – 2FA

Pro administrátorské účty na WordPressu je vhodné zapnout dvoufázové ověření. Znamená to, že přihlašovací formulář bude vyžadovat nejdříve uživatelské jméno a heslo a poté bezpečnostní kód generovaný mobilní aplikací – to je nejčastější. Existují i další možnosti, např. kód zaslaný e-mailem, což je o něco méně bezpečná verze. Nejbezpečnější formou je 2FA pomocí hardwarového tokenu – USB klíče, to zatím bohužel není moc rozšířená technika.

Pro 2FA je možné použít např. tento plugin.

Silná hesla

Vyžadujte použití silných hesel pro veškeré účty na vašem webu. Takové heslo má alespoň 12 znaků a musí být použita velká i malá písmena, číslice a ideálně i speciální znaky.

Použití silných hesel u běžných uživatelů webu je závislé na tom, jaký systém používáte pro registraci těchto uživatelů a jaký způsobem si mohou změnit heslo, proto nelze doporučit nějaký plugin.

Odhlašování z webu

Pravidelně se z webu odhlašujte, jakmile ukončíte práci. Nestačí zavřít prohlížeč. Je potřeba se opravdu odhlásit. A jak to vyřešit u běžných uživatelů – zákazníků přihlášených do vašeho webu? Je možné použít např. plugin Inactive Logout a nastavit dobu nečinnosti, po jejímž uplynutí bude uživatel z webu automaticky odhlášen.

Pro web s online kurzy se také hodí možnost zabránit přihlášení k jednomu uživatelskému účtu z více zařízení. Jinými slovy zabránit sdílení účtů mezi více uživateli. Opět na to existuje plugin – např. Loggedin – Limit Active Logins.

Cloudflare

Tato služba se stala mezinárodním standardem pro bezpečnost webů. Je známa především jako CDN (Content Delivery Network). Cloudflare je síť serverů po celém světě, která umožňuje zabezpečení webu na úrovni DNS a rychlé zobrazování webu po celém světě. Umí toho mnohem víc, ale my se zaměříme na tyto dvě funkce. (Článek není kompletní, bude doplněn…)

Co chtít po svém poskytovateli webhostingu a/nebo požádat o pomoc odborníka

Některé z následujících doporučení pro zabezpečení webu lze aplikovat přidáním pravidel do souboru .htaccess, pokud je tento způsob podporován webovým serverem. Úpravu .htaccess souboru raději přenechte odborníkům.

  • oddělování webů na serveru – většina sdílených hostingů weby na jednom serveru bezpečnostně neodděluje, proto když je napaden jeden web, hrozí to samé i všem dalším na stejném serveru,
  • SSL certifikát (HTTPS),
  • nastavení bezpečných práv pro složky a soubory,
  • deaktivace provádění PHP v některých adresářích,
  • zakázání procházení adresářů,
  • zakázání výčtu uživatelů (user enumeration),
  • deaktivace XML-RPC (pokud není používán),
  • přesunutí wp-config souboru mimo hlavní složku s WordPressem,
  • chrana proti DDOS útokům,
  • GeoIP restrikce – blokace přístupu z některých zemí,
  • nastavení bezpečnostních hlaviček pro web,
  • nastavení Content Security Policy.

Tvoříte na svém webu online kurzy?

Přečtěte si článek o tom Jak vytvořit online kurz na WordPressu. V článku rozebírám jednotlivé LMS a prodejní systémy použitelné pro WordPress.