Přejít na obsah

Nastavení cookies

Zvolte, které druhy cookies povolíte. Svou volbu můžete kdykoli změnit přes Nastavení cookies v dolní části každé stránky. Prohlášení o ochraně osobních údajů

Nezbytné

Vždy zapnuté

Potřebné pro přihlášení, uchování košíku a zapamatování vašich voleb. Jsou vždy zapnuté.

Které cookies?
  • weboke_sessie, weboke_klant, weboke_remember: vaše relace a trvalé přihlášení
  • weboke_basket: váš košík
  • wkBtwIncl: zobrazení cen s DPH nebo bez DPH
  • wok_cookies: vaše volba cookies, 12 měsíců

Měří, která reklama vede k návštěvě nebo objednávce, abychom neplatili za reklamy, které nic nepřinášejí.

Které cookies?
  • Google Ads přes Google Tag Manager (_gcl_au, _gcl_aw), až 90 dní
  • OpenAI Ads, reklamy v ChatGPT
  • wok_aff: partner, který vás k nám doporučil (partnerský program), 60 dní

4,6

Země a jazyk

Každá země má vlastní web s cenami a DPH dané země.

Zobrazit

Přihlašování: hesla, dvoufázové ověření a brute force

Modul 7: Zabezpečení · Doba čtení: 9 minut

Cíl lekce: Po této lekci dokážete zabezpečit přihlašování na svém webu pomocí silných hesel, dvoufázového ověření a omezení počtu pokusů o přihlášení, a budete vědět, co je xmlrpc.php.

Klíčové pojmy: správce hesel, heslová fráze, jedinečné heslo, dvoufázové ověření (2FA, TOTP), passkey, brute force, omezení pokusů o přihlášení, wp-login.php na IP adresu, xmlrpc.php, uniklá uživatelská jména (REST, ?author=), aplikační hesla

Heslo: dlouhé a jedinečné

Dobré heslo má dvě vlastnosti:

  1. Dlouhé: délka je důležitější než neobvyklé znaky. Heslová fráze ze čtyř nebo pěti náhodných slov (sito-tucnak-rijen-lucerna) je silnější a snáze zapamatovatelná než W8w00rd!. Nizozemská vládní kampaň Veilig Internetten doporučuje jedinečné heslo o minimálně 12 znacích, nejlépe heslovou frázi.
  2. Jedinečné: nepoužité nikde jinde. Credential stuffing (lekce 7.1) funguje jen tehdy, pokud heslo opakovaně používáte.

Nikdo si nepamatuje desítky dlouhých jedinečných hesel. Použijte proto správce hesel: program, který je za Vás vytváří, uchovává a vyplňuje. Pak si stačí zapamatovat jen jedno heslo, totiž to k samotnému správci hesel, a i to zabezpečte dvoufázovým ověřením.

Zda se heslo nachází ve známém úniku dat, můžete zjistit na haveibeenpwned.com. Pokud je Váš e-mail v úniku, změňte heslo u každé služby, kde jste stejné heslo používali.

Dvoufázové ověření

Při dvoufázovém ověření (2FA) potřebujete při přihlašování kromě hesla ještě něco navíc: obvykle šestimístný kód z aplikace v telefonu (autentizátor podle standardu TOTP). Útočník, který zná Vaše heslo, se pak stále nedostane dovnitř.

WordPress nemá dvoufázové ověření zabudované. Přidáte ho pomocí pluginu. Existuje jich mnoho; jednoduchou možností je Two Factor, vytvořený přispěvateli samotného WordPressu. I bezpečnostní pluginy ho často mají zabudovaný. Při výběru si všímejte:

  • TOTP aplikací a záložních kódů (pro případ, že ztratíte telefon); kódy e-mailem jsou slabší, protože i Vaše schránka může být napadena;
  • možnosti vynutit ho pro administrátory a redaktory;
  • passkeys: přihlášení otiskem prstu, obličejem nebo bezpečnostním klíčem, bez hesla. I pro ně existují pluginy. Passkeys jsou odolné vůči phishingu, protože fungují jen na skutečném webu.

Zapněte dvoufázové ověření i na všem, co je kolem Vašeho webu: na hostingovém panelu, e-mailu, u registrátora domény a ve správci hesel. Útočník, který ovládne Váš hostingový panel, Vaše WordPress heslo nepotřebuje.

Brute force a omezení pokusů o přihlášení

Otevřený WordPress web dostává celý den pokusy o přihlášení na wp-login.php, často se jménem admin a seznamy často používaných hesel. Při dlouhém hesle a 2FA se útočníci nedostanou dovnitř, ale každý pokus stojí Váš server výpočetní výkon (kompletní spuštění WordPressu). Při velké vlně pokusů se Váš web zpomalí.

WordPress sám počet pokusů neomezuje. Co pomáhá, v pořadí od „zastavit co nejdříve“:

  1. Na serveru: řada hostingů blokuje IP adresu, která v krátké době provede mnoho neúspěšných pokusů, ještě předtím, než se WordPress spustí (pomocí firewallu nebo funkce webového serveru). Zeptejte se svého hostingu, co se v takovém případě děje.
  2. wp-login.php jen pro Vaši IP adresu: pomocí několika řádků v souboru .htaccess (u LiteSpeed a Apache):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>

To funguje dobře, pokud máte pevnou IP adresu. Pokud ji nemáte (doma, v telefonu), zablokujete se sami v okamžiku, kdy se Vaše adresa změní. Alternativou je dodatečné heslo na přihlašovací stránce („chráněná složka“, basic authentication) s jiným heslem, než je Vaše WordPress heslo.

  1. Plugin omezující pokusy: po pěti neúspěšných pokusech je IP adresa na čas zablokována. Funguje to, ale až poté, co se WordPress spustí, takže výpočetní zátěž zůstává.

Skrytí nebo přejmenování přihlašovací stránky (například na /muj-login místo /wp-login.php) snižuje šum ve Vašem logu. Nejedná se ale o skutečné zabezpečení a některé pluginy a šablony očekávají standardní adresu. V pořádku jako doplněk, nikdy jako náhrada silného hesla a 2FA.

xmlrpc.php

xmlrpc.php je stará rozhraní z doby před REST API, přes kterou s WordPressem komunikují aplikace a jiné weby. Stále ji používají některé aplikace, Jetpack a pár dalších propojení. Pro většinu webů je zbytečná.

Útočníci mají xmlrpc.php rádi, protože v ní lze jedním požadavkem vyzkoušet stovky hesel najednou (pomocí funkce system.multicall), a protože ji lze zneužít k útokům na jiné weby (pingbacky). Co dělat:

  • Nepoužíváte ji: zablokujte ji. Některé hostingy, včetně WebOké, blokují xmlrpc.php standardně na úrovni serveru. Jinak pomocí řádku v .htaccess nebo bezpečnostního pluginu.
  • Používáte ji (například kvůli aplikaci, která ji potřebuje): nechte ji otevřenou, ale zajistěte si silná hesla, 2FA a omezení pokusů. Moderní aplikace obvykle používají REST API s aplikačním heslem (lekce 3.3).

Uniklá uživatelská jména

V lekci 3.3 jste viděli, že WordPress zobrazuje odvozeninu uživatelských jmen:

  • https://example.com/?author=1 přesměruje na /author/<jméno>/;
  • https://example.com/wp-json/wp/v2/users zobrazí seznam slugů všech, kdo něco publikovali.

Je to problém? Uživatelské jméno není heslo. S dlouhým jedinečným heslem a 2FA na tom příliš nezáleží. Útočníkovi to ale dává polovinu přihlašovacích údajů a usnadňuje cílený phishing. Rozumná opatření:

  • dejte administrátorům uživatelské jméno, které není jejich veřejným jménem, a nepublikujte obsah pod administrátorským účtem (lekce 3.3);
  • pokud ho nepotřebujete, omezte seznam uživatelů v REST API pomocí bezpečnostního pluginu nebo pár řádků kódu. Nevypínejte REST API úplně: blokový editor a řada pluginů ho potřebují.

Aplikační hesla

Aplikační hesla (lekce 3.3) jsou bezpečný způsob, jak dát aplikaci nebo systému přístup, ale obcházejí Vaše dvoufázové ověření: aplikace s aplikačním heslem kód nepotřebuje. Vytvářejte je jen tehdy, je li to nutné, u účtu s nízkou rolí, a zrušte je, jakmile propojení přestanete používat.

Shrnutí

  • Používejte dlouhá, jedinečná hesla (heslové fráze) ve správci hesel.
  • Zapněte dvoufázové ověření, pomocí pluginu ve WordPressu a také na hostingovém panelu, e-mailu a u registrátora domény.
  • Zastavte pokusy o přihlášení co nejdříve: na serveru, pomocí IP pravidla nebo dodatečného hesla, nebo pomocí pluginu.
  • Zablokujte xmlrpc.php, pokud ji nepoužíváte.
  • Uniklá uživatelská jména nejsou katastrofa, ale varovný signál: nepublikujte jako administrátor a omezte seznam uživatelů v REST API, pokud ho nepotřebujete.

Kvíz

1. Které heslo je nejsilnější?



2. Proč je xmlrpc.php u útočníků oblíbená?



3. Nastavíte wp-login.php pevně na IP adresu Vaší kanceláře. Jaké je riziko?



4. Je přejmenování přihlašovací stránky na tajnou adresu dostatečné zabezpečení?



Úkol

Úkol A7.3: Co Váš web prozradí při přihlašování? Zadejte adresu svého webu a prokažte, že se jedná o Váš vlastní web (pomocí ověřovacího kódu úkolu, jako TXT záznam nebo jako soubor). Program zkontroluje tři věci: zda xmlrpc.php vrací seznam funkcí (otevřená) nebo je zablokovaná, zda /wp-json/wp/v2/users zobrazuje uživatelská jména (slugy), a kam přesměrovává /?author=1. Uveďte, zda xmlrpc.php potřebujete; pokud ne, otevřená xmlrpc.php je červeně. Uniklé slugy jsou oranžově s vysvětlením.

Úkol A7.3: Co Váš web prozradí při přihlašování?

Tato kontrola si vyžádá cesty, které necháte zkontrolovat jen u svého vlastního webu. Nejprve klikněte na "Zobrazit můj kód" a tento kód vložte jako TXT záznam na _weboke-cursus.<vaše doména> nebo jako soubor na svém webu (viz vysvětlení u kódu).



Co vyplníte a co zjistíme, neukládáme. Váš prohlížeč si pamatuje Vaše odpovědi a to, zda jste úkol splnili. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol měli (téměř) správně; i to tam můžete odstranit.

Úkol D7.3: Zapnutí dvoufázového ověření. Zapněte dvoufázové ověření pro všechny administrátory svého WordPress webu, a také na hostingovém panelu a e-mailu. Záložní kódy uložte do svého správce hesel. U každé součásti zaškrtněte, že je zapnutá, a poznamenejte si, jakou metodu používáte (aplikace, passkey, e-mail) a kde jsou uloženy záložní kódy. Zapište si také, jak dodatečně chráníte wp-login.php a proč jste zvolili právě tento způsob.

Úkol D7.3: Zapnutí dvoufázového ověření

Tento úkol provádíte sami; nikdo ho nekontroluje. Odškrtněte, co jste udělali, a označte úkol jako splněný.




Vaše zaškrtnutí a poznámky zůstávají pouze v tomto prohlížeči; nikam je neposíláme. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol splnili.

Další čtení

Tyto články popisují postup v panelech WebOké; v jiných panelech fungují obdobně.

Chvíli strpení…

Nastavení vašich domén

U každé domény nastavte jmenné servery, propojení s hostingem a to, kdo bude držitelem.

Načítání vašich domén…