WordPress Brute Force Útok

4 opatření pro odražení útoků brute force na váš WordPress

Co jsou útoky brute force, k čemu je útočníci používají a jak můžete těmto útokům na váš WordPress zabránit? Takové otázky si určitě položíte, budete-li se tímto problémem zabývat. A my pro vás máme odpovědi.

Co jsou brute force attacks?

Brute force attacks (neboli útoky hrubou silou) jsou pokusy o získání přístupu k vašemu systému (ve vašem případě k WordPressu). Provádí se tak, že se útočníci pokouší uhodnout uživatelské jméno a heslo. Protože daný účet už má přístup k systému. 

Je to velmi jednoduchá a primitivní metoda (jak název napovídá – brute force = hrubá síla), která je stále velmi účinná. Zároveň je však velmi jednoduché jí zabránit.

Jaké typy útoků hrubou silou existují?

Existují malé, ale jemné rozdíly mezi útoky hrubou silou a jejich scénáři. Nejběžnější druhy lze rozdělit do 5 kategorií:

  1. Jednoduchý brute force attack
  2. Slovníkový útok
  3. Hybridní útok brute force
  4. Reverzní útok brute force / password spraying
  5. Credential Stuffing

V následujícím textu vás podrobně seznámíme s každou z těchto kategorií.

"*" povinný údaj

Rád bych se přihlásil k odběru newsletteru, abych byl informován o nových článcích na blogu, e-knihách, funkcích a novinkách ve WordPressu. Svůj souhlas mohu kdykoli odvolat. Více informací v našich Zásadách ochrany osobních údajů.
Toto pole slouží k ověření a nemělo by se měnit.

1. Jednoduchý útok brute force

Jedná se o nejčistší formu útoku hrubou silou. Kousek po kousku zkouší jakoukoli kombinaci znaků – bez rešerše nebo jakéhokoliv postupu, krom jednoduchého počítání znaků.

WordPress Brute Force Jednoduchý útok
Credit: Matthias Held

Tato metoda je jednoduchá, ale stojí čas nebo spoustu výpočetního výkonu. Nicméně se stále silnějšími procesory nebo možnostmi spustit současně mnoho různých systémů na jeden cíl (například pomocí botnetů nebo cloudových serverů) se stále jedná o validní metodu. 

Existují jak laboratorní pokusy, tak aplikace v reálném světě, které mohou prolomit 8místné heslo za méně než 12 minut. S dále se vyvíjející technologií bude ještě rychlejší a snazší heslo prolomit. Proto tato metoda zůstává populární mezi útočníky, kteří se specificky zaměřují na konkrétní cíl.

Výhoda: Jakákoli hesla lze uhodnout.
Nevýhoda: Může to trvat velmi dlouho a vyžaduje to velký výpočetní výkon.

Dobré metody obrany: Používejte dlouhá hesla se širokou škálou znaků.

2. Slovníkový útok

Na rozdíl od metody simple brute force používá tzv. dictionary attack pro testování již existující datovou sadu.

Mohou to být data z různých zdrojů:

  1. Skutečné slovníky, například všechna slova z Lingea slovníku.
  2. Seznamy hesel, jako je 10.000 nejčastěji používaných hesel.
  3. Hesla z předchozích prolomení (uživatelská jména a hesla z předchozích hacků webových stránek a aplikací).

První varianta je už méně důležitá, ale poslední dvě v průběhu let zesílily, protože s rostoucími kybernetickými útoky se samozřejmě zvyšuje i množství dat v těchto seznamech.

WordPress Brute Force slovník útok
Credit: Matthias Held

Výhoda: Vzhledem k tomu, že uživatelé rádi používají hesla, která jsou dobře zapamatovatelná, často si to usnadňují a používají jednotlivá slova ze slovníku nebo jména znovu a znovu ve všech službách, na webových stránkách i v aplikacích. Proto je pravděpodobnost úspěchu poměrně vysoká a navíc je tato metoda mnohem rychlejší než jednoduchý simple force.


Nevýhoda: Pravděpodobnost úspěchu již není 100%.

Dobré metody obrany: Nepoužívejte jednotlivá slova ze slovníku nebo jména, položky a podobně. Stejné heslo používejte také pouze pro jeden účet a ne pro několik. 

3. Hybridní brute force attack

Hybridní brute force attack je kombinací útoků simple brute force a slovníkového.


V tomto případě dojde k tomu, že ze simple brute force se převezme slovo a kombinuje se s potenciálními čísly, která se často používají, jako je rok narození nebo výročí svatby. Což drasticky omezuje počet potenciálních pokusů, a tím zjednodušuje proces útoku.

WordPress Brute Force Hybridní útok
Credit: Matthias Held

Výhoda: Tato metoda má stejnou výhodu jako dictionary brute force, pouze je zde vyšší počet pokusů a rozšířen o vysoký počet pokusů s jednoduchým přidáním znaků, jako jsou smajlíky v textové podobě nebo letech (Maga2020 je slavný příklad).
Nevýhoda: Stejně jako u slovníkového útoku, pravděpodobnost úspěchu již není 100%.

Dobré metody obrany: Nepoužívejte důležitá data nebo čísla v heslech.

4. Reverzní brute force attack nebo password spraying

Zde se útočníci pokoušejí kombinovat heslo s různými uživatelskými jmény. Takže uživatelské jméno se liší, heslo zůstává stejné.

WordPress Brute Force Reverzní útok
Credit: Matthias Held

Výhoda: Jak je popsáno výše, lidé mají tendenci opakovaně používat stejná hesla a volit ta nejsnadněji zapamatovatelná. To platí i pro tento typ útoku. Kromě toho dojde při více pokusech o uzamčení (lock out pro účet), pokud se opakovaně pokusíte dostat do uživatelského účtu.

Nevýhoda: Tato metoda může vést k mnoha přístupům, ale možná ne k požadovaným účtům.

Dobré metody obrany: Vzhledem k tomu, že se zde obvykle používají i standardní seznamy pro uživatelské účty (pokud je nelze přečíst), je vhodné zvolit uživatelské jméno s mnoha alfanumerickými znaky a speciálními znaky, které je obtížné uhodnout, stejně jako u hesla.

5. Credential stuffing

I zde hrají roli data z minulých prolomení (viz dictionary attack, bod 2). U credential stuffingu se nejedná o nic jiného, než o použití přihlašovacích údajů z předchozích prolomení.
Dejme tomu, že někde na webu nebo v aplikaci používáte
yourmail@yourwebsite.com jako uživatelské jméno a Cola123
jako heslo a tato data někdy dříve unikla, útočníci je tedy použijí k přihlášení do jiných služeb a aplikací.

WordPress Brute Force Pověření Stuffing
Credit: Matthias Held

Tento útok má velmi vysokou šanci na úspěch a je stále populárnější. Proto je také jedním z nejnebezpečnějších v současné době.

Zda u některého z vašich účtů již došlo k prolomení, můžete zkontrolovat na webu haveibeenpwned.com.

Raidboxes a prolomení

Při zakládání nového uživatelského účtu přezkouší Raidboxes, zda dané heslo už nebylo někdy prolomeno (anonymní a nevysledovatelné).

Výhoda: I zde opět platí tíha zvyku. Většina lidí používá stejnou e-mailovou adresu a heslo pro mnoho služeb. Opět tu je zabráněno uzamčení účtů, jako tomu je u reverzní brute force.

Nevýhoda: Při tomto útoku musí být předem jasné, zda osoba, do jejíhož účtu se chcete dostat, také používá konkrétní službu / webovou stránku / aplikaci. Ale pokud chcete obecně získat přístup, jde o velmi úspěšnou metodu.

Dobré metody obrany: Nikdy nepoužívejte stejné přihlašovací údaje několikrát. Mějte je pokaždé jiné, ať už se zaregistrujete kdekoli.

Jak mohu chránit svůj WordPress web před útoky brute force?

Často čtu a slyším radu: "Používejte silná hesla."

To je sice v zásadě pravda, ale je-li dost času a zdrojů může být nakonec jakákoli kombinace přihlášení prolomena hrubou silou, pokud nepoužijete žádná jiná ochranná opatření.

Tyto útoky také znamenají zbytečné zatížení vašeho serveru – což nejen zatěžuje dobu načítání vašeho webu, ale také vaši peněženku, účtuje-li si váš webhoster za návštěvnost. 

Jako nejlepší metoda nadále platí: v první řadě vůbec nepovolit tyto útoky a zcela zablokovat přístup.

Na úrovni serveru

Akce 1: Blokujte neoprávněné požadavky na formulář pro přihlášení

Můžete použít kombinovaný login, který by však postupem času, dostatkem výpočetního výkonu a bez další ochrany byl nakonec stejně prolomen.
Nejúčinnějším způsobem je ve skutečnosti vytvořit ochranu, která zcela blokuje jakýkoli neoprávněný požadavek na login formulář WordPressu. To znamená, že automatizované a manuální útoky neprojdou ani omylem. Což nakonec chrání i váš server.

Existuje několik způsobů, jak to udělat. Ne každá možnost se hodí, záleží na tom, jak technicky zdatní jste a kolik možností nastavení máte, pokud jde o nastavení DNS a serveru. 

Tip: Vytvoření seznamu povolených IP adres


Ochrana: 🔒🔒🔒🔒🔒
Technické úsilí: 🛠️🛠️🛠️

Pokud přistupujete k internetu vždy ze stejné IP adresy, například proto, že máte vlastní VPN nebo máte pevnou IP adresu ve své agentuře, je nejbezpečnější metodou vytvořit seznam povolených adres pro tuto IP adresu na /wp-admin a /wp-login.

Apache

Pokud váš webový server běží na Apache, přidejte tuto část do svého .htaccess:

RewriteEngine on

RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]

RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$

RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123$ 

RewriteRule ^(.*)$ – [R=403,L]


Důležité:
Všimněte si, že v řádcích, které obsahují REMOTE_ADDR, stačí nahradit ČÍSLA příslušnými čísly vaší IP.
Pokud byla například vaše IP adresa 95.217.228.176, řádek by měl znít:

RewriteCond %{REMOTE_ADDR} !^95\.217\.228\.176$

Pro každou povolenou IP adresu přidejte samostatný řádek. Pak restartujte službu Apache, aby se změny projevily.

Moderátor

Vložte tento snippet do serverového bloku souboru virtuálního hostera. I zde musíte přidat řádek povolení pro každou povolenou adresu IP.

location = /wp-login.php {

     allow 192.168.1.1; #IP adresu 1 pro každou povolenou adresu IP jeden řádek

     allow 172.16.1.1; #IP adresa 2

     deny all;

     include snippets/fastcgi-php.conf;

     fastcgi_pass unix:/run/php/php7.4-fpm.sock;

     }

Restartujte službu nginx, aby se změny projevily.

Tip: Použijte bránu firewall CDN


Ochrana: 🔒🔒🔒🔒🔒
Technické úsilí: 🛠️

Sítě CDN mohou poskytovat velmi dobrou ochranu konfigurací brány firewall tak, aby spouštěla dotaz captcha před přihlašovacím formulářem.
Zde je návod pro Cloudflare. V bezplatném plánu Cloudflare můžete vytvořit až 5 pravidel.

1. Přihlaste se do cloudflareDashboardu, přejděte do části Firewall a vytvořte nové pravidlo pro firewall.

2. Údaje pro pravidlo jsou:

WordPress Brute Force CDN Firewall

To by bylo.

Tip: Vytvořte seznam blokovaných přes Fail2Ban


Ochrana: 🔒🔒🔒🔒
Technické úsilí: 🛠️🛠️🛠️🛠️

Pokud nemáte pevnou IP adresu a nepoužíváte CDN, můžete vytvořit seznam blokovaných prostřednictvím Fail2Ban. Dobré návody naleznete zde:

Všimněte si však, že je ho třeba přizpůsobit konkrétně adrese URL /wp-login.

Tip: využití Raidboxes Dashboardu

Ochrana: 🔒🔒🔒🔒🔒
Technické úsilí: 🛠️

V kombinaci s bezpečným uživatelským jménem a heslem a Raidboxes single sign on.

Zákazníci u Raidboxes již mají konfigurovatelný modul Anti Brute Force na každé ze svých instancí.
Spolu s jednotným přihlašováním se jedná o jedno z nejvyšších nastavení zabezpečení, které můžete mít bez jakýchkoli technických potíží.

V samotném WordPressu

Jakmile provedete tyto kroky, budete velmi dobře chráněni před útoky.
Pokud však nemůžete použít toto řešení, protože třeba nemáte přístup k nastavení serveru nebo záznamům DNS pro nastavení CDN, mám pro vás několik dalších kroků.

Opatření 2: Zabránit výčtu uživatelských jmen

Než se obrátíme na bezpečná hesla, začněme od počátku: u uživatelského jména.

Uživatelská jména představují 50 procent přístupu – a WordPress bohužel velmi usnadňuje čtení uživatelského (přihlašovacího) jména pro všechny vytvořené účty s admin právy. A to automatizovaně. Tomu můžete zabránit buď tím, že to uděláte sami a zabezpečíte svůj WordPress – nebo instalací následujících pluginů.

Tip: Řešení pomocí pluginů


Ochrana: 🔒🔒🔒
Technické úsilí: 🛠️

Plugin 1: Unified Login Error Messages
Tento plugin potlačuje výstup různých chybových zpráv v případě nesprávných pokusů o přihlášení. Protože WordPress v současné době vydává jinou chybovou zprávu při existenci uživatelského jména a jinou při neexistenci. Díky tomu je snadné zjistit, zda zadaný uživatel existuje.

Plugin 2: Stop User Enumeration
Stop User Enumeration dělá přesně to, co říká: Blokuje neoprávněné požadavky do vašeho WordPressu, například čtení uživatelských jmen prostřednictvím archivu autorů.

Tip: Řešení pomocí funkcí.php

Ochrana: 🔒🔒🔒
Technické úsilí: 🛠️🛠️

Pokud dáváte přednost tomu, abyste převzali kontrolu sami, můžete upravit funkce.php aktivní šablony (předem si vytvořte zálohu).

Přidejte následující kód:

Kód PHP

// If the user is not authenticated as an admin
if (!is_admin()) {
// RegEx to check if the request went to an “/author=INT” endpoint
if (preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING'])) die();    add_filter('redirect_canonical', 'stop_user_enum', 10, 2);
}
function stop_user_enum($redirect, $request) {
// // RegEx to check if the the request went to an “/author=INT” endpoint but with the permalink furl format
if (preg_match('/\?author=([0-9]*)(\/*)/i', $request)) die(); else return $redirect;
}

Tip: využití Raidboxes Dashboardu


Ochrana: 🔒🔒🔒
Technické úsilí: 🛠️

Zákazníci u Raidboxes těží z již hotových řešení v Raidboxes Dashboardu. Stačí je jen přijmout.

Opatření 3: "Používejte pouze silná hesla"

Poznámka: Pro Raidboxes Při registraci nového účtu žádáme o věci při přiřazování hesel, které mnohem ztěžují dotazy hrubou silou. To zahrnuje: 

  • Předepsaná minimální délka
  • Komplexnost
  • Zda lze heslo nalézt ve slovníku (anglicky nebo německy)
  • Zda obsahuje datum
  • Pokud se někdy vyskytlo známé prolomení hesla (anonymní a nesledovatelné)

Hesla jsou nedostatečná: protože jsou uhodnutelná (brute force), čitelná (key logger atd.), načitatelná (kvůli žádnému nebo špatnému šifrování / ukládání v datových úložištích), rozpoznávají pouze autorizaci zařízení, ale ne identitu osoby za ním a jsou obvykle obtížně zapamatovatelná (pokud jsou "bezpečná").

Na druhý problém existují správci hesel, jako jsou 1Password, BitWarden, KeePass a další. 

Pokud jsme v prostředí WordPressu, musíme se vyrovnat se skutečností, že musíme používat hesla.

Co je tedy "bezpečné" heslo?

Bezpečné heslo je dlouhé heslo, které má určitý stupeň složitosti. 

Ano, délka hesla je důležitější než jeho složitost. 8místné heslo lze uhodnout za 25$ USD během 12 minut, i když se skládá ze spousty speciálních znaků, velkých písmen a čísel.

Následující GIF velmi dobře ilustruje, proč má délka větší váhu než složitost:

WordPress Brute Force Bezpečné heslo
Credit: Intel Security // Intel.com

Hackeři pak také nemají chuť investovat spoustu peněz nebo času do intenzivních výpočtů dlouhých hesel. Proto je pravidlem: čím delší je vaše heslo, tím lépe!

Ale dlouhá a složitá hesla jsou těžko zapamatovatelná!

To je pravda, ale v době správců hesel si stačí zapamatovat dlouhé a složité heslo a zbytek vytvořit a uložit těmito správci.

Pokud máme jen toto jedno heslo a čas od času jej občas změníme, jsme v bezpečí.

Zde je veřejné tajemství, jak vytvořit dlouhá a složitá hesla a okamžitě si je zapamatovat:

WordPress Brute Force komplexní hesla
Credit: xkcd.com 

To znamená, že si můžeme vzít tento komiks XKCD k srdci a vytvořit dlouhé heslo podle jednoho z následujících vzorů:

Sedadlo ve vlaku + polní cesta-7mrknutí okna

Nebo použijeme trochu těžší celé věty:

Rád_jím_pelmeně_jen-3 _krát_denně

Vytvořili jsme poměrně nesmyslnou větu se speciálními znaky a číslicí, která je velmi obtížně uhodnutelná a přitom zapamatovatelná (plus body za rým). Tomu se říká tzv. heslová fráze.

Mnoho správců hesel, jako je BitWarden vám vytvoří takové dobře zapamatovatelné, leč složité heslové fráze.

Doplňující info: Použijte zabezpečené uživatelské jméno

Jak bylo uvedeno výše: 50 procent vašeho přístupu tvoří uživatelské jméno.

Pokud útočící osoba zná tuto část přístupu, pak má polovinu hotovu. Vše, co zbývá, je heslo. Nepoužívejte tedy uživatelská jména, jako je admin, administrator nebo vaše jméno, nepoužívejte název webu nebo domény ani nic, co má co do činění se samotnou stránkou. 

Příklad

Pokud se váš web jmenuje www.ireallylovecats.com, neberte si nic co nějak souvisí s kočkami

Ideálně, uděláte-li stejný trik s heslem (viz výše) a použijete dlouhou větu plus složitý zápis jako asfalt/může/také/se/7/ koření.

Tvorba hesla u Raidboxes

Vytvořte heslo a uživatelské jméno s maximální délkou (ve WordPressu aktuálně 60 znaků pro uživatelské jméno a 64 znaků pro heslo, viz vlastnosti databáze) a z mnoha písmen, číslic a speciálních znaků – pak jednoduše použijte v Dashboardu přihlašování single sign on. Bezpečné přihlášení jedním kliknutím.

Opatření 4: Bezpečnostní pluginy

Tip: Všestranné pluginy

Ochrana: 🔒🔒🔒🔒

Technické úsilí: 🛠️🛠️  🛠️🛠️🛠️

Na trhu existuje mnoho bezpečnostních WordPress pluginů, například:

Všechny tyto bezpečnostní pluginy nabízejí již integrovanou ochranu proti hrubé síle a mnoho dalšího. Pro většinu WordPress webových stránek bude instalace a údržba těchto pluginů jako ochrana dostačující. Také jejich konfigurace a údržba je minimální.

Pluginy však mají (ve většině případů malou) nevýhodu: zatížení serveru hrubou silou nelze těmito pluginy snížit. Tyto pluginy potřebují proces PHP pro kontrolu, zda se jedná o platný přístup, zda IP není na seznamu blokovaných.

To vše zatěžuje při každém požadavku server. Samozřejmě pořád méně než samotný pokus o přihlášení – a dokud server není skutečně součástí, musí útok nabývat rozměrů téměř D/DOS – ovšem to nelze ignorovat.

Ale zpět k mnoha výhodám pluginů: Pokud jsou pluginy vždy aktuální, jsou i nové útoky rychle detekovány a zmírněny, aniž byste vy sami museli přiložit ruku k dílu.

Tip: Skrýt přihlášení WP

Ochrana: 🔒

Technické úsilí: 🛠️

Security through obscurity je fráze kterou se tato metoda často označuje v oblasti zabezpečení.

V konečném důsledku to znamená pokusit se zastavit útoky pouhým zamlžením problému. Funguje to dobře v několika případech, protože útoky brute force neprocházejí přihlašovacím formulářem, ale používají query parametry ke spuštění pokusů o přihlášení.


Jen proto, že výchozí adresa URL, například /wp-admin nebo /wp-login.* není dostupná, se tyto útoky nezastaví.

Závěr

Doufám, že jsem byl schopen vysvětlit různé typy útoků brute force a dát vám tipy, jak před nimi v budoucnu chránit svůj WordPress. Máte-li jakékoli další dotazy, těším se na váš komentář!

Líbil se vám tento článek?

Svou recenzí nám pomůžete zlepšit náš obsah.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Povinná pole jsou označena *.