Paranna WordPress-sivuston tietoturvaa

Joonas Vanhatapio

WordPress julkaisujärjestelmä joutuu aika ajoin erilaisten hakkerointi- ja tietoturvahyökkäysten kohteeksi, kuten kaikki muutkin eri julkaisujärjestelmillä toteutetut kotisivut. Jokainen voi onneksi myös itse minimoida WordPress-sivuston tietoturvauhkia.

Yksi tärkeimmistä keinoista tietoturvauhkien minimoimiseen on valita WordPress-kotisivuille luotettava ja turvallinen hostingratkaisu. Zonerilla on panostettu turvallisiin ja toimintavarmoihin palvelimiin. Webhotellien palvelinten toimintaa valvotaan 24/7 ja sen ansiosta mahdollisiin ongelmiin puututaan nopeasti. WP.one-palvelussa valvotaan palvelimen lisäksi myös jokaisen yksittäisen sivun toimintaa.

Päivitä WordPress, lisäosat ja teemat säännöllisesti

WordPress, sen lisäosat ja teemat tulisi päivittää säännöllisesti. WordPress on maailman käytetyin julkaisujärjestelmä ja siksi myös hakkerit hyökkäävät usein nimenomaan WordPress-sivustoille.

On tärkeää valita vain sellaisia lisäosia ja teemoja, joita ylläpidetään jatkuvasti. Laajan käyttäjäyhteisön ansiosta mahdolliset tietoturvahaavoittuvuudet huomataan nopeasti ja vastuulliset kehittäjät luovat niitä paikkaavia päivityksiä.

Lisäosien tarpeellisuutta on myös hyvä arvioida kriittisesti: onko lisäosa välttämätön vai voiko halutun toiminnon saada sivulle ilman erillistä lisäosaa? Käyttämättömät lisäosat ja teemat kannattaa aina poistaa. Lisäosien ja teemojen lähteisiin on myös hyvä kiinnittää huomiota, eikä niitä kannata ladata epäilyttävistä lähteistä.

Automaattiset WordPress-päivitykset vähentävät riskiä

Mitä nopeammin haavoittuvuuksia korjaavat päivitykset saadaan asennettua sivustolle, sitä pienempi riski sivustolla on joutua alttiiksi hyökkäykselle. Automaattisten päivitysten käyttöönotto vähentääkin mahdollisuuksia joutua hakkeroiduksi.

Useimmat palveluntarjoajat sisällyttävät palveluunsa jonkin asennusohjelman, jolla automaattisten päivitysten käyttöönotto onnistuu. Jos käytössä on Zonerin webhotelli, voit automatisoida WordPressin päivitykset webhotellista löytyvän Installatron-asennustyökalun avulla.

Ongelmana automaattisissa päivityksissä on kuitenkin usein sivuston toimivuuden varmistaminen päivitysten jälkeen. Päivitykset voivat pahimmillaan aiheuttaa toimimattomuutta sivustolla. WP.one WordPress hosting -palvelussa sivustojen päivitykset huolehditaan oletuksena asiakkaan puolesta. Osana automaattisia päivityksiä, sivustolla suoritetaan myös toimivuustestaus, jossa varmistetaan, ettei päivitys aiheuta muutoksia sivuston toiminnassa.

Automaattisia päivityksiä käyttävien kannattaa kuitenkin huomioida, että maksulliset lisäosat voidaan päivittää vain, jos niiden lisenssit on määritetty oikein ja lisäosa käyttää WordPressin standardien mukaista päivitysmenetelmää. Jos lisenssiä ei ole määritetty, maksullisten lisäosien päivitys tulee hoitaa itse manuaalisesti.

Joonas Vanhatapio

WordPress security-lisäosat

WordPressiin on olemassa useita ilmaisia ja maksullisia security- eli tietoturvalisäosia. Suosittuja ilmaisia lisäosia ovat esimerkiksi Sucuri ja Wordfence.

Sucuri

Sucuri on ilmainen lisäosa, joka mainostaa parantavansa sivuston tietoturvaa esimerkiksi erilaisia turvallisuustarkistuksilla. Lisäosa sisältää muun muassa haittaohjelmatarkistukset, tiedostojen tarkistukset sekä tietoturvailmoitukset. Sucuri ilmoittaa sivuston ylläpitäjälle, jos sivusto hakkeroidaan.

Wordfence

Wordfence-lisäosa sisältää palomuurin, joka mainosten mukaan suojaa esimerkiksi haittaohjelmilta ja haitallisilta IP-osoitteilta. Lisäosa sisältää myös monia maksullisia ominaisuuksia.

Miksi tietoturvalisäosia ei kannata käyttää?

Tietoturvalisäosat eivät kuitenkaan ole usein niin hyödyllisiä, kuin ne antavat ymmärtää. Ne saattavat esimerkiksi piilottaa WordPressin versionumeron, vaikka siitä ei ole todellista hyötyä sivustolle murtautuvia botteja vastaan. Botit yrittävät iskeä sivustolle riippumatta siitä, löytyykö tietoa WordPressin versionumerosta vai ei.

Parempaa tietoturvaa mainostavat lisäosat voivat hidastaa sivua merkittävästi, joten niistä on usein jopa enemmän haittaa kuin hyötyä. Pahimmillaan tietoturvalisäosa voi olla muiden lisäosien tapaan tietoturvariski. Tietoturvalisäosista on joskus jopa löydetty vakavia haavoittuvuuksia, jotka ovat mahdollistaneet sivustolle murtautumisen.

Erilaisia lisäosia tärkeämpää olisikin panostaa päivitysten hoitamiseen ja laadukkaaseen hosting-ratkaisuun, joka tarjoaa sivustolle palvelintason suojauksen. Tietoturvaa ei voi hoitaa WordPressin koodissa, vaan se täytyy tehdä joko palvelintasolla tai kolmannen osapuolen ratkaisulla, joka suodattaa pois haitallista liikennettä.

Tällaisia kolmannen osapuolen ratkaisuja ovat esimerkiksi Sucuri. Kyseessä ei siis ole ilmainen Sucuri-lisäosa, vaan erikseen ostettava Sucurin tarjoama palvelu. Käytännössä sivuston liikenne ohjataan kolmannen osapuolen palvelinten kautta, jolloin sivustoa suojataan ja liikennettä valvotaan sen avulla.

WP.one-palvelussa on käyttäjillä oletuksena käytössä Bunny CDN, joka suojaa sivustoa tehokkaasti esimerkiksi palvelunestohyökkäyksiltä ja rajoittaa haitallista liikennettä.

Valitse turvalliset käyttäjä­tunnukset ja salasanat

On tärkeää valita WordPress-sivulle turvalliset käyttäjätunnukset ja salasanat. Uusia käyttäjätunnuksia luodessa kannattaa aina miettiä, mitkä oikeudet käyttäjä todella tarvitsee. Älä anna käyttäjälle laajoja oikeuksia vain varmuuden vuoksi. Käyttäjätunnukset kannattaa myös poistaa sitä mukaa, kun niitä ei enää tarvita.

Vahva salasana on sivujen turvallisuuden kannalta äärimmäisen tärkeä, eikä sen merkitystä voi liikaa korostaa. Vahva salasana on 30-merkkiä pitkä uniikki, pitkä ja sisältää mielellään kirjaimia, numeroita sekä erikoismerkkejä. Lue lisää vahvoista salasanoista ja vinkkejä salasanojen hallintaan täältä.

Vinkki: Käytä kaksivaiheista tunnistusta, jossa kirjautuminen pitää vahvistaa salasanan lisäksi esimerkiksi sähköpostiin saapuvalla kertakäyttöisellä koodilla.

Hyvällä tietoturvalla voidaan pysäyttää kaatuvien palikoiden rivi.

Ota SSL-salaus käyttöön

SSL-salaus suojaa liikenteen sivuston palvelimen ja käyttäjän selaimen välillä. Suosittelemme kaikkia WordPress-sivustoja käyttämään SSL-salausta, sillä ilman sitä esimerkiksi samaa verkkoa käyttävä voi helposti selvittää salasanasi.

Lue lisää SSL-salauksesta ja sen käyttöönotosta webhotellissa täältä.

WP.one-palvelua käyttävillä sivustoilla SSL-salaus on jo valmiiksi käytössä.

Huolehdi varmuuskopiot

Sivuston säännöllinen varmuuskopiointi on tärkeää, jotta sivusto voidaan palauttaa mahdollisissa ongelmatilanteissa varmuuskopion avulla. Jos sivusto esimerkiksi hakkeroidaan kaikista suojaustoimenpiteistä huolimatta, voidaan se palauttaa varmuuskopion avulla hakkerointia edeltäneeseen tilanteeseen.

Suurin osa palveluntarjoajista on sisällyttänyt webhotelliin jonkin asennustyökalun, jonka avulla varmuuskopiot on mahdollista automatisoida. Jos käytät Zonerin webhotellia, voit automatisoida varmuuskopiot helposti webhotellin Installatron-asennustyökalun avulla.

WP.one-palvelussa puolestaan varmuuskopiot otetaan oletuksena kerran päivässä, säilytetään 30 päivää ulkoisella varmuuskopiopalvelimella ja asiakkaan on mahdollista ostaa lisäpalveluna myös tiheämpiä kopiointivälejä.

Valvo tiedostoja ja rajoita kirjautumis­yritysten määrää

Sivuston tiedostojen valvonta auttaa havaitsemaan tietoturvan vaarantumisen. WordPressin oletusasetukset puolestaan mahdollistavat loputtomat kirjautumisyritykset, mikä voi johtaa väsytys- eli brute force -hyökkäyksen tekemiseen sivustolle.

Webhotelli käyttäjien onkin tärkeää valvoa tiedostoja ja rajoittaa myös kirjautumisyritysten määrää. Kirjautumisyritysten rajoittamista tärkeämpää on kuitenkin käyttää vahvaa salasanaa, sillä se suojaa väsytyshyökkäyksiltä tehokkaasti.

Väsytyshyökkäyksiä vastaan voi suojautua myös Googlen reCAPTCHAn avulla. Se pyrkii varmistamaan aina sivustolle kirjauduttaessa tai kommenttia jätettäessä, että kyseessä on ihminen eikä botti.

WP.one-palvelua käyttävien sivustojen tiedostoja valvotaan säännöllisesti ja kirjautumisyritysten määrää on jo oletuksena rajoitettu. WP.onessa käytössä oleva BunnyCDN eli sisällönjakoverkosto (engl. Content Delivery Network, CDN) estää myös tehokkaasti bottiliikennettä ja sitä kautta ehkäisee myös väsytyshyökkäyksiä.

Vinkki: Bottien jättämiä roskakommentteja vastaan voi suojautua tehokkaasti myös Akismet-lisäosan avulla.

Väsytyshyökkäyksiä vastaan voidaan helposti suojautua.

Vahvista WordPress-asennuksen turvallisuutta

WordPress-asennuksen turvallisuutta on mahdollista vahvistaa myös muutamilla keinoilla, jotka vaativat hieman edistyneempää osaamista WordPressin käytöstä. Jos olet epävarma, kannattaa suojaukset jättää tekemättä, sillä suojausten tekeminen voi vaikuttaa sivuston toimintaan. Suojauksia tärkeämpää on kuitenkin huolehtia sivuston päivityksistä sekä käyttää vahvaa salasanaa.

WordPressiä webhotellissa käyttävät voivat halutessaan tehdä kaikki alla olevassa ohjeessa mainitut suojaukset.

Jos käytät WP.onea, alla olevassa ohjeistuksessa mainitut wp-admin-, wp-includes- ja wp-content/uploads-kansiot sekä wp-config-tiedosto on jo valmiiksi suojattu. Tiedostojen muokkauksen esto suoraan WordPressin ohjausnäkymästä on myös käytössä oletuksena. Ainoastaan XML-RPC:n suojauksen tekeminen voidaan tehdä myös WP.one-palvelussa haluttaessa.

wp-admin-kansion suojaus

Wp-admin kansion voi suojata helposti .htaccessin avulla. Näin palvelin saadaan kysymään salasanaa jo ennen mahdollista kirjautumisyritystä itse WordPress-sivuston hallintaan.

Aluksi luodaan .htpasswd-tiedosto yksityiseen tiedostosijaintiin, johon ei ole julkista pääsyä. Jos esimerkiksi sivuston julkinen tiedostokansio sijaitsee tiedostopolussa /home/user/public_html, voidaan .htpasswd tiedosto luoda esimerkiksi tiedostoon /home/user/private/.htpasswd

htpasswd -c /home/user/private/.htpasswd kayttajanimitahan

Seuraavaksi luo .htaccess-tiedosto ja lisää se /wp-admin/ -kansioon. Lisää sen jälkeen tiedostoon alla oleva määritys:

AuthName "Rajoitettu"
AuthUserFile /home/user/private/.htpasswd
AuthGroupFile /dev/null
AuthType basic
require user kayttajanimitahan

Muistathan vaihtaa oikean käyttäjänimen, sekä generoidun salasanatiedoston sijainnin.

Tämä toiminnallisuus saattaa hajottaa joidenkin WordPress-asennusten toimintaa. Kannattaakin lisätä wp-admin kansioon luotavaan .htaccess-tiedostoon myös seuraava määritys:

<Files admin-ajax.php>
    Order allow,deny
    Allow from all
    Satisfy any
</Files>

Jos asennus ei määrityksestä huolimatta toimi .htaccess-suojauksen jälkeen, sitä ei kannata käyttää.

wp-includes-kansion suojaus

Lisäsuojaa asennukseen saa muokkaamalla sivuston .htaccess tiedostoa. Tiedostoon lisätään alla olevat rivit, joiden tarkoituksena on estää ylimääräisten skriptien ajo wp-includes-kansioon lisättyjen haittaohjelmien avulla. Älä sijoita rivejä #BEGIN WordPress ja #END WordPress -rivien väliin.

# Estä wp-includes kansion suora PHP-suoritus
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

wp-content/uploads-kansion suojaaminen

Suojaa myös /wp-content/uploads/-kansio luomalla sinne oma .htaccess-tiedosto seuraavin määrityksin:

# Estä PHP-tiedostojen suoritus uploads-kansiossa

<Files ~ "\.ph(?:p[345]?|t|tml)$">
   deny from all
</Files>

Huomaathan, että tämä voi rikkoa teeman, joka vaatii PHP:n suorittamisen Uploads-kansiossa. Sellaisen teeman kanssa kyseistä määritystä ei kannata käyttää.

wp-config-tiedosto suojaus

Voit suojata myös asennuksesi juuresta löytyvän wp-config-tiedoston. Lisää .htaccessiin alla olevat rivit, joilla voidaan estää ylimääräiset yritykset päästä sivuston kimppuun tämän tiedoston kautta.

<files wp-config.php>
order allow,deny
deny from all
</files>

Tiedostojen muokkauksen esto WordPress-hallinnasta

WordPressin hallintapaneeli eli dashboard tarjoaa oletuksena mahdollisuuden muokata sivuston .php-tiedostoja suoraan tiedostoeditorin avulla. Estämällä tämän mahdollisuuden vältytään mahdollisilta käyttäjän vahingossa aiheuttamilta virhetilanteilta, sekä hieman hankaloitetaan vuotaneen kirjautumisen kautta tehtyjä toimintoja. Voit estää tiedostojen muokkauksen lisäämällä kaksi seuraavaa riviä keskelle wp-config-tiedostoa, samaan paikkaan muiden määritysten kanssa.

## Poista käytöstä WordPressin oma PHP-tiedostojen muokkain ohjausnäkymästä
define('DISALLOW_FILE_EDIT', true);

xml-rpc:n kautta tulevilta hyökkäyksiltä suojautuminen

XML-RPC:n tavoitteena on yhtenäistää eri järjestelmien välistä viestintää. Se käyttää HTTP:tä kuljetusmekanismina ja XML:ää koodausmekanismina, joka mahdollistaa monenlaisen tiedonsiirron. Jos et tarvitse XML-RPC:tä, kannattaa sen kautta tulevilta hyökkäyksiltä suojautua.

Webhotelleissa voit suojautua lisäämällä seuraavan määrityksen .htaccess-tiedostoon:

<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

WP.one-palvelussa alla oleva määritys tulee lisätä nginx.conf-tiedostoon (/data/sivusto.fi/nginx/nginx.conf):

location ~* ^/xmlrpc.php$ {
return 403;
}

Huomaathan, että XML-RPC:n ottaminen pois käytöstä, estää WordPressin mobiilisovelluksen käyttämisen. Se estää myös XML-RCP:tä tarvitsevien lisäosien, kuten Jetpackin, käyttämisen.