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. Dvoufaktorové (dvoufázové) ověření
    4. Zabezpečení kontaktních formulářů pomocí Google reCAPTCHA
    5. Zabezpečení složky /wp-content/uploads/
    6. Zabezpečení omezením přístupu na země nebo IP adresy


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.



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.



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




Zabezpečení omezením přístupu na země nebo IP adresy

(Tyto informace jsou dostupné také v článku  Joomla, WordPress - zabezpečení omezením přístupu na IP adresy)

Administrační rozhraní redakčního systému je často napadáno roboty, kteří se snaží hrubou silou odhalit heslo do systému.
Doporučeným postupem pro omezení této nežádoucí aktivity je povolení přístupu do adresáře pouze pro vyjmenované IP adresy, nebo země. Naše hostingy podporují použití souboru .htacccess s běžnými rewrite pravidly a modulem GeoIP. U redakčního systému WordPress tento soubor vytvořte nebo upravte v hlavním adresáři webu (uvedené řádky vložte na začátek souboru .htaccess).

Povolení přístupu pouze z vyjmenovaných zemí lze zajistit vložením následujícího kódu:

RewriteEngine on
RewriteCond %{REQUEST_URI} /wp-login\.php [OR]
RewriteCond %{REQUEST_URI} /xmlrpc\.php [OR]
RewriteCond %{REQUEST_URI} /wp-signup\.php [OR]
RewriteCond %{REQUEST_URI} /wp-admin
RewriteCond %{REQUEST_URI} !/admin-ajax\.php
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(CZ|SK)$
RewriteRule ^(.*)$ - [F,L]

Pro omezení přístupu pouze na IP adresy lze do .htaccess vložit řádky:

RewriteEngine on
RewriteCond %{REQUEST_URI} /wp-login\.php [OR]
RewriteCond %{REQUEST_URI} /xmlrpc\.php [OR]
RewriteCond %{REQUEST_URI} /wp-signup\.php [OR]
RewriteCond %{REQUEST_URI} /wp-admin
RewriteCond %{REQUEST_URI} !/admin-ajax\.php
RewriteCond %{REMOTE_ADDR} !^(81.2.196.122|81.2.196.123)$
RewriteRule ^(.*)$ - [F,L]

Toto omezení se týká pouze určitých komponent a souborů Wordpressu. Pokud byste chtěli aplikovat omezení IP adres na celý web, je možné využít pravidla v tomto návodu - Omezení dostupnosti webu pro konkrétní země.