Modul 7 · 7.3
Bejelentkezés: jelszavak, kétlépcsős azonosítás és brute force
Modul 7: Biztonság · Olvasási idő: 9 perc
Tanulási cél: Ennek a leckének a végén Ön képes lesz erős jelszavakkal, kétlépcsős azonosítással és a bejelentkezési kísérletek korlátozásával levédeni a weboldalára való bejelentkezést, és tudni fogja, mi az a xmlrpc.php.
Kulcsfogalmak: jelszókezelő, jelmondat, egyedi jelszó, kétlépcsős azonosítás (2FA, TOTP), passkey, brute force, bejelentkezési kísérletek korlátozása, wp-login.php IP-cím alapú korlátozása, xmlrpc.php, kiszivárgó felhasználónevek (REST, ?author=), alkalmazásjelszavak
A jelszó: hosszú és egyedi
Egy jó jelszónak két tulajdonsága van:
- Hosszú: a hossz jobban számít, mint a különleges karakterek. Egy négy öt véletlenszerű szóból álló jelmondat (
szita-pingvin-oktober-lampas) erősebb és könnyebben megjegyezhető, mint aJ3lsz0!. A holland kormány Veilig Internetten nevű kampánya legalább 12 karakteres, egyedi jelszót javasol, lehetőleg jelmondat formájában. - Egyedi: máshol sehol nem használt. A credential stuffing (7.1. lecke) csak akkor működik, ha ugyanazt a jelszót újra felhasználja.
Senki nem jegyez meg tucatnyi hosszú, egyedi jelszót. Éppen ezért használjon jelszókezelőt: egy programot, amely elkészíti, tárolja és kitölti Ön helyett a jelszavakat. Így csak egyet kell megjegyeznie: a jelszókezelő saját jelszavát, amelyet szintén érdemes kétlépcsős azonosítással is védeni.
Azt, hogy egy jelszó szerepel-e valamelyik ismert adatszivárgásban, a haveibeenpwned.com oldalon ellenőrizheti. Ha az e-mail címe szerepel egy szivárgásban, változtassa meg a jelszót minden olyan szolgáltatásnál, ahol ugyanazt a jelszót használta.
Kétlépcsős azonosítás
A kétlépcsős azonosítás (2FA) esetén a bejelentkezéshez a jelszó mellett még valami másra is szükség van: általában egy hatjegyű kódra, amelyet a telefonján lévő alkalmazás (egy authentikátor, a TOTP szabvány szerint) állít elő. Egy betörő, aki ismeri a jelszavát, így sem jut be.
A WordPress nem rendelkezik beépített kétlépcsős azonosítással. Ezt bővítménnyel adhatja hozzá. Sok létezik közülük; egy egyszerű opció a Two Factor, amelyet maguk a WordPress fejlesztői készítettek. A biztonsági bővítmények gyakran szintén tartalmazzák. Válogatáskor ügyeljen a következőkre:
- TOTP-alkalmazások és tartalék kódok (arra az esetre, ha elveszítené a telefonját); az e-mailben küldött kódok gyengébbek, mivel a postafiókja is feltörhető;
- kötelezővé tehető-e adminisztrátorok és szerkesztők számára;
- passkey-k: bejelentkezés ujjlenyomattal, arcfelismeréssel vagy biztonsági kulccsal, jelszó nélkül. Ehhez is léteznek bővítmények. A passkey-k ellenállnak az adathalászatnak, mert csak a valódi weboldalon működnek.
Kapcsolja be a kétlépcsős azonosítást mindenhol, ami a weboldala körül van: a tárhelypanelen, az e-mailjén, a regisztrátorán és a jelszókezelőjén is. Egy betörő, aki átveszi a tárhelypanelt, nem is szorul rá a WordPress jelszavára.
Brute force és a bejelentkezési kísérletek korlátozása
Egy nyitott WordPress weboldal egész nap kap bejelentkezési kísérleteket a wp-login.php oldalon, gyakran admin felhasználónévvel és gyakran használt jelszavak listájával. Hosszú jelszóval és 2FA-val nem jutnak be, de minden egyes kísérlet számítási kapacitást igényel a szervertől (egy teljes WordPress indítást). Egy nagy hullám esetén a weboldala lelassulhat.
A WordPress önmagában nem korlátozza a kísérletek számát. Ami segít, a "minél korábban megállítani" elve szerint sorrendben:
- A szerveren: sok tárhelyszolgáltató blokkolja azt az IP-címet, amely rövid időn belül sok sikertelen kísérletet tesz, még mielőtt a WordPress elindulna (egy tűzfallal vagy egy webszerver-funkcióval). Kérdezze meg a tárhelyszolgáltatóját, hogy ez hogyan történik.
- A wp-login.php csak az Ön IP-címéről: néhány sorral a
.htaccessfájlban (LiteSpeed és Apache esetén):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>Ez jól működik, ha fix IP-címmel rendelkezik. Ha nincs ilyen (otthonról, telefonról), akkor kizárhatja saját magát, ha a címe megváltozik. Alternatívaként használhat egy extra jelszót a bejelentkezési oldalon (egy "védett mappa", basic authentication), amely eltér a WordPress jelszavától.
- Egy bővítmény, amely korlátozza a kísérleteket: öt sikertelen kísérlet után az IP-cím egy ideig blokkolva lesz. Működik, de csak akkor lép életbe, amikor a WordPress már elindult, így a számítási teher megmarad.
A bejelentkezési oldal elrejtése vagy átnevezése (például /sajat-belepes a /wp-login.php helyett) csökkenti a naplóban keletkező zajt. Ez nem igazi védelem, és néhány bővítmény és sablon az alapértelmezett címet várja. Kiegészítésként rendben van, de sosem helyettesítheti a jó jelszót és a 2FA-t.
xmlrpc.php
A xmlrpc.php egy régi kapcsolódási pont, amely még a REST API előtti időkből származik, és amellyel alkalmazások és más weboldalak kommunikálnak a WordPress-szel. Néhány alkalmazás, a Jetpack és néhány integráció még ma is használja. A legtöbb weboldal számára felesleges.
A betörők szeretik a xmlrpc.php-t, mert egyetlen kérésben akár több száz jelszót is kipróbálhatnak (a system.multicall funkcióval), és mert más weboldalak elleni támadásokra is visszaélhető (pingback). Teendők:
- Ha nem használja: blokkolja. Néhány tárhelyszolgáltató, köztük a WebOké is, alapértelmezés szerint szerveroldalon blokkolja a xmlrpc.php-t. Máskülönben egy sorral a
.htaccessfájlban vagy egy biztonsági bővítménnyel teheti meg. - Ha mégis használja (például egy olyan alkalmazáshoz, amelynek szüksége van rá): hagyja nyitva, de gondoskodjon erős jelszavakról, 2FA-ról és a kísérletek korlátozásáról. A modern alkalmazások általában a REST API-t használják alkalmazásjelszóval (3.3. lecke).
Kiszivárgó felhasználónevek
A 3.3. leckében láthatta, hogy a WordPress megmutat egy, a felhasználónévből származtatott információt:
- a
https://example.com/?author=1átirányít a/author/<nev>/címre; - a
https://example.com/wp-json/wp/v2/usersmegjeleníti mindazok slugjait, akik publikáltak valamit.
Baj ez? Egy felhasználónév nem jelszó. Hosszú, egyedi jelszóval és 2FA-val nem sokat számít. Viszont a betörő kezébe adja a bejelentkezési adatok felét, és megkönnyíti a célzott adathalászatot. Ésszerű intézkedések:
- adjon az adminisztrátoroknak olyan felhasználónevet, amely nem egyezik a nyilvános nevükkel, és ne publikáljon adminisztrátori fiókkal (3.3. lecke);
- korlátozza a felhasználói listát a REST API-ban egy biztonsági bővítménnyel vagy néhány sornyi kóddal, ha nincs rá szüksége. Ne zárja le teljesen a REST API-t: a blokkszerkesztőnek és sok bővítménynek szüksége van rá.
Alkalmazásjelszavak
Az alkalmazásjelszavak (3.3. lecke) biztonságos módot jelentenek egy alkalmazás vagy rendszer hozzáférésének megadására, de megkerülik a kétlépcsős azonosítást: egy alkalmazásjelszóval rendelkező alkalmazásnak nincs szüksége kódra. Csak akkor hozzon létre ilyet, ha szükséges, alacsony jogosultságú fiókkal, és vonja vissza, ha már nem használja az adott kapcsolatot.
Összefoglalás
- Használjon hosszú, egyedi jelszavakat (jelmondatokat) jelszókezelőben.
- Kapcsolja be a kétlépcsős azonosítást, egy bővítménnyel a WordPressben, valamint a tárhelypanelen, az e-mailjén és a regisztrátorán is.
- Állítsa meg a bejelentkezési kísérleteket a lehető legkorábban: a szerveren, egy IP-szabállyal vagy extra jelszóval, vagy egy bővítménnyel.
- Blokkolja a xmlrpc.php-t, ha nem használja.
- A kiszivárgott felhasználónevek nem katasztrófa, de jelzésértékűek: ne publikáljon adminisztrátorként, és korlátozza a REST felhasználói listát, ha nincs rá szüksége.
Kvíz
Feladat
A7.3 feladat: Mit árul el a weboldala bejelentkezéskor? Adja meg a weboldala címét, és igazolja, hogy az a saját weboldala (a feladat kódjával, TXT-rekordként vagy fájlként). A program három dolgot ellenőriz: visszaad-e a xmlrpc.php egy funkciólistát (nyitott) vagy blokkolva van-e, a /wp-json/wp/v2/users megjelenít-e felhasználóneveket (slugokat), és hova irányít át a /?author=1. Jelölje meg, hogy szüksége van-e xmlrpc.php-re; ha nem, egy nyitott xmlrpc.php piros jelzést kap. A kiszivárgott slugok narancssárgát kapnak, magyarázattal.
D7.3 feladat: Kétlépcsős azonosítás bekapcsolása. Kapcsolja be a kétlépcsős azonosítást a WordPress weboldala összes adminisztrátora számára, valamint a tárhelypanelen és az e-mailjén is. Tárolja a tartalék kódokat a jelszókezelőjében. Jelölje be elemenként, hogy aktív-e, és jegyezze fel, melyik módszert használja (alkalmazás, passkey, e-mail), és hol tárolja a tartalék kódokat. Jegyezze fel azt is, hogyan védi tovább a wp-login.php-t, és miért ezt a módszert választotta.
D7.3. feladat: Kétlépcsős azonosítás bekapcsolása
Ezt a feladatot saját maga végzi el, senki nem ellenőrzi. Pipálja ki, amit elvégzett, és jelölje meg a feladatot elvégzettként.
Adminisztrátoroknál inkább egy alkalmazást vagy passkey-t használjon, ne csak e-mailt. Egy állandó IP-címet engedélyezhet a wp-login.php oldalhoz; változó címek esetén inkább a bejelentkezési kísérletek korlátozása illik jobban.
A pipái és jegyzetei csak ebben a böngészőben maradnak meg, sehova nem küldjük el őket. Ha bejelentkezett, a Fiókomban csak azt tároljuk, hogy elvégezte a feladatot.
További olvasnivaló
Ezek a cikkek a WebOké panelben szereplő lépéseket írják le; más panelekben a folyamat hasonlóan működik.
- DirectAdmin útmutató 3.7: Biztonságos jelszavak és a teendők jelszó kiszivárgása esetén
- A kétlépcsős azonosítás beállítása a Fiókom felületen és egy hitelesítő alkalmazásban
- WordPress: az xmlrpc.php nem érhető el
- A WordPress wp-login.php védelme
- DirectAdmin útmutató 15.9: Jelszóval védett könyvtárak
- Biztonságos bejelentkezés (Veilig Internetten, holland kormányzati kampány): https://veiliginternetten.nl/veilig-inloggen/
- Brute force támadások (developer.wordpress.org, angol nyelven): https://developer.wordpress.org/advanced-administration/security/brute-force/
