Drupal est réputé pour sa sécurité — et à juste titre. L’équipe Drupal Security Team publie des correctifs rapidement, le cœur du CMS est audité régulièrement, et l’architecture en couches limite la surface d’attaque. Mais une sécurité solide dans l’absolu ne dispense pas d’une maintenance active. Un Drupal non maintenu est aussi vulnérable qu’un WordPress abandonné.
Ce guide s’adresse aux administrateurs de sites Drupal (institutions, associations, grandes PME) qui veulent comprendre comment maintenir leur site sécurisé sans expertise en sécurité offensive.
Comprendre les Security Advisories Drupal
La Drupal Security Team publie des Security Advisories (SA) dès qu’une vulnérabilité est identifiée dans le cœur Drupal ou dans un module contribué. Ces avis sont classés par criticité :
- Critical — à corriger immédiatement, souvent dans les 24 à 72h
- Moderately critical — à corriger dans la semaine
- Less critical — à intégrer dans la prochaine mise à jour planifiée
Comment suivre les SA :
- Abonnez-vous aux alertes email sur drupal.org/security
- Suivez @drupalsecurity sur X/Twitter
- Le module Security Review (contrib) scanne votre site et vous alerte sur les problèmes de configuration
La règle d’or : ne jamais ignorer un SA Critical. Drupalgeddon (2018) et d’autres failles critiques ont compromis des milliers de sites en quelques heures après la publication de la faille — les exploits automatisés sont déployés très rapidement.
Mettre à jour Drupal avec Composer
Depuis Drupal 8, Composer est le gestionnaire de dépendances standard. Une mise à jour du cœur ou d’un module se fait en ligne de commande.
Vérifier les mises à jour disponibles
composer outdated drupal/*
Cette commande liste tous les packages drupal/* avec une version plus récente disponible.
Mettre à jour le cœur Drupal
composer update drupal/core-recommended drupal/core-composer-scaffold --with-all-dependencies
Suivi d’une mise à jour de la base de données :
drush updatedb
drush cache:rebuild
Mettre à jour un module spécifique
composer update drupal/nom_du_module
drush updatedb
drush cache:rebuild
Mettre à jour tous les modules en une fois
composer update drupal/*
drush updatedb
drush cache:rebuild
Attention : une mise à jour globale peut créer des conflits entre modules. Privilégiez les mises à jour ciblées en production, et testez toujours sur un environnement de staging en premier.
La procédure de mise à jour sécurisée
1. Sauvegarde complète avant toute modification
# Sauvegarde base de données
drush sql:dump --result-file=/backup/drupal-$(date +%Y%m%d).sql
# Sauvegarde fichiers (depuis le serveur)
tar -czf /backup/drupal-files-$(date +%Y%m%d).tar.gz /var/www/html/web/sites/default/files
Ne procédez jamais à une mise à jour sans sauvegarde récente vérifiée.
2. Tester sur staging
Si vous disposez d’un environnement de staging (fortement recommandé), appliquez la mise à jour là-bas en premier. Testez les fonctionnalités critiques : formulaires, authentification, intégrations tierces.
3. Activer le mode maintenance
drush state:set system.maintenance_mode 1
drush cache:rebuild
Cela affiche une page de maintenance à vos visiteurs pendant la mise à jour.
4. Appliquer la mise à jour
composer update drupal/core-recommended --with-all-dependencies
drush updatedb
drush cache:rebuild
5. Désactiver le mode maintenance
drush state:set system.maintenance_mode 0
drush cache:rebuild
6. Vérifier le site
Parcourez les pages principales, testez les formulaires, vérifiez les logs (drush watchdog:show) pour détecter d’éventuelles erreurs.
Les modules de sécurité essentiels
Security Kit (seckit)
Ajoute des en-têtes HTTP de sécurité : Content Security Policy, X-Frame-Options, X-XSS-Protection, Strict-Transport-Security. Crucial pour protéger contre les attaques XSS et clickjacking.
composer require drupal/seckit
drush en seckit
Automated Logout
Déconnecte automatiquement les utilisateurs inactifs après un délai configurable. Réduit le risque de session hijacking sur des postes partagés.
Password Policy
Impose des règles de complexité de mot de passe pour tous les comptes. Indispensable pour les sites avec plusieurs administrateurs.
Two-factor Authentication (TFA)
Ajoute l’authentification à deux facteurs pour les comptes administrateur. Un compte admin compromis est le scénario de piratage le plus fréquent et le plus dévastateur.
Paranoia
Désactive les fonctionnalités Drupal qui permettent l’exécution de PHP depuis l’interface d’administration. Empêche un attaquant qui aurait accès au back-office d’exécuter du code arbitraire.
Durcissement de la configuration
Protéger les fichiers sensibles
Dans votre fichier .htaccess (Apache) ou configuration Nginx, bloquez l’accès direct aux fichiers sensibles :
# Bloquer l'accès aux fichiers de configuration
<Files ~ "\.(yml|yaml|json|lock|sh|sql)$">
Require all denied
</Files>
# Bloquer l'accès direct à settings.php
<Files "settings.php">
Require all denied
</Files>
Permissions fichiers
Les fichiers du cœur Drupal doivent être en lecture seule pour le processus web :
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;
chmod 440 web/sites/default/settings.php
Désactiver PHP dans le dossier files
Le dossier sites/default/files est accessible publiquement. Si un attaquant y dépose un fichier PHP, il peut l’exécuter. Bloquez l’exécution PHP dans ce dossier :
# Dans web/sites/default/files/.htaccess
php_flag engine off
Surveillance continue
Monitoring des logs
# Voir les erreurs récentes
drush watchdog:show --severity=error --count=50
# Surveiller les tentatives de connexion échouées
drush watchdog:show --type=user --count=100 | grep "failed"
Audit de sécurité automatisé
Le module Security Review effectue une vérification automatisée de votre configuration et identifie les problèmes courants (fichiers accessibles, permissions incorrectes, modules dangereux actifs).
composer require drupal/security_review
drush en security_review
drush secrev
Quand faire appel à un expert
La sécurité Drupal demande des compétences techniques spécifiques — gestion de Composer, configuration serveur, lecture des logs. Si votre équipe n’a pas ces compétences en interne, ou si vous gérez un site critique (institution, e-commerce, données personnelles), un prestataire de maintenance externe est un investissement justifié.
Notre service de maintenance Drupal inclut la veille sur les Security Advisories, les mises à jour sur staging avant production, et la surveillance continue des logs. Pas de surprise, pas de Drupalgeddon.