Joomla est un système de gestion de contenu (CMS) open-source basé sur un framework MVC. C'est actuellement le 2ème CMS le plus utilisé sur Internet après Wordpress, avec une part de marché de 2,8%. Bien que cela ne semble pas beaucoup, ce sont plusieurs millions d'entreprises et de blogs qui ont choisi d'alimenter leurs sites web avec Joomla.
Comme pour toute plateforme fortement utilisée, des problèmes de sécurité surgissent régulièrement. Les risques d'être attaqué sont plus importants et des vulnérabilités sont constamment découvertes et exploitées. Suivez notre guide complet afin de renforcer la sécurité de votre installation Joomla et vous aider à prévenir les risques d'être piraté ou d'être victime de la prochaine attaque par force brute.
Les failles de sécurité Joomla
Selon CVE Details, un site répertoriant les failles de sécurité, il y a eu 321 failles Joomla signalées à ce jour depuis 2005.
Si vous lisez ces informations sur la sécurité de Drupal et la sécurité de WordPress, le taux de vulnérabilité de Joomla est moins important si l'on compare la part de marché de ces CMS à leur taux d'incidents (au moins au cours des sept dernières années). Ainsi, si l'on se réfère à ces données, il apparaît que Joomla est le CMS le plus sécurisé.
Quels types de failles de sécurité touchent Joomla ? Selon CVE Details, 39% des vulnérabilités Joomla s'apparentent à de l'exécution de code à distance. Vous pouvez voir les différents statistiques ci-dessous.
Vous pouvez rester à l'écoute des incidents et des failles de sécurité en vous abonnant au Flux RSS officiel des annonces de sécurité Joomla. Vous pouvez aussi consulter la liste complète des failles de sécurité de Joomla sur CVE details.
Sécurité de Joomla
Même si Joomla est un CMS assez sûr, il est encore très largement utilisé, ce qui signifie qu'il va toujours être susceptible d'être attaqué ou piraté. Vous ne pouvez pas empêcher les failles de sécurité d'être découvertes. La meilleure chose que vous pouvez faire est de mettre en œuvre les meilleures pratiques de sécurité pour vous protéger. Suivez donc les recommandations ci-dessous pour renforcer la sécurité de votre site Joomla.
Sécuriser Joomla - Index
- Mettre à jour Joomla et ses extensions
- Utiliser des noms d'utilisateur et des mots de passe sécurisés
- Les extensions de sécurité pour Joomla
- Bloquer les Bots malveillants
- Les connexions sécurisées
- Les permissions sur les fichiers
- Protéger votre zone d'administration
- Activer les URL Search Engine Friendly
- Certificat SSL
- Désactiver l'inscription des utilisateurs en front-end (si possible)
- Cacher le nom de Joomla dans le code source
1. Mettre à jour Joomla et ses extensions
Vous devez toujours garder votre version Joomla à jour ainsi que l'ensemble de vos extensions. Les développeurs mettent à jour ces dernières bien souvent pour des raisons de sécurité et si vous ne le faites pas, vous ouvrez la porte à un certain nombre de vulnérabilités. C'est pourquoi les pirates ciblent généralement les anciennes versions. Par exemple, la vulnérabilité d'injection SQL, qui a été découverte en octobre 2015, a affecté des millions d'installations Joomla.
Notez que vous pourrez toujours télécharger la dernière version de Joomla sur Joomla.org.
Remarque : dans ces exemples, nous utilisons Joomla 3.4.8, qui a été publié le 24 décembre 2015, mais le principe reste identique pour les versions plus récentes.
Si une mise à jour de Joomla est disponible, elle sera visible dans le tableau de bord d'administration. Vous pouvez également utiliser une extension comme Akeeba Backup pour mettre à jour automatiquement votre installation de Joomla et en faire une sauvegarde dans un même temps.
- Pour vérifier ou exécuter des mises à jour, allez dans “Composants” → “Mise à jour de Joomla!.”
- Si une mise à jour est disponible, cliquez sur "Installer la mise à jour." Joomla va alors commencer la mise à jour de votre installation qui prendra jusqu'à quelques minutes.
Il est également recommandé d'utiliser seulement des extensions et templates Joomla de confiance. Choisissez vos extensions via le répertoire des extensions de Joomla ou utilisez ceux provenant de sociétés bien connues. Cela vous évitera des problèmes à l'avenir.
Et faites une sauvegarde de votre site Joomla! Si vous faites des sauvegardes régulières, cela vous permettra de restaurer rapidement votre CMS en cas d'attaque. Nous vous recommandons également d'exécuter des sauvegardes avant de mettre à jour votre version de Joomla et ses extensions. Vous pouvez facilement tester vos mises à jour localement en utilisant un logiciel comme XAMPP ou MAMP avant de pousser les changements sur votre site en production.
Encore mieux, utilisez la fonction Staging de SiteGround, qui permet en 1 click de créer une copie "staging" de votre site, pour effectuer tout type de tests et de mises à jour.
Il existe une extension de sauvegarde gratuite très populaire disponible pour Joomla, Akeeba Backup, que nous vous recommandons. Les fonctionnalités de cette extension sont les suivantes :
- Sauvegarde en un clic
- Assistant de transfert du site. Transférez votre site d'un serveur à un autre rapidement et facilement
- Sauvegarde alimentée par AJAX
- Moteur de sauvegarde PHP natif le plus rapide
- Exclusion de fichiers et dossiers spécifiques
- Exclusion de tables de bases de données ou de contenus spécifiques
- Mode de sauvegarde programmé (programmation de CRON)
- Restauration avec Akeeba Kickstart (gratuit)
- Les archives peuvent être restaurées sur n'importe quel hôte. Très utile pour transférer votre site entre sous-domaines/hôtes ou même depuis ou vers votre serveur local de test (XAMPP, WampServer, MAMP, Zend Server, etc).
2. Utiliser des noms d'utilisateur et des mots de passe sécurisés
Choisissez correctement les noms d'utilisateur et mots de passe que vous utilisez dans Joomla. N'utilisez jamais "admin" comme nom d'utilisateur et choisissez un mot de passe complexe. Ceci est probablement l'un des meilleurs moyens de renforcer votre sécurité sur Joomla, et ironiquement c'est certainement le plus simple à mettre en œuvre. Beaucoup de gens utilisent des mots de passes simples comme «1234567» afin de pouvoir s'en souvenir facilement. Mais ils finissent par le regretter plus tard lorsqu'ils se font pirater. Rappelez-vous qu'il y a toujours des robots qui se propagent sur Internet et qui tenteront d'usurper votre connexion. Consultez ce guide sur la façon de choisir un mot de passe sécurisé.
Environ 76% des attaques sur les réseaux d'entreprise sont dues des à des mots de passe trop faibles. – gemalto
Contrairement à WordPress où vous pouvez changer le nom d'utilisateur de l'administrateur seulement dans la base de données, Joomla permet de mettre à jour le nom d'utilisateur de l'administrateur depuis le tableau de bord. Suivez ces étapes rapides.
- Cliquez sur "Utilisateurs" → "Gérer", sélectionnez votre compte administrateur et cliquez sur "Modifier".
- Il suffit ensuite de modifier la valeur dans le champ "Nom d'utilisateur" et cliquez sur "Enregistrer".
Nous recommandons également d'utiliser un programme comme LastPass ou KeePass, afin de générer des mots de passe sécurisés et de les stocker dans une base de données en local sur votre ordinateur.
3. Les extensions de sécurité pour Joomla
Il y a beaucoup de bonnes extensions de sécurité pour Joomla qui peuvent vous aider à vous protéger contre les attaques. Ces plugins vous permettent de paramétrer des limites, de bloquer les menaces de sécurité, de bloquer les réseaux malveillants, de scanner les vulnérabilités, d'appliquer des mots de passe forts, de voir quels fichiers ont été modifiés, de mettre en œuvre un pare-feu pour bloquer les menaces de sécurité connues, et bien plus encore. Voici quelques extensions populaires de sécurisation de Joomla :
- ACL Manager : Découvrez et corrigez facilement les problèmes liés aux autorisations de vos Tables/ACL.
- KeyCAPTCHA : Protection anti-spam.
- AdminExile : Détection des attaques par force brute, liste noire et liste blanche d'adresses IP.
- QuickLogout : Désactivez la demande de confirmation lors de la déconnexion pour que les personnes se déconnectent systématiquement.
- Securitycheck Pro : Une suite de protection globale destinée à protéger votre site Web sans affecter la vitesse de votre serveur.
- jomDefender : Prévention des attaques CSRF, suppression de l'en-tête PHP Joomla
- aeSecure : Qui à l'avantage d'être multi-plateforme
Il y a deux extensions de sécurité supplémentaires qui méritent un peu plus d'attention. La première est Akeeba Admin Tools. Ce développeur fait de très bonnes extensions pour Joomla. La version de base de l'extension permet de :
- Vous informer et d'installer une nouvelle version de Joomla!
- Corriger les permissions de vos fichiers et répertoires
- Sécuriser votre répertoire administrateur avec un mot de passe
- Changer le préfixe de votre base de données
- Définir un ID de Super administrateur sécurisé
- Migrer les liens pointant vers votre ancien domaine
La version professionnelle inclut des fonctionnalités supplémentaires telles que :
- La sécurisation de l'interface administrateur avec un paramètre secret dans l'URL
- Un parefeu d'application Web (Web Application Firewall - WAF) pour bloquer les exploits connus (injection SQL, XSS, DFI, RFI, agent utilisateur malveillant, protection contre le CSRF/spam-bot, scanner d'uploads)
- Le Whitelisting d'IP pour la section d'administration
- Le Blacklisting d'IP
- Le blocage géographique (refuser l'accès à des pays/continents spécifiques)
- Le blocage automatique d'IP récidivistes
Si vous souhaitez investir dans une extension de sécurité pour Joomla, c'est celui vers lequel vous devez vous tourner.
Vous pouvez également analyser votre site Joomla avec le scanner de sécurité et de malware et Unmask Parasites de Sucuri. Si le test ne montre pas de menaces, il ne garantit pas que votre site est entièrement sécurisé, cela montre simplement que le site ne présente pas de menace immédiate pour les visiteurs.
Depuis peu, Joomla propose une authentification à deux facteurs et ce qui renforce l'impossibilité pour les personnes malveillantes d'accéder à votre site. Le provider de CDN KeyCDN possède désormais une authentification à deux facteurs, de sorte que vous pouvez sécuriser Joomla sur votre hébergeur ainsi que sur votre compte CDN.
Vous pouvez également utiliser ECC+ - EasyCalcCheck Plus développé par l'expert Joomla Viktor Vogel auteur d'excellentes autres extension téléchargeables sur son site. Cette extension permet l'intégration de nombreux services anti-spam (ReCaptcha, Akismet, Honeypot Project, StopForumSpam, Mollom, Bot-Trap, Botscout) et quelques fonctionnalités de sécurité. Elle est compatible avec une partie des composants de formulaires.
Joomla dispose également d'un excellent guide technique sur la sécurisation de vos extensions Joomla avec des conseils supplémentaires pour vous protéger contre les attaques XSS, injections SQL, inclusion de fichier distant, et plus encore.
4. Bloquer les Bots malveillants
Il y a toujours des bots malveillants (scrapers, crawlers) qui visitent vos sites Joomla et utilisent votre bande passante. Vous pouvez voir une liste complète de bots sur botreports.com. Bon nombre d'extensions de sécurité mentionnées ci-dessus fonctionnent à merveille pour bloquer ces bots. Si vous voulez bloquer plusieurs chaines User-Agent
à la fois, vous pouvez ajouter ce qui suit à votre fichier .htaccess
.
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^.*(agent1|Wget|Catall Spider).*$ [NC] RewriteRule .* - [F,L]
Ou vous pouvez également utiliser la directive BrowserMatchNoCase
comme ceci :
BrowserMatchNoCase "agent1" bots BrowserMatchNoCase "Wget" bots BrowserMatchNoCase "Catall Spider" bots Order Allow,Deny Allow from ALL Deny from env=bots
Et voici un exemple sur Nginx.
if ($http_user_agent ~ (agent1|Wget|Catall Spider) ) { return 403; }
Le composant aeSecure permet également d'insérer simplement le nom des bots à bloquer, sans code.
Le provider CDN KeyCDN a maintenant une fonction qui permet de bloquer les bots malveillants au niveau CDN pour économiser de la bande passante.
5. Les connexions sécurisées
Peu importe où vous êtes, vous devriez toujours essayer de faire en sorte que les connexions que vous utilisez sont sécurisées lors de la connexion à votre site Joomla. Vous devez utiliser le cryptage SFTP, si votre hébergeur le propose, ou SSH. Si vous utilisez un client FTP, le port par défaut en SFTP est habituellement le port 22.
Remarque : Certains clients FTP stockent les mots de passe en clair ou encodés sur votre ordinateur. Et il est souvent possible de retrouver le mot de passe original depuis un mot de passe encodé. Ainsi, nous recommandons de ne pas enregistrer vos mots de passe dans le client FTP FileZilla ni de mettre en place ce que certains appellent un mot de passe maître. Utilisez alternativement WinSCP, qui offre de meilleures conditions de sécurité que Filezilla.
Il est également important de vous assurer que vos règles de pare-feu sont configurées correctement sur votre routeur domestique. Et rappelez-vous lorsque vous travaillez dans un lieu public comme un café ou un Starbucks, les réseaux utilisés ne sont pas sécurisés.
Votre hébergeur doit également mettre en place un hébergement sécurisé. Cela signifie que Joomla doit toujours s'exécuter sur les versions les plus à jour de PHP, MySQL, pare-feu d'applications Web, etc. Soyez prudent avec les hébergeurs mutualisés à bas prix sur lesquels vous pouvez rencontrer des problèmes, notamment en cas de surpeuplement des serveurs et de partage des ressources telles que les adresses IPs. Pour être certain de faire le bon choix lisez cet article : Quel hébergeur et hébergement Joomla faut-il choisir ?
6. Les permissions sur les fichiers
Pour protéger votre site Joomla, vous voulez vous assurer que les permissions sur vos fichiers sont correctement paramétrées. Chaque répertoire et fichier possède différentes autorisations qui permettent aux utilisateurs de les lire ou les modifier. Si vos permissions sont trop faibles, cela pourrait ouvrir une porte à un intrus et si elles sont trop restrictives, cela pourrait bloquer l'installation d'extensions ou tout simplement le bon fonctionnement de votre site Joomla.
Joomla possède une bonne documentation sur les permissions de sécurité.
- Comment les permissions des fichiers UNIX fonctionnent-elles ?
- Comment les permissions des fichiers Windows fonctionnent-elles ?
- Comment les permissions des fichiers PHPSuExec fonctionnent-elles ?
Généralement, configurer les fichiers ou dossiers en CHMOD 777 ou 707 est seulement nécessaire lorsqu'un script doit écrire dans ce fichier ou répertoire. Joomla recommande la configuration suivante sur les installations par défaut :
- Fichiers PHP : 644
- Fichiers de configuration : 644 (voire 444 pour configuration.php et .htaccess)
- Autres dossiers : 755
Cependant, vous pouvez être encore plus restrictif que les recommandations ci-dessus pour protéger davantage votre installation.
7. Protéger votre zone d'administration
Vous pouvez sécuriser encore plus votre site Joomla en protégeant via un mot de passe votre zone d'administration. Vous pouvez paramétrer cela avec l'extension gratuite Admin Tools.
- Cliquez sur "Composants" → "Admin Tools", et cliquez sur "Administrateur protégé par mot de passe."
- Cette fonctionnalité protégera par mot de passe votre zone administrateur via les fichiers
.htaccess .htpasswd
. Votre serveur doit supporter ce type de protection par mot de passe.
Vous pouvez également le faire manuellement dans votre fichier .htaccess
.
8. Activer les URL Search Engine Friendly
Il est toujours recommandé d'activer les URL Search Engine Friendly et de masquer les noms de fichiers tels que index.php
dans vos URLs. Cela permet de masquer des informations et d'empêcher les pirates de trouver des vulnérabilités.
Cliquez sur "Système" → "Configuration globale", et activez à la fois "Réécriture d'URL en clair (SEF)" et "Réécriture au 'vol' des URL."
Remarque : pour les utilisateurs Apache, renommez htaccess.txt
en .htaccess
à la racine de votre répertoire Joomla avant de l'activer. Pour les utilisateurs de IIS 7 seulement - Renommer web.config.txt
en web.config
et installez le module de réécriture d'URL avant de l'activer.
9. Certificat SSL
Pour les sites e-Commerce, la raison pour laquelle vous avez besoin d'un certificat SSL est que les données traitées sont sensibles. Pour les autres sites, la principale raison est la sécurisation de votre page de connexion Joomla. Si vous n'utilisez pas une connexion HTTPS, votre nom d'utilisateur et mot de passe seront envoyés en clair sur Internet. Beaucoup de gens affirment que les blogs et les sites d'information ne doivent pas être exécuté en HTTPS, mais quelle est l'importance de vos informations de connexion ? De plus, de nombreux sites sont utilisés par plusieurs auteurs et ces derniers se connectent depuis différents réseaux. Le fait d'utiliser une connexion sécurisée ne peut que contribuer à renforcer votre sécurité sous Joomla.
Avec les avantages en référencement du HTTPS et les avantages en termes de performance du HTTP/2, il n'y a aucune raison de ne pas utiliser le HTTPS et un certificat SSL. SiteGround et KeyCDN propose désormais des certificats SSL gratuits via Let's Encrypt.
Nous vous recommandons également de consulter le guide de sécurité de Joomla car il y a beaucoup d'informations utiles. Il est également important de noter que depuis Joomla 1.7, ils ont commencé à utiliser des préfixes aléatoires de base de données pour plus de sécurité. Dans le guide de sécurité pour WordPress et le guide de sécurité pour Drupal, édité par keyCDN, il est recommandé d'activer cette fonctionnalité, mais il n'y a pas besoin de le faire dans Joomla.
10. Désactiver la possibilité d'inscription des utilisateurs
Si votre activité le permet et que vous n'utilisez pas la fonction d'inscription (ou enregistrement) sur votre site, alors nous vous recommandons de désactiver cette possibilité. En effet, cela évitera le risque d'inscriptions pirates dans votre table des utilisateurs.
Allez en Utilisateurs / Utilisateurs, bouton "Paramètres" en haut à droite puis mettre à "Non" le paramètre ci-dessous :
11- Cacher "joomla" dans le code source
Il est important de fournir un minimum d'informations aux pirates éventuels, cacher la nature du CMS avec lequel est construit votre site fait partie de ces précautions simples à mettre en place.
Il s'agit de cacher la balise <meta name="generator" content="Joomla! - Open Source Content Management" />
Pour cela, ouvrez le fichier index.php à la racine de votre template, et ajoutez le code suivant :
JFactory::getDocument()->setGenerator('');
en haut du fichier, par exemple en dessous de :
defined('_JEXEC') or die;Vous pouvez également utiliser une extension simple pour Joomla pour supprimer le meta tag genarator.
Résumé
Comme vous pouvez le voir, il y a beaucoup de façons de renforcer la sécurité de votre site Joomla et quelques extensions vous aident en ce sens. Mettre à jour Joomla et ses extensions, utiliser des noms d'utilisateur et des mots de passe sécurisés, utiliser des extensions de sécurité, des connexions sécurisées, surveiller les permissions des fichiers, utiliser l'authentification à deux facteurs ou encore une connexion sécurisé par certificat SSL sont autant de façons d'améliorer votre sécurité. Bon nombre de ces recommandations peuvent être mises en œuvre en quelques minutes afin de vous tenir à l'abri des intrus et des hackers.
Vous avez d'autres bons conseils de sécurité pour Joomla ? Faites-le nous savoir en postant un commentaire ci-dessous !