Bezpečnost WordPressu a základní kroky

V roce 2021 WordPress má okolo 40 % podílu softwaru, který pohání webové stránky. Co se týká čísel pouze v CMS odvětví, jedná se o 64 %. Další je pak Joomla s 4,6 %. Je tedy jasné, že co se bezpečnosti týká, musí WordPress a jeho komunita zůstat aktivní a pravidelně opravovat chyby.

V tomto článku se místo běžné teorie zaměříme na konkrétní kroky, pluginy, služby a kódy.

Jak zamezit základnímu přístupu

Už jste slyšeli asi 100x. Používat silná hesla a přihlašovací jména. To je základ. Ale jak na to? Zaprvé nikdy nevymýšlejte hesla. Nechte si je generovat programem typu LastPass nebo 1Password. Uchovávají hesla a generují vám je.

Pak už jen stačí zvolit jméno jiné než „admin“ a prakticky tuto oblast máte vyřešenou. Pokud nevíte jaké jména volit, doporučuji něco typu „nazevwebu_jmeno“. Příkladem by tedy mohlo být „domenacz_pavel“ apod.

Určitě se bude hodit pak rozšíření hashování hesel pomocí pluginu WP Password Bcrypt. Jedná se o lepší verzi toho, co používá WordPress.

Poznámka: hashování je uchování hesel ve formě nečitelné oproti původní zadané hodnotě. Kupříkladu heslo „ahoj“ by mohlo v databázi vypadat jako „79c2b46ce2594ecbcb5b73e928345492“.

Útoky z venku

Pokud vše provede správně – aktualizovaný WordPress i pluginy, silná hesla apod – tak útočníkům nezbývá než Váš web odstavit. Velmi často lze najmout „zombies“ z Ruska / Číny, kde se následně děje útok směrem na Váš web. Jak? Prostě a jednoduše velmi mnoho zařízení (alias uživatelů) začnou načítat ideálně stránku na Vašem webu, která je nejvíce náročná na výpočetní výkon hostingu.

Pokud se zdaří, nespadne nejen Váš web ale i další. Tím je zaručeno, že obnova bude složitější než jen nahození jednoho webu.

Cloudflare a další

Od toho existují řešení typu cloudflare, kdy svůj web schováte za službu, která je proti těmto typům útoků stavěná. Má to celou řadu výhod ale i nevýhod. Nicméně pokud máte zákeřnou konkurenci – což jsme u několika klientů zažili – a hosting / správce serveru, kde máte svůj web, nezvládá řešit útoky, nezbývá nic jiného.

Útoky zevnitř

Už bylo zmíněno, že je potřeba mít aktualizovaný WordPress i pluginy. Proč? Protože nikdo není neomylný a tvůrci šablon / pluginů i WordPressu mohou někde nechat kód, který otevře vrátka pro nahrání scriptu na web. Kdy pak útočník už může dělat prakticky cokoliv.

To se týká i počtu pluginů a především těch, od menších vývojářů. Tam mnohdy není úplně touha řešit edge-case problémy. Typicky čtení z databáze, kde může být kód nebo soubor v pluginu, který lze spustit načtením jeho adresy v prohlížeči.

Taky je dobré používat nejnovější PHP, což je aktuálně PHP 7.4 nebo PHP 8 – ale jen v případě, že to nebude mít dopad na Váš web.

Pluginy

Pokud potřebujete bezpečností plugin – není totiž vždy potřeba – doporučení je kouknout na WordFence, All one One WP Security nebo iTheme security. S oběma lze chránit web relativně dostatečně dobře. Samozřejmě pokud nemáte dobrý hosting / dobrého poskytovatele serveru, tak pluginy nic nezmohou.

Hosting / Server

Obecně není skoro možné říci, jaký hosting je na co stavěn. Co se týká našeho prostředí, doporučujeme OneBit jako multi hosting řešení. Serverů je tu celá řada a je velká otázka, co přesně potřebujete. Obecně by se dal doporučit stable.cz máme s ním zkušenosti a funguje dobře.

Ze zahraničních používáme simply.com kvůli dostupnosti do ČR a po Evropě, která je velmi dobrá a zároveň za slušné ceny nabízí něco, co na našem území nikdo.

HTTPS  a http/2

Šifrování při přenosu dat, lepší načítání webu a ještě k tomu Vám Google bude dávat lepší hodnocení. Navíc lze použít Let’s Encrypt certifikát, který už snad každý rozumný hosting dává v základu a je zdarma. K tomu všemu pak zvyšuje certifikát důvěru u zákazníků. Není tedy důvod – skoro – proč jej nepoužívat.

Bezpečnostní hlavičky

Pro lepší bezpečnost je super vložit následující hlavičky. První kód je pro .htaccess soubor na serveru. Druhý je pak pro funkci v PHP (lze vložit například do functions.php).

Header add  X-XSS-Protection "1; mode=block"
Header add  X-Content-Type-Options "nosniff"
Header add  Strict-Transport-Security "max-age=31536000"
Header add  X-Frame-Options "SAMEORIGIN"
function sikmo_wp_headers( $headers ) {
    $headers['X-XSS-Protection'] = '1; mode=block';
    $headers['X-Content-Type-Options'] = 'nosniff';
    $headers['Strict-Transport-Security'] = 'max-age=31536000';
    $headers['X-Frame-Options'] = 'SAMEORIGIN';

    return $headers;
} add_action( 'wp_headers', 'sikmo_wp_headers' );

Zálohování webu

Záloha je důležitá část provozování čehokoliv důležitého. Ideální je mít tuto část vyřešenou na serveru. Protože cokoliv co se stane s webem / aplikací, tak se můžete spolehnout na provozovatele. A v případě, že řešíte nárazové problémy, tak je dobré mít navíc k tomu zálohu vlastní dle potřeby.

Konkrétní kódy

Zde pak budeme přidávat kódy, které je dobré použít nebo se zamyslet, zda byste je neměli vložit k sobě do webu.

define('DISALLOW_FILE_EDIT', true); // zabrání editace šablony z administrace, stačí vložit do wp-confing.php
Jak se s námi spojit