Security Sicherheitsmaßnahmen und Empfehlungen Moodle absichern Auf der MoodleMoot DACH 2025 gaben Niels Gandraß, Philipp Kropp und Alexander Bias eine Einführung in die Sicherheit von Webanwendungen und beschrieben einfache Maßnahmen in der Session: "Securing Moodle — A brief introduction to web application security and low-hanging fruits anyone should harvest". Aus der Session-Beschreibung:  "Unser Ziel ist es, das Bewusstsein für typische Sicherheitsprobleme zu schärfen und wertvolle Ressourcen bereitzustellen, um die allgemeine Sicherheit von Moodle-Installationen zu verbessern. In diesem Vortrag geben wir einen Überblick über die verschiedenen Aspekte, die bei der Absicherung einer produktiven Moodle-Instanz zu berücksichtigen sind. Sowohl für die Anwendung selbst als auch für den zugrunde liegenden Webserver stellen wir einfache wie auch fortgeschrittene Maßnahmen und Techniken zur Absicherung bestehender Installationen vor. Wir stellen Ressourcen und Anleitungen für jeden Aspekt bereit und zeigen auf, wie man sich über aktuelle Sicherheitsrisiken auf dem Laufenden halten kann. Abschließend werden die Ergebnisse eines Scans öffentlicher Moodle-Instanzen in verschiedenen Ländern vorgestellt und diskutiert." Auf den 22 Folien wird ein guter Überblick gegeben mit vielen hilfreichen Verlinkungen und Maßnahmen, die admins zum Server-Schutz realisieren sollten:  Securing Moodle (PDF-Präsentation mit 22 Folien) Admin-Login MFA Zumindest für admin-Accounts sollte MFA aktiviert sein: Moodle-Docs Multi-Faktor-Authentifizierung Video "Moodle Admin-Zugang absichern" von Dag Klimas Autor: Klaus Steitz, Technische Universität Darmstadt Moodle-Instanz auf Status, Serverkonfiguration überprüfen (z.T. auch ohne Account) "Check Security & Maintenance Status" Folien von der Moodlemoot DACH 2026 Zürich (ENG) Inhalte aus der Präsentation nochmal aufgearbeitet und auf deutsch. Wie man überprüfen kann, ob man ein aktuelles (sicheres) Moodle benutzt   Prüfung der security.txt Datei https://MOODLE-INSTANZ-URL.de/security.txt Datei öffnen und in der letzten Zeile nachschauen welches Datum dort steht. Beispiel: Expires: 2026-10-26T01:00:00.000Z "Expires" Ablauf-Datum in der Vergangenheit = abgelaufen "Expires" Ablauf-Datum noch nicht erreicht = nicht abgelaufen Je näher das aktuelle Datum an dem "Expires" Ablauf-Datum liegt, desto wahrscheinlicher ist es, dass die Moodle Instanz nicht das letzte Update (die aktuellste Patch Version x.y.Z) hat. Wenn die security.txt nicht öffentlich zugreifbar ist, dann würde ich davon ausgehen, dass die IT deren Sinn eventuell nicht verstanden hat. Vermutlich wird sie meistens versteckt, weil man nicht nach außen zeigen möchte, dass das Moodle nicht aktuell ist. Mehr Infos dazu: https://de.wikipedia.org/wiki/Security.txt   Offen liegende Dateien auslesen Es gibt im Laufe der Moodle Entwicklung mehrere Anhaltspunkte dafür eine Moodle Versionsnummer von außen zu ermitteln. Eine Übersicht zu den jeweiligen Dateien gibt es weiter unten. Hier beziehe ich mich nur auf die Dateien, die vor dem Wechsel auf Moodle 5.1.x relevant sind. Für die Versionen vor 5.1.x ist meistens die https://MOODLE-INSTANZ-URL.de/UPGRADING.md Datei relevant. Wenn die Datei nicht zugreifbar ist, dann ist der Server vermutlich korrekt konfiguriert und es ist alles wie es sein soll.   Offen liegende Dateien verhindern Site-Administration -> Berichte -> Sicherheitsprüfung Hier kann man unter "Alle öffentlichen / privaten Pfade prüfen" überprüfen, ob der Server richtig konfiguriert ist oder ob noch Konfigurationsbedarf besteht. Falls noch rote Problemfälle sichtbar sind, dann hier genauer nachschauen für die Behebung der Probleme: https://docs.moodle.org/405/de/Apache https://docs.moodle.org/405/de/Nginx   Moodle App Download Link Reguläres Release Die ersten 8 Stellen sind das Releasedatum vom Versionsbranch in Version x.y.0. 20200615 -> 3.9 20201109 -> 3.10 20210517 -> 3.11 20220419 -> 4.0 20221128 -> 4.1 20230424 -> 4.2 20231009 -> 4.3 20240422 -> 4.4 20241007 -> 4.5 20250414 -> 5.0 20251006 -> 5.1 20260420 -> 5.2 20261005 -> 5.3 (Quelle für Mapping https://moodledev.io/general/releases) In diesem Fall sind wir auf einem 4.5.x LTS Die 13 ist dann die Patch Release Version. Also kann man daraus die genaue Version 4.5.13 ableiten. Weekly Release Erkennt man daran, dass es noch einen .xy Zusatz gibt. Also .01, .02 usw. Das sind dann die Versionen mit + hinten dran. Beispiel: 2025100603.13 20251006 -> 5.1 03 -> .3 .13 -> + (inkrementelle Version) => 5.1.3+ (13. inkrementelles Update nach dem Release von 5.1.3)   Sichtbarkeit der Moodle Version über den Download Link verhindern Site-Administration -> Allgemein -> Mobile app -> Mobile Darstellung Am Ende des Links eine # hinzufügen. Speichern und fertig. Als Admin in Moodle nach der Versionsnummer der Instanz schauen Website-Administration -> Allgemein -> Systemnachrichten (erster Link) Site Administration -> General -> Notifications (erster Link) Dann runter scrollen und da müsste dann die Version sichtbar sein: Informationen zur Geschichte relevanter Dateien für die Versionsidentifizierung von Moodle /security.txt (sollte immer öffentlich zugänglich sein) Moodle 3.9.4, 3.10.1 und 3.11.0 bis jetzt Enthält immer einen „Expires:“ Eintrag am Ende: Format zu Beginn „Natural Language“:  Expires: Mon, 31 May 2021 01:00:00 +0000  ab Moodle 4.0.0 „ISO 8601“:  Expires: 2022-12-05T01:00:00.000Z /README.txt Moodle 1.0.0 - 4.3.12 In der README.txt kommt z.B. in der ersten Zeile sowas vor: README      $Id: README.txt,v 1.9.14.1 2007/11/14 23:40:50 Exp $ /README.md Moodle 4.4.0 - jetzt Seit Moodle 5.1.0 im Projekt root (webroot Wechsel auf public) Enthält meistens keine Versionsinformationen /lib/upgrade.txt Moodle 2.2.0 - 4.4.12 inklusive der Änderungen seit Moodle 4.5.0 ohne die Änderungen (die wurden dann in der UPGRADING.md weitergeführt) und in Moodle 5.1.0 wurde die /lib/upgrade.txt entfernt /UPGRADING.md Moodle 4.5.0 Versionserwähnung ist generell mit zwei führenden Rauten gekennzeichnet ## 5.0.10 Seit Moodle 5.1.0 im Projekt root (webroot Wechsel auf public) /composer.json Moodle 2.3.4 Seit Moodle 5.1.0 im Projekt root (webroot Wechsel auf public) Beinhaltet nur die composer.json, die man mit denen aus dem Git vergleichen könnte, um Rückschlüsse auf die Moodle Version zu haben. Die anderen Dateien ermöglichen das aber meistens einfacher. Autor: Philipp Kropp, Christian-Albrechts-Universität zu Kiel