# Moodle-beveiliging na PHP2Shell: leerplatforms goed beveiligen

> Moodle na PHP2Shell beveiligen: PHP onder Server > Omgeving controleren, cron herstarten, moodledata beschermen, plug-ins en adminaccounts nalopen.

Bron: https://phpsos.de/nl/plattformen/moodle/  
Stand: 25-10-2026  
Aanbieder: PHP SOS, PHP-noodhulp en serverbeveiliging. Directe hulp via WhatsApp: https://wa.me/491736494914?text=Hallo%20PHP%20SOS%2C%20wij%20hebben%20hulp%20nodig%20met%20onze%20PHP-server.%20Bedrijf%3A%20%E2%80%A6%20Website%3A%20%E2%80%A6

**Kort gezegd:** Moodle-beveiliging hangt na PHP2Shell af van de PHP van de server, niet van Moodle. Omdat leerplatforms gegevens van leerlingen, studenten en medewerkers verwerken, is snel handelen belangrijk. Patch PHP voor web en cron, herstart alle processen en controleer `config.php`, `moodledata`, plug-ins en adminaccounts.

## Wat PHP2Shell betekent voor Moodle-beheerders

Moodle is verbreid op scholen, hogescholen, in de volwasseneneducatie en voor interne trainingen in bedrijven. Het platform beheert namen, e-mailadressen, cursuslidmaatschappen, cijfers, toetsinzendingen en forumberichten, op scholen vaak van minderjarigen. De PHP-kwetsbaarheden CVE-2026-109618 en CVE-2026-109619 maken het volgens het PHP-team mogelijk om op afstand en zonder inloggen schadelijke code uit te voeren.

Moodle-servers zijn bijna altijd vanaf het internet bereikbaar, omdat leerlingen thuis werken. Het BSI (de Duitse federale dienst voor informatiebeveiliging) adviseert bij waarschuwingsniveau 3 een onmiddellijke update en, als die niet kan, webservers tijdelijk van het netwerk te halen. Voor scholen en opleidingsinstituten is dat organisatorisch lastig, maar plannen kan. Branchespecifieke tips vindt u onder [IT-beveiliging voor scholen en opleidingsinstituten](https://phpsos.de/nl/branchen/schulen-bildung/).

## Moodle-beveiliging: PHP-versie voor web en cron controleren

Onder **Sitebeheer > Server > Omgeving** toetst Moodle de PHP-versie en andere eisen. Onder Server > PHP-info zien beheerders bovendien de volledige PHP-gegevens. Beide beschrijven de web-PHP.

Moodle heeft bovendien een cronjob nodig die `admin/cli/cron.php` regelmatig via de opdrachtregel-PHP uitvoert. Die versie kan afwijken en moet eveneens zijn gepatcht. Verholpen upstreamversies zijn 8.5.12, 8.4.27, 8.3.36 en 8.2.35; backports dragen vaak oudere nummers. Welke PHP-versies uw Moodle-versie ondersteunt, controleert u volgens de systeemeisen in de documentatie op moodle.org. Hoe u daarna alle processen netjes herstart, staat onder [PHP-FPM en alle workers herstarten](https://phpsos.de/nl/php2shell/php-fpm-neustart/).

## Mappen en configuratie in Moodle

| Plek | Inhoud | Controlepunt |
|---|---|---|
| `config.php` | Databasetoegang, `wwwroot`, pad naar `moodledata` | ingevoegde code, wachtwoord bij vermoeden wijzigen |
| `moodledata/` | Bestandsopslag, inzendingen, sessies, caches | buiten de documentroot, geen PHP-bestanden |
| `mod/`, `blocks/`, `local/`, `theme/` | Activiteiten, blokken, lokale uitbreidingen, ontwerpen | onbekende of gewijzigde plug-ins |
| `admin/cli/` | Opdrachtregelscripts | alleen via CLI te gebruiken |

Moodle biedt een instelling die het wijzigen van programmapaden via de webinterface voorkomt. Ze hoort in `config.php` en bemoeilijkt het om via een gekaapt adminaccount programma's op de server aan te roepen:

```php
$CFG->preventexecpath = true;
```

Ongevaarlijke controles op de opdrachtregel, als gebruiker van de webserver:

```bash
# Eigen status- en beveiligingscontroles van Moodle weergeven
php admin/cli/checks.php
php admin/cli/checks.php --type=security
# PHP-bestanden in de gegevensmap zoeken (pad aanpassen)
find /pfad/zu/moodledata -type f -name "*.php"
```

> **Belangrijk:**
> Bij een vermoeden van gegevenslekken op een school of hogeschool zijn snel meerdere partijen betrokken: schoolleiding, bestuur, functionarissen voor gegevensbescherming en eventueel de toezichthouder. Maak een kopie van de logs vanaf 20-10-2026 en documenteer elke maatregel met tijdstip.

## Plug-ins, adminaccounts en uploads

Een praktische tip voor de planning: PHP-updates en herstarts mogen niet in toetsperioden of tijdens lopende online toetsen vallen. Moodle heeft een onderhoudsmodus die gebruikers vooraf informeert. Tegen PHP2Shell beschermt die echter niet, omdat ook de onderhoudspagina door PHP wordt geleverd.

Moodle leeft van plug-ins: activiteiten, toetsinstrumenten, koppelingen met videoconferenties en schooladministratie. Elke plug-in is extra PHP-code en moet bij de Moodle-versie passen. Onder Sitebeheer toont Moodle beschikbare updates voor core en plug-ins. Verwijder plug-ins die niemand meer gebruikt volledig.

Controleer de lijst met site-beheerders en globale rollen met verstrekkende rechten. Docenten en cursusmakers hebben meestal geen globale rechten nodig. Activeer tweestapsverificatie ten minste voor beheerders. Toegestane bestandstypen voor uploads moeten zo nauw mogelijk worden omschreven; tips daarover biedt [Bestandsuploads in PHP veilig realiseren](https://phpsos.de/nl/ratgeber/datei-upload-sicher/).

## Wat een Moodle-update wel en niet kan

Een Moodle-update dicht fouten in Moodle en maakt vaak nieuwere PHP-versies mogelijk. Ze patcht PHP niet, herstart noch web- noch cronprocessen en verwijdert geen vreemde bestanden uit `moodledata`, geen extra beheerders en geen gewijzigde plug-ins. Ook of er in de tijd vóór de patch gegevens zijn weggelekt, beantwoordt een update niet.

Moodle logt aanmeldingen en acties bovendien in eigen logs, die beheerders onder Sitebeheer > Rapporten kunnen inzien. Zoek daar gericht naar opvallende aanmeldingen van beheerders, nieuwe accounts met globale rollen en pluginstallaties sinds 17-10-2026. Exporteer deze items voordat automatische opschoning oudere gegevens wist. De rapporten vullen de webserverlogs aan, maar vervangen ze niet.

## Hoe helpt PHP SOS concreet?

- Wij stellen de verantwoordelijkheid voor PHP vast en laten patchstatus en herstart van web en cron bevestigen.
- Wij maken een kopie van logs, database en `moodledata` vóór elke wijziging.
- Wij controleren configuratie, plug-ins, beheerders, rollen en uploads.
- Desgewenst begeleiden wij het platform duurzaam in het [beveiligingsonderhoudscontract](https://phpsos.de/nl/leistungen/security-wartungsvertrag/), afgestemd op schooljaar en toetsperioden.


## Veelgestelde vragen

**Is Moodle getroffen door PHP2Shell?**  
Moodle zelf heeft geen nieuwe kwetsbaarheid, maar draait op PHP. Is de PHP van de server ongepatcht, dan kan een aanvaller volgens het PHP-team zonder inloggen code uitvoeren. Een Moodle-update verandert daar niets aan.

**Waar zie ik in Moodle de PHP-versie?**  
Onder Sitebeheer > Server > Omgeving toetst Moodle de PHP-versie aan zijn eisen. Of er een backport is doorgevoerd, toont Moodle niet; dat bevestigt de beheerder van de server.

**Waarom moet moodledata buiten de webmap staan?**  
Daar staan geüploade bestanden, inzendingen, sessies en caches. Is de map via het web bereikbaar, dan zijn inhouden mogelijk rechtstreeks op te vragen. Moodle eist daarom een plek buiten de documentroot.

**Wie is bij scholen verantwoordelijk voor de PHP-update?**  
Dat verschilt: schoolbestuur, een instantie van de deelstaat, een gemeentelijk rekencentrum of een dienstverlener. Leg de verantwoordelijkheid schriftelijk vast en laat u patchstatus en herstart bevestigen.

## Bronnen

- [php.net: beveiligingsmeldingen](https://www.php.net/)
- [Moodle](https://moodle.org/)
- [BSI (Duitse federale dienst voor informatiebeveiliging)](https://www.bsi.bund.de/)
- [AVG art. 33](https://dsgvo-gesetz.de/art-33-dsgvo/)
