# Moodlen tietoturva PHP2Shellin jälkeen: oppimisalustojen oikea suojaus

> Moodlen suojaus PHP2Shellin jälkeen: tarkista PHP, käynnistä cron uudelleen, suojaa moodledata sekä kontrolloi liitännäiset ja ylläpitäjät.

Lähde: https://phpsos.de/fi/plattformen/moodle/  
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:** Moodlen tietoturva riippuu PHP2Shellin jälkeen palvelimen PHP:stä, ei Moodlesta. Koska oppimisalustat käsittelevät oppilaiden, opiskelijoiden ja työntekijöiden tietoja, nopea toiminta on tärkeää. Korjatkaa PHP webille ja cronille, käynnistäkää kaikki prosessit uudelleen ja tarkistakaa `config.php`, `moodledata`, liitännäiset ja ylläpitäjätilit.

## Mitä PHP2Shell tarkoittaa Moodlen ylläpitäjille

Moodle on yleinen kouluissa, korkeakouluissa, täydennyskoulutuksessa ja yritysten sisäisessä koulutuksessa. Alusta hallinnoi nimiä, sähköpostiosoitteita, kurssijäsenyyksiä, arvosanoja, tehtäväpalautuksia ja keskustelufoorumien kirjoituksia, kouluissa usein alaikäisten. PHP-tiimin mukaan PHP-haavoittuvuudet CVE-2026-109618 ja CVE-2026-109619 sallivat haittakoodin suorittamisen etänä ilman kirjautumista.

Moodle-palvelimet ovat lähes aina tavoitettavissa internetistä, koska oppijat työskentelevät kotoa. BSI (Saksan liittovaltion tietoturvavirasto) suosittelee varoitustasolla 3 välitöntä päivitystä ja, jos se ei onnistu, verkkopalvelimien tilapäistä ottamista pois verkosta. Kouluille ja koulutuksen järjestäjille se on organisatorisesti vaikeaa, mutta suunniteltavissa. Alakohtaisia ohjeita on sivulla [Koulujen ja koulutuksen järjestäjien IT-turva](https://phpsos.de/fi/branchen/schulen-bildung/).

## Moodlen tietoturva: PHP-version tarkistus webille ja cronille

Kohdassa **Sivuston ylläpito > Palvelin > Ympäristö** Moodle tarkistaa PHP-version ja muut vaatimukset. Kohdassa Palvelin > PHP-tiedot ylläpitäjät näkevät lisäksi PHP:n täydelliset tiedot. Molemmat kuvaavat web-PHP:tä.

Moodle tarvitsee lisäksi cron-ajon, joka suorittaa tiedoston `admin/cli/cron.php` säännöllisesti komentorivi-PHP:llä. Tämä versio voi poiketa, ja sen on oltava yhtä lailla korjattu. Korjatut upstream-versiot ovat 8.5.12, 8.4.27, 8.3.36 ja 8.2.35; backportit kantavat usein vanhempia numeroita. Mitä PHP-versioita teidän Moodle-versionne tukee, tarkistatte järjestelmävaatimuksista moodle.orgin dokumentaatiosta. Miten käynnistätte kaikki prosessit sen jälkeen siististi uudelleen, kuvataan sivulla [PHP-FPM:n ja kaikkien workerien uudelleenkäynnistys](https://phpsos.de/fi/php2shell/php-fpm-neustart/).

## Moodlen hakemistot ja asetukset

| Paikka | Sisältö | Tarkistuskohde |
|---|---|---|
| `config.php` | Tietokantatunnukset, `wwwroot`, polku hakemistoon `moodledata` | sisään ujutettu koodi, salasana vaihdettava epäilyn jälkeen |
| `moodledata/` | Tiedostotallennus, palautukset, istunnot, välimuistit | dokumenttijuuren ulkopuolella, ei PHP-tiedostoja |
| `mod/`, `blocks/`, `local/`, `theme/` | Aktiviteetit, lohkot, paikalliset laajennukset, teemat | tuntemattomat tai muutetut liitännäiset |
| `admin/cli/` | Komentorivin skriptit | käytettävissä vain CLI:llä |

Moodlessa on asetus, joka estää ohjelmapolkujen muuttamisen verkkokäyttöliittymän kautta. Se kuuluu tiedostoon `config.php` ja vaikeuttaa ohjelmien kutsumista palvelimella kaapatun ylläpitäjätilin kautta:

```php
$CFG->preventexecpath = true;
```

Vaarattomat tarkistukset komentorivillä, verkkopalvelimen käyttäjänä:

```bash
# Tulostetaan Moodlen omat tila- ja tietoturvatarkistukset
php admin/cli/checks.php
php admin/cli/checks.php --type=security
# Etsitään PHP-tiedostoja datahakemistosta (mukauttakaa polku)
find /pfad/zu/moodledata -type f -name "*.php"
```

> **Tärkeää:**
> Jos koulussa tai korkeakoulussa epäillään tietovuotoa, mukaan tulee nopeasti useita tahoja: rehtorit, ylläpitäjä, tietosuojavastaavat ja tarvittaessa valvontaviranomainen. Varmuuskopioikaa lokit 20.10.2026 alkaen ja dokumentoikaa jokainen toimenpide kellonaikoineen.

## Liitännäiset, ylläpitäjätilit ja lataukset

Käytännön vinkki suunnitteluun: PHP-päivitysten ja uudelleenkäynnistysten ei pitäisi osua koeaikoihin eikä käynnissä oleviin verkkotesteihin. Moodlessa on huoltotila, joka tiedottaa käyttäjille etukäteen. PHP2Shellilta se ei kuitenkaan suojaa, koska myös huoltosivun toimittaa PHP.

Moodle elää liitännäisistä: aktiviteeteista, tenttityökaluista, videoneuvottelu- ja koulunhallintaliitännöistä. Jokainen liitännäinen on lisää PHP-koodia, ja sen on sovittava Moodle-versioon. Sivuston ylläpidossa Moodle näyttää ytimen ja liitännäisten saatavilla olevat päivitykset. Poistakaa liitännäiset, joita kukaan ei enää käytä, kokonaan.

Tarkistakaa sivuston ylläpitäjien luettelo ja laajoilla oikeuksilla varustetut yleiset roolit. Opettajat ja kurssinluojat eivät yleensä tarvitse yleisiä oikeuksia. Ottakaa kaksivaiheinen tunnistautuminen käyttöön ainakin ylläpitäjille. Sallitut tiedostotyypit latauksille kannattaa rajata mahdollisimman tarkasti; vinkkejä tarjoaa sivu [Tiedostolatausten turvallinen toteutus PHP:ssä](https://phpsos.de/fi/ratgeber/datei-upload-sicher/).

## Mihin Moodle-päivitys pystyy ja mihin ei

Moodle-päivitys sulkee Moodlen virheitä ja mahdollistaa usein uudemmat PHP-versiot. Se ei korjaa PHP:tä, ei käynnistä web- eikä cron-prosesseja uudelleen eikä poista vieraita tiedostoja hakemistosta `moodledata`, ylimääräisiä ylläpitäjiä eikä muutettuja liitännäisiä. Päivitys ei myöskään vastaa kysymykseen, onko tietoja vuotanut ennen korjausta.

Moodle kirjaa kirjautumiset ja toiminnot lisäksi omiin lokeihinsa, jotka ylläpitäjät näkevät kohdassa Sivuston ylläpito > Raportit. Etsikää sieltä kohdennetusti ylläpitäjien poikkeavia kirjautumisia, uusia tilejä yleisillä rooleilla ja liitännäisten asennuksia 17.10.2026 alkaen. Viekää nämä merkinnät talteen, ennen kuin automaattiset puhdistukset poistavat vanhempia tietoja. Raportit täydentävät verkkopalvelimen lokeja mutta eivät korvaa niitä.

## Miten PHP SOS auttaa konkreettisesti?

- Selvitämme PHP:n vastuutahon ja varmennamme webin ja cronin korjaustilan ja uudelleenkäynnistyksen.
- Varmuuskopioimme lokit, tietokannan ja `moodledata`:n ennen jokaista muutosta.
- Tarkistamme asetukset, liitännäiset, ylläpitäjät, roolit ja lataukset.
- Pyynnöstä hoidamme alustaa jatkuvasti [tietoturvahuoltosopimuksessa](https://phpsos.de/fi/leistungen/security-wartungsvertrag/), lukuvuoteen ja koeaikoihin sovitettuna.


## Usein kysytyt kysymykset

**Koskeeko PHP2Shell Moodlea?**  
Moodlessa itsessään ei ole uutta aukkoa, mutta se toimii PHP:llä. Jos palvelimen PHP on korjaamaton, hyökkääjä voi PHP-tiimin mukaan suorittaa koodia ilman kirjautumista. Moodle-päivitys ei muuta sitä.

**Mistä näen Moodlessa PHP-version?**  
Kohdassa Sivuston ylläpito > Palvelin > Ympäristö Moodle tarkistaa PHP-version vaatimuksiaan vasten. Onko backport asennettu, Moodle ei näytä; sen vahvistaa palvelimen ylläpitäjä.

**Miksi moodledatan pitää olla verkkohakemiston ulkopuolella?**  
Siellä ovat ladatut tiedostot, palautukset, istunnot ja välimuistit. Jos hakemisto on avattavissa verkon kautta, sisältöjä voi olla mahdollista hakea suoraan. Moodle vaatii siksi sijainnin dokumenttijuuren ulkopuolella.

**Kuka vastaa kouluilla PHP-päivityksestä?**  
Se vaihtelee: koulun ylläpitäjä, valtion laitos, kunnallinen konesali tai palveluntarjoaja. Selvittäkää vastuu kirjallisesti ja pyytäkää korjaustilan ja uudelleenkäynnistyksen vahvistus.

## Lähteet

- [php.net: tietoturvatiedotteet](https://www.php.net/)
- [Moodle](https://moodle.org/)
- [BSI (Saksan liittovaltion tietoturvavirasto)](https://www.bsi.bund.de/)
- [GDPR art. 33](https://dsgvo-gesetz.de/art-33-dsgvo/)
