Moodul 7 · 7.3
Sisselogimine: paroolid, kaheastmeline autentimine ja brute force
Moodul 7: Turvalisus · Lugemisaeg: 9 minutit
Õpieesmärk: pärast seda õppetundi oskad oma saidi sisselogimist kaitsta tugevate paroolide, kaheastmelise autentimise ja sisselogimiskatsete piiramisega, ning tead, mis on xmlrpc.php.
Põhimõisted: paroolihaldur, paroolifraas, unikaalne parool, kaheastmeline autentimine (2FA, TOTP), passkey, brute force, sisselogimiskatsete piiramine, wp-login.php IP-aadressi järgi, xmlrpc.php, lekkinud kasutajanimed (REST, ?author=), rakenduse paroolid
Parool: pikk ja unikaalne
Heal paroolil on kaks omadust:
- Pikk: pikkus loeb rohkem kui kummalised märgid. Paroolifraas neljast või viiest juhuslikust sõnast (
sõel-pingviin-oktoober-latern) on tugevam ja kergemini meeldejääv kuiW8w00rd!. Soovita kasutada unikaalset vähemalt 12 märgist koosnevat parooli, eelistatavalt paroolifraasi. - Unikaalne: ei kasutata kuskil mujal. Credential stuffing (õppetund 7.1) toimib ainult siis, kui kasutad parooli korduvalt.
Keegi ei pea meeles kümneid pikki unikaalseid paroole. Kasuta seetõttu paroolihaldurit: programmi, mis loob, säilitab ja täidab need sinu eest. Siis pead meeles pidama ainult ühte parooli, selle halduri enda oma, ja ka selle kaitsed kaheastmelise autentimisega.
Kas sinu parool esineb mõnes tuntud andmelekkes, saad kontrollida saidilt haveibeenpwned.com. Kui sinu e-posti aadress on lekke nimekirjas, muuda parool ära igas teenuses, kus sa sama parooli kasutasid.
Kaheastmeline autentimine
Kui kasutad kaheastmelist autentimist (2FA), vajad sisselogimisel lisaks paroolile veel midagi: tavaliselt kuuekohalist koodi telefoni rakendusest (autentikaator, mis järgib TOTP standardit). Sissetungija, kellel on sinu parool, ei pääse siis ikkagi sisse.
WordPressil pole sisseehitatud kaheastmelist autentimist. Lisad selle pluginaga. Valikuid on palju, lihtne näide on Two Factor, mille on teinud WordPressi enda kaastöötajad. Ka turvapluginatel on see sageli kaasas. Valides jälgi:
- TOTP-rakendusi ja varukoode (juhuks kui telefon kaob); e-posti teel saadetavad koodid on nõrgemad, kuna ka postkast võib häkitud saada;
- võimalust kohustada seda administraatoritele ja toimetajatele;
- passkey: sisselogimine sõrmejälje, näotuvastuse või turvavõtmega, ilma paroolita. Ka selleks on pluginaid. Passkey on kaitstud õngitsuse eest, kuna see töötab ainult ehtsal saidil.
Lülita kaheastmeline autentimine sisse ka kõigel, mis on sinu saidi ümber: majutuspaneelis, e-postis, domeenihalduris ja paroolihalduris. Sissetungija, kes saab ligipääsu sinu majutuspaneelile, ei vaja sinu WordPressi parooli.
Brute force ja sisselogimiskatsete piiramine
Avatud WordPressi sait saab terve päeva sisselogimiskatseid aadressile wp-login.php, tihti kasutajanimega admin ja levinud paroolide nimekirjadega. Pika parooli ja 2FA-ga nad sisse ei pääse, kuid iga katse koormab su serverit (täielik WordPressi käivitamine). Suure laine korral muutub sait aeglaseks.
WordPress ise katsete arvu ei piira. Mis aitab, "varajase peatamise" järjekorras:
- Serveris: paljud majutajad blokeerivad IP-aadressi, mis teeb lühikese aja jooksul palju ebaõnnestunud katseid, juba enne WordPressi käivitumist (tulemüüri või veebiserveri funktsiooniga). Küsi oma majutajalt, mida tehakse.
- wp-login.php ainult sinu IP-aadressile: paari reaga failis
.htaccess(LiteSpeedi ja Apache puhul):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>See toimib hästi, kui sul on fikseeritud IP-aadress. Kui seda pole (kodus, telefonis), lukustad end ise välja, kui su aadress muutub. Alternatiiv on lisaparool sisselogimislehel ("kaitstud kaust", basic authentication) teistsuguse parooliga kui su WordPressi parool.
- Plugin, mis piirab katseid: pärast viit ebaõnnestunud katset blokeeritakse IP-aadress mõneks ajaks. Toimib, aga alles siis, kui WordPress juba töötab, seega arvutuskoormus jääb.
Sisselogimislehe peitmine või ümbernimetamine (näiteks /mijn-login asemel /wp-login.php) vähendab müra sinu logis. See ei ole tõeline turvameede ning mõned pluginad ja teemad eeldavad vaikimisi aadressi. Sobib lisana, mitte kunagi hea parooli ja 2FA asemel.
xmlrpc.php
xmlrpc.php on vana liides ajast enne REST API-t, mille kaudu rakendused ja teised saidid WordPressiga suhtlevad. Seda kasutavad veel mõned rakendused, Jetpack ja paar liidest. Enamiku saitide jaoks on see ülearune.
Sissetungijad armastavad xmlrpc.php-d, sest ühe päringuga saab korraga proovida sadu paroole (funktsiooniga system.multicall), ja kuna seda saab kuritarvitada rünnakuteks teiste saitide vastu (pingback'id). Mida teha:
- Kui sa seda ei kasuta: blokeeri see. Mõned majutajad, sealhulgas WebOké, blokeerivad xmlrpc.php serveris vaikimisi. Muidu reaga failis
.htaccessvõi turvapluginaga. - Kui sa seda kasutad (näiteks rakenduse jaoks, mis seda vajab): jäta see avatuks, kuid taga tugevad paroolid, 2FA ja katsete piiramine. Kaasaegsed rakendused kasutavad tavaliselt REST API-t rakenduse parooliga (õppetund 3.3).
Lekkinud kasutajanimed
Õppetunnis 3.3 nägid, et WordPress näitab kasutajanimedest tuletatud infot:
https://example.com/?author=1suunab ümber aadressile/author/<nimi>/;https://example.com/wp-json/wp/v2/usersnäitab nimekirja kõigi slugidest, kes on midagi avaldanud.
Kas see on paha? Kasutajanimi ei ole parool. Pika unikaalse parooli ja 2FA-ga ei muuda see suurt midagi. Aga see annab sissetungijale poole sisselogimisandmetest ja muudab suunatud õngitsuse lihtsamaks. Mõistlikud meetmed:
- anna administraatoritele kasutajanimi, mis erineb nende avalikust nimest, ja ära avalda sisu administraatori kontoga (õppetund 3.3);
- piira kasutajate nimekirja REST API-s turvapluginaga või mõne koodireaga, kui sa seda ei vaja. Ära sulge REST API-t täielikult: plokiredaktor ja paljud pluginad vajavad seda.
Rakenduse paroolid
Rakenduse paroolid (õppetund 3.3) on turvaline viis anda rakendusele või süsteemile ligipääs, kuid need mööduvad sinu kaheastmelisest autentimisest: rakendusele, millel on rakenduse parool, ei ole koodi vaja. Loo neid ainult vajadusel, madala rolliga kontole, ning tühista need, kui sa ühendust enam ei kasuta.
Kokkuvõte
- Kasuta pikki, unikaalseid paroole (paroolifraase) paroolihalduris.
- Lülita sisse kaheastmeline autentimine, pluginaga WordPressis ning ka oma majutuspaneelis, e-postis ja domeenihalduris.
- Peata sisselogimiskatsed võimalikult vara: serveris, IP-reegliga või lisaparooliga, või pluginaga.
- Blokeeri xmlrpc.php, kui sa seda ei kasuta.
- Lekkinud kasutajanimed ei ole katastroof, aga vihje: ära avalda sisu administraatorina ja piira REST-kasutajate nimekirja, kui sa seda ei vaja.
Test (quiz)
Ülesanne
Ülesanne A7.3: Mida su sait sisselogimisel paljastab? Sisesta oma saidi aadress ja tõenda, et see on sinu enda sait (ülesande koodiga, TXT-kirjena või failina). Programm kontrollib kolme asja: kas xmlrpc.php tagastab funktsioonide nimekirja (avatud) või on blokeeritud, kas /wp-json/wp/v2/users näitab kasutajanimesid (slugisid) ja kuhu suunab /?author=1. Märgi, kas vajad xmlrpc.php-d; kui ei, siis avatud xmlrpc.php näidatakse punasena. Lekkinud slugid näidatakse oranžina koos selgitusega.
Ülesanne D7.3: Kaheastmelise autentimise sisselülitamine. Lülita kaheastmeline autentimine sisse kõigile oma WordPressi saidi administraatoritele ning ka oma majutuspaneelis ja e-postis. Hoia varukoodid oma paroolihalduris. Märgi iga osa kohta, et see on sisse lülitatud, ning kirjuta üles, millist meetodit kasutad (rakendus, passkey, e-post) ja kus varukoodid asuvad. Kirjuta üles ka, kuidas kaitsed wp-login.php-d lisaks ja miks valisid just selle viisi.
Ülesanne D7.3: Kaheastmelise autentimise sisselülitamine
Selle ülesande teed ise, keegi ei kontrolli seda. Märgi ära, mida tegid, ja märgi ülesanne tehtuks.
Kasuta halduritele pigem rakendust või pääsuvõtit (passkey) kui ainult e-posti. Kui IP-aadress on püsiv, võid lubada ligipääsu failile wp-login.php just sealt; kui aadressid muutuvad, sobib paremini sisselogimiskatsete piiramine.
Su linnukesed ja märkmed jäävad ainult sellesse brauserisse, me ei saada neid kuhugi. Kui oled sisse loginud, salvestame Minu kursustes ainult info, et tegid ülesande ära.
Lisalugemist
Need artiklid kirjeldavad samme WebOké paneelides; teistes paneelides toimivad need sarnaselt.
- DirectAdmin juhend 3.7: Turvalised paroolid ja mida teha lekkinud parooli korral
- Kaheastmeline autentimine Minu WebOkés ja autentimisrakenduse seadistamine
- WordPressi xmlrpc.php ligipääs ei tööta
- WordPressi wp-login.php kaitsmine
- DirectAdmin juhend 15.9: Parooliga kaitstud kaustad
- Turvaline sisselogimine (Veilig Internetten, Madalmaade valitsus): https://veiliginternetten.nl/veilig-inloggen/
- Brute force rünnakud (developer.wordpress.org, inglise keeles): https://developer.wordpress.org/advanced-administration/security/brute-force/
- Kaheastmelise autentimise seadistamine WordPressis
