Modul 7 · 7.3
Prijava: lozinke, dvofaktorska autentifikacija i brute force napadi
Modul 7: Sigurnost · Vrijeme čitanja: 9 minuta
Cilj učenja: Nakon ove lekcije moći ćete zaštititi prijavu na svoju web-stranicu jakim lozinkama, dvofaktorskom autentifikacijom i ograničavanjem pokušaja prijave, te ćete znati što je xmlrpc.php.
Ključni pojmovi: upravitelj lozinki, lozinka od više riječi (wachtzin), jedinstvena lozinka, dvofaktorska autentifikacija (2FA, TOTP), passkey, brute force napad, ograničavanje pokušaja prijave, wp-login.php na IP adresu, xmlrpc.php, korisnička imena koja procure (REST, ?author=), aplikacijske lozinke
Lozinka: duga i jedinstvena
Dobra lozinka ima dvije osobine:
- Duga: duljina je važnija od neobičnih znakova. Lozinka od četiri ili pet nasumičnih riječi (
zeef-pinguin-oktober-lantaarn) jača je i lakše ju je zapamtiti negoW8w00rd!. Nizozemska vladina kampanja Veilig Internetten preporučuje jedinstvenu lozinku od najmanje 12 znakova, po mogućnosti u obliku rečenice sastavljene od više riječi. - Jedinstvena: ne koristi se nigdje drugdje. Credential stuffing (lekcija 7.1) djeluje samo ako ponovno koristite istu lozinku.
Nitko ne pamti desetke dugih jedinstvenih lozinki. Zato koristite upravitelj lozinki: program koji ih za Vas izrađuje, pohranjuje i automatski unosi. Tada trebate zapamtiti samo jednu: lozinku za sam upravitelj, a nju dodatno zaštitite dvofaktorskom autentifikacijom.
Je li Vaša lozinka bila dio poznatog curenja podataka, možete provjeriti na haveibeenpwned.com. Ako se Vaša e-mail adresa pojavljuje u curenju podataka, promijenite lozinku kod svake usluge gdje ste koristili istu lozinku.
Dvofaktorska autentifikacija
Uz dvofaktorsku autentifikaciju (2FA) pri prijavi Vam je, uz lozinku, potrebno još nešto: obično šesteroznamenkasti kod iz aplikacije na Vašem telefonu (autentifikator, prema standardu TOTP). Napadač s Vašom lozinkom tada se još uvijek ne može prijaviti.
WordPress nema ugrađenu dvofaktorsku autentifikaciju. Dodajete je putem dodatka (plugin). Postoji ih mnogo; jednostavan je Two Factor, koji su izradili suradnici samog WordPressa. Sigurnosni dodaci (plugin) također je često sadrže. Pri odabiru obratite pažnju na:
- TOTP aplikacije i sigurnosne (back-up) kodove (za slučaj da izgubite telefon); kodovi putem e-pošte su slabiji jer Vaš sandučić također može biti hakiran;
- mogućnost da se autentifikacija učini obveznom za administratore i urednike;
- passkeyeve: prijava otiskom prsta, licem ili sigurnosnim ključem, bez lozinke. I za to postoje dodaci (plugin). Passkeyevi su otporni na phishing jer rade samo na pravoj web-stranici.
Uključite dvofaktorsku autentifikaciju i na svemu oko Vaše web-stranice: hosting panelu, e-pošti, registru domena i upravitelju lozinki. Napadač koji preuzme Vaš hosting panel ne treba Vašu WordPress lozinku.
Brute force napadi i ograničavanje pokušaja prijave
Otvorena WordPress web-stranica cijeli dan prima pokušaje prijave na wp-login.php, često s korisničkim imenom admin i popisima najčešće korištenih lozinki. S dugom lozinkom i 2FA napadač se neće prijaviti, ali svaki pokušaj opterećuje Vaš poslužitelj (potpuno pokretanje WordPressa). Kod velikog vala pokušaja Vaša web-stranica postaje spora.
WordPress sam po sebi ne ograničava broj pokušaja. Pomažu, poredano prema tome koliko rano zaustavljaju napad:
- Na poslužitelju: mnogi hosting provideri blokiraju IP adresu koja u kratkom vremenu napravi mnogo neuspjelih pokušaja, prije nego što se WordPress uopće pokrene (putem vatrozida ili funkcije web poslužitelja). Pitajte svog hosting providera što se događa.
- wp-login.php samo za Vašu IP adresu: s nekoliko redaka u
.htaccessdatoteci (kod LiteSpeeda i Apachea):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>To dobro funkcionira ako imate fiksnu IP adresu. Ako je nemate (kod kuće, na telefonu), sami ćete se zaključati van kad se Vaša adresa promijeni. Alternativa je dodatna lozinka na stranici za prijavu ("zaštićena mapa", basic authentication) s drugom lozinkom od Vaše WordPress lozinke.
- Dodatak (plugin) koji ograničava pokušaje: nakon pet neuspjelih pokušaja IP adresa se neko vrijeme blokira. Djeluje, ali tek nakon što se WordPress već pokrenuo, pa opterećenje poslužitelja ostaje.
Skrivanje ili preimenovanje stranice za prijavu (na primjer /mijn-login umjesto /wp-login.php) smanjuje šum u Vašem zapisniku (log). To nije stvarna sigurnosna mjera, a neki dodaci (plugin) i teme očekuju standardnu adresu. U redu je kao dodatna mjera, ali nikada umjesto jake lozinke i 2FA.
xmlrpc.php
xmlrpc.php je stara poveznica iz vremena prije REST API-ja, preko koje aplikacije i druge web-stranice komuniciraju s WordPressom. Još je koriste neke aplikacije, Jetpack i nekoliko integracija. Za većinu web-stranica nepotrebna je.
Napadači vole xmlrpc.php jer putem njega u jednom zahtjevu mogu isprobati stotine lozinki odjednom (pomoću funkcije system.multicall), i jer se može zlouporabiti za napade na druge web-stranice (pingbackovi). Što možete učiniti:
- Ako ga ne koristite: blokirajte ga. Neki hosting provideri, uključujući WebOké, standardno blokiraju xmlrpc.php na poslužitelju. Inače to možete učiniti pravilom u
.htaccessdatoteci ili sigurnosnim dodatkom (plugin). - Ako ga koristite (na primjer za aplikaciju kojoj je potreban): ostavite ga otvorenim, ali pobrinite se za jake lozinke, 2FA i ograničenje pokušaja. Moderne aplikacije obično koriste REST API s aplikacijskom lozinkom (lekcija 3.3).
Korisnička imena koja procure
U lekciji 3.3 vidjeli ste da WordPress prikazuje izvedenicu korisničkih imena:
https://example.com/?author=1preusmjerava na/author/<ime>/;https://example.com/wp-json/wp/v2/usersprikazuje popis slugova svih koji su nešto objavili.
Je li to problem? Korisničko ime nije lozinka. S dugom jedinstvenom lozinkom i 2FA to malo utječe. No, napadaču to daje pola podataka za prijavu i olakšava ciljani phishing. Razumne mjere:
- dajte administratorima korisničko ime koje nije njihovo javno ime, i ne objavljujte sadržaj s administratorskim računom (lekcija 3.3);
- ograničite popis korisnika u REST API-ju sigurnosnim dodatkom (plugin) ili s nekoliko redaka koda, ako Vam nije potreban. Ne zatvarajte REST API u potpunosti: blok uređivač i mnogi dodaci (plugin) ga trebaju.
Aplikacijske lozinke
Aplikacijske lozinke (lekcija 3.3) sigurna su metoda za davanje pristupa aplikaciji ili sustavu, ali zaobilaze Vašu dvofaktorsku autentifikaciju: aplikaciji s aplikacijskom lozinkom nije potreban kod. Izrađujte ih samo kad je nužno, na računu s niskom ulogom, i opozovite ih kad integraciju više ne koristite.
Sažetak
- Koristite duge, jedinstvene lozinke (lozinke od više riječi) u upravitelju lozinki.
- Uključite dvofaktorsku autentifikaciju, dodatkom (plugin) u WordPressu, a i na hosting panelu, e-pošti i kod registra domena.
- Zaustavljajte pokušaje prijave što ranije: na poslužitelju, pravilom za IP adresu ili dodatnom lozinkom, ili dodatkom (plugin).
- Blokirajte xmlrpc.php ako ga ne koristite.
- Procurjela korisnička imena nisu katastrofa, ali su upozorenje: ne objavljujte kao administrator i ograničite popis korisnika u REST API-ju ako Vam nije potreban.
Kviz
Zadatak
Zadatak A7.3: Što Vaša web-stranica pokazuje prilikom prijave? Unesite adresu svoje web-stranice i dokažite da je riječ o Vašoj vlastitoj web-stranici (pomoću koda zadatka, kao TXT zapis ili kao datoteka). Program provjerava tri stvari: vraća li xmlrpc.php popis funkcija (otvoreno) ili je blokiran, prikazuje li /wp-json/wp/v2/users korisnička imena (slugove), i kamo preusmjerava /?author=1. Navedite trebate li xmlrpc.php; ako ne trebate, otvoreni xmlrpc.php bit će prikazan crveno. Procurjeli slugovi prikazani su narančasto uz objašnjenje.
Zadatak D7.3: Uključivanje dvofaktorske autentifikacije. Uključite dvofaktorsku autentifikaciju za sve administratore Vaše WordPress web-stranice, kao i na svom hosting panelu i e-pošti. Pohranite sigurnosne (back-up) kodove u svoj upravitelj lozinki. Za svaki dio označite da je uključen i zabilježite koju metodu koristite (aplikacija, passkey, e-pošta) te gdje se nalaze sigurnosni (back-up) kodovi. Zabilježite i kako dodatno štitite wp-login.php te zašto ste odabrali taj način.
Zadatak D7.3: Uključivanje dvofaktorske autentifikacije
Ovaj zadatak rješavate sami; nitko ga ne provjerava. Označite što ste napravili i označite zadatak kao završen.
Kod administratora radije koristite aplikaciju ili passkey nego samo e-poštu. Fiksnu IP adresu možete dopustiti za wp-login.php; kod promjenjivih adresa bolje odgovara ograničavanje broja pokušaja prijave.
Vaše kvačice i bilješke ostaju samo u ovom pregledniku; ne šaljemo ih nikamo. Ako ste prijavljeni, u Moji tečajevi čuvamo samo podatak da ste zadatak završili.
Dodatno čitanje
Ovi članci opisuju korake u panelima WebOké; u drugim panelima postupak je sličan.
- DirectAdmin priručnik 3.7: Sigurne lozinke i što učiniti kod procurjele lozinke
- Dvofaktorska provjera autentičnosti u Moj WebOké i postavljanje aplikacije za autentifikaciju
- WordPress: pristup datoteci xmlrpc.php ne radi
- Zaštita datoteke wp-login.php u WordPressu
- DirectAdmin priručnik 15.9: Mape zaštićene lozinkom
- Sigurna prijava (Veilig Internetten, nizozemska vlada): https://veiliginternetten.nl/veilig-inloggen/
- Brute force napadi (developer.wordpress.org, engleski): https://developer.wordpress.org/advanced-administration/security/brute-force/
