WordPressin tiedostorakenteen kovennus kokonaisuutena

WordPressin tietoturva mielletään usein lisäosiksi, palomuureiksi ja kirjautumissuojauksiksi. Todellisuudessa yksi tärkeimmistä, mutta vähiten näkyvistä turvakerroksista on tiedostorakenne ja sen oikea kovennus. Jos hyökkääjä pääsee kirjoittamaan tai lukemaan vääriä tiedostoja, peli on usein jo hävitty – riippumatta siitä, kuinka monta turvalisäosaa on asennettu.

Tiedostorakenteen hardening ei ole temppu tai yksittäinen asetus. Se on joukko periaatteita, joilla WordPressin ajonaikainen hyökkäyspinta minimoidaan.

Miksi tiedostorakenne on kriittinen hyökkäyspinta

WordPress on kirjoitettava sovellus

WordPress tarvitsee kirjoitusoikeuksia:

  • mediakirjastoon

  • välimuistiin

  • päivityksiä varten

Tämä tarkoittaa, että osa tiedostojärjestelmästä on pakko olla kirjoitettavissa. Kovennuksen idea ei ole estää kirjoittamista kokonaan, vaan rajata se minimiin.

Suurin osa hyökkäyksistä on tiedostopohjaisia

Tyypilliset hyökkäykset pyrkivät:

  • lisäämään PHP-tiedostoja uploads-kansioon

  • muokkaamaan wp-config.php:tä

  • injektoimaan koodia teema- tai lisäosatiedostoihin

  • lukemaan arkaluonteisia konfiguraatiotiedostoja

Hyvin kovennettu tiedostorakenne estää nämä ennen kuin ne edes pääsevät WordPress-tasolle.

Perusperiaate: vähimmät oikeudet

Mitä WordPress oikeasti tarvitsee

WordPress ei tarvitse:

  • kirjoitusoikeutta core-tiedostoihin ajon aikana

  • kirjoitusoikeutta lisäosiin tai teemoihin normaalissa käytössä

  • pääsyä järjestelmän muihin hakemistoihin

Suurin osa WordPressin tiedostoista on staattisia. Kun ne ovat oikein suojattuja, hyökkääjän liikkumavara kapenee dramaattisesti.

wp-config.php: tärkein yksittäinen tiedosto

Sijainti ja näkyvyys

wp-config.php sisältää:

  • tietokantatunnukset

  • salausavaimet

  • ympäristöasetukset

Ensimmäinen kovennusaskel on siirtää wp-config.php webrootin yläpuolelle, jos palvelinympäristö sallii sen. WordPress osaa lukea sen sieltä automaattisesti.

Jos tämä ei ole mahdollista, tiedoston oikeudet ja suojaus ovat kriittisiä.

Oikeudet ja suojaus

wp-config.php:

  • ei saa olla kirjoitettavissa web-käyttäjälle

  • ei saa olla ladattavissa selaimen kautta

  • ei saa sisältää ylimääräisiä debug-asetuksia tuotannossa

Yksi vuotanut wp-config.php tarkoittaa koko sivuston haltuunottoa.

wp-content: joustava mutta vaarallinen

uploads-kansio on korkean riskin alue

wp-content/uploads on tarkoitettu käyttäjien lataamalle sisällölle. Se ei ole tarkoitettu PHP-koodille.

Kovennuksen perusperiaate:

  • uploads-kansiossa ei ajeta PHP:tä

Tämä estää tehokkaasti suuren osan web shell -hyökkäyksistä.

Lisäosat ja teemat

Lisäosien ja teemojen hakemistoihin:

  • kirjoitetaan vain päivitysten aikana

  • ei ajeta dynaamista tiedostonluontia

Tuotantoympäristössä nämä hakemistot tulisi lukita kirjoitussuojatuiksi ja avata vain päivityshetkellä.

WordPress core -tiedostot

Core ei muutu ajossa

WordPressin ydintiedostot eivät muutu normaalissa käytössä. Jos ne muuttuvat, kyseessä on joko:

  • päivitys

  • virheellinen konfiguraatio

  • tietoturvaloukkaus

Kovennuksessa core-hakemistot tehdään read-only web-käyttäjälle.

Core-modifikaatiot ovat riski

Jos corea on muokattu käsin, kovennus vaikeutuu merkittävästi. Tämä on yksi vahvimmista syistä välttää core-hackeja kokonaan.

Tiedosto-oikeudet ja omistajuus

Oikeudet eivät ole yksi numero

Yleinen virhe on etsiä “oikeaa chmod-arvoa”. Todellisuudessa tärkeämpää on:

  • kuka omistaa tiedostot

  • mikä käyttäjä ajaa PHP:tä

  • kuka saa kirjoittaa ja milloin

Kovennus perustuu rooleihin, ei taulukoihin.

Web-käyttäjä ei ole ylläpitäjä

Web-palvelimen käyttäjän ei pitäisi:

  • omistaa WordPress-tiedostoja

  • voida muokata koodia

  • voida luoda uusia PHP-tiedostoja vapaasti

Tämä erottaa hyökkäyksen sivuston kaatumisesta täyteen haltuunottoon.

Tiedostojen listaus ja metatiedot

Directory listing pois päältä

Jos hakemistolistaus on päällä, hyökkääjä näkee:

  • tiedostojen nimet

  • rakenteen

  • mahdolliset varmuuskopiot

Hakemistolistaus ei ole koskaan hyödyllinen WordPress-tuotannossa.

Varmuuskopiot ja väliaikaiset tiedostot

Usein unohtuvat riskit:

  • .zip- ja .sql-varmuuskopiot

  • editorien temp-tiedostot

  • vanhat config-versiot

Kovennus tarkoittaa myös siisteyttä.

PHP:n ajokohdan rajaaminen

Kaikkialla ei tarvitse ajaa PHP:tä

WordPress tarvitsee PHP:tä tietyissä hakemistoissa. Muualla se on riski.

Hyvä periaate:

  • PHP sallittu vain siellä missä sitä tarvitaan

  • media- ja asset-hakemistot vain staattista sisältöä

Tämä rajaa hyökkäyksen leviämistä merkittävästi.

Automaattiset päivitykset ja kovennus

Päivitykset vs kirjoitusoikeudet

Automaattiset päivitykset vaativat kirjoitusoikeuksia. Tämä on tietoinen kompromissi.

Yleisiä malleja:

  • väliaikainen kirjoitusoikeus päivityksen aikana

  • CI/CD-pohjainen päivitys ilman web-kirjoitusoikeuksia

Jälkimmäinen on turvallisempi, mutta vaatii enemmän prosessia.

Kovennus ei saa rikkoa ylläpitoa

Liian tiukka suojaus on myös riski

Jos kovennus estää:

  • päivitykset

  • varmuuskopioinnin

  • virheiden korjaamisen

sivusto jää haavoittuvaksi toisella tavalla. Turvallisuus ei ole maksimaalinen lukitus, vaan hallittu tasapaino.

Miten tiedostorakenteen kovennus näkyy käytännössä

Hyvin kovennettu WordPress:

  • ei salli PHP-tiedostojen lataamista väärään paikkaan

  • ei paljasta arkaluonteisia tiedostoja

  • ei muutu ajon aikana yllättäen

  • reagoi hyökkäyksiin rajatusti

Usein paras merkki onnistuneesta kovennuksesta on se, ettei siitä tarvitse ajatella päivittäin.

Lopuksi: kovennus on passiivista puolustusta

WordPressin tiedostorakenteen hardening ei pysäytä kaikkia hyökkäyksiä. Se pysäyttää helpoimmat, yleisimmät ja vaarallisimmat.

Kun tiedostojärjestelmä on lukittu oikein, hyökkääjän täytyy murtaa useampi kerros. Ja jokainen lisäkerros lisää aikaa, vaivaa ja todennäköisyyttä, että hyökkäys epäonnistuu tai havaitaan ajoissa.

Tiedostorakenteen kovennus ei ole näyttävää. Juuri siksi se on yksi tehokkaimmista tietoturvatoimista WordPressissä.