Modul 7 · 7.3
Prihlasovanie: heslá, dvojfaktorové overenie a brute force
Modul 7: Zabezpečenie · Čas čítania: 9 minút
Cieľ lekcie: Po tejto lekcii dokážete zabezpečiť prihlasovanie na svojej stránke silnými heslami, dvojfaktorovým overením a obmedzením pokusov o prihlásenie, a budete vedieť, čo je xmlrpc.php.
Kľúčové pojmy: správca hesiel, heslová fráza, jedinečné heslo, dvojfaktorové overenie (2FA, TOTP), passkey, brute force, obmedzenie pokusov o prihlásenie, wp-login.php na IP adresu, xmlrpc.php, unikajúce používateľské mená (REST, ?author=), aplikačné heslá
Heslo: dlhé a jedinečné
Dobré heslo má dve vlastnosti:
- Dlhé: dĺžka je dôležitejšia ako zvláštne znaky. Heslová fráza zo štyroch až piatich náhodných slov (
sito-tucniak-oktober-lampas) je silnejšia a lepšie zapamätateľná akoW8w00rd!. Odporúča sa jedinečné heslo s minimálne 12 znakmi, najlepšie vo forme heslovej frázy. - Jedinečné: nikde inde nepoužité. Credential stuffing (lekcia 7.1) funguje len vtedy, ak heslo znovu použijete.
Nikto si nepamätá desiatky dlhých jedinečných hesiel. Preto používajte správcu hesiel: program, ktorý ich za vás vytvára, uchováva a vypĺňa. Potom si musíte zapamätať iba jedno: heslo do samotného správcu, ktoré zabezpečíte aj dvojfaktorovým overením.
Či sa vaše heslo nachádza v známom úniku dát, môžete overiť na haveibeenpwned.com. Ak sa vaša e-mailová adresa nachádza v úniku, zmeňte heslo pri každej službe, kde ste rovnaké heslo použili.
Dvojfaktorové overenie
Pri dvojfaktorovom overení (2FA) potrebujete pri prihlásení okrem hesla ešte niečo navyše: zvyčajne šesťmiestny kód z aplikácie v telefóne (autentifikátor podľa štandardu TOTP). Útočník s vaším heslom sa tak dnu ešte nedostane.
WordPress nemá dvojfaktorové overenie zabudované. Pridáte ho pluginom. Existuje ich veľa; jednoduchým je Two Factor, vytvorený prispievateľmi samotného WordPressu. Majú ho na palube aj bezpečnostné pluginy. Pri výbere dbajte na:
- TOTP aplikácie a záložné kódy (pre prípad straty telefónu); kódy cez e-mail sú slabšie, pretože aj poštová schránka môže byť hacknutá;
- možnosť vynútiť ho pre administrátorov a redaktorov;
- passkeys: prihlásenie odtlačkom prsta, tvárou alebo bezpečnostným kľúčom, bez hesla. Existujú na to aj pluginy. Passkeys sú odolné voči phishingu, pretože fungujú iba na skutočnej stránke.
Zapnite dvojfaktorové overenie aj na všetkom, čo je okolo vašej stránky: hostingový panel, e-mail, registrátora a správcu hesiel. Útočník, ktorý prevezme váš hostingový panel, nepotrebuje vaše heslo do WordPressu.
Brute force a obmedzenie pokusov o prihlásenie
Otvorená stránka WordPress dostáva celý deň pokusy o prihlásenie na wp-login.php, často s menom admin a zoznamami bežne používaných hesiel. S dlhým heslom a 2FA sa dnu nedostanú, no každý pokus stojí váš server výpočtový výkon (úplné spustenie WordPressu). Pri veľkej vlne sa stránka spomalí.
WordPress sám počet pokusov neobmedzuje. Čo pomáha, v poradí od „zastaviť čo najskôr“:
- Na serveri: mnohí hostingoví poskytovatelia blokujú IP adresu, ktorá v krátkom čase urobí veľa neúspešných pokusov, ešte pred spustením WordPressu (pomocou firewallu alebo funkcie webového servera). Opýtajte sa svojho poskytovateľa hostingu, čo sa deje.
- wp-login.php iba pre vašu IP adresu: niekoľkými riadkami v súbore
.htaccess(pri LiteSpeed a Apache):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>Toto funguje dobre, ak máte pevnú IP adresu. Ak ju nemáte (doma, v telefóne), tak sa pri zmene svojej adresy sami odrežete. Alternatívou je ďalšie heslo na prihlasovacej stránke (tzv. „chránený priečinok“, basic authentication) s iným heslom, než je vaše heslo do WordPressu.
- Plugin na obmedzenie pokusov: po piatich neúspešných pokusoch je IP adresa na čas zablokovaná. Funguje, ale až keď WordPress už beží, takže výpočtová záťaž zostáva.
Skrytie alebo premenovanie prihlasovacej stránky (napríklad /moj-login namiesto /wp-login.php) znižuje šum vo vašom protokole. Nejde o skutočné zabezpečenie a niektoré pluginy a témy očakávajú štandardnú adresu. Je to v poriadku ako doplnok, nikdy ako náhrada silného hesla a 2FA.
xmlrpc.php
xmlrpc.php je staré rozhranie z čias pred REST API, cez ktoré s WordPressom komunikujú aplikácie a iné stránky. Stále ho používajú niektoré aplikácie, Jetpack a pár prepojení. Pre väčšinu stránok je zbytočné.
Útočníci majú radi xmlrpc.php, pretože v ňom možno v jednej požiadavke vyskúšať stovky hesiel naraz (pomocou funkcie system.multicall), a pretože sa dá zneužiť na útoky na iné stránky (pingbacky). Čo môžete urobiť:
- Ak ho nepoužívate: zablokujte ho. Niektorí poskytovatelia hostingu, vrátane WebOké, blokujú xmlrpc.php štandardne na serveri. Inak riadkom v
.htaccessalebo bezpečnostným pluginom. - Ak ho používate (napríklad pre aplikáciu, ktorá ho potrebuje): nechajte ho otvorený, ale zabezpečte silné heslá, 2FA a obmedzenie pokusov. Moderné aplikácie zvyčajne používajú REST API s aplikačným heslom (lekcia 3.3).
Unikajúce používateľské mená
V lekcii 3.3 ste videli, že WordPress zobrazuje odvodeninu z používateľských mien:
https://example.com/?author=1presmeruje na/author/<meno>/;https://example.com/wp-json/wp/v2/userszobrazí zoznam slugov všetkých, ktorí niečo publikovali.
Je to problém? Používateľské meno nie je heslo. S dlhým jedinečným heslom a 2FA na tom veľmi nezáleží. No dáva to útočníkovi polovicu prihlasovacích údajov a uľahčuje cielený phishing. Rozumné opatrenia:
- dajte administrátorom používateľské meno, ktoré nie je ich verejným menom, a nepublikujte pod administrátorským účtom (lekcia 3.3);
- obmedzte zoznam používateľov v REST API bezpečnostným pluginom alebo niekoľkými riadkami kódu, ak ho nepotrebujete. Nezatvárajte REST API úplne: blokový editor a mnohé pluginy ho potrebujú.
Aplikačné heslá
Aplikačné heslá (lekcia 3.3) sú bezpečný spôsob, ako dať aplikácii alebo systému prístup, no obchádzajú vaše dvojfaktorové overenie: aplikácia s aplikačným heslom nepotrebuje kód. Vytvárajte ich iba keď je to nutné, pri účte s nízkou rolou, a zrušte ich, keď prepojenie prestanete používať.
Zhrnutie
- Používajte dlhé, jedinečné heslá (heslové frázy) v správcovi hesiel.
- Zapnite dvojfaktorové overenie, pluginom vo WordPresse a aj na hostingovom paneli, e-maile a u registrátora.
- Zastavte pokusy o prihlásenie čo najskôr: na serveri, IP pravidlom alebo ďalším heslom, alebo pluginom.
- Zablokujte xmlrpc.php, ak ho nepoužívate.
- Uniknuté používateľské mená nie sú katastrofa, ale varovanie: nepublikujte ako administrátor a obmedzte zoznam používateľov v REST API, ak ho nepotrebujete.
Kvíz
Úloha
Úloha A7.3: Čo vaša stránka prezrádza pri prihlasovaní? Zadajte adresu svojej stránky a preukážte, že ide o vašu vlastnú stránku (kódom úlohy, ako TXT záznam alebo ako súbor). Program skontroluje tri veci: či xmlrpc.php vracia zoznam funkcií (otvorené) alebo je zablokovaný, či /wp-json/wp/v2/users zobrazuje používateľské mená (slugy), a kam presmeruje /?author=1. Vyplňte, či xmlrpc.php potrebujete; ak nie, otvorené xmlrpc.php bude označené červenou. Uniknuté slugy sú oranžové s vysvetlením.
Úloha D7.3: Zapnutie dvojfaktorového overenia. Zapnite dvojfaktorové overenie pre všetkých administrátorov vašej stránky WordPress, a tiež na vašom hostingovom paneli a e-maile. Uložte si záložné kódy do správcu hesiel. Pri každej časti zaznačte, že je zapnutá, a poznamenajte si, ktorú metódu používate (aplikácia, passkey, e-mail) a kde sa nachádzajú záložné kódy. Poznamenajte si tiež, ako extra chránite wp-login.php a prečo ste sa pre tento spôsob rozhodli.
Úloha D7.3: Zapnutie dvojfaktorového overenia
Túto úlohu vykonávate sami, nikto ju nekontroluje. Odškrtnite, čo ste urobili, a označte úlohu ako splnenú.
Pri správcoch používajte radšej aplikáciu alebo passkey než len e-mail. Pevnú IP adresu môžete povoliť na wp-login.php; pri meniacich sa adresách sa lepšie hodí obmedzenie počtu pokusov o prihlásenie.
Vaše zaškrtnutia a poznámky zostávajú iba v tomto prehliadači, nikam ich neposielame. Po prihlásení si v sekcii Moje kurzy uchovávame iba to, že ste úlohu splnili.
Ďalšie čítanie
Tieto články popisujú postup v paneloch WebOké; v iných paneloch to funguje podobne.
- Návod na DirectAdmin 3.7: Bezpečné heslá a čo robiť pri úniku hesla
- Dvojstupňové overenie v Môj WebOké a nastavenie aplikácie Authenticator
- WordPress: prístup k xmlrpc.php nefunguje
- Zabezpečenie wp-login.php vo WordPresse
- Návod na DirectAdmin 15.9: Adresáre chránené heslom
- Bezpečné prihlasovanie (Veilig Internetten, holandská vláda): https://veiliginternetten.nl/veilig-inloggen/
- Útoky typu brute force (developer.wordpress.org, anglicky): https://developer.wordpress.org/advanced-administration/security/brute-force/
