Brute force útok na WordPress: Jak zastavit opakované pokusy o přihlášení
WordPress standardně neomezuje počet pokusů o přihlášení. Zjistěte, jak zastavit brute force útoky na wp-login.php a XML-RPC dříve, než bude pozdě.
Podívejte se do logů svého hostingu. S velkou pravděpodobností tam najdete stovky, možná tisíce záznamů tohoto typu:
POST /wp-login.php 200 - 1.2.3.4
POST /wp-login.php 200 - 1.2.3.4
POST /wp-login.php 200 - 5.6.7.8
Toto je brute force útok. A pravděpodobně probíhá na vašem webu teď — jen ho nevidíte.
Brute force útoky na WordPress jsou tak běžné, že většina hostingů je tiše ignoruje. Útočníkovi stačí jeden úspěšný pokus z tisíce, aby získal přístup k vašemu administračnímu panelu. A od té chvíle je web v jeho rukou.
Co je brute force útok?
Brute force (česky: útok hrubou silou) je metoda, při které útočník automatizovaně zkouší tisíce kombinací uživatelských jmen a hesel, dokud nenajde správnou.
WordPress je pro tento typ útoku ideálním cílem, protože:
- Přihlašovací stránka
/wp-login.phpje u všech instalací na stejném místě - WordPress standardně neomezuje počet neúspěšných pokusů o přihlášení
- Existují veřejné databáze s miliony odcizených přihlašovacích údajů
- Útok lze zautomatizovat a spustit na tisíce webů současně pomocí botnetů
Útočníci nemusí hádat hesla náhodně. Používají slovníkové útoky — seznamy nejpoužívanějších hesel (password123, admin, wordpress, atd.) a uniklých hesel z datových úniků.
XML-RPC: Zadní vrátka, o kterých nevíte
Vedle /wp-login.php existuje druhý oblíbený cíl brute force útoků: soubor xmlrpc.php.
XML-RPC je rozhraní, které umožňuje vzdálený přístup k WordPressu — původně navrženo pro mobilní aplikace a externí nástroje. Dnes je ve většině instalací nepotřebné, ale stále aktivní.
Pro útočníky je xmlrpc.php atraktivnější než wp-login.php, protože:
- Umožňuje vyzkoušet tisíce hesel v jednom požadavku (pomocí metody
system.multicall) - Je hůře monitorovaný — většina bezpečnostních pluginů sleduje
/wp-login.php, ne XML-RPC - Mnoho firewall pravidel XML-RPC záměrně ignoruje
Typický XML-RPC útok nezanechá v logu přihlašovací stránky žádnou stopu — ale zvýší zatížení serveru a spotřebu CPU.
Jak poznat, že jste pod útokem
Symptomy v logu serveru
POST /xmlrpc.php 200 — tisíce záznamů za hodinu
POST /wp-login.php 200 — stovky záznamů z různých IP adres
Symptomy na webu a serveru
- Web se načítá pomaleji než obvykle bez jasného důvodu
- Hosting vám poslal upozornění na překročení CPU nebo databázových dotazů
- Dostali jste e-mail od hostingu o "neobvyklé aktivitě"
- V logu WordPressu nebo bezpečnostního pluginu vidíte záznamy o neúspěšných přihlášeních z různých zemí
Nejhorší scénář: útok byl úspěšný
Pokud útočník získal přístup, typické příznaky zahrnují:
- Nový administrátorský účet, který jste nevytvořili
- Změny v nastavení webu (e-mailová adresa, URL webu)
- Nové soubory ve složce uploads nebo v kořenovém adresáři
- Přesměrování na cizí weby
6 opatření, která brute force útok zastaví nebo výrazně ztíží
1. Omezte počet pokusů o přihlášení
Nejjednodušší a nejefektivnější opatření. Plugin jako Limit Login Attempts Reloaded nebo WP Cerber po nastaveném počtu neúspěšných pokusů zablokuje IP adresu na definovanou dobu.
Doporučené nastavení:
- Maximálně 3–5 pokusů před blokováním
- Blokování na 30–60 minut
- Trvalé blokování po opakovaném překročení limitu
2. Vypněte nebo chraňte XML-RPC
Pokud nepoužíváte mobilní aplikaci WordPress, vzdálené publikování nebo WooCommerce v kombinaci s externími systémy, XML-RPC nepotřebujete. Vypněte ho:
Přes .htaccess:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Přes plugin: Wordfence, WP Cerber nebo Disable XML-RPC-API umožňují XML-RPC zakázat jedním kliknutím.
Pozor: Nejdříve ověřte, zda XML-RPC aktivně nepoužíváte (Jetpack a některé pluginy na něm závisí).
3. Přejmenujte nebo přesuňte přihlašovací stránku
Přejmenování /wp-login.php na vlastní URL (např. /moje-prihlaseni-2026/) eliminuje drtivou většinu automatizovaných útoků — roboti útočí na výchozí cestu, nikoli na vaši vlastní.
Plugin WPS Hide Login toto umožňuje bez zásahu do kódu.
Důležité: Novou URL si poznamenejte a nikde veřejně nezveřejňujte.
4. Přidejte dvoufaktorové ověření (2FA)
I kdyby útočník získal správné heslo, 2FA mu přihlášení neumožní bez přístupu k vašemu telefonu nebo autentizační aplikaci.
Doporučené pluginy: WP 2FA, Google Authenticator, Wordfence Login Security.
2FA je obzvláště důležité pro administrátorské účty — u méně privilegovaných rolí (editor, autor) je volitelné.
5. Nastavte Web Application Firewall (WAF)
WAF filtruje provoz ještě před tím, než se požadavek dostane k WordPressu. Dokáže blokovat útočné IP adresy, geograficky omezit přístup nebo automaticky rozpoznat vzory brute force útoku.
Možnosti:
- Cloudflare (free tier zahrnuje základní WAF a rate limiting)
- Wordfence (plugin s vlastním WAF)
- Sucuri (cloudový WAF s CDN)
6. Používejte silná, unikátní hesla — a správce hesel
Útok slovníkem je neúčinný proti heslu, které nevychází z žádného slovníku. Heslo jako Tr9#mK!2vBx@qL nelze prolomit slovníkovým útokem v reálném čase.
Použijte správce hesel (Bitwarden, 1Password, KeePass) — nevymýšlejte hesla sami, nechte je vygenerovat.
Minimální požadavky na admin heslo:
- Délka alespoň 16 znaků
- Kombinace velkých/malých písmen, číslic a speciálních znaků
- Unikátní — nepoužívané nikde jinde
Co dělat, když útok probíhá právě teď
Pokud vidíte v logu masivní nárůst požadavků na /wp-login.php nebo xmlrpc.php:
Krok 1: Přidejte rate limiting na Cloudflare nebo požádejte hosting o dočasné blokování podezřelých IP rozsahů.
Krok 2: Zkontrolujte seznam uživatelů WordPressu — zda nebyl vytvořen nový admin účet.
Krok 3: Zkontrolujte soubory v kořenovém adresáři a složce uploads — zda nebyly přidány nové PHP soubory.
Krok 4: Změňte heslo administrátorského účtu ihned.
Krok 5: Aktivujte 2FA ještě před dalším přihlášením.
Pokud je útok úspěšný — tedy pokud útočník přihlašovací údaje získal — jde o bezpečnostní incident, který vyžaduje kompletní forenzní analýzu, nikoli jen změnu hesla.
Proč "dočasná opatření" nestačí
Blokování IP adresy útočníka je neúčinné, pokud útok probíhá přes botnet. Každý bot má jinou IP adresu — zablokujete jednu, přijdou desítky dalších.
Trvalé řešení musí být systémové:
- Omezení pokusů na úrovni aplikace
- WAF s rate limitingem na úrovni sítě
- Silná autentizace (2FA)
- Monitoring a alerting při anomálním provozu
Právě tento přístup implementujeme v rámci balíčku SHIELD — od nastavení WAF přes 2FA až po kontinuální monitoring přihlašovacích pokusů.
Shrnutí
Brute force útoky jsou nejčastější vstupní bránou útočníků do WordPress webů — a WordPress vám proti nim standardně nedává žádnou ochranu. Chybí vám limitování pokusů, ochrana XML-RPC i 2FA.
Dobrou zprávou je, že všechna klíčová opatření lze implementovat za jeden odpoledne. Špatnou zprávou je, že pokud tato opatření nemáte, útok pravděpodobně probíhá právě teď — jen ho nevidíte v přihlašovacích pokusech, protože útočník používá XML-RPC.
Zkontrolujte si logy. A pak jednejte.
Potřebujete rychlou implementaci ochrany nebo zjistili jste, že útok byl úspěšný? Kontaktujte nás — reagujeme do 2 hodin.