La sécurité est une préoccupation fondamentale lors de la gestion de tout site web, surtout lorsque vous travaillez avec un système de gestion de contenu comme Grav CMS. Bien que Grav soit intrinsèquement plus sûr que d'autres plateformes grâce à son architecture sans base de données, il est toujours recommandé de prendre des mesures supplémentaires pour protéger votre site. Dans cet article, nous vous guidons étape par étape pour configurer correctement Grav et minimiser les risques.
Cette guide repose sur mes propres apprentissages pendant le développement de VeleroAzul et sur les précieuses recommandations fournies par mon assistant IA.
Les mises à jour incluent des correctifs de sécurité et des améliorations importantes. Assurez-vous de maintenir à jour tant Grav que tous ses plugins :
Tools > Check for Updates
.bin/gpm self-upgrade
bin/gpm install grav
Le panneau d'administration (/admin
) est une entrée critique. Protégez cet accès en suivant ces étapes :
Changez le mot de passe par défaut pour un mot de passe sécurisé (au moins 12 caractères avec lettres, chiffres et symboles). Activez l'authentification à deux facteurs (2FA) si possible.
/admin
Changer la route du panneau d'administration rend difficile les tentatives d'accès non autorisées. Éditez user/config/system.yaml
:
admin:
route: /votre-nouvelle-route-secrete
Si vous naviguez depuis des IPs fixes, restreignez l'accès au panneau uniquement depuis ces adresses. Créez un fichier .htaccess
dans /admin
(pour Apache) :
Order deny,allow
Deny from all
Allow from 123.456.789.012 # Remplacez avec votre adresse IP
Pour Nginx, configurez dans votre fichier de configuration :
location /votre-nouvelle-route-secrete {
allow 123.456.789.012; # Remplacez avec votre adresse IP
deny all;
}
Supprimez ou désactivez les plugins et fonctionnalités que vous n'utilisez pas. Chaque composant supplémentaire peut être un vecteur d'attaque potentiel. Allez dans Plugins
dans le panneau d'administration et désactivez ce qui n'est pas nécessaire.
Bloquez l'accès direct aux répertoires sensibles via des fichiers .htaccess
. Voici ce que vous avez déjà fait et quelques suggestions supplémentaires :
/user
Protégez ce répertoire avec un .htaccess
personnalisé :
<Files "*">
Order deny,allow
Deny from all
</Files>
<FilesMatch "\.(yaml|md|txt|json|woff|woff2|ttf|eot|svg|png|jpg|jpeg|gif|css|js)$">
Allow from all
</FilesMatch>
/cache
et /logs
Ajoutez un .htaccess
de base dans ces répertoires :
Deny from all
Exécutez cette commande périodiquement :
bin/grav clear-cache
Activez HTTPS pour chiffrer toute la communication entre le client et le serveur. Utilisez Let's Encrypt pour obtenir un certificat SSL gratuit. Dans votre fichier .htaccess
principal, redirigez tout le trafic vers HTTPS :
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
/admin
Ajoutez une couche de sécurité supplémentaire avec l'authentification HTTP de base. Cela nécessite la création d'un fichier .htpasswd
avec des identifiants sécurisés.
Créez un .htaccess
dans /admin
:
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /chemin/vers/votre/fichier/.htpasswd
Require valid-user
Générez le fichier .htpasswd
:
htpasswd -c /chemin/vers/votre/fichier/.htpasswd votre-utilisateur
Configurez dans votre fichier de configuration :
location /votre-nouvelle-route-secrete {
auth_basic "Restricted Area";
auth_basic_user_file /chemin/vers/votre/fichier/.htpasswd;
}
Vérifiez régulièrement les logs du système pour détecter des activités suspectes :
/logs
.Le mode debug affiche des informations sensibles sur les erreurs. Désactivez-le en production :
debug:
enabled: false
Installez uniquement des plugins provenant de sources fiables et tenez-les à jour. Évitez d'utiliser des plugins inutiles.
Un pare-feu ajoute une couche de protection supplémentaire contre les attaques malveillantes. Certaines options populaires incluent :
Les sauvegardes sont cruciales pour vous remettre de pannes ou d'attaques. Utilisez le plugin officiel Backup ou automatiser les sauvegardes avec des scripts comme rsync
.
Si vous utilisez Matomo, assurez-vous de le configurer sans cookies pour respecter le RGPD. Vérifiez qu'il ne traque pas de données personnelles.
Activez la protection CSRF dans user/config/security.yaml
:
csrf:
enabled: true
Supprimez les fichiers temporaires qui pourraient accumuler des informations sensibles :
bin/grav clear-temp
Définissez les permissions appropriées pour éviter les accès non autorisés :
find /chemin/vers/grav -type d -exec chmod 755 {} \;
find /chemin/vers/grav -type f -exec chmod 644 {} \;
chmod -R 775 /chemin/vers/grav/cache
chmod -R 775 /chemin/vers/grav/logs
robots.txt
Évitez que des bots malveillants indexent des parties sensibles de votre site. Exemple :
User-agent: *
Disallow: /admin/
Disallow: /cache/
Disallow: /logs/
Disallow: /backup/
Disallow: /user/
Allow: /user/pages/
Allow: /user/themes/
Allow: /user/images/
Allow: *.css$
Allow: *.js$
Une CDN comme Cloudflare améliore les performances et offre des couches supplémentaires de sécurité, telles que la protection contre les DDoS.
Suivre ces étapes garantira que votre site Grav soit bien protégé contre les menaces courantes. Rappelez-vous que la sécurité n'est jamais complète : vérifiez régulièrement les mises à jour, surveillez les logs et ajustez les configurations selon vos besoins.
Cette guide repose sur mes propres apprentissages pendant le développement de VeleroAzul et sur les précieuses recommandations fournies par mon assistant IA. J'espère qu'elle sera utile à vous et à d'autres utilisateurs de Grav cherchant à améliorer la sécurité de leurs sites.