Přejít k navigační liště

Zdroják » Webdesign » Jak zabezpečit WordPress: Praktický průvodce

Jak zabezpečit WordPress: Praktický průvodce

WordPress pohání přes 40 % všech webů na světě. To z něj dělá nejrozšířenější CMS a zároveň nejčastější terč automatizovaných útoků. Boti nepotřebují cílit přímo na vás: systematicky procházejí miliony domén a hledají otevřené dveře. Stačí zapomenutý plugin bez aktualizace, výchozí prefix databáze nebo heslo z uniklé databáze. Tento článek není seznam pluginů. Je to průvodce od základů přes hardening konfigurace až po serverové zabezpečení s konkrétními kroky, které můžete udělat ještě dnes.

Nejde o to, jestli vás někdo cíleně hackne. Jde o to, že vás jednou trefí bot. WordPress pohání přes 40 % webu — a právě proto je nejčastějším terčem automatizovaných útoků. Tenhle článek vás provede od základů přes hardening až po serverové zabezpečení.

1. Proč vlastně řešit bezpečnost WordPressu?

WordPress je nejrozšířenější CMS na světě. To ho dělá pohodlným nástrojem pro vývojáře, ale zároveň lákavým terčem pro útočníky — přesněji řečeno, pro jejich boty. Drtivá většina útoků je plně automatizovaná: skripty systematicky procházejí miliony domén a hledají známé zranitelnosti.

Typické hrozby, se kterými se setkáte:

  • Brute-force přihlášení — tisíce pokusů o uhodnutí hesla za minutu
  • Zranitelné pluginy a šablony — neaktualizovaný kód s veřejně zdokumentovanými CVE
  • SQL injection a XSS — zneužití špatně ošetřeného vstupu
  • Špatná konfigurace serveru — veřejně dostupný wp-config.php, výpis adresářů

Bezpečný WordPress není o jednom pluginu. Je o kombinaci vrstev, kde každá vrstva zachytí to, co propustila ta předchozí.

2. Silné přihlašování a dvoufaktorová autentizace

Heslo samo o sobě nestačí. Databáze s ukradenými hesly jsou volně k dispozici — a pokud uživatel používá stejné heslo na více místech, útočník to ví dřív než vy.

Proč 2FA

Dvoufaktorová autentizace přidává druhou vrstvu ověření. I když útočník zná heslo, bez fyzického přístupu k autentizátoru se nepřihlásí.

Implementace přes Wordfence

Plugin Wordfence Security je de facto standardem pro WordPress. Obsahuje firewall, skener malware i 2FA — vše v jednom.

  1. Nainstalujte Wordfence ze správy pluginů
  2. Přejděte do Wordfence → Login Security
  3. Naskenujte QR kód pomocí autentizátoru (Google Authenticator nebo Authy)
  4. Uložte záložní kódy na bezpečné místo
  5. Vynuťte 2FA pro všechny uživatele s rolí Editor a výš

Záložní kódy nevynechejte. Pokud ztratíte přístup k telefonu, jsou jedinou cestou zpět. Uložte je do password manageru, ne do e-mailu.

Výchozí uživatelské jméno admin je první, co boti zkouší. Pokud ho máte, vytvořte nového administrátora s jiným jménem a starý účet smažte.

3. Hardening pomocí wp-config.php

Soubor wp-config.php je srdce WordPressu. Pár řádků navíc může výrazně omezit, co útočník dokáže, i když se mu podaří proniknout do administrace.

Zakázání editace souborů v administraci

Ve výchozím stavu může administrátor přímo z dashboardu editovat PHP soubory pluginů a šablon. Pokud útočník získá přístup k admin účtu, může tímto způsobem spustit libovolný kód.

// wp-config.php
define('DISALLOW_FILE_EDIT', true);Code language: JavaScript (javascript)

Zakázání instalace pluginů (volitelné)

Pokud máte produkční prostředí spravované přes CI/CD a pluginy nasazujete jako kód, je tohle silný bezpečnostní krok — nikdo nemůže nainstalovat plugin přes admin, ani omylem.

define('DISALLOW_FILE_MODS', true);Code language: JavaScript (javascript)

DISALLOW_FILE_MODS je vhodné pro produkci. Na staging nebo lokálu ho nechte vypnutý, jinak nebudete moci aktualizovat.

Změna prefixu databázových tabulek

Výchozí prefix wp_ znají všichni boti. Náhodný prefix nezastaví cíleného útočníka, ale sníží šum od automatizovaných SQL injection pokusů.

// Nastavte před instalací WordPressu
$table_prefix = 'x9f_';Code language: PHP (php)

Změna prefixu na existující instalaci je riziková operace — vyžaduje přejmenování všech tabulek v databázi. Vždy si udělejte zálohu předem.

Bezpečnostní klíče (Authentication Salts)

WordPress používá tyto klíče k šifrování cookies. Vygenerujte je přes oficiální API a pravidelně obměňujte — zejména po podezření na kompromitaci.

define('AUTH_KEY',         'váš unikátní řetězec');
define('SECURE_AUTH_KEY',  'váš unikátní řetězec');
define('LOGGED_IN_KEY',    'váš unikátní řetězec');
define('NONCE_KEY',        'váš unikátní řetězec');
// ... a další čtyřiCode language: JavaScript (javascript)

4. Ochrana přihlašovací stránky

Rate limiting — omezení pokusů o přihlášení

Wordfence umožňuje nastavit limit pokusů o přihlášení. Po překročení limitu je IP adresa dočasně nebo trvale zablokována. Doporučené nastavení: maximálně 5 pokusů, poté zablokovat na 4 hodiny. Opakované pokusy vedou na permanentní blokaci.

Změna URL přihlašovací stránky

Výchozí /wp-login.php útočníci znají nazpaměť. Přesunutí na vlastní URL sníží počet pokusů — ale jde spíše o security through obscurity, ne o skutečnou obranu. Kombinujte vždy s rate limitingem a 2FA.

5. Aktualizace: nejvíce podceňovaná věc

Naprostá většina úspěšných útoků využívá známé, veřejně zdokumentované zranitelnosti v neaktualizovaných pluginech nebo jádru. Co aktualizovat pravidelně:

  • Jádro WordPressu — co nejdříve po vydání patchů
  • Pluginy — aktivní monitoring v dashboardu nebo přes WP-CLI
  • Šablony — i nepoužívané šablony mohou obsahovat zranitelný kód; smažte je
// wp-config.php — automatické aktualizace jádra
define('WP_AUTO_UPDATE_CORE', true);

// functions.php — automatické aktualizace pluginů
add_filter('auto_update_plugin', '__return_true');Code language: JavaScript (javascript)

Automatické aktualizace fungují nejlépe ve spojení se staging prostředím a dobrými zálohy. Major aktualizace testujte ručně.

6. Výběr pluginů: méně je víc

Každý nainstalovaný plugin je potenciální vektor útoku. Pravidlo je jednoduché: instalujte jen to, co opravdu potřebujete. Před instalací zkontrolujte:

  • Datum poslední aktualizace (ideálně do 6 měsíců)
  • Počet aktivních instalací (desítky tisíc = dobré znamení)
  • Hodnocení a recenze — hledejte negativní zpětnou vazbu o bezpečnosti
  • Zda je plugin dostupný na oficiálním wordpress.org repozitáři

Nikdy nepoužívejte nulled pluginy. Nulled pluginy jsou jednou z nejčastějších cest, jak se malware dostane na web. Ušetřená stovka korun vás může stát celý web.

7. Zabezpečení na úrovni serveru

Tohle bývá v článcích o WordPressu nejčastěji vynecháno — přitom jde o základ, na kterém stojí vše ostatní.

HTTPS — povinné minimum

Bez HTTPS běží hesla a session cookies po síti v plaintextu. Dnes neexistuje důvod provozovat WordPress bez SSL — Let’s Encrypt je zdarma.

Správná práva souborů

  • wp-config.php600 (pouze vlastník může číst a zapisovat)
  • PHP soubory → 644
  • Adresáře → 755
  • wp-content/uploads755, spouštění PHP blokovat

Blokování PHP v uploads

# .htaccess
<Directory /var/www/html/wp-content/uploads>
    php_flag engine off
</Directory>Code language: HTML, XML (xml)

Zakázání výpisu adresářů

Options -Indexes

Ochrana wp-config.php přes .htaccess

<files wp-config.php>
    order allow,deny
    deny from all
</files>Code language: HTML, XML (xml)

Firewall a CDN

Cloudflare nabízí v bezplatném plánu WAF (Web Application Firewall), DDoS ochranu a blokaci podezřelých IP adres dříve, než požadavek vůbec dorazí na váš server. Pro většinu projektů je to ideální poměr cena/výkon.

8. Zálohování: záchranná síť pod vším ostatním

Zabezpečení bez záloh je jen iluze bezpečí. Zálohy jsou vaší pojistkou, když všechno ostatní selže.

Co zálohovat:

  • Databáze — denně, ideálně každých několik hodin u e-shopů
  • Soubory (wp-content) — denně nebo po každé změně
  • wp-config.php — bezpečně, mimo repozitář

Pravidlo 3-2-1: 3 kopie dat, na 2 různých médiích, 1 kopie mimo lokalitu. Zálohy na stejném serveru jako web vás nezachrání při kompromitaci serveru. Plugin UpdraftPlus umí automaticky odesílat zálohy na Google Drive, S3 nebo Dropbox.

9. Monitoring a reakce na incidenty

I nejlépe zabezpečený systém může být kompromitován. Klíčové je to zjistit co nejdříve. Wordfence dokáže posílat e-mailová upozornění při:

  • Vytvoření nového administrátorského účtu
  • Změně klíčových souborů (detekce modifikace jádra)
  • Neúspěšných pokusech o přihlášení překračujících limit
  • Nalezení malware ve skenu

Zvažte logování do externího systému (Logtail, Papertrail). Lokální logy může útočník po průniku smazat — vzdálené nikoliv.

10. Pokročilé tipy

XML-RPC — vypnout, pokud nepotřebujete

XML-RPC je starší rozhraní WordPressu, které boti rádi zneužívají pro brute-force — jedno volání může ověřit stovky hesel najednou. Pokud nepoužíváte Jetpack nebo mobilní aplikaci WP, zablokujte ho:

<Files xmlrpc.php>
    order allow,deny
    deny from all
</Files>Code language: HTML, XML (xml)

REST API — omezení pro neautentizované

// functions.php
add_filter('rest_authentication_errors', function($result) {
    if (!is_user_logged_in()) {
        return new WP_Error('rest_not_logged_in',
            'REST API přístupné jen přihlášeným uživatelům.',
            ['status' => 401]);
    }
    return $result;
});Code language: PHP (php)

Toto nastavení může rozbít pluginy závislé na REST API (WooCommerce, Gutenberg blocks). Testujte nejdříve na staging prostředí.

Oddělení prostředí

Nikdy nevyvíjejte přímo na produkci. Správné nastavení: dev → staging → production. Na každém prostředí jiné přihlašovací údaje, jiné API klíče, jiné databáze.

Fail2Ban

Fail2Ban analyzuje serverové logy a blokuje IP adresy opakovaně zkoušející přihlášení. Funguje na úrovni firewallu (iptables), takže blokuje útočníka ještě před WordPress vrstvou.

Shrnutí: bezpečnostní checklist

  • 2FA zapnuté pro všechny adminy
  • Výchozí uživatelské jméno admin přejmenováno nebo smazáno
  • DISALLOW_FILE_EDIT nastaveno v wp-config.php
  • Prefix databáze změněn z výchozího wp_
  • Bezpečnostní klíče (salts) vygenerovány přes API
  • Automatické aktualizace jádra zapnuty
  • Pluginy pravidelně aktualizovány, nepoužívané smazány
  • HTTPS aktivní
  • Oprávnění souborů správně nastavena
  • Výpis adresářů zakázán (Options -Indexes)
  • XML-RPC zakázáno (pokud nepotřebujete)
  • Zálohy nastaveny, ukládány mimo server
  • Monitorovací e-maily z Wordfence zapnuty

Komentáře

Odebírat
Upozornit na
guest
0 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře

Product Engineer: supermani, nebo falešná efektivita?

Stále více firem propouští produktové týmy a sází na jednu roli, která to zvládne celé sama. Product Engineer je člověk, který vymyslí produkt, implementuje ho a vyhodnotí výsledky. S ekosystémem AI agentů místo kolegů. Efektivita? Na první pohled určitě. Ale je rozdíl mezi tím dodávat víc a rychleji a skutečně být efektivní. Tenhle rozdíl firmy zatím moc neřeší.

EU AI Act: co musí vývojářské týmy vědět do 2. srpna 2026

Druhého srpna začnou v EU platit povinnosti pro poskytovatele i provozovatele high-risk AI systémů: posouzení shody, technická dokumentace a quality management na straně providerů, uchovávání logů a dohled nad provozem na straně deployerů. Samostatně vstupují v platnost transparentní pravidla pro chatboty, generativní AI a deepfaky, a ta se týkají všech, nejen high-risk systémů. Kdo nasazuje AI v recruitmentu, credit scoringu nebo HR hodnocení, je v zóně. Čekání na odklad přes Digital Omnibus je sázka na legislativní proces, který ještě neskončil. A kdo si myslí, že se ho to netýká, protože „jen používá ChatGPT" v use casu z Annexu III, pravděpodobně špatně přečetl nařízení.

Vibe coding a skutečná cena kódu, který nikdo nečte

AI
Komentáře: 1
Andrej Karpathy pojmenoval vibe coding v únoru 2025 jako víkendový experiment, kdy vývojář nečte kód a nechá AI dělat všechno. Collins Dictionary z toho udělal slovo roku, startupy kolem toho vyrostly na desítky miliard dolarů. Jenže nejrigoróznější nezávislá studie zjistila, že AI nástroje zkušené vývojáře zpomalují o 19 %, přestože si oni sami mysleli, že zrychlili o 20 %. Mezi tím, co o vibe codingu věříme, a tím, co o něm víme, zeje díra – a je načase se do ní podívat.