Installation et sécurisation de Moodle étape par étape

Installation et sécurisation de Moodle étape par étape Ubuntu 20.04/22.04

Moodle est un système de gestion de l’apprentissage (LMS) gratuit et open source utilisé par les écoles, les universités, les entreprises et d’autres organisations pour proposer des cours et des programmes de formation en ligne. Avec Moodle, vous pouvez créer des environnements d’apprentissage personnalisés complets avec des quiz, des forums, des devoirs, des vidéos et plus encore.

L’installation de Moodle implique plusieurs étapes, notamment la mise en place d’un serveur web, d’un serveur de base de données, de PHP et du code Moodle lui-même. Il est également crucial de sécuriser correctement l’installation de Moodle pour empêcher tout accès non autorisé et d’autres menaces de sécurité.

Ce guide vous guidera étape par étape dans le processus d’installation de Moodle sur un serveur Linux sous Ubuntu 20.04/22.04. Il couvre également les considérations et configurations de sécurité importantes pour verrouiller l’accès et protéger les données. Suivre ces instructions permettra d’obtenir un environnement Moodle pleinement fonctionnel et sécurisé, prêt à construire des cours.

Conditions préalables

Avant d’installer Moodle, vous devez vous assurer que votre serveur Ubuntu 20.04/22.04 est à jour et dispose des packages nécessaires installés :

$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install apache2 mariadb-server php8.0 php8.0-curl php8.0-zip php8.0-gd php8.0-mbstring php8.0-xml php8.0-soap php8.0-intl -y

Vous aurez également besoin d’un nom de domaine pointant sur l’adresse IP publique de votre serveur. Ce guide utilise example.com.

Une fois les conditions préalables remplies, vous pouvez passer à l’installation et à la configuration du serveur web.

Installer le serveur Web Apache

Moodle nécessite le serveur web Apache pour servir les pages web. Installez Apache avec cette commande :

$ sudo apt install apache2

Ajustez le pare-feu pour autoriser le trafic HTTP et HTTPS :

$ sudo ufw allow in "Apache Full"

Testez qu’Apache fonctionne correctement en accédant au nom de domaine ou à l’adresse IP publique de votre serveur depuis un navigateur web. Vous devriez voir la page par défaut d’Apache.

Configurer la base de données MariaDB

Moodle s’appuie sur une base de données MySQL/MariaDB pour stocker toutes les données de cours. Installez MariaDB avec :

$ sudo apt install mariadb-server

Exécutez le script de sécurité pour supprimer les paramètres insecure par défaut :

$ sudo mysql_secure_installation

Lorsque vous y êtes invité, définissez un mot de passe root, supprimez les utilisateurs anonymes, désactivez la connexion root à distance et supprimez la base de données de test. Répondez ‘y’ à toutes les autres questions.

Créez un utilisateur et une base de données pour Moodle. Changez moodleuser et moodlepassword avec des identifiants sécurisés :

$ sudo mysql -u root -p
CREATE DATABASE moodledb;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'moodlepassword';
GRANT ALL ON moodledb.* TO 'moodleuser'@'localhost';
exit

La base de données MariaDB est désormais prête pour Moodle.

Configurer PHP 8.0 pour Moodle

Moodle nécessite PHP 8.0 avec quelques modules spécifiques activés.

Tout d’abord, modifiez php.ini pour ajuster certains paramètres recommandés :

$ sudo nano /etc/php/8.0/apache2/php.ini 

Trouvez et mettez à jour les valeurs suivantes :

max_execution_time = 180
max_input_time = 180  
memory_limit = 256M 
upload_max_filesize = 100M
post_max_size = 100M
max_input_vars = 3000

Enregistrez et quittez le fichier lorsque vous avez terminé.

Ensuite, activez les modules PHP requis :

$ sudo phpenmod mysqli pdo pdo_mysql json zip intl mbstring soap  

Redémarrez Apache pour que les modifications PHP prennent effet :

$ sudo systemctl restart apache2

PHP 8.0 est désormais prêt à exécuter Moodle.

Télécharger et installer Moodle

Avec le serveur web, la base de données et PHP configurés, vous pouvez maintenant installer Moodle lui-même.

Tout d’abord, passez au répertoire racine du document Apache :

$ cd /var/www/html

Téléchargez la dernière version stable de Moodle :

$ sudo wget https://download.moodle.org/download.php/stable403/moodle-4.3.2.zip 

Décompressez les fichiers :

$ sudo unzip moodle-4.3.2.zip

Renommez le répertoire :

$ sudo mv moodle moodle-install

Définissez les autorisations :

$ sudo chown -R www-data:www-data /var/www/html/moodle-install
$ sudo chmod -R 755 /var/www/html/moodle-install

Accédez au nom de domaine de votre serveur suivi de /moodle-install dans un navigateur web. Vous serez dirigé vers la page d’installation de Moodle.

Sélectionnez votre langue et passez à l’étape suivante. Fournissez vos détails de base de données, y compris l’hôte, le nom, l’utilisateur et le mot de passe. Pour le répertoire de données, entrez le chemin /var/www/html/moodledata. Terminez le processus d’installation en définissant un nom d’utilisateur admin, un mot de passe et un nom de site.

Une fois les configurations enregistrées, vous serez dirigé vers l’interface principale de Moodle. Le système de base est maintenant installé et doit être sécurisé.

Sécuriser l’installation Moodle

Une installation Moodle par défaut contient de multiples vulnérabilités de sécurité qui doivent être traitées. Cela implique des changements de paramètres dans Moodle lui-même ainsi que dans le serveur web et la base de données.

Utiliser HTTPS

Le trafic HTTP n’est pas chiffré et peut exposer les mots de passe et autres données sensibles. Pour activer HTTPS sur Apache :

$ sudo a2enmod ssl  
$ sudo systemctl reload apache2

Obtenez un certificat SSL/TLS auprès d’un fournisseur comme Let’s Encrypt et installez-le selon leur documentation. Redirigez tout le trafic HTTP vers HTTPS en modifiant /etc/apache2/sites-available/000-default.conf :

<VirtualHost *:80>
        Redirect "/" "https://example.com/"
</VirtualHost>

Enregistrez le fichier et rechargez Apache à nouveau. L’accès au domaine doit maintenant rediriger vers une connexion HTTPS sécurisée.

Définir les autorisations de fichier

Les fichiers et répertoires Moodle doivent appartenir à l’utilisateur du serveur web. Exécutez :

$ sudo chown -R www-data:www-data /var/www/html/moodle*

Verrouillez encore plus les autorisations avec :

$ sudo find /var/www/html/moodle* -type d -exec chmod 750 {} \;
$ sudo find /var/www/html/moodle* -type f -exec chmod 640 {} \;

Cela empêche l’utilisateur web de créer ou de modifier des fichiers dans les dossiers Moodle.

Utilisez un mot de passe admin fort

Lors de l’installation initiale de Moodle, définissez un mot de passe très robuste pour le compte admin. Assurez-vous qu’il comporte au moins 16 caractères, utilise des chiffres, des symboles, des majuscules et des minuscules.

Vous pouvez également améliorer les stratégies de mot de passe en appliquant une longueur minimale et une complexité sous Admin du site > Sécurité > Règles du site.

Limiter les créateurs de cours

Par défaut, tout utilisateur connecté peut créer de nouveaux cours dans Moodle. Cette exposition inutile. Limitez plutôt la création de cours uniquement à l’administrateur en accédant à Admin du site > Utilisateurs > Autorisations > Définir les rôles.

Sous le rôle Utilisateur authentifié, décochez “Créer de nouveaux cours”. Enregistrez les modifications. Désormais, seul l’administrateur peut créer des cours.

Désactiver l’accès invité

L’accès invité permet à quiconque de se connecter et de voir le contenu du cours sans s’inscrire à un compte utilisateur. Désactivez cette option sous Admin du site > Utilisateurs > Authentification.

Définissez “Activer l’accès invité” sur Non et enregistrez les modifications. Exigez l’inscription d’un utilisateur pour tout accès.

Utiliser HTTPS pour la connexion à la base de données

Par défaut, Moodle se connecte à la base de données via HTTP non chiffré. Chiffrez ce trafic en modifiant /var/www/html/moodle-install/config.php :

Trouvez la ligne :

$CFG->dbhost = 'localhost';

Changez-la en :

$CFG->dbhost = 'localhost:3306';

Cela force une connexion SSL chiffrée.

Sécuriser la base de données

Verrouillez la base de données MariaDB en commençant par définir un mot de passe root fort.

Ensuite, restreignez l’accès à distance avec ces modifications dans /etc/mysql/mariadb.conf.d/50-server.cnf :

bind-address = 127.0.0.1
port = 3306

Cela empêche les connexions externes à la base de données. Redémarrez MariaDB après avoir apporté les modifications.

Assurez-vous également que l’utilisateur mysql Unix n’a pas de shell de connexion :

$ sudo usermod -s /usr/sbin/nologin mysql

Cela empêche tout accès au niveau du système d’exploitation avec le compte mysql.

Limiter les téléchargements de fichiers PHP

Les fichiers téléchargés pourraient contenir du code malveillant et doivent être limités. Modifiez /etc/php/8.0/apache2/php.ini et ajoutez :

file_uploads = On 
upload_max_filesize = 2M
max_file_uploads = 2  

Cela restreint les téléchargements à 2 fichiers de 2Mo chacun. Ajustez selon vos besoins spécifiques.

Désactiver l’exécution PHP dans les téléchargements

Pour empêcher l’exécution des fichiers PHP téléchargés, désactivez-la spécifiquement pour le répertoire de téléchargement :

<Directory /var/www/html/moodledata/filedir>
   php_admin_flag engine off
</Directory>

Ajoutez ceci à votre configuration Apache dans /etc/apache2/sites-available/000-default.conf à l’intérieur des balises VirtualHost.

Installez un pare-feu d’applications Web (WAF)

Un WAF fournit une surveillance et un filtrage approfondis de tout le trafic web. Il peut bloquer les injections SQL, XSS, CSRF et autres attaques avant qu’elles n’atteignent Moodle.

Le WAF open source ModSecurity s’intègre étroitement avec Apache. Suivez un guide pour l’installer afin d’obtenir une protection robuste contre les menaces.

Utiliser des plugins de sécurité

Moodle fournit des plugins qui améliorent la sécurité dans des domaines comme l’authentification, les autorisations, le filtrage, etc. Envisagez d’activer des plugins comme No Self Signups, ReCAPTCHA, Access Rule Levels, etc.

Conclusion

Vous devriez maintenant avoir un environnement Moodle pleinement fonctionnel installé sur Ubuntu avec une pile LAMP sécurisée configurée pour verrouiller les vulnérabilités. Quelques prochaines étapes sont :

  • Créer des cours, des utilisateurs et du contenu
  • Personnaliser le thème
  • Installer des plugins supplémentaires selon les besoins
  • Configurer les sauvegardes et créer un plan de reprise après sinistre
  • Surveiller les journaux pour détecter toute activité suspecte
  • Garder Moodle et les dépendances à jour

Installer et sécuriser correctement Moodle demande des efforts, mais le résultat est une plateforme eLearning fiable en laquelle vos utilisateurs peuvent avoir confiance.

Laisser un commentaire