Moduuli 7 · 7.3
Kirjautuminen: salasanat, kaksivaiheinen tunnistautuminen ja brute force
Moduuli 7: Tietoturva · Lukuaika: 9 minuuttia
Oppimistavoite: Tämän oppitunnin jälkeen osaat suojata sivustosi kirjautumisen vahvoilla salasanoilla, kaksivaiheisella tunnistautumisella ja kirjautumisyritysten rajoittamisella, ja tiedät mikä xmlrpc.php on.
Keskeiset käsitteet: salasanojen hallintaohjelma, tunnuslause, uniikki salasana, kaksivaiheinen tunnistautuminen (2FA, TOTP), passkey, brute force, kirjautumisyritysten rajoittaminen, wp-login.php IP-osoitteeseen sidottuna, xmlrpc.php, vuotavat käyttäjätunnukset (REST, ?author=), sovellussalasanat
Salasana: pitkä ja uniikki
Hyvässä salasanassa on kaksi ominaisuutta:
- Pitkä: pituus merkitsee enemmän kuin erikoismerkit. Neljän tai viiden satunnaisen sanan tunnuslause (
siivilä-pingviini-lokakuu-lyhty) on vahvempi ja helpompi muistaa kuinS4l4san4!. Monet viranomaiset suosittelevat vähintään 12 merkin pituista uniikkia salasanaa, mieluiten salasanalausetta. - Uniikki: ei käytetä missään muualla. Credential stuffing (oppitunti 7.1) toimii vain, jos käytät samaa salasanaa uudelleen.
Kukaan ei muista kymmeniä pitkiä uniikkeja salasanoja ulkoa. Käytä siksi salasanojen hallintaohjelmaa: ohjelmaa, joka luo, tallentaa ja täyttää salasanat puolestasi. Silloin sinun tarvitsee muistaa vain yksi: hallintaohjelman oma salasana, ja senkin suojaat kaksivaiheisella tunnistautumisella.
Voit tarkistaa, onko salasana päätynyt tunnettuun tietovuotoon, osoitteessa haveibeenpwned.com. Jos sähköpostiosoitteesi löytyy vuodosta, vaihda salasana jokaisessa palvelussa, jossa käytit samaa salasanaa.
Kaksivaiheinen tunnistautuminen
Kaksivaiheisessa tunnistautumisessa (2FA) tarvitset kirjautuessa salasanan lisäksi jotain muuta: yleensä kuusinumeroisen koodin puhelimesi sovelluksesta (authenticator, standardin TOTP mukaan). Murtautuja, jolla on salasanasi, ei silloin vielä pääse sisään.
WordPressissä ei ole sisäänrakennettua kaksivaiheista tunnistautumista. Lisäät sen lisäosalla. Niitä on paljon; yksinkertainen vaihtoehto on Two Factor, jonka on tehnyt WordPressin omat kehittäjät. Myös tietoturvalisäosissa on usein tämä ominaisuus mukana. Kiinnitä valinnassa huomiota näihin:
- TOTP-sovellukset ja varmuuskoodit (siltä varalta, että puhelin katoaa); sähköpostitse lähetetyt koodit ovat heikompia, koska sähköpostikin voi tulla hakkeroiduksi;
- mahdollisuus asettaa pakolliseksi pääkäyttäjille ja toimittajille;
- passkeyt: kirjautuminen sormenjäljellä, kasvoilla tai suojausavaimella, ilman salasanaa. Niihinkin on lisäosia. Passkeyt kestävät phishing-yrityksiä, koska ne toimivat vain aidolla sivustolla.
Ota kaksivaiheinen tunnistautuminen käyttöön myös kaikessa sivustosi ympärillä olevassa: webhotellipaneelissa, sähköpostissa, rekisterinpitäjällä ja salasanojen hallintaohjelmassa. Murtautuja, joka pääsee käsiksi webhotellipaneeliisi, ei tarvitse WordPress-salasanaasi.
Brute force ja kirjautumisyritysten rajoittaminen
Avoin WordPress-sivusto saa koko ajan kirjautumisyrityksiä osoitteeseen wp-login.php, usein tunnuksella admin ja yleisten salasanalistojen avulla. Pitkällä salasanalla ja 2FA:lla ne eivät pääse sisään, mutta jokainen yritys kuluttaa palvelimesi laskentatehoa (koko WordPressin käynnistys). Suuren yritysaallon aikana sivustosi hidastuu.
WordPress itse ei rajoita yritysten määrää. Toimivia keinoja, järjestyksessä "pysäytä mahdollisimman aikaisin":
- Palvelimella: monet webhotellit estävät IP-osoitteen, josta tulee lyhyessä ajassa paljon epäonnistuneita yrityksiä, jo ennen kuin WordPress käynnistyy (palomuurilla tai webpalvelimen toiminnolla). Kysy webhotelliltasi, miten se toimii.
- wp-login.php vain omalle IP-osoitteellesi: muutamalla rivillä tiedostossa
.htaccess(LiteSpeedillä ja Apachella):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>Tämä toimii hyvin, jos sinulla on kiinteä IP-osoite. Jos ei ole (kotona, puhelimella liikkeellä), suljet itsesi ulos heti kun osoitteesi muuttuu. Vaihtoehto on ylimääräinen salasana kirjautumissivulla ("suojattu kansio", basic authentication) eri salasanalla kuin WordPress-salasanasi.
- Yritysmäärää rajoittava lisäosa: viiden epäonnistuneen yrityksen jälkeen IP-osoite estetään hetkeksi. Toimii, mutta vasta kun WordPress on jo käynnistynyt, joten laskentatyö jää jäljelle.
Kirjautumissivun piilottaminen tai nimen vaihtaminen (esimerkiksi /oma-kirjautuminen osoitteen /wp-login.php sijaan) vähentää lokitiedoston kohinaa. Se ei ole varsinaista tietoturvaa, ja jotkut lisäosat ja teemat odottavat oletusosoitteen käyttöä. Hyvä lisä, mutta ei koskaan korvaa vahvaa salasanaa ja 2FA:ta.
xmlrpc.php
xmlrpc.php on vanha liitäntä ajalta ennen REST API:a, jonka avulla sovellukset ja muut sivustot kommunikoivat WordPressin kanssa. Sitä käyttävät edelleen jotkut sovellukset, Jetpack ja muutama liitäntä. Useimmille sivustoille se on tarpeeton.
Murtautujat pitävät xmlrpc.php:stä, koska sen avulla voi kokeilla satoja salasanoja yhdellä pyynnöllä (funktiolla system.multicall), ja koska sitä voidaan käyttää väärin hyökkäyksiin muita sivustoja vastaan (pingbackit). Mitä teet:
- Et käytä sitä: estä se. Jotkut webhotellit, kuten WebOké, estävät xmlrpc.php:n oletuksena palvelimella. Muuten rivillä tiedostossa
.htaccesstai tietoturvalisäosalla. - Käytät sitä (esimerkiksi sovellukselle, joka tarvitsee sitä): jätä se auki, mutta varmista vahvat salasanat, 2FA ja yritysten rajoittaminen. Nykyaikaiset sovellukset käyttävät yleensä REST API:a sovellussalasanalla (oppitunti 3.3).
Vuotavat käyttäjätunnukset
Oppitunnilla 3.3 näit, että WordPress näyttää käyttäjätunnuksista johdetun tiedon:
https://example.com/?author=1ohjaa osoitteeseen/author/<nimi>/;https://example.com/wp-json/wp/v2/usersnäyttää listan kaikkien julkaisseiden käyttäjien slugeista.
Onko tämä vakavaa? Käyttäjätunnus ei ole salasana. Pitkällä uniikilla salasanalla ja 2FA:lla sillä ei ole juuri väliä. Mutta se antaa murtautujalle puolet kirjautumistiedoista ja helpottaa kohdennettua phishingiä. Kohtuullisia toimenpiteitä:
- anna pääkäyttäjille käyttäjätunnus, joka ei ole heidän julkinen nimensä, äläkä julkaise pääkäyttäjätilillä (oppitunti 3.3);
- rajoita käyttäjälistaa REST API:ssa tietoturvalisäosalla tai muutamalla rivillä koodia, jos et tarvitse sitä. Älä sulje REST API:a kokonaan: lohkoeditori ja monet lisäosat tarvitsevat sitä.
Sovellussalasanat
Sovellussalasanat (oppitunti 3.3) ovat turvallinen tapa antaa sovellukselle tai järjestelmälle käyttöoikeus, mutta ne ohittavat kaksivaiheisen tunnistautumisesi: sovellus, jolla on sovellussalasana, ei tarvitse koodia. Luo niitä vain tarvittaessa, matalan roolin tilille, ja peruuta ne, kun et enää käytä liitäntää.
Yhteenveto
- Käytä pitkiä, uniikkeja salasanoja (tunnuslauseita) salasanojen hallintaohjelmassa.
- Ota käyttöön kaksivaiheinen tunnistautuminen, lisäosalla WordPressissä ja myös webhotellipaneelissa, sähköpostissa ja rekisterinpitäjällä.
- Pysäytä kirjautumisyritykset mahdollisimman aikaisin: palvelimella, IP-säännöllä tai ylimääräisellä salasanalla, tai lisäosalla.
- Estä xmlrpc.php, jos et käytä sitä.
- Vuotaneet käyttäjätunnukset eivät ole katastrofi, mutta ovat vihje: älä julkaise pääkäyttäjänä ja rajoita REST-käyttäjälistaa, jos et tarvitse sitä.
Tietovisa
Tehtävä
Tehtävä A7.3: Mitä sivustosi paljastaa kirjautumisen yhteydessä? Syötä sivustosi osoite ja todista, että se on oma sivustosi (tehtävän koodilla, TXT-tietueena tai tiedostona). Ohjelma tarkistaa kolme asiaa: palauttaako xmlrpc.php listan funktioista (avoin) vai onko se estetty, näyttääkö /wp-json/wp/v2/users käyttäjätunnukset (slugit), ja mihin /?author=1 ohjaa. Täytä, tarvitsetko xmlrpc.php:tä; jos et, avoin xmlrpc.php näkyy punaisena. Vuotaneet slugit näkyvät oranssina selityksen kanssa.
Tehtävä D7.3: Kaksivaiheisen tunnistautumisen käyttöönotto. Ota kaksivaiheinen tunnistautuminen käyttöön kaikille WordPress-sivustosi pääkäyttäjille, ja myös webhotellipaneelissa ja sähköpostissa. Tallenna varmuuskoodit salasanojen hallintaohjelmaasi. Merkitse osa kerrallaan, että se on päällä, ja kirjaa, mitä menetelmää käytät (sovellus, passkey, sähköposti) ja missä varmuuskoodit sijaitsevat. Kirjaa myös, miten suojaat wp-login.php:tä lisäksi ja miksi valitsit juuri sen tavan.
Tehtävä D7.3: Kaksivaiheisen tunnistautumisen käyttöönotto
Tämän tehtävän teet itse, kukaan ei tarkista sitä. Merkitse tekemäsi kohdat ja merkitse tehtävä tehdyksi.
Käytä ylläpitäjillä mieluummin sovellusta tai passkeytä kuin pelkkää sähköpostia. Kiinteän IP-osoitteen voi sallia osoitteessa wp-login.php; vaihtelevilla osoitteilla kirjautumisyritysten rajoittaminen sopii paremmin.
Merkintäsi ja muistiinpanosi pysyvät vain tässä selaimessa, emme lähetä niitä minnekään. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että olet tehnyt tehtävän.
Lue lisää
Nämä artikkelit kuvaavat vaiheet WebOkén paneeleissa; muissa paneeleissa ne toimivat vastaavalla tavalla.
- DirectAdmin-ohje 3.7: Turvalliset salasanat ja mitä teet, jos salasana on vuotanut
- Kaksivaiheinen tunnistautuminen Oma WebOkéssa ja todennussovelluksen käyttöönotto
- WordPressin xmlrpc.php-tiedostoon ei pääse
- WordPressin wp-login.php-tiedoston suojaaminen
- DirectAdmin-ohje 15.9: Salasanalla suojatut hakemistot
- Turvallinen kirjautuminen (Veilig Internetten, Alankomaiden viranomainen): https://veiliginternetten.nl/veilig-inloggen/
- Brute force -hyökkäykset (developer.wordpress.org, englanniksi): https://developer.wordpress.org/advanced-administration/security/brute-force/
- Kaksivaiheisen tunnistautumisen määrittäminen WordPressiin
