Modulul 7 · 7.3
Autentificare: parole, autentificare în doi pași și brute force
Modulul 7: Securitate · Timp de citire: 9 minute
Obiectiv de învățare: După această lecție veți putea proteja autentificarea pe site-ul dumneavoastră cu parole puternice, autentificare în doi pași și limitarea încercărilor de conectare, și veți ști ce este xmlrpc.php.
Concepte-cheie: manager de parole, frază de acces, parolă unică, autentificare în doi pași (2FA, TOTP), passkey, brute force, limitarea încercărilor de autentificare, wp-login.php restricționat pe adresă IP, xmlrpc.php, nume de utilizator care se scurg (REST, ?author=), parole de aplicație
Parola: lungă și unică
O parolă bună are două caracteristici:
- Lungă: lungimea contează mai mult decât caracterele speciale. O frază de acces formată din patru sau cinci cuvinte aleatorii (
sită-pinguin-octombrie-felinar) este mai puternică și mai ușor de reținut decâtW8w00rd!. Campania guvernamentală olandeză Veilig Internetten recomandă o parolă unică de minimum 12 caractere, de preferință o frază de acces. - Unică: nefolosită nicăieri altundeva. Metoda credential stuffing (lecția 7.1) funcționează doar dacă reutilizați o parolă.
Nimeni nu reține zeci de parole lungi și unice. De aceea, folosiți un manager de parole: un program care le creează, le păstrează și le completează pentru dumneavoastră. Astfel trebuie să rețineți doar una singură: cea a managerului în sine, pe care o protejați și ea cu autentificare în doi pași.
Puteți verifica dacă o parolă se regăsește într-o scurgere de date cunoscută pe haveibeenpwned.com. Dacă adresa dumneavoastră de e-mail apare într-o scurgere, schimbați parola la fiecare serviciu la care ați folosit aceeași parolă.
Autentificarea în doi pași
Cu autentificarea în doi pași (2FA), la conectare aveți nevoie, pe lângă parolă, de încă ceva: de obicei un cod din șase cifre generat de o aplicație pe telefon (un autentificator, conform standardului TOTP). Un intrus care vă cunoaște parola tot nu va putea intra.
WordPress nu are autentificare în doi pași integrată. O adăugați printr-un modul (plugin). Există multe variante; una simplă este Two Factor, creat de colaboratori ai proiectului WordPress însuși. Și modulele de securitate includ adesea această funcție. La alegere, aveți grijă la:
- aplicații TOTP și coduri de rezervă (pentru situația în care vă pierdeți telefonul); codurile trimise prin e-mail sunt mai slabe, deoarece și căsuța dumneavoastră de e-mail poate fi compromisă;
- posibilitatea de a o impune obligatoriu pentru administratori și redactori;
- passkeys: autentificare cu amprenta digitală, chipul sau o cheie de securitate, fără parolă. Există module și pentru aceasta. Passkeys rezistă la phishing, deoarece funcționează doar pe site-ul autentic.
Activați autentificarea în doi pași și pe tot ce se află în jurul site-ului dumneavoastră: panoul de găzduire, e-mailul, registrarul și managerul de parole. Un intrus care preia controlul panoului dumneavoastră de găzduire nu are nevoie de parola dumneavoastră WordPress.
Brute force și limitarea încercărilor de autentificare
O site WordPress deschisă primește toată ziua încercări de autentificare pe wp-login.php, adesea cu admin și liste de parole des folosite. Cu o parolă lungă și 2FA nu vor reuși să intre, dar fiecare încercare costă serverul dumneavoastră resurse de calcul (o pornire WordPress completă). La un val mare, site-ul dumneavoastră devine lent.
WordPress în sine nu limitează numărul de încercări. Ce ajută, în ordinea „opriți cât mai devreme”:
- Pe server: mulți furnizori de găzduire blochează o adresă IP care face multe încercări eșuate într-un timp scurt, chiar înainte ca WordPress să pornească (cu un firewall sau o funcție a serverului web). Întrebați furnizorul dumneavoastră de găzduire ce se întâmplă.
- wp-login.php doar pentru adresa dumneavoastră IP: cu câteva linii în
.htaccess(la LiteSpeed și Apache):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>Acest lucru funcționează bine dacă aveți o adresă IP fixă. Dacă nu aveți una (acasă, pe telefon), vă blocați singur accesul când adresa se schimbă. O alternativă este o parolă suplimentară pe pagina de autentificare (un „folder protejat”, basic authentication) cu o altă parolă decât cea WordPress.
- Un modul care limitează încercările: după cinci încercări eșuate, adresa IP este blocată o perioadă. Funcționează, dar abia după ce WordPress rulează deja, deci efortul de calcul rămâne.
Ascunderea sau redenumirea paginii de autentificare (de exemplu /mijn-login în loc de /wp-login.php) reduce zgomotul din jurnalul dumneavoastră. Nu este o protecție reală, iar unele module și teme se așteaptă la adresa standard. Bine ca element suplimentar, niciodată în locul unei parole bune și al 2FA.
xmlrpc.php
xmlrpc.php este o legătură veche din perioada dinaintea REST API, prin care aplicații și alte site-uri comunică cu WordPress. Mai este folosit de unele aplicații, de Jetpack și de câteva integrări. Pentru majoritatea site-urilor, este inutil.
Intrușilor le place xmlrpc.php, deoarece permite testarea a sute de parole simultan într-o singură cerere (prin funcția system.multicall), și pentru că poate fi folosit abuziv pentru atacuri asupra altor site-uri (pingbacks). Ce puteți face:
- Nu îl folosiți: blocați-l. Unii furnizori de găzduire, printre care WebOké, blochează xmlrpc.php în mod implicit pe server. Altfel, cu o regulă în
.htaccesssau cu un modul de securitate. - Îl folosiți (de exemplu pentru o aplicație care are nevoie de el): lăsați-l deschis, dar asigurați-vă că aveți parole puternice, 2FA și o limitare a încercărilor. Aplicațiile moderne folosesc de obicei REST API cu o parolă de aplicație (lecția 3.3).
Nume de utilizator care se scurg
În lecția 3.3 ați văzut că WordPress afișează o variantă derivată a numelor de utilizator:
https://example.com/?author=1redirecționează către/author/<nume>/;https://example.com/wp-json/wp/v2/usersafișează o listă cu slug-urile tuturor celor care au publicat ceva.
Este grav? Un nume de utilizator nu este o parolă. Cu o parolă lungă și unică și 2FA, contează puțin. Dar oferă unui intrus jumătate din datele de autentificare și facilitează phishingul direcționat. Măsuri rezonabile:
- dați administratorilor un nume de utilizator diferit de numele lor public și nu publicați cu un cont de administrator (lecția 3.3);
- limitați lista de utilizatori din REST API cu un modul de securitate sau câteva linii de cod, dacă nu aveți nevoie de ea. Nu închideți complet REST API: editorul de blocuri și multe module au nevoie de ea.
Parole de aplicație
Parolele de aplicație (lecția 3.3) sunt o modalitate sigură de a acorda acces unei aplicații sau unui sistem, dar ocolesc autentificarea dumneavoastră în doi pași: o aplicație cu o parolă de aplicație nu are nevoie de niciun cod. Creați-le doar atunci când este necesar, la un cont cu un rol limitat, și revocați-le atunci când nu mai folosiți integrarea respectivă.
Rezumat
- Folosiți parole lungi și unice (fraze de acces) într-un manager de parole.
- Activați autentificarea în doi pași, cu un modul în WordPress și, de asemenea, pe panoul dumneavoastră de găzduire, e-mail și registrar.
- Opriți încercările de autentificare cât mai devreme posibil: pe server, cu o regulă IP sau o parolă suplimentară, sau cu un modul.
- Blocați xmlrpc.php dacă nu îl folosiți.
- Numele de utilizator scurse nu sunt un dezastru, dar sunt un indiciu: nu publicați ca administrator și limitați lista de utilizatori REST dacă nu aveți nevoie de ea.
Test
Exercițiu
Exercițiu A7.3: Ce dezvăluie site-ul dumneavoastră la autentificare? Introduceți adresa site-ului dumneavoastră și demonstrați că este propriul dumneavoastră site (cu codul exercițiului, ca înregistrare TXT sau ca fișier). Programul verifică trei lucruri: dacă xmlrpc.php returnează o listă de funcții (deschis) sau este blocat, dacă /wp-json/wp/v2/users afișează nume de utilizator (slug-uri), și unde redirecționează /?author=1. Completați dacă aveți nevoie de xmlrpc.php; dacă nu, un xmlrpc.php deschis este marcat roșu. Slug-urile scurse sunt marcate portocaliu, cu explicație.
Exercițiu D7.3: Activarea autentificării în doi pași. Activați autentificarea în doi pași pentru toți administratorii site-ului dumneavoastră WordPress, precum și pe panoul dumneavoastră de găzduire și pe e-mail. Păstrați codurile de rezervă în managerul dumneavoastră de parole. Bifați, pentru fiecare componentă, că este activă și notați ce metodă folosiți (aplicație, passkey, e-mail) și unde sunt păstrate codurile de rezervă. Notați și cum protejați suplimentar wp-login.php și de ce ați ales acea metodă.
Exercițiul D7.3: Activarea autentificării în doi pași
Acest exercițiu îl faceți singur; nimeni nu îl verifică. Bifați ce ați făcut și marcați exercițiul ca finalizat.
Pentru administratori, folosiți de preferință o aplicație sau o cheie de acces (passkey) în loc de doar e-mail. Un IP fix poate fi permis pe wp-login.php; cu adrese variabile, limitarea încercărilor de autentificare este mai potrivită.
Bifele și notițele dumneavoastră rămân doar în acest browser; nu le trimitem nicăieri. Dacă sunteți autentificat, păstrăm în Cursurile mele doar faptul că ați finalizat exercițiul.
Lecturi suplimentare
Aceste articole descriu pașii din panourile WebOké; în alte panouri funcționează similar.
- Manual DirectAdmin 3.7: Parole sigure și ce faceți în cazul unei parole compromise
- Verificarea în doi pași în Contul meu WebOké și configurarea unei aplicații authenticator
- Accesul la xmlrpc.php în WordPress nu funcționează
- Securizarea wp-login.php în WordPress
- Manual DirectAdmin 15.9: Mape protejate prin parolă
- Autentificare sigură (Veilig Internetten, guvernul olandez): https://veiliginternetten.nl/veilig-inloggen/
- Atacuri de tip brute force (developer.wordpress.org, în limba engleză): https://developer.wordpress.org/advanced-administration/security/brute-force/
