- Gardez votre site à jour
- Réduire la surface d'attaque
- Nettoyer les données
- Retirer les extensions inutilisées
- Contrôler les niveaux d'accès
- Utilisez une double authentification
- Utilisez des mots de passe sûrs
- Autoriser uniquement un accès sécurisé
- Réduire l'exposition d'informations
- Consultez le journal des activités
A l'occasion du mois de la cybersécurité, le site Sucuri a publié un article (en anglais) donnant 10 conseils pour renforcer la sécurité des sites Web. Une occasion pour nous de rappeler que, même sans extension supplémentaire, notre CMS préféré - Joomla! - est armé pour la sécurité (n'en déplaise à ses détracteurs).
Petit tour d'horizon en suivant les 10 points de l'article, un rappel des bases de sécurité étant toujours utile.
1. Gardez votre site à jour
C'est certainement la règle la plus importante à suivre dès que vous utilisez un CMS tel que Joomla!, Wordpress ou autre.
L'époque où la mise à jour de Joomla! (ou de ses extensions) était une opération (parfois) périlleuse est révolue depuis longtemps. Cette opération s'effectue aujourd'hui en quelques clics, depuis l'interface d'administration. Pour éviter les mauvaises surprises, le composant Akeeba Backup, même dans sa version gratuite, effectue automatiquement une sauvegarde du site avant toute nouvelle mise à jour de Joomla!
Vous n'avez donc plus aucune excuse pour ne pas faire de mise à jour dès leur parution, ce dont vous êtes avertis automatiquement par email.
2. Réduire la surface d'attaque
Il s'agit ici d'empêcher l'accès à tout contenu qui n'est pas destiné au public : l'inscription au site (si cela n'est pas prévu), l'administration, ...
Depuis quelque temps déjà, Joomla! désactive par défaut (ce n'était pas le cas avant) la possibilité de s'inscrire sur le site. On ne risque donc plus d'avoir d'inscriptions intempestives en front-end. Pour la protection de l'administration, de nombreux plugins ou extensions permettent le déploiement de différentes stratégies de sécurité : redirection, protection par mot de passe, filtrage des IP, blocage des tentatives illicites de connexion, ...
Nous vous recommandons l'utilisation de l'extension Admin Tools Pro (qui existe également pour Wordpress) pour une protection complète et modulable de votre site.
3. Utiliser des techniques de "nettoyage des données" (sanitization techniques)
Il s'agit ici d'un aspect plus technique. En gros, il s'agit de s'assurer que les données introduites par les utilisateurs (via des formulaires, comme la demande de contact par exemple) ne contiennent pas de code malveillant. C'est un principe de base en matière de sécurité lorsqu'on développe des applications.
Quand ce genre de problème est décelé dans une extension du noyau de Joomla!, il est immédiatement corrigé via une nouvelle mise à jour (voir le point #1). Pour des extensions tierces, veillez à toujours utiliser la dernière version publiée et, surtout, ne récupérez JAMAIS une extension sur un site autre que celui de son développeur. Certains sites proposent de télécharger gratuitement des extensions ou des templates commerciaux (payants) mais, en plus d'être dans l'illégalité, vous courrez le risque que les fichiers téléchargés contiennent des "portes dérobées" qui permettront de pirater facilement votre site.
4. Retirer les extensions inutilisées
Nous constatons souvent lors de nos interventions que beaucoup de sites contiennent une quantité impressionnante d'extensions, de plugins, de modules, de templates, ... dont, parfois, un grand nombre ne sont pas (ou plus) utilisés.
C'est en partie inhérent au fonctionnement des CMS : l'ajout de nouvelles fonctions est possible grâce au recours à des extensions tierces et, si vous possédez un site depuis longtemps, ces nombreux composants sont les acteurs des différentes évolutions suivies au cours du temps.
Cependant, votre serveur n'est pas un lieu de stockage où entreposer les applications devenues obsolètes. Une des règles de base de la sécurité est de ne conserver, sur un serveur en production, que les éléments qui sont effectivement utilisés par le site. Si vous décidez de ne plus utiliser une extension, il ne suffit pas de la désactiver, il est préférable de la désinstaller complètement. Vous pouvez néanmoins conserver les tables associées dans la base de données car elles présentent un moindre risque en terme de sécurité et permettent de conserver des données ou des configurations que vous serez heureux de retrouver dans le cas où vous souhaiteriez utiliser à nouveau ce composant.
Ici aussi, avec Joomla!, il est très facile de retirer une extension via le menu Gestion
du gestionnaire d'extensions.
5. Avoir un contrôle d'autorisation granulaire
Cette terminologie désigne l'application d'un autre principe de sécurité : le principe du moindre privilège.
Concrètement, cela veut dire que si la tâche d'un de vos collaborateurs ne consiste qu'à écrire des articles, il est inutile (et surtout dangereux) de lui donner accès à la gestion complète du site. Et dans ce domaine, Joomla! possède, de façon native, un système de gestion des droits extrêmement complet et granulaire. Vous pouvez, à tous les niveaux et pour tous les types d'utilisateurs, définir avec précision les droits d'action (ce que les utilisateurs peuvent faire) et les droits d'accès (ce que les utilisateurs peuvent voir).
Si vous travaillez au sein d'une organisation impliquant de nombreuses tâches liées à des niveaux hiérarchiques, cette fonction, à elle seule, est une très bonne raison de choisir Joomla! comme CMS pour votre site.
6. Utilisez une double authentification
Protéger l'accès à l'administration du site par un mot de passe fort est essentiel mais il est de plus en plus recommandé d'utiliser une méthode d'authentification forte, donc impliquant une deuxième action en complément de l'introduction du mot de passe.
Nativement, Joomla! propose cette fonction, soit en utilisant le service Google Authentificator (une application gratuite pour votre smartphone), soit une solution matérielle proposée par YubiKey (une clé USB). Le composant gratuit Akeeba LoginGuard propose en plus l'accès via des clés FIDO U2F (moins chères que les YubiKeys), des SMS, des emails ou des notifications PUSH.
7. Utilisez des mots de passe sûrs
Demander à vos utilisateurs d'utiliser "de bons mots de passe" ne suffit pas toujours. Vous pouvez instaurer une "politique de mot de passe" efficace très facilement au sein même de Joomla! : dans les paramètres du gestionnaire des utilisateurs, l'onglet Paramètres de mot de passe
vous permet de fixer une longueur minimum (nous recommandons au moins 10 caractères) ainsi que le nombre de chiffres, de symboles, de majuscules et/ou de minuscules que doivent contenir les mots de passe.
Vous pouvez aussi choisir d'envoyer ou non le mot de passe par email lors de l'inscription et de forcer les utilisateurs à réinitialiser leur mot de passe lors de leur prochaine connexion. Bref, tout un éventail de mesures à même de garantir un accès sécurisé, tout cela en quelques clics dans l'administration, sans besoin d'application externes.
8. Autoriser uniquement un accès sécurisé
La chose est valable et possible pour tous les sites puisqu'il s'agit avant tout d'une mesure à appliquer au niveau du serveur (ou de l'hébergement), à savoir le passage en mode "https" via l'activation d'un certificat SSL lié à votre nom de domaine. Il existe des certificats payants, qui ont certains avantages, mais aujourd'hui la majorité des hébergeurs en proposent des gratuits via le service Let's Encrypt.
Une fois le certificat activé sur le serveur, il s'agit juste de faire un petit changement de réglage dans la configuration générale de Joomla! pour appliquer cet accès sécurisé à l'ensemble du site.
Attention cependant, il ne s'agit que d'une (petite) mesure de protection parmi beaucoup d'autres. A elle seule, elle ne suffira pas à protéger efficacement votre site ou ses visiteurs contre toutes les attaques.
9. Réduire la verbosité et l'exposition d'informations
La "verbosité" est le défaut de ce qui est verbeux. En informatique, on y fera référence pour désigner des applications trop "bavardes".
Certes il est important d'afficher des messages d'erreurs aux visiteurs pour les aider à comprendre ce qui a été de travers et rien n'est plus frustrant qu'un avis laconique indiquant que "une erreur s'est produite", sans autre détail ! Néanmoins, dans le domaine de la sécurité, il convient d'être mesuré dans ses propos et d'éviter que certains messages ne donnent des indications utiles à des personnes malveillantes.
Comme ici Joomla! n'est pas totalement exemplaire, il convient de développer un petit peu le sujet. Voici ce qui se passe, par exemple, quand on essaie d'accéder à l'administration du site en essayant de deviner l'identifiant et le mot de passe :
Le message est à la fois explicite pour l'utilisateur et ne donne pas d'information utile à une personne mal intentionnée (c'est le mot de passe ou l'identifiant qui n'est pas correct ?).
Mais voyons maintenant ce qu'il se passe si nous faisons le même essai en front-end (du côté public).
Cette fois le composant a été trop "bavard" : il indique que l'utilisateur n'existe pas ! En théorie, un pirate pourra donc essayer tous les identifiants possibles jusqu'à en trouver un bon (il circule des listes contenant des millions d'identifiants "récoltés" un peu partout, souvent dans des sites qui ont été piratés). Quand il en aura trouvé un correspondant à un utilisateur existant, le message changera et l'intrus saura qu'il possède un premier élément de connexion :
En pratique toutefois, si vous utilisez une extension de sécurité comme Admin Tools Pro, vous pouvez limiter le nombre de tentatives de connexion et bloquer les assaillants. Mais en matière de sécurité Web, il convient d'être un peu paranoïaque et, avec Joomla!, il est facile, grâce aux "substitutions" de langues, de modifier ce type de message. Vous pouvez les remplacer, par exemple, par une mention plus vague :
Enfin, la "verbosité" concerne aussi la divulgation de l'utilisation de Joomla! (dans le code source des pages du site), de la version utilisée (dans le fichier joomla.xml), du type de serveur utilisé, ... Toutes ces indications peuvent être masquées via des extensions de sécurité.
10. Surveillez votre site et consultez le journal des activités
Depuis la version 3.9 et la sortie de la "e-privacy suite" en vue de la conformité avec le RGPD, Joomla! intègre nativement un "log des actions utilisateurs" qui vous permet de savoir qui à fait quoi, et quand. C'est un outil important quand vous avez un site avec beaucoup d'utilisateurs, aussi n'oubliez pas de l'activer (ce n'est pas le cas par défaut) et de le consulter régulièrement.
Les extensions de sécurité permettent aussi d'avoir des informations sur les types d'intrusion qui ont été bloqués afin de permettre d'affiner les stratégies de protection.
Conclusion
Nous espérons que ces rappels vous ont été utiles et vous inciteront à vous pencher sérieusement sur la sécurité de vos sites. N'oubliez pas que, depuis le RGPD, vous êtes légalement responsables de la sécurité des données personnelles qui vous sont confiées. Il est donc indispensable d'en garantir la confidentialité par des mesures appropriées. Si cela vous semble être une tâche qui dépasse vos compétences, contactez-nous pour une intervention, des conseils ou la mise en place d'une politique de sécurité adaptée à votre situation.
Source : Top 10 Website Hardening Tips - 14 octobre 2019