You are currently viewing Admin Moodle – le truc n°4 : contrôler la sécurité de Moodle [2021]

Admin Moodle – le truc n°4 : contrôler la sécurité de Moodle [2021]

L’horreur totale pour l’admin Moodle : “mon site a été hacké !”. Dure réalité mais réalité quand même. Et surtout, ne pas penser que cela n’arrive qu’aux autres ! Et pourtant, même si, Moodle est souvent une usine à gaz, il offre un moyen rapide de détecter les problèmes de sécurité majeurs dans la configuration de votre plate-forme, à savoir le panorama de sécurité. Rendez-vous sur : Administration du site > Rapports > Panorama de sécurité.

Un Moodle bien configuré devrait afficher la capture d’écran suivante. En cas de divergence, relisez l’explication à côté de chaque problème qui affiche un avertissement et prenez les mesures appropriées.

Pour le moment, je vais vous donner une liste simple de choses à faire afin de passer le rapport de contrôle de sécurité sans trop entrer dans les détails. Tout au long de cet article, j’expliquerai plus en détail chaque élément de cette liste.

La liste de contrôle dans le rapport de vue d’ensemble de la sécurité se compose d’éléments comparant la configuration actuelle de votre système à celle recommandée et indiquant l’état. Certains éléments de la liste de contrôle s’appliquent à la configuration PHP et d’autres à la configuration Moodle.

PHP (le langage de programmation) est configuré via un fichier spécial appelé php.ini. L’emplacement de ce fichier peut varier en fonction de votre système d’exploitation et du type d’installation. Sous Linux, on peut généralement le trouver sur /etc/php.ini. Pour modifier ce fichier, vous pouvez utiliser n’importe quel éditeur de texte disponible (vi, nano, bloc-notes, etc.).

Astuce : Après chaque modification de php.ini, vous devez redémarrer votre serveur Web pour que les modifications puissent être appliquées au système..

Moodle peut être configuré en utilisant les pages de configuration de la partie administrative de la plate-forme ou en modifiant un fichier de configuration spécial appelé config.php. Certaines options de configuration sont exclusives au fichier config.php, d’autres à l’interface d’administration.

Nous allons maintenant passer en revue toutes les options du rapport de synthèse de la sécurité et expliquer brièvement sa signification, ainsi que les étapes à suivre pour remédier à une faille de sécurité potentielle.

  • Dossier de données non sûr : si l’état de cet élément n’est pas OK, cela signifie que le dossier moodledata est placé dans un emplacement accessible à partir du Web sans aucune protection. La solution consiste à déplacer ce dossier vers un autre emplacement ou à empêcher tout accès public avec la configuration de serveur Web appropriée. Par exemple, si votre Moodle est situé dans /var/www/html/moodle et que votre dossier moodledata se trouve dans /var/www/html/moodledata, cela affichera ceci comme une erreur. Pour corriger cela, vous devez changer l’emplacement de moodledata dans un autre répertoire, par exemple /var/www/moodledata
  • Affichage des erreurs PHP : la directive display_errors détermine si les messages d’erreur générés par le code PHP doivent être envoyés au navigateur. Ces messages contiennent fréquemment des informations sensibles sur votre environnement d’application Web et ne doivent jamais être présentés à des sources non fiables. Assurez-vous qu’il est configuré comme ceci dans votre php.ini:
display_errors = Off
  • Dossier vendor : le dossier /var/www/html/moodle/vendor contient diverses bibliothèques de tierces parties et leur dépendances, installées typiquement par l’utilitaire PHP Composer. Ces bibliothèques peuvent être requises pour le développement de Moodle en local, par exemple pour installer PHPUnit. Elles ne sont pas nécessaires pour le fonctionnement d’un site Moodle en production et peuvent comporter du code potentiellement dangereux, qui expose votre site à des attaques à distance. Il est vivement recommandé de supprimer ce dossier si le site est accessible au moyen d’une URL publique ou au moins d’en empêcher l’accès par le web dans la configuration de votre serveur web
  • Dossier des modules Node.js : le dossier /var/www/html/moodle/node_modules contient des modules Node.js et leur dépendances, installés typiquement par l’utilitaire NPM. Ces modules peuvent être requis pour le développement de Moodle en local, par exemple pour utiliser grunt. Ils ne sont pas nécessaires pour le fonctionnement d’un site Moodle en production et peuvent comporter du code potentiellement dangereux, qui expose votre site à des attaques à distance. Je recommande de supprimer ce dossier si le site est accessible au moyen d’une URL publique ou au moins d’en empêcher l’accès par le web dans la configuration de votre serveur web.
  • Pas d’authentification : c’est une option de configuration de Moodle. Assurez-vous que le plug-in “Pas d’authentification” est désactivé. Allez sur Administration du site > Plugins > Authentification et configurez-la comme indiqué dans la capture d’écran suivante:
  • Autoriser les balises EMBED et OBJECT: est une option de configuration de Moodle. Aller à Administration du site > Sécurité > Réglages de sécurité du site d et assurez-vous que l’option Autoriser les balises EMBED et OBJECT n’est pas cochée. EMBEDLes OBJECTbalises sont utilisées pour insérer des plug-ins de navigateur Web tiers afin de reproduire un contenu multimédia (Adobe Flash, Apple QuickTime, etc.) ou pour exécuter des applications incorporées spéciales telles que les applets java. Certains de ces plug-ins ont des problèmes de sécurité bien connus et ne sont donc pas recommandés pour une utilisation grand public. En désactivant cette option, nous empêchons les utilisateurs d’ajouter ces éléments à leurs pages ou à d’autres contenus ou réponses générés.
  • Filtre .swf activé  : est une option de configuration de Moodle. Elle devrait être désactivée sur les sites de production. Dirigez-vous vers Administration du site > Plugins > Lecteurs de média > Gérer les lecteurs de média et assurez-vous qu’il est désactivé. Ce filtre transforme tout lien vers le fichier Adobe Flash en contenu lisible à l’aide de Flash Player intégré. Puisque Flash a des problèmes de sécurité bien connus et que son support est abandonné depuis 2020, laisser cette option désactivée ne devrait pas poser de problème.
  • Profils utilisateurs ouverts : est une option de configuration de Moodle. Elle permet à tout utilisateur (même non-inscrit) de consulter les profils des membres. La bonne pratique consiste à exiger la connexion avant de permettre à quelqu’un de consulter les informations personnelles d’autres personnes. Aller à l’ Administration du site > Sécurité > Réglages de sécurité du site et assurez-vous que Imposer la connexion pour voir les profils est coché.
  • Ouvert à Google : est une option de configuration de Moodle. Visitez Administration du site > Sécurité > Réglages de sécurité du site et décochez la case Ouvert à Google. Si vous activez cette option, Google pourra entrer dans votre site en tant qu’utilisateur anonyme. En outre, les internautes arrivant sur votre site depuis une recherche Google seront automatiquement connectés en tant qu’utilisateur anonyme. Cependant, cela ne permet un accès transparent qu’aux cours déjà ouverts aux visiteurs anonymes. En général, ce n’est pas un comportement souhaité dans un système de gestion de formations...
  • Règles pour les mots de passe : une stratégie de mot de passe est un ensemble de règles conçues pour améliorer la sécurité de l’ordinateur en encourageant les utilisateurs à utiliser des mots de passe forts, ainsi qu’à les utiliser correctement. Sur la page  Administration du site > Sécurité > Réglages de sécurité du site, vérifiez le paramètre Règles pour les mots de passe . En l’activant, vous imposez l’utilisation de mots de passe “forts”, rendant ainsi beaucoup plus difficile l’utilisation d’attaques par dictionnaire (Brute Force).
  • Confirmation de modification d’adresse de courriel : Accédez à la page Administration du site > Sécurité > Réglages de sécurité du site et activez la Confirmation de modification de courriel. Tous les utilisateurs de Moodle doivent avoir une adresse électronique valide. Une façon courante de manipuler le compte personnel d’une personne consiste à changer son mot de passe et son adresse mail enregistrée. Pour éviter ces situations, nous activons la confirmation des modifications par courrier électronique qui oblige un utilisateur à confirmer l’adresse électronique modifiée. Cela se fait par un courrier électronique spécial envoyé au nouveau compte.
  • Cookies sécurisés : Si vous activez la communication https, il vous est recommandé d’activer également les cookies sécurisés. Veillez également ajouter une redirection permanente de http vers https. Rendez vous sur Administration du site > Sécurité > Sécurité HTTP et sélectionnez le paramètre Cookies sécurisé uniquement.
  • Fichier config.php accessible en écriture : configurez le config.php en lecture seule. Par exemple, sous Linux ou MacOS, vous feriez quelque chose comme ceci :
chmod ug=r,o= <Moodle path>/config.php

ou utilisez votre panneau de propriétés avec votre application FTP…

  • Utilisateurs XSS fiables : Moodle dispose de sept rôles standard. Par défaut, tout utilisateur ayant un rôle administratif au niveau de la plate-forme est complètement approuvé. Faites très attention aux utilisateurs pouvant jouer ce rôle. Gardez-le dans un groupe le plus petit possible.
  • Administrateurs : la plateforme doit avoir au moins un utilisateur avec un rôle d’administrateur. Par défaut, c’est l’utilisateur admin. Vérifiez si les noms affichés sont des utilisateurs fiables.
  • Sauvegarde des données des utilisateurs : Les données utilisateur sont très sensibles pour chaque établissement d’enseignement. En vertu de la loi RGPD, les informations concernant les étudiants ne peuvent pas être utilisées à d’autres fins que la formation ni communiquées à des tiers. Seul un groupe très restreint de personnes devrait pouvoir exporter les informations sur les étudiants liées à un cours.
  • Rôle par défaut des utilisateurs : doit être défini sur Utilisateur authentifié. Sinon, allez à Administration du site > Utilisateurs > Permissions > Règles utilisateurs et appliquez la configuration appropriée.
  • Rôle de visiteur anonyme : doit être défini sur Visiteur anonyme. Sinon, allez à Administration du site > Utilisateurs > Permissions > Règles utilisateurs et appliquez la configuration appropriée.
  • Rôle de la page d’accueil : doit être défini sur Utilisateur authentifié sur la page d’accueil. Sinon, allez à Réglages page d’accueil > Paramètres et appliquez la configuration appropriée.
  • Cron via web : Le lancement du cron par l’intermédiaire d’un navigateur web peut exposer des informations sensibles à des utilisateurs anonymes. Il est donc recommandé de ne lancer le cron qu’en ligne de commande ou de définir un mot de passe pour l’accès distant au cron. Veillez donc à placer le paramètre Exécution du cron uniquement en mode terminal sur sa valeur par défaut “Oui” dans Administration du site > Sécurité > Réglages de sécurité du site
  • Chemins des programmes exécutables : L’autorisation de configurer les chemins des programmes exécutables dans l’interface graphique d’administration est un vecteur d’escalade de privilège. Autrement dit, une personne pouvant modifier ce chemin peut générer des dommages considérables au site, si ses intentions sont mauvaises. Vous pouvez empêcher les administrateurs de modifier ces chemins en ajoutant le paramètre suivant à votre fichier config.php :
$ CFG -> preventexecpath  =  true ;

Vous devez également définir explicitement les chemins appropriés dans votre fichier config.php :

$ CFG -> pathtodu  =  ' CHEMIN ' ; 
$ CFG -> pathtounoconv  =  ' CHEMIN ' ;  
$ CFG -> aspellpath  =  ' CHEMIN ' ;

Plus d’information sur le site de Moodle (uniquement en Anglais au moment d’écrire ces lignes) : https://docs.moodle.org/37/en/Security_overview_report.

N’hésitez pas à me contacter si vous avez des questions ou des commentaires sur cet article !