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 gravLe 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.
/adminChanger 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 :
/userProté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 /logsAjoutez 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]
/adminAjoutez 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.