7 modulis · 7.3
Prisijungimas: slaptažodžiai, dviejų veiksnių autentifikavimas ir brute force
7 modulis: Saugumas · Skaitymo trukmė: 9 min.
Mokymosi tikslas: Po šios pamokos galėsite apsaugoti prisijungimą prie savo svetainės stipriais slaptažodžiais, dviejų veiksnių autentifikavimu ir prisijungimo bandymų ribojimu, taip pat žinosite, kas yra xmlrpc.php.
Pagrindinės sąvokos: slaptažodžių tvarkyklė, slaptafrazė, unikalus slaptažodis, dviejų veiksnių autentifikavimas (2FA, TOTP), passkey, brute force, prisijungimo bandymų ribojimas, wp-login.php pagal IP adresą, xmlrpc.php, naudotojų vardai, kurie nutekina, programų slaptažodžiai
Slaptažodis: ilgas ir unikalus
Geras slaptažodis turi dvi savybes:
- Ilgas: ilgis svarbesnis už keistus simbolius. Slaptafrazė iš keturių ar penkių atsitiktinių žodžių (
zeef-pinguin-oktober-lantaarn) yra stipresnė ir lengviau įsimenama neiW8w00rd!. Nyderlandų vyriausybės kampanija „Veilig Internetten“ pataria naudoti unikalų, bent 12 simbolių ilgio slaptažodį, pageidautina slaptafrazę. - Unikalus: niekur kitur nenaudojamas. Credential stuffing (7.1 pamoka) veikia tik tuo atveju, jei pakartotinai naudojate tą patį slaptažodį.
Niekas neįsimena dešimčių ilgų unikalių slaptažodžių. Todėl naudokite slaptažodžių tvarkyklę: programą, kuri juos Jūsų vardu sukuria, saugo ir įveda. Tuomet turite įsiminti tik vieną: pačios tvarkyklės slaptažodį, o jį taip pat apsaugokite dviejų veiksnių autentifikavimu.
Ar slaptažodis yra žinomame duomenų nutekėjime, galite patikrinti svetainėje haveibeenpwned.com. Jei Jūsų el. pašto adresas atsiranda nutekėjime, pakeiskite slaptažodį kiekvienoje paslaugoje, kurioje naudojote tą patį slaptažodį.
Dviejų veiksnių autentifikavimas
Naudojant dviejų veiksnių autentifikavimą (2FA), prisijungiant greta slaptažodžio reikalingas dar vienas dalykas: dažniausiai šešių skaitmenų kodas iš programėlės telefone (autentifikatoriaus, pagal standartą TOTP). Įsilaužėlis, žinantis Jūsų slaptažodį, tada dar nepateks į sistemą.
WordPress neturi įdiegto dviejų veiksnių autentifikavimo. Jį pridedate su įskiepiu. Jų yra daug; paprastas pavyzdys yra Two Factor, sukurtas paties WordPress bendruomenės narių. Saugumo įskiepiai dažnai taip pat tai turi. Renkantis atkreipkite dėmesį į:
- TOTP programėles ir atsargines kodų kopijas (jei pamestumėte telefoną); kodai el. paštu yra silpnesni, nes Jūsų el. pašto dėžutė taip pat gali būti nulaužta;
- galimybę nustatyti privalomą naudojimą administratoriams ir redaktoriams;
- passkeys: prisijungimas pirštų atspaudu, veidu ar saugumo raktu, be slaptažodžio. Tam taip pat yra įskiepių. Passkeys yra atsparūs sukčiavimui (phishing), nes veikia tik tikroje svetainėje.
Įjunkite dviejų veiksnių autentifikavimą ir visame kame, kas yra aplink Jūsų svetainę: talpinimo valdymo skydelyje, el. pašte, registratoriuje ir slaptažodžių tvarkyklėje. Įsilaužėliui, perėmusiam Jūsų talpinimo valdymo skydelį, Jūsų WordPress slaptažodžio nereikia.
Brute force ir prisijungimo bandymų ribojimas
Atvira WordPress svetainė visą dieną sulaukia prisijungimo bandymų prie wp-login.php, dažnai su admin ir dažnai naudojamų slaptažodžių sąrašais. Turint ilgą slaptažodį ir 2FA, jie nepateks į sistemą, tačiau kiekvienas bandymas Jūsų serveriui kainuoja skaičiavimo išteklių (pilną WordPress paleidimą). Esant didelei bangai, Jūsų svetainė sulėtėja.
Pats WordPress bandymų skaičiaus neriboja. Kas padeda, pagal „ankstyvo sustabdymo“ seką:
- Serveryje: daugelis talpinimo paslaugų teikėjų blokuoja IP adresą, kuris per trumpą laiką atlieka daug nepavykusių bandymų, dar prieš paleidžiant WordPress (su ugniasiene arba žiniatinklio serverio funkcija). Pasiteiraukite savo talpinimo paslaugų teikėjo, kas vyksta.
- wp-login.php tik Jūsų IP adresui: su keliomis eilutėmis
.htaccessfaile (LiteSpeed ir Apache atveju):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>Tai gerai veikia, jei turite pastovų IP adresą. Jei jo neturite (namuose, telefone), užsirakinsite patys, jei adresas pasikeis. Alternatyva: papildomas slaptažodis prisijungimo puslapyje („apsaugotas aplankas“, basic authentication) su kitokiu slaptažodžiu nei Jūsų WordPress slaptažodis.
- Įskiepis, ribojantis bandymus: po penkių nepavykusių bandymų IP adresas kurį laiką blokuojamas. Veikia, bet tik tada, kai WordPress jau veikia, taigi skaičiavimo darbas lieka.
Prisijungimo puslapio slėpimas ar pervadinimas (pavyzdžiui, /mano-prisijungimas vietoje /wp-login.php) sumažina triukšmą Jūsų žurnale. Tai nėra tikra apsauga, be to, kai kurie įskiepiai ir temos tikisi numatytojo adreso. Puikiai tinka kaip papildoma priemonė, bet niekada vietoje gero slaptažodžio ir 2FA.
xmlrpc.php
xmlrpc.php yra senas sąsajos failas iš laikų prieš REST API, per kurį programos ir kitos svetainės bendrauja su WordPress. Jį vis dar naudoja kai kurios programos, Jetpack ir keletas sąsajų. Daugumai svetainių jis nereikalingas.
Įsilaužėliai mėgsta xmlrpc.php, nes per vieną užklausą galima išbandyti šimtus slaptažodžių vienu metu (naudojant funkciją system.multicall), be to, jis gali būti piktnaudžiaujamas atakoms prieš kitas svetaines (pingbacks). Ką daryti:
- Jei nenaudojate: blokuokite jį. Kai kurie talpinimo paslaugų teikėjai, tarp jų ir WebOké, pagal numatytuosius nustatymus blokuoja xmlrpc.php serveryje. Kitu atveju su eilute
.htaccessfaile arba naudodami saugumo įskiepį. - Jei naudojate (pavyzdžiui, programėlei, kuriai jo reikia): palikite atvirą, bet pasirūpinkite stipriais slaptažodžiais, 2FA ir bandymų ribojimu. Šiuolaikinės programėlės dažniausiai naudoja REST API su programos slaptažodžiu (3.3 pamoka).
Naudotojų vardai, kurie nutekina
3.3 pamokoje matėte, kad WordPress parodo naudotojų vardų išvestinę formą:
https://example.com/?author=1nukreipia į/author/<vardas>/;https://example.com/wp-json/wp/v2/usersrodo visų, kas ką nors paskelbė, slugs sąrašą.
Ar tai blogai? Naudotojo vardas nėra slaptažodis. Turint ilgą unikalų slaptažodį ir 2FA, tai mažai reiškia. Tačiau tai suteikia įsilaužėliui pusę prisijungimo duomenų ir palengvina kryptingą sukčiavimą (phishing). Protingos priemonės:
- suteikite administratoriams naudotojo vardą, kuris skiriasi nuo jų viešo vardo, ir nepublikuokite turinio administratoriaus paskyra (3.3 pamoka);
- apribokite naudotojų sąrašą REST API, naudodami saugumo įskiepį arba kelias kodo eilutes, jei jo nereikia. Visiškai neuždarykite REST API: blokų redaktoriui ir daugeliui įskiepių jis reikalingas.
Programų slaptažodžiai
Programų slaptažodžiai (3.3 pamoka) yra saugus būdas suteikti prieigą programai ar sistemai, tačiau jie apeina dviejų veiksnių autentifikavimą: programai su programos slaptažodžiu kodas nereikalingas. Kurkite juos tik tada, kai būtina, naudotojui su žema role, ir atšaukite juos, kai sąsajos nebenaudojate.
Santrauka
- Naudokite ilgus, unikalius slaptažodžius (slaptafrazes) slaptažodžių tvarkyklėje.
- Įjunkite dviejų veiksnių autentifikavimą su įskiepiu WordPress sistemoje, taip pat talpinimo valdymo skydelyje, el. pašte ir registratoriuje.
- Sustabdykite prisijungimo bandymus kuo anksčiau: serveryje, su IP taisykle ar papildomu slaptažodžiu, arba su įskiepiu.
- Blokuokite xmlrpc.php, jei jo nenaudojate.
- Nutekėję naudotojų vardai nėra katastrofa, tačiau yra signalas: nepublikuokite turinio kaip administratorius ir apribokite REST naudotojų sąrašą, jei jo nereikia.
Testas (quiz)
Užduotis
Užduotis A7.3: Ką Jūsų svetainė atskleidžia prisijungiant? Įveskite savo svetainės adresą ir įrodykite, kad tai Jūsų pačių svetainė (su užduoties kodu, kaip TXT įrašu arba kaip failu). Programa patikrina tris dalykus: ar xmlrpc.php grąžina funkcijų sąrašą (atviras) ar yra blokuojamas, ar /wp-json/wp/v2/users rodo naudotojų vardus (slugs), ir kur nukreipia /?author=1. Nurodykite, ar Jums reikia xmlrpc.php; jei ne, atviras xmlrpc.php bus pažymėtas raudonai. Nutekėję slugs bus pažymėti oranžine spalva su paaiškinimu.
Užduotis D7.3: Dviejų veiksnių autentifikavimo įjungimas. Įjunkite dviejų veiksnių autentifikavimą visiems savo WordPress svetainės administratoriams, taip pat talpinimo valdymo skydelyje ir savo el. pašte. Atsargines kodų kopijas saugokite slaptažodžių tvarkyklėje. Kiekvienai daliai pažymėkite, kad ji įjungta, ir užrašykite, kokį metodą naudojate (programėlė, passkey, el. paštas) ir kur saugomos atsarginės kodų kopijos. Taip pat užrašykite, kaip papildomai apsaugote wp-login.php ir kodėl pasirinkote būtent tokį būdą.
Užduotis D7.3: Dviejų veiksnių autentifikavimo įjungimas
Šią užduotį atliekate patys; niekas jos netikrina. Pažymėkite, ką atlikote, ir pažymėkite užduotį kaip atliktą.
Administratoriams geriau naudoti programėlę ar leistuką (passkey), o ne vien el. paštą. Pastoviam IP adresui galite leisti prieigą prie wp-login.php; jei adresai keičiasi, geriau tinka prisijungimo bandymų ribojimas.
Jūsų pažymėti varneliai ir pastabos lieka tik šioje naršyklėje; niekur jų nesiunčiame. Jei esate prisijungę, skiltyje Mano kursai išsaugome tik tai, kad užduotį atlikote.
Papildoma literatūra
Šiuose straipsniuose aprašyti žingsniai WebOké valdymo skydeliuose; kituose paneliuose jie veikia panašiai.
- DirectAdmin vadovas 3.7: Saugūs slaptažodžiai ir ką daryti, jei slaptažodis nutekėjo
- Dviejų žingsnių patvirtinimo nustatymas sistemoje Mano WebOké ir autentifikavimo programėlės konfigūravimas
- WordPress: nepavyksta pasiekti xmlrpc.php
- WordPress wp-login.php apsauga
- DirectAdmin vadovas 15.9: Slaptažodžiu apsaugotos direktorijos
- Saugus prisijungimas („Veilig Internetten“, Nyderlandų vyriausybės iniciatyva): https://veiliginternetten.nl/veilig-inloggen/
- Brute force atakos (developer.wordpress.org, anglų kalba): https://developer.wordpress.org/advanced-administration/security/brute-force/
