Rollin Logo
Renforcement de la sécurité du serveur pour Drupal : Votre guide complet 2025

Renforcement de la sécurité du serveur pour Drupal : Votre guide complet 2025

Alex Rollin
Alex Rollin
2025-06-16
Dernière mise à jour: 2025-06-18
Votre site Drupal peut avoir les derniers correctifs de sécurité et des mots de passe robustes, mais si votre serveur est vulnérable, rien de tout cela n'a d'importance. Un serveur compromis peut mener au vol de données, aux infections de logiciels malveillants ou à la prise de contrôle complète du site—peu importe à quel point vous avez bien sécurisé Drupal lui-même.

Ce guide vous accompagne à travers les étapes essentielles pour renforcer votre serveur pour Drupal 11.x. Vous apprendrez quoi faire, pourquoi c'est important, et comment implémenter chaque mesure de sécurité efficacement.

Pourquoi le renforcement de la sécurité du serveur est plus important que vous ne le pensez pour le CMS Drupal

Les vulnérabilités du serveur créent plusieurs vecteurs d'attaque qui contournent complètement votre sécurité Drupal. Les attaquants peuvent :

  • Accéder directement à votre base de données
  • Injecter du code malveillant dans vos fichiers
  • Voler des données sensibles avant qu'elles n'atteignent Drupal
  • Utiliser votre serveur pour attaquer d'autres systèmes

Le rapport de sécurité Drupal 2024 a montré que 73% des sites Drupal compromis avaient des vulnérabilités au niveau du serveur, non au niveau de l'application. Cela signifie que votre première ligne de défense n'est pas votre configuration Drupal—c'est la configuration de votre serveur.

Étape 1 : Maintenir à jour votre pile logicielle Drupal

Commencez par vos fondations : les logiciels obsolètes sont la cible la plus facile pour les attaquants.

Mettre à jour le cœur Drupal et les modules de sécurité

Vérifiez les mises à jour chaque semaine, pas chaque mois. Configurez les notifications automatiques :

# Activer les notifications de mise à jour dans Drupal
drush pm:enable update
drush updatedb

Supprimez toujours les modules et thèmes inutilisés. Chaque composant installé augmente votre surface d'attaque, même s'il est désactivé.

Maintenir votre pile logicielle serveur

Utilisez les versions de support à long terme (LTS) quand c'est possible :

  • Ubuntu 24.04 LTS ou RHEL 9 pour votre OS
  • PHP 8.2 ou 8.3 (évitez les versions plus anciennes)
  • MariaDB 10.11 ou PostgreSQL 15 
  • Nginx 1.24 ou Apache 2.4.57 

Configurez les mises à jour de sécurité automatiques pour votre OS :

# Ubuntu/Debian
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades

# CentOS/RHEL
sudo yum install yum-cron
sudo systemctl enable yum-cron

Étape 2 : Implémenter le certificat SSL HTTPS et les en-têtes de sécurité

Installer les certificats SSL/TLS pour Drupal

Utilisez Let's Encrypt pour des certificats gratuits ou achetez des certificats commerciaux pour les sites d'affaires :

# Installer Certbot
sudo apt install certbot python3-certbot-nginx

# Obtenir le certificat
sudo certbot --nginx -d votredomaine.com -d www.votredomaine.com

Configurer les en-têtes de sécurité pour les sites Drupal

Ajoutez ces en-têtes à votre configuration Nginx :

server {
    listen 443 ssl http2;
    server_name votredomaine.com;

    # En-têtes de sécurité
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
}

Testez vos en-têtes en utilisant Mozilla Observatory pour vous assurer qu'ils fonctionnent correctement.

Étape 3 : Sécuriser l'accès utilisateur et l'authentification pour l'admin Drupal

Activer l'authentification à deux facteurs pour Drupal

Installez le module TFA pour les comptes administrateurs :

composer require drupal/tfa
drush en tfa

Configurez-le pour exiger l'A2F pour tous les utilisateurs avec des rôles administratifs.

Définir des politiques de mots de passe robustes dans Drupal

Utilisez le module Password Policy :

composer require drupal/password_policy
drush en password_policy

Configurez les exigences minimales :

  • 12 caractères minimum
  • Mélange de majuscules, minuscules, chiffres et symboles
  • Aucun mot de passe courant ou mot du dictionnaire
  • Aucune réutilisation des 5 derniers mots de passe

Limiter les permissions utilisateur dans le CMS Drupal

Révisez les rôles utilisateur mensuellement. Supprimez les permissions que les utilisateurs n'utilisent pas activement. Créez des rôles spécifiques pour différentes tâches au lieu de donner à tout le monde un accès administratif.

Étape 4 : Renforcer les permissions de fichiers et répertoires pour les sites Drupal

Définir les permissions de fichiers correctes pour Drupal

Vos fichiers Drupal nécessitent des permissions spécifiques pour fonctionner de manière sécurisée :

# Définir les permissions de fichiers
find /var/www/html -type f -exec chmod 644 {} \;

# Définir les permissions de répertoires
find /var/www/html -type d -exec chmod 755 {} \;

# Sécuriser les fichiers sensibles
chmod 400 /var/www/html/sites/default/settings.php
chmod 400 /var/www/html/sites/default/services.yml

Empêcher l'exécution PHP dans les répertoires de téléversement

Ajoutez ceci à votre fichier .htaccess dans le répertoire files :

    Require all denied

Pour Nginx, ajoutez ceci à votre bloc serveur :

location ~* ^/sites/.*/files/.*\.php$ {
    deny all;
}

Déplacer les fichiers privés hors de la racine web

Configurez le stockage de fichiers privés hors de votre répertoire web :

// Dans settings.php
$settings['file_private_path'] = '/var/drupal/private';

Créez le répertoire et définissez les permissions :

sudo mkdir -p /var/drupal/private
sudo chown www-data:www-data /var/drupal/private
sudo chmod 755 /var/drupal/private

Étape 5 : Configurer la sécurité du serveur web pour l'hébergement Drupal

Désactiver les listes de répertoires

Pour Apache, ajoutez ceci à votre configuration :

Options -Indexes

Pour Nginx :

autoindex off;

Restreindre l'accès aux fichiers Drupal sensibles

Bloquez l'accès aux fichiers administratifs de Drupal :

# Apache .htaccess

    Require ip 127.0.0.1
    Require ip ::1

# Nginx location ~ ^/(cron|install|update|authorize)\.php$ { allow 127.0.0.1; allow ::1; deny all; try_files $uri =404; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; fastcgi_index index.php; include fastcgi_params; }

Étape 6 : Renforcer la configuration PHP pour la performance Drupal

Désactiver les fonctions PHP dangereuses

Modifiez votre fichier php.ini :

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

Définir les directives de sécurité pour PHP

expose_php = Off
allow_url_fopen = Off
allow_url_include = Off
enable_dl = Off
display_errors = Off
log_errors = On
max_execution_time = 30
max_input_time = 30
memory_limit = 256M
upload_max_filesize = 10M
post_max_size = 10M

Configurer Open Basedir pour Drupal

Restreignez PHP à votre répertoire Drupal :

open_basedir = /var/www/html:/tmp:/var/tmp

Étape 7 : Sécuriser la configuration de votre base de données Drupal

Créer un utilisateur de base de données restreint pour Drupal

N'utilisez pas l'utilisateur root pour Drupal. Créez un utilisateur spécifique avec des permissions minimales :

CREATE USER 'drupal_user'@'localhost' IDENTIFIED BY 'mot_de_passe_fort_ici';
CREATE DATABASE drupal_db;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON drupal_db.* TO 'drupal_user'@'localhost';
FLUSH PRIVILEGES;

Lier la base de données à localhost

Dans votre configuration MySQL (/etc/mysql/mysql.conf.d/mysqld.cnf) :

bind-address = 127.0.0.1

Changer le préfixe de table par défaut

Dans votre settings.php Drupal :

$databases['default']['default']['prefix'] = 'dp_';

Cela rend les attaques par injection SQL plus difficiles en obscurcissant les noms de tables standards.

Étape 8 : Configurer la sécurité réseau pour le serveur Drupal

Configurer un pare-feu pour l'hébergement Drupal

Configurez UFW (Uncomplicated Firewall) sur Ubuntu :

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp  # SSH
sudo ufw allow 80/tcp  # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable

Renforcer l'accès SSH pour le serveur Drupal

Modifiez /etc/ssh/sshd_config :

Port 2222  # Changer du défaut 22
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2

Installez et configurez Fail2ban pour bloquer les tentatives de force brute :

sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Étape 9 : Implémenter la surveillance et la journalisation pour la sécurité Drupal

Configurer la journalisation centralisée

Configurez rsyslog pour collecter tous les événements de sécurité :

# Dans /etc/rsyslog.d/50-drupal.conf
local0.*    /var/log/drupal.log

Installer les outils de surveillance de sécurité

Configurez la surveillance d'intégrité des fichiers avec AIDE :

sudo apt install aide
sudo aide --init
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Créez une tâche cron quotidienne pour vérifier les changements :

# Ajouter au crontab
0 2 * * * /usr/bin/aide --check

Surveiller les tentatives de connexion échouées dans Drupal

Utilisez le module Login Security :

composer require drupal/login_security
drush en login_security

Configurez-le pour bloquer les adresses IP après 5 tentatives échouées.

Étape 10 : Automatiser les sauvegardes et la récupération pour les sites Drupal

Configurer les sauvegardes Drupal automatisées

Créez un script de sauvegarde qui s'exécute quotidiennement :

#!/bin/bash
# backup-drupal.sh

DATE=$(date  %Y%m%d_%H%M%S)
BACKUP_DIR="/var/backups/drupal"
DRUPAL_ROOT="/var/www/html"
DB_NAME="drupal_db"
DB_USER="drupal_user"
DB_PASS="votre_mot_de_passe"

mkdir -p $BACKUP_DIR

# Sauvegarder la base de données
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/db_$DATE.sql.gz

# Sauvegarder les fichiers
tar -czf $BACKUP_DIR/files_$DATE.tar.gz -C $DRUPAL_ROOT sites/default/files

# Garder seulement les 7 derniers jours de sauvegardes
find $BACKUP_DIR -name "*.gz" -mtime  7 -delete

Tester vos sauvegardes Drupal

Créez un environnement de staging et testez régulièrement la restauration des sauvegardes. Une sauvegarde que vous ne pouvez pas restaurer ne vaut rien.

Erreurs courantes de sécurité Drupal à éviter

Exécuter les services en tant que root : Utilisez toujours des utilisateurs dédiés avec des permissions minimales.

Ignorer les fichiers journaux : Configurez la surveillance des journaux et révisez-les régulièrement.

Utiliser les ports par défaut : Changez SSH et autres ports de service des valeurs par défaut.

Ignorer les mises à jour de sécurité : Appliquez les correctifs de sécurité dans les 24-48 heures suivant leur publication.

Permissions de fichiers faibles : Auditez et corrigez régulièrement les permissions de fichiers.

Vos prochaines étapes pour le renforcement du serveur Drupal

  • Auditez votre configuration actuelle en utilisant le module Security Review
  • Implémentez ces changements graduellement pour éviter de briser votre site
  • Testez chaque changement dans un environnement de staging d'abord
  • Documentez votre configuration de sécurité pour référence future
  • Configurez les alertes de surveillance pour les événements de sécurité
  • Planifiez des révisions de sécurité régulières mensuellement

La sécurité du serveur n'est pas une configuration ponctuelle—c'est un processus continu. Commencez par les éléments les plus critiques (HTTPS, mises à jour et sauvegardes) et travaillez le reste systématiquement. Votre site Drupal sera beaucoup plus sécurisé avec une fondation de serveur correctement renforcée.

Rappelez-vous : la meilleure stratégie de sécurité combine plusieurs couches de protection. Aucune mesure unique ne vous protégera de toutes les menaces, mais implémenter ces étapes ensemble crée un système de défense robuste qui rend votre site Drupal une cible beaucoup plus difficile pour les attaquants.

Partager cet article

Prêt à commencer
votre projet?

Notre équipe de développement est prête à transformer votre vision en réalité et à donner vie à votre prochaine innovation.