Základní zabezpečení redakčního systému Wordpress

Jelikož je redakční systém Wordpress poslední dobou velice oblíbený pro tvorbu webového obsahu, stává se díky tomu, jako i jiné, oblíbené systémy, velmi častým terčem útoků hackerů. Hackeři obvykle využívají bezpečnostních nedostatků systému k tomu, aby do něj vnikli a data na webu či FTP upravili tak, aby bylo z webu např. možné rozesílat SPAM, či na web umisťují podvodné a klamavé obsahy, které mají za cíl z uživatelů vylákat citlivá data. Wordpress je tedy nutné, jako každý hojně používaný systém zabezpečit tak, aby k takovýmto útokům nedocházelo.

Z naší strany již byly podniknuty kroky k tomu, abychom Wordpress našich zákazníků ochránili, nicméně i přesto je důležité provést dodatečnou ochranou přímo v systému.

Zabezpečení je možné provést mnoha způsoby. Tento článek Vás provede těmi nejzákladnějšími způsoby, jak už fungující, či nově nainstalovaný Wordpress alespoň základně zabezpečit.

Obsah článku:
    1. Automatická aktualizace systému Wordpress a automatické aktualizace jeho pluginů
    2. Změna jména uživatele admin a nastavení nového a silného hesla
    3. Instalace pluginu Wordfence (plugin)
    4. Dvoufaktorové (dvoufázové) ověření
    5. Geo-IP blokace (plugin)
    6. Zabezpečení kontaktních formulářů pomocí Google reCAPTCHA
    7. Zabezpečení složky /wp-content/uploads/

Automatická aktualizace systému Wordpress a automatické aktualizace jeho pluginů

Pro systém Wordpress, jeho grafické šablony a nainstalované pluginy jsou v pravidelných intervalech vydávány aktualizace. Tyto aktualizace je možné instalovat ručně, přes administraci Wordpressu, nebo je možné tyto akce zautomatizovat. V takovém případě pak aktualizace provádí Wordpress sám a to ihned, jakmile je taková aktualizace dostupná.

Automatická aktualizace systému se nastavuje přes tlačítko „Aktualizace“ v levém menu administrace a následovném kliknutí na odkaz „Povolit automatické aktualizace pro všechny nové verze Wordpressu“.


Automatické aktualizace pluginů se nastavují přes tlačítko „Pluginy“ v levém menu, kde je možné po vylistování všech, aktuálně nainstalovaných pluginů kliknout na odkaz „Povolení automatických aktualizací

U zapnutých automatických aktualizací pluginů je nutné brát v potaz, že nová verze pluginu nemusí vždy korektně pracovat s aktuální verzí Wordpressu, nebo nainstalované šablony (v určitých případech může znefunkčnit i samotný web, pokud je na pluginu závislý). Pokud se tedy obáváte, že by k této situaci mohlo dojít, je možné tento krok přeskočit. Důrazně však doporučujeme v tomto případě nové aktualizace kontrolovat a dle zvážení poté instalovat.  


Také doporučujeme všechny nepoužívané a deaktivované pluginy smazat. Stávají se velmi snadným terčem k napadení, právě z důvodu jejich neaktuální verze.

Změna jména uživatele admin a nastavení nového a silného hesla

Drtivá většina uživatelů systému Wordpress se do administrace přihlašuje pomocí systémového uživatele admin (spolu s vlastním, nastaveným heslem). Toho jsou si hackeři vědomi, a při testování Vašeho systému pomocí tzv. útoku hrubou silou jako první využívají právě tohoto uživatele. Je tedy dobré si jméno administrativního uživatele Wordpressu změnit. V levém menu tedy klikněte na tlačítko „Uživatelé“ a poté klikněte na tlačítko „Vytvořit uživatele“. Vyplňte potřebné údaje a přidejte nového uživatele v roli administrátora.


V následujícím kroku je nutné se odhlásit ze systému pod aktuálním uživatelem admin a přihlásit se jako nový uživatel honza. Po přihlášení je možné opět kliknout tlačítko uživatelů a původního uživatele admin smazat. Tím si zajistíte, že se do systému budete přihlašovat již pouze pod novým jménem, nikoliv pod uživatelem admin, který již v tuto chvíli nebude existovat.


Pokud je v systému uživatelů více, je dobré, aby každému z nich byla přidělená správná role, kterou má v systému vykonávat.


Instalace pluginu Wordfence

Mezi jeden z nejlepších doplňků Wordpressu pro jeho zabezpečení patří bezesporu plugin s názvem Wordfence. Tento plugin je v základní verzi zcela zdarma a poskytuje velmi dobrou ochranu celého systému. Umožňuje zasílání notifikací o vzniklých problémech na předem nastavený kontaktní e-mail, je možné přes něj nastavit dvoufaktorové ověřování, poskytuje firewall na obranu proti útokům a mnohé jiné.  Plugin nainstalujete tak, že se v levém menu přesunete na tlačítko „Pluginy“. Ve vzniklém podmenu si poté kliknete na tlačítko „Instalace pluginů“. Do vyhledávacího pole pro klíčová slova napište Wordfence a vyčkejte, než systém plugin vyhledá. V posledním kroku klikněte na tlačítko „Instalovat“ a jakmile instalace proběhne, můžete plugin aktivovat.


Jakmile se plugin aktivuje, budete vyzváni k zadání e-mailové adresy, na kterou budou dále chodit notifikace v případě, že plugin odhalí nějaký problém (viz níže v příkladu). Mezi takové notifikace patří např. přihlášení se k administrátorskému účtu, nutnost aktualizace pluginů nebo samotného systému (pokud není nastavena automaticky), nutnost aktualizace šablony vzhledu na novou verzi, statistiky útoků a blokací apod.


Příklad zaslané nofikace o všech akcích pluginu za poslední týden (jedná se pouze o část výpisu).


Dvoufaktorové (dvoufázové) ověření

Dalším krokem v zabezpečení Wordpressu je dvou faktorové ověření pro přihlášení se do administrace. To je možné nastavit již přes právě nainstalovaný plugin Wordfence. K samotné aktivaci tohoto ověření budete navíc potřebovat mobilní telefon, kam nainstalujete např. Google Authenticator (možno stáhnout zde). Je tedy potřeba externí generátor kódů pro dodatečné ověření.
Nyní k samotnému zapnutí tohoto ověřování. V levém menu po instalaci pluginu Wordfence přibylo i tlačítko pro jeho správu. Klikněte tedy na něj a v podmenu zvolte tlačítko „Login Security“. Nyní na mobilním telefonu zapněte aplikaci Google Authenticator, klikněte na tlačítko + a naskenujte QR kód, který Vám Wordfence vytvořil.


Aplikace Google Authenticator Vám vygeneruje šestimístný kód, který vložíte do volného políčka pod textem „Enter the code from your authenticator app below to verify and activate two-factor authentication for this account.“. Následně klikněte na aktivní tlačítko „Activate“.


Při následovném odhlášení a přihlášení se do systému, budete po zadání hesla požádání o opis kódu, který Vám vygeneruje aplikace Google Authenticator. Tím předejdete možnému problému, že hacker odhalí Vaše heslo. I když jej bude znát, do systému se nepřihlásí, pokud zároveň nebude znát i kód, který vygeneruje aplikace ve Vašem mobilním telefonu.


Geo-IP blokace

Pro další zvýšení bezpečnosti Vašeho webu je možné použít i blokaci na základě modulu pro kontrolu ip adres návštěvníka/útočníka. V systému Wordpress je možné pomocí pluginu kontrolovat, z jaké ip adresy či země návštěvník přichází, a tuto IP, či celou lokalitu aktivně blokovat. Pokud např. víte, že web bude určený výhradně návštěvníkům z České republiky, Slovenské republiky apod., je možné pro návštěvu webu povolit pouze tyto země, a ostatní rozsahy a lokality zablokovat. Útočník, který často přichází přes různé proxy servery, VPN sítě apod., se tak na Vaše stránky vůbec nedostane, protože bude zablokován hned při vstupu na ně.

K tomu účelu slouží např. plugin se jménem IP Location Block. Ten nainstalujete stejným způsobem, jako již výše uváděný plugin Wordfence (tedy přes tlačítko „Pluginy“ a následně přes „Instalace pluginů“)


Pro správné fungování tohoto pluginu je prvním krokem stažení databází IP adres. K tomu používá tento plugin hned několik veřejných databází. První stažení provedete přes záložku „Nastavení“ v levém menu, do kterého nyní přibyla i položka pro IP Location Block. Pokud na ní kliknete a dojedete až na konec nastavení pluginu, uvidíte položku „Local database settings“. Zde je pak tlačítko „Download now“. Přes toto tlačítko si plugin stáhne potřebná data, aby uměl určit, z jaké země uživatel přichází. Položku  „Auto updating (once a month)“ ponechte zaškrtnutou. Tím si zajistíte, že si databáze bude plugin každý měsíc sám aktualizovat.


Whitelist vlastní IP adresy a povolených zemí

Plugin pro Geo IP Block nastavuje povolené země pomocí tzv. whitelistu. Zde je nutné zadat dvě položky. Vlastní IP adresu, pro případ, že by systém z různého důvodu nemohl poznat zemi, pro kterou je registrovaná Vaše IP adresa a seznam zemí, které budou mít na web přístup.

Obě nastavení, tedy povolení vlastní IP adresy i určení zemí, ze kterých bude možné na web přistupovat se provádí hned v první části nastavení s popisem „Validation rules and behavior“. Zde je na první pohled viditelná Vaše IP adresa, ze které jste aktuálně připojení do Wordpressu a zároveň pomocí tlačítka „Scan Country Code“ si můžete otestovat, zda systém správně pozná Vaší zemi podle IP adresy.

Nyní k samotnému založení pravidla pro přístup na web. To má tři části. V první části se definuje, jak má systém s lokací naložit (zda ji povolit, nebo zablokovat). Můžete tedy zablokovat pouze konkrétní lokace, jako např. Čínu (CN), Rusko (RU) apod., nebo můžete zablokovat vše a dát pouze výjimky pro konkrétní země, ze kterých uživatel web uvidí. V našem případě jsme tedy zvolili pravidlo „Whitelist“, kde jsme tedy zablokovali přístup na web pro celý svět, ale do povolených zemí jsme přidali CZ,SK,DE,AT,HU,PL (jednotlivé kódy zemí se oddělují čárkou). Také jsme do pravidla pro přístup přidali vlastní IP adresu, kterou aktuálně používáme. Nyní tedy podle takovýchto pravidel bude web fungovat tak, že se zobrazí uživatelům z Česka, Slovenska, Německa, Rakouska, Maďarska a Polska  (a samozřejmě vždy z naší IP adresy). Pro všechny ostatní země bude web blokovaný. 


Takto nastavené pravidlo je dále nutné aplikovat. Níže v nastavení je možné pravidlo aplikovat buď na back-end (administraci), na front-end (uživatelská část webu), nebo na oboje.

Aplikace pravidla na back-end (administraci)


Aplikace pravidla na front-end (uživatelskou část)


Zde je na rozdíl od administrativní části možné nastavit více pravidel. Možnost „Validations targets“ určuje, zda se pravidlo aplikuje na celou uživatelskou část, nebo pouze na její, předem určené části, jako stránky, kategorie apod. V části „Matching rule“ se definuje pravidlo, podle kterého se uživatelská část bude blokovat. Zde je tedy dobré ponechat standardně nastavené „Follow Validation rules and behavior“.

V neposlední řadě je zde také stanovená výjimka na roboty vyhledávačů (označená zeleně). Zde je nutné upozornit, že v základu je stanovená výjimka pouze pro:

Google:HOST
bot:HOST
slurp:HOST
spider:HOST
archive:HOST
*:FEEDembed.ly:HOST
Twitterbot:US,Facebot:US

Ostatní roboty vyhledávačů jako může být např. Yahoo, Seznam, Bing apod. je nutné přidat ručně (např. pomocí IP adres robotů, které se odělují opět pouze čárkou). Seznam IP adres vyhledávače seznam.cz (pokud by nebyl nastaven CZ rozsah pro povolenou zemi), je možné najít zde. Roboti, kteří nebudou mít stanovenou výjimku budou pluginem blokováni. Toto je z hlediska umístění webu na vyhledávačích nutné brát v potaz.

Nastavení uložíte na konci stránky, pomocí tlačítka  „uložit změny“.


Zabezpečení kontaktních formulářů pomocí Google reCAPTCHA

Nedílnou součástí dnešních redakčních systémů jsou i kontaktní formuláře, přes které je možné kontaktovat majitele webu bez použití emailu. Díky tomu je možné pohodlně napsat zprávu, aniž by se člověk musel přihlašovat do svého emailu, či na webu hledat emailovou adresu majitele. Tyto formuláře se ale také dají zneužít k rozesílání spamu, kdy tyto akce namísto člověka provádí robot, který je schopen takto vygenerovat během krátké doby i tisíce zpráv. Aby k tomuto nedocházelo, je nutné kontaktní formulář ochránit proti zneužití. Nejvíce používanou a také velice účinnou ochranou může být řešení, které nabízí Google. Jejich ochranu, nazvanou reCAPTCHA, si v tomto návodu implementujeme do nejvíce používaného kontaktního formuláře pro Wordpress, konkrétně Contact Form 7 (ke stažení mimo administraci Wordpressu zde). U ostatních pluginů, používaných pro kontaktní formuláře bude integrace reCAPTCHA velice podobná.

Prvním krokem, který je nutný pro používání tohoto zabezpečení je nutná registrace na straně google.com. Tu můžete provést na této webové adrese, kde v horním panelu kliknete na tlačítko „v3 Admin Console“. Poté buď provedete novou registraci, nebo použijete již existují g-mailový účet, pokud jej máte vytvořený. Tímto se přesunete do konzole, kde je možné pro daný web reCAPTCHA systém aktivovat.

Jakmile se provede aktivace, Google vygeneruje dva klíče. Site Key a Secret Key. Tyto klíče je nutné zkopírovat do nastavení kontaktního formuláře. U Contact form 7 se toto nastavení provádí přes tlačítko „Integrace“.




Jakmile se oba klíče, viz obrázky nahoře vloží a změna se uloží, je kontaktní formulář ochráněný proti zneužití.

Zabezpečení složky wp-content/uploads

V adresářové struktuře Wordpressu se nacházejí složky, ve kterých je dobré zakázat vykonávání PHP skriptů. Mezi takové složky zcela určitě patří složka /wp-content/uploads/. Tato složka slouží pouze k nahrávání souborů přes administraci Wordpressu (např. obrázků). Blokaci této složky pro vykonávání PHP kódu je možné provést pomocí souboru .htaccess, do kterého se vloží direktiva:

<FilesMatch .*\.php.*>
  Order Deny,Allow
  Deny from all
</FilesMatch>

Tato direktiva zakáže vykonávání PHP v adresáři.

Soubor .htaccess se vytvoří následovně.

    1. na svém počítači si vytvořte prázdný textový dokument a pojmenujte jej htaccess.txt
    2. soubor editujte textovým editorem a vložte do něj direktivu viz výše
    3. tento soubor nahrajte do složky /wp-content/uploads/ (návod pro připojení se k FTP je zde)
    4. nahraný soubor na FTP přejmenujte na .htaccess