Modul 7 · 7.3
Prijava: gesla, dvostopenjsko preverjanje in brute force
Modul 7: Varnost · Čas branja: 9 minut
Učni cilj: Po tej lekciji boste znali zaščititi prijavo v Vaše spletno mesto z močnimi gesli, dvostopenjskim preverjanjem in omejitvijo poskusov prijave, in boste vedeli, kaj je xmlrpc.php.
Ključni pojmi: upravitelj gesel, geselna fraza, edinstveno geslo, dvostopenjsko preverjanje (2FA, TOTP), passkey, brute force, omejitev poskusov prijave, wp-login.php na IP-naslovu, xmlrpc.php, uhajanje uporabniških imen (REST, ?author=), aplikacijska gesla
Geslo: dolgo in edinstveno
Dobro geslo ima dve lastnosti:
- Dolgo: dolžina šteje bolj kot nenavadni znaki. Geselna fraza štirih ali petih naključnih besed (
zeef-pinguin-oktober-lantaarn) je močnejša in si jo je lažje zapomniti kotW8w00rd!. Nizozemska vladna kampanja Veilig Internetten priporoča edinstveno geslo iz vsaj 12 znakov, po možnosti geselno frazo. - Edinstveno: nikjer drugje uporabljeno. Credential stuffing (lekcija 7.1) deluje le, če geslo ponovno uporabljate.
Nihče si ne zapomni na desetine dolgih edinstvenih gesel. Zato uporabite upravitelja gesel: program, ki jih ustvari, shrani in vnese namesto Vas. Tako si morate zapomniti le eno geslo, torej geslo samega upravitelja, in tudi to zaščitite z dvostopenjskim preverjanjem.
Ali je geslo del znanega uhajanja podatkov, lahko preverite na haveibeenpwned.com. Če je Vaš e-poštni naslov v uhajanju, spremenite geslo pri vsaki storitvi, kjer ste uporabljali isto geslo.
Dvostopenjsko preverjanje
Pri dvostopenjskem preverjanju (2FA) ob prijavi poleg gesla potrebujete še nekaj: običajno šestmestno kodo iz aplikacije na telefonu (avtentikator, po standardu TOTP). Vlomilec z Vašim geslom tako še vedno ne pride notri.
WordPress nima vgrajenega dvostopenjskega preverjanja. Dodate ga z vtičnikom. Obstaja jih veliko; preprost je Two Factor, ki so ga izdelali sodelavci pri samem projektu WordPress. Tudi varnostni vtičniki ga pogosto vključujejo. Pri izbiri bodite pozorni na:
- aplikacije TOTP in rezervne kode (za primer izgube telefona); kode po e-pošti so šibkejše, ker je lahko tudi Vaš e-poštni predal vdrt;
- možnost, da je preverjanje obvezno za skrbnike in urednike;
- passkey: prijava s prstnim odtisom, obrazom ali varnostnim ključem, brez gesla. Tudi za to obstajajo vtičniki. Passkey so odporni na lažno predstavljanje (phishing), ker delujejo samo na pravem spletnem mestu.
Vklopite dvostopenjsko preverjanje tudi na vsem, kar je okoli Vašega spletnega mesta: v nadzorni plošči za gostovanje, e-pošti, pri registrarju in v upravitelju gesel. Vlomilec, ki prevzame Vašo nadzorno ploščo za gostovanje, ne potrebuje Vašega gesla za WordPress.
Brute force in omejevanje poskusov prijave
Odprto spletno mesto WordPress ves dan prejema poskuse prijave na wp-login.php, pogosto z uporabniškim imenom admin in seznami pogosto uporabljenih gesel. Z dolgim geslom in 2FA ne pridejo notri, vendar vsak poskus stane Vaš strežnik računsko moč (celoten zagon WordPressa). Pri velikem valu poskusov Vaše spletno mesto postane počasno.
WordPress sam ne omejuje števila poskusov. Kar pomaga, v vrstnem redu od "ustavi čim prej":
- Na strežniku: veliko ponudnikov gostovanja blokira IP-naslov, ki v kratkem času opravi veliko neuspelih poskusov, še preden se WordPress zažene (z požarnim zidom ali funkcijo spletnega strežnika). Vprašajte svojega ponudnika gostovanja, kaj se dogaja.
- wp-login.php samo za Vaš IP-naslov: z nekaj vrsticami v
.htaccess(pri LiteSpeed in Apache):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>To dobro deluje, če imate stalen IP-naslov. Če ga nimate (doma, na telefonu), se lahko sami zaklenete zunaj, ko se Vaš naslov spremeni. Alternativa je dodatno geslo na strani za prijavo ("zaščitena mapa", osnovna avtentikacija) z drugačnim geslom kot je Vaše geslo za WordPress.
- Vtičnik, ki omejuje poskuse: po petih neuspelih poskusih je IP-naslov za nekaj časa blokiran. Deluje, vendar šele ko WordPress že teče, zato računsko delo ostane.
Skrivanje ali preimenovanje strani za prijavo (na primer /mojprijava namesto /wp-login.php) zmanjša šum v Vašem dnevniku. Ni prava zaščita in nekateri vtičniki in teme pričakujejo privzeti naslov. V redu kot dodatek, nikoli namesto dobrega gesla in 2FA.
xmlrpc.php
xmlrpc.php je stara povezava iz časa pred REST API, prek katere aplikacije in druga spletna mesta komunicirajo z WordPressom. Še vedno jo uporabljajo nekatere aplikacije, Jetpack in nekaj povezav. Za večino spletnih mest je odveč.
Vlomilci imajo radi xmlrpc.php, ker lahko v enem samem zahtevku poskusijo stotine gesel hkrati (s funkcijo system.multicall), in ker jo je mogoče zlorabiti za napade na druga spletna mesta (pingback). Kaj storite:
- Je ne uporabljate: jo blokirajte. Nekateri ponudniki gostovanja, med njimi WebOké, privzeto blokirajo xmlrpc.php na strežniku. Sicer z vrstico v
.htaccessali z varnostnim vtičnikom. - Jo uporabljate (na primer za aplikacijo, ki jo potrebuje): pustite jo odprto, vendar poskrbite za močna gesla, 2FA in omejitev poskusov. Sodobne aplikacije praviloma uporabljajo REST API z aplikacijskim geslom (lekcija 3.3).
Uhajanje uporabniških imen
V lekciji 3.3 ste videli, da WordPress prikaže izpeljanko iz uporabniških imen:
https://example.com/?author=1preusmeri na/author/<ime>/;https://example.com/wp-json/wp/v2/usersprikaže seznam slugov vseh, ki so kaj objavili.
Je to hudo? Uporabniško ime ni geslo. Z dolgim edinstvenim geslom in 2FA to malo spremeni. Vendar daje vlomilcu polovico prijavnih podatkov in olajša ciljno usmerjeno lažno predstavljanje (phishing). Razumni ukrepi:
- skrbnikom dajte uporabniško ime, ki ni enako njihovemu javnemu imenu, in ne objavljajte z računom skrbnika (lekcija 3.3);
- omejite seznam uporabnikov v REST API z varnostnim vtičnikom ali nekaj vrsticami kode, če ga ne potrebujete. REST API ne zapirajte popolnoma: urejevalnik blokov in veliko vtičnikov ga potrebuje.
Aplikacijska gesla
Aplikacijska gesla (lekcija 3.3) so varen način za dostop aplikacije ali sistema, vendar obidejo Vaše dvostopenjsko preverjanje: aplikacija z aplikacijskim geslom ne potrebuje kode. Ustvarite jih samo, kadar je to res potrebno, na računu z nizko vlogo, in jih prekličite, ko povezave ne uporabljate več.
Povzetek
- Uporabljajte dolga, edinstvena gesla (geselne fraze) v upravitelju gesel.
- Vklopite dvostopenjsko preverjanje, z vtičnikom v WordPressu ter tudi v nadzorni plošči za gostovanje, e-pošti in pri registrarju.
- Poskuse prijave ustavite čim prej: na strežniku, s pravilom IP ali dodatnim geslom, ali z vtičnikom.
- Blokirajte xmlrpc.php, če je ne uporabljate.
- Uhajanje uporabniških imen ni katastrofa, je pa opozorilo: ne objavljajte kot skrbnik in omejite seznam uporabnikov v REST API, če ga ne potrebujete.
Kviz
Naloga
Naloga A7.3: Kaj Vaše spletno mesto pošlje drugim? Vnesite naslov Vašega spletnega mesta in dokažite, da je to Vaše spletno mesto (s kodo naloge, kot zapis TXT ali kot datoteka). Program preveri tri stvari: ali xmlrpc.php vrne seznam funkcij (odprto) ali je blokirana, ali /wp-json/wp/v2/users prikaže uporabniška imena (sluge), in kam preusmeri /?author=1. Navedite, ali potrebujete xmlrpc.php; če ne, je odprta xmlrpc.php rdeča. Razkrite sluge so oranžne z razlago.
Naloga D7.3: Vklopite dvostopenjsko preverjanje. Vklopite dvostopenjsko preverjanje za vse skrbnike Vašega spletnega mesta WordPress, pa tudi v nadzorni plošči za gostovanje in pri e-pošti. Rezervne kode shranite v upravitelju gesel. Za vsak del označite, da je vklopljen, in zapišite, katero metodo uporabljate (aplikacija, passkey, e-pošta) in kje so shranjene rezervne kode. Zapišite tudi, kako dodatno zaščitite wp-login.php in zakaj ste izbrali ta način.
Naloga D7.3: Vklopite dvostopenjsko preverjanje
To nalogo opravite sami; nihče je ne pregleda. Odkljukajte, kar ste naredili, in nalogo označite kot opravljeno.
Pri skrbnikih raje uporabite aplikacijo ali passkey kot zgolj e-pošto. Stalni IP-naslov lahko dovolite na wp-login.php; pri spremenljivih naslovih bolje ustreza omejevanje števila poskusov prijave.
Vaše kljukice in zapiski ostanejo samo v tem brskalniku, nikamor jih ne pošiljamo. Če ste prijavljeni, v Moji tečaji shranimo samo podatek, da ste nalogo opravili.
Dodatno branje
Ti članki opisujejo korake v nadzornih ploščah WebOké; v drugih nadzornih ploščah delujejo podobno.
- Priročnik DirectAdmin 3.7: Varna gesla in kaj storiti ob uhajanju gesla
- Nastavitev dvostopenjskega preverjanja pristnosti v Moj WebOké in aplikacije za preverjanje pristnosti
- Dostop do xmlrpc.php v WordPressu ne deluje
- Zaščita wp-login.php v WordPressu
- Priročnik DirectAdmin 15.9: Z geslom zaščiteni imeniki
- Varna prijava (Veilig Internetten, nizozemska vlada): https://veiliginternetten.nl/veilig-inloggen/
- Napadi brute force (developer.wordpress.org, angleško): https://developer.wordpress.org/advanced-administration/security/brute-force/
