Základní tipy pro zabezpečení WordPressu

21. října 2021

Redakční systém WordPress podle posledních průzkumů na světe pohání téměř 33 % všech webových stránek. To s sebou kromě spousty výhod přináší i obrovské riziko útoků hackerů. Všechny vaše veřejné weby s největší pravděpodobností prochází automatizované nástroje, které zneužívají známých zranitelností WordPressu, a pokouší se váš web využít ke spoustě nepříjemným věcem. Počínaje zobrazování reklam, přes přesměrování na útočné stránky, až po zapojení do rozesílání spamových emailů.

Pro každý web můžete učinit několik jednoduchých kroků, které ho učiní odolnějším. Část návodu vyžaduje základní znalosti práce s FTP kvůli úpravám souborů na vašem webovém serveru.

1. Limitace počtu neplatných přihlášení do administrace

Roboti automaticky zkoušejí přihlašování do vaší administrace pomocí databáze kompromitovaných či nejpoužívanějších hesel. Jedná se o tzv. bruteforce útok, tedy útok hrubou silou. Tomuto útoku můžete předejít instalací jednoho z pluginů pro omezení počtu přihlášení či přesunutí velmi známé adresy administrace (wp-admin) na něco tajného.

2. Používejte protokol HTTPS

Jedním ze základních předpokladů dobře zabezpečeného webu je aktivní komunikace přes protokol HTTPS. Jak správně zapnout podporu zabezpečeného přenosu dat se dozvíte v jednom z mých předchozích článků.

3. Vypnutí editoru šablon a pluginů

Ve WordPressu se nachází integrovaný editor kódu šablon a pluginů, což samo o sobě nebezpečné není. Představte si ale, že se vám do vašeho webu podaří přihlásit útočníkovi
s administrátorskými právy. Mohl by si do šablony vložit jakýkoliv škodlivý (např.) PHP script.

Tomuto typu útoku se dá velmi jednoduše předejít přidáním tohoto řádku do souboru wp-config.php – celá funkcionalita pro editaci šablon a pluginů se nadobro deaktivuje.

define( 'DISALLOW_FILE_EDIT', true );

4. Vypnutí možnost instalace a aktualizace pluginů

Jednou z nejjistějších obran je také zapnutí volby DISALLOW_FILE_MODS, která kompletně zakáže jakoukoliv instalaci či aktualizaci šablon a pluginů. Pokud se vám do webu tedy dostane útočník, je pro něj nemožné nainstalovat nějaký nevyžádaný plugin.

Je důležité připomenout, že před každou aktualizací WordPressu či nainstalovaných šablon
a pluginů je potřeba tuto možnost ze souboru wp-config.php smazat.

define( 'DISALLOW_FILE_MODS', true );

5. Zálohujte, zálohujte

Věřím, že většina z vás je na tohle slovo již alergická. Důležitější věc ale neexistuje. Pokud se vám do webu nabourá útočník a rozšíří po celém kódu svůj virus, nemůžete už svému webu nikdy věřit. Pokročilé viry dokáží změnit i čas editace souborů, takže jednoduše nepoznáte, jestli útočník nenakazil jeden z mnoha tisíců souborů WordPressu. V tu chvíli přichází na řadu záloha
z času před útokem.

Kvalitní hostingy zálohování provádí automaticky, některé zálohu obnovují za poplatek. Zvažte
i tvorbu vlastní zálohy (například stažením všech souborů přes FTP) a na pravidelný export databáze. Můžete využít i mnoho pluginů, které zálohování řeší. Dostanete pouze vygenerovaný ZIP s celým webem včetně databáze, nebo se celá záloha automaticky nahrává na vzdálené úložiště, například Dropbox. Namátkou můžu doporučit plugin BackWPup.

https://cs.wordpress.org/plugins/backwpup/

6. Nepodceňujte aktualizace

Aktualizace WordPressu jsou nesmírně důležité, neboť většinou opravují nově objevené bezpečnostní chyby. Nezapomínejte také na pravidelné aktualizace pluginů a šablon. Já všechny své weby aktualizuji přibližně 1x týdně, ale v případě, že se dozvím o nějaké důležité aktualizaci, provedu aktualizaci co nejdříve.

7. Uživatelské jméno do administrace

Nedoporučuji používat výchozí uživatelské jméno (admin), neboť tím zjednodušujete útočníkovi provedení útoku např. hrubou silou do vašeho webu.

Nezapomeňte také ale na velmi důležitou věc – administrátorů můžete mít v systému víc
a někdo z nich může mít slabé heslo. Útočník si může jednoduše (přes parametr ?author=1) zjistit, jaké uživatelské jméno se pod tímto ID (v tomto případě id = 1) skrývá. Následně mu stačí prozkoušet databázi hesel, jestli se náhodou přihlášení do systému nevydaří.

Zakázat zjišťování uživatelských jmen podle ID autora můžete jednoduše, přidáním těchto řádků do souboru .htaccess, který se nachází v kořenové složce webu.

# blokace skenovani autoru
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} (author=\d+) [NC]
RewriteRule .* - [F]
# ---

8. Zakázání souboru XMLRPC.php

Pokud nevyužíváte žádnou externí aplikaci, která XMLRPC používá, tak proveďte blokaci tohoto souboru přidáním těchto řádků do souboru .htaccess, který se nachází v kořenové složce webu.

# XMLRPC blokace

order deny,allow
deny from all

# ---

9. Zamezte přímý přístup k souboru wp-config.php

Spousta robotů zkouší také neustále dokola otevírat soubor wp-config.php, který v sobě obsahuje informace pro přihlášení k databázi. Když se stane na serveru nějaká technická chyba a PHP korektně nezpracuje požadavek, může se ve výjimečných případech stát, že se soubor stáhne spolu s přihlašovacími údaji do databáze. Ušetříte také výkon webového serveru, neboť se v případě přístupu robotů na tento soubor nebude vůbec zpracovávat.

Přidám těchto řádků do souboru .htaccess tomuto typu útoku zamezíte.

# Blokace pristupu k WP-config

order allow,deny
deny from all
# --

10. Skryjte verzi WordPressu

Ve výchozím stavu váš wordpressový web prozradí v meta tagu generator číslo verze, kterou právě na webu používáte. To může útočníkovi velice pomoci, neboť například zjistí, že pro nějakou zastaralou verzi, kterou používáte, existuje známá zranitelnost.

Skrytí tohoto tagu můžete provést přidáním tohoto řádku na konec souboru functions.php, který se nachází ve složce s vaší šablonou. Tu naleznete ve složce /wp-content/themes/

add_filter( 'the_generator', '__return_null' );

11. Využijte plugin, který většinu věcí řeší automaticky

Pokud si nevěříte, že web zvládnete zabezpečit sami, nebo hledáte jednoduché a účinné řešení, tak doporučuji instalaci jednoho z následujících pluginů. Pozor, nainstalujte si pouze jeden, stejně jako u antivirů v počítači platí, že více neznamená lépe.

Jeden z nejznámějších pluginů je nepochybně Sucuri, který je v základní dostatečné verzi zdarma.

https://wordpress.org/plugins/sucuri-scanner/

Následně mohu doporučit pluginy Wordfence nebo iThemes security. Někdy si v nějakém článku ukážeme, co jaký plugin nabízí v základní neplacené verzi, ať vám výběr ulehčím.

https://wordpress.org/plugins/wordfence/

https://wordpress.org/plugins/better-wp-security/

Další článek CSP hlavičky
Daniel Šenkyřík

Jsem PHP programátor se zaměřením na Nette a Wordpress. Mám za sebou dokončené vyšší desítky Wordpress projektů o různé složitosti - počínaje jednoduchými prezentacemi, přes eshopy až po velmi rozsáhlé projekty. Preferuji tvorbu vlastních šablon na míru.

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *