# Palvelimen koventaminen PHP-verkkopalvelimille

> Palvelimen koventaminen PHP:lle: eristämme verkkosivustot, asetamme php.ini:n, oikeudet ja pääsyt turvallisiksi ja dokumentoimme jokaisen muutoksen.

Lähde: https://phpsos.de/fi/leistungen/server-haertung/  
Tilanne: 25.10.2026  
Palveluntarjoaja: PHP SOS, PHP-hätäapu ja palvelimen tietoturva. Pikaapu WhatsAppilla: https://wa.me/491736494914?text=Hei%20PHP%20SOS%2C%20tarvitsemme%20apua%20PHP-palvelimemme%20kanssa.%20Yritys%3A%20%E2%80%A6%20Verkkosivusto%3A%20%E2%80%A6

**Lyhyesti:** Joka koventaa palvelimensa PHP:lle, huolehtii siitä, ettei yksittäinen haavoittuvuus avaa koko palvelinta. Erotamme verkkosivustot toisistaan, asetamme PHP:n ja verkkopalvelimen turvallisiksi, rajoitamme oikeuksia ja pääsyjä ja dokumentoimme jokaisen muutoksen. Näin vahinko jää pienemmäksi, jos jotain kuitenkin tapahtuu.

## Miksi koventaminen on tullut tärkeämmäksi PHP2Shellin jälkeen

PHP2Shell on osoittanut, kuinka nopeasti haavoittuvuus itse PHP:ssä muuttuu ongelmaksi kaikille palvelimen verkkosivustoille. Haavoittuvuuksien CVE-2026-109618 ja CVE-2026-109619 kautta hyökkääjät voivat suorittaa koodia ilman kirjautumista. Korjaus sulkee tämän oven. Koventaminen vastaa eri kysymykseen: mitä voi tehdä se, joka silti pääsee sisään, tämän tai seuraavan haavoittuvuuden kautta?

Koventamattomalla palvelimella kaikki verkkosivustot toimivat usein saman käyttäjän alla, PHP saa suorittaa järjestelmäkomentoja ja tunnukset ovat kaikkien prosessien luettavissa. Murto pieneen sivusivustoon yltää silloin verkkokauppaan asti. Hyvä koventaminen erottaa nämä alueet toisistaan. Se ei ole kertatoimi vaan perustila, joka on säilytettävä jokaisen uuden verkkosivuston ja versionvaihdon yhteydessä.

## Palvelimen koventaminen PHP:lle: mitä konkreettisesti muutamme

### Sivustokohtainen eristys

Jokainen verkkosivusto saa oman järjestelmäkäyttäjän ja oman PHP-FPM-poolin. Asetuksella `open_basedir` ja sopivilla tiedosto-oikeuksilla sovellus näkee vain oman hakemistonsa. Lisää aiheesta sivulla [open_basedir ja sivustokohtainen eristys](https://phpsos.de/fi/ratgeber/open-basedir/).

### Turvallinen PHP-konfiguraatio

Asetamme php.ini:n ja poolin konfiguraation niin, etteivät sovellukset voi ylikirjoittaa turvallisuuden kannalta tärkeitä arvoja itse. Ote siitä, miltä se voi näyttää FPM-poolissa:

```ini
; Määritä arvot kiinteästi FPM-poolissa, ei muutettavissa ini_set()-funktiolla
php_admin_flag[expose_php] = off
php_admin_flag[display_errors] = off
php_admin_flag[log_errors] = on
php_admin_value[open_basedir] = /var/www/kunde1/:/tmp/
php_admin_flag[session.upload_progress.enabled] = off
php_admin_flag[allow_url_include] = off
```

Mitä funktioita voi lisäksi estää, riippuu sovelluksesta. Vihjeitä löytyy sivuilta [php.ini:n turvallinen konfigurointi](https://phpsos.de/fi/ratgeber/php-ini-sicher-konfigurieren/) ja [disable_functions oikein käytettynä](https://phpsos.de/fi/ratgeber/disable-functions/).

### Tiedosto-oikeudet ja kirjoitusoikeus

Verkkopalvelin saa kirjoittaa vain siellä, missä se on tarpeen, esimerkiksi latauskansiossa. Latauskansioissa PHP:n suoritus estetään. Ohjelmakoodin omistaa eri käyttäjä kuin se, jonka alla PHP toimii. Periaatteet selittää sivu [Tiedosto-oikeudet verkkopalvelimella](https://phpsos.de/fi/ratgeber/dateirechte-webserver/).

### Pääsyt, palvelut ja lokit

SSH vain avaimella, ylläpitokäyttöliittymät kaksivaiheisella tunnistautumisella, tarpeettomat palvelut ja portit suljettuina. Lokit säilytetään ja turvataan niin, että ne ovat vielä olemassa poikkeaman jälkeen. Varmuuskopioiden palautettavuus tarkistetaan.

### Verkkopalvelin ja tietoturvaotsakkeet

Myös verkkopalvelin itse kuuluu koventamiseen: versiotietojen piilotus, hakemistolistausten poisto, pääsyn esto asetus-, varmuuskopio- ja versionhallintatiedostoihin sekä ylläpitoalueiden lisäsuojaus, esimerkiksi IP-sallinnalla. Tietoturvaotsakkeet, kuten Content-Security-Policy tai HSTS, suojaavat verkkosivustonne kävijöitä selaimessa.

## Mitä löydämme kartoituksessa usein

Moni heikkous toistuu palvelimelta toiselle. Tyypillisiä ovat useat verkkosivustot yhteisen käyttäjän alla, julkisesti tavoitettavat tietokantojen käyttöliittymät, vanhat testiasennukset alikansioissa, unohtuneet PHP-versiot nykyisen rinnalla sekä varmuuskopiot, jotka ovat verkkohakemistossa ladattavissa. Usein puuttuu myös kirjautumisten lokitus tai lokit poistetaan muutaman päivän kuluttua.

Mikään näistä ei ole yksinään dramaattinen. Yhdessä ne ratkaisevat, jääkö murto yhteen verkkosivustoon vai koskeeko se koko palvelinta.

## Miten PHP SOS auttaa konkreettisesti?

1. **Kartoitus:** Kokoamme käyttöjärjestelmän, verkkopalvelimen, PHP-versiot, verkkosivustot, käyttäjät, avoimet palvelut ja olemassa olevat varmuuskopiot.
2. **Toimenpidesuunnitelma:** Saatte tärkeysjärjestykseen asetetun luettelon, jossa on kunkin kohdan työmäärä ja mahdolliset vaikutukset. Te päätätte, mitä toteutetaan.
3. **Toteutus vaiheittain:** Muutamme konfiguraatioita sopimuksen mukaan, testaamme verkkosivustot jokaisen vaiheen jälkeen ja kirjaamme, miten kukin muutos voidaan perua.
4. **Tarkistus:** Toteutuksen jälkeen tarkistamme vaikutuksen, esimerkiksi ettei verkkosivusto todella enää pysty lukemaan vieraita hakemistoja.
5. **Luovutus:** Saatte uuden tilan dokumentaation, jonka myös hosting-yrityksenne tai toimistonne voi ymmärtää.

## Mitä saatte ja mitä tarvitsemme

Saatte koventamisraportin, jossa on lähtötilanne, toteutetut toimenpiteet, tietoisesti avoimiksi jätetyt kohdat perusteluineen ja suositus säännölliseen tarkistukseen. Konfiguraatiotiedostojen muutokset on dokumentoitu jäljitettävästi.

Tarvitsemme teiltä:

- **root- tai ylläpitäjätunnukset** palvelimelle, paneeleissa lisäksi paneelitunnukset
- **luettelon sovelluksista** ja niiden erityispiirteistä, esimerkiksi lataukset, rajapinnat, cron-tehtävät
- **teknisen yhteyshenkilön**, joka voi vahvistaa toiminnot muutosten jälkeen
- **huoltoikkunat** uudelleenkäynnistyksille
- **ajantasaisen varmuuskopion** tai toimeksiannon luoda sellainen ensin

## Mitä emme lupaa

Koventaminen ei tee palvelimesta haavoittumatonta. Se pienentää hyökkäyspinta-alaa ja rajoittaa vahinkoja, mutta ei korvaa päivityksiä eikä valvontaa. Korjaamaton PHP-versio pysyy haavoittuvana riippumatta siitä, kuinka hyvin muu on asetettu. Siksi yhdistämme koventamisen [PHP-korjauspalveluun](https://phpsos.de/fi/leistungen/php-patch-service/) ja suosittelemme sen jälkeen jatkuvaa huoltoa [tietoturvahuoltosopimuksella](https://phpsos.de/fi/leistungen/security-wartungsvertrag/).

Jaetussa hostingissa moni asia ei ole säädettävissä, koska hosting-yritys määrää konfiguraation. Silloin näytämme, mikä on mahdollista pakettinne puitteissa ja missä siirtyminen omaan tai hallinnoituun palvelimeen olisi järkevää.


## Usein kysytyt kysymykset

**Mitä palvelimen koventaminen tarkoittaa?**  
Koventaminen tarkoittaa sellaisen poistamista käytöstä tai rajoittamista, mikä ei ole käytön kannalta tarpeellista. Siihen kuuluvat tarpeettomat palvelut, liian laajat oikeudet, avoimet portit ja turvattomat oletusasetukset. Tavoitteena on, ettei yksittäinen virhe avaa koko palvelinta.

**Olisiko koventaminen estänyt PHP2Shellin?**  
Ei, itse PHP:n haavoittuvuutta vastaan auttaa vain korjaus. Koventaminen kuitenkin rajoittaa, mitä hyökkääjä voi onnistuneen murron jälkeen saavuttaa, esimerkiksi pääseekö hän käsiksi muihin verkkosivustoihin tai tunnuksiin.

**Rikkoutuuko verkkosivustoni koventamisessa?**  
Riski on olemassa, jos asetuksia muutetaan ilman testausta. Teemme muutokset vaiheittain, tarkistamme toiminnot jokaisen vaiheen jälkeen ja kirjaamme, miten kukin muutos voidaan perua.

**Kuinka usein koventaminen kannattaa tarkistaa?**  
Viimeistään suurempien päivitysten, PHP-version vaihdon tai uusien sovellusten jälkeen. Järkevää on säännöllinen tarkistus osana jatkuvaa ylläpitoa.

## Lähteet

- [BSI IT-Grundschutz (Saksan liittovaltion tietoturvaviraston IT-perussuojaus)](https://www.bsi.bund.de/DE/Themen/Unternehmen-und-Organisationen/Standards-und-Zertifizierung/IT-Grundschutz/it-grundschutz_node.html)
- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)
- [php.net: tietoturvatiedotteet](https://www.php.net/)
