Comment sécuriser son site ?

Comment sécuriser son site ?

Si créer son site est devenu très simple avec les outils comme Joomla, veiller à sa sécurité est une tâche plus ardue pour beaucoup. C'est pourquoi je vous propose de voir les 10 points pour améliorer la sécurité de votre site.

Avoir un site web en 2019 est devenu vraiment plus facile avec la prolifération d'excellents outils et services de développement Web. Les systèmes de gestion de contenu tels que Joomla, Drupal, Magento et d’autres, permettent de se créer rapidement une présence en ligne. La gratuité des CMS, leur architecture hautement extensible et la très grande diversité des extensions qu'ils proposent ont séduit des millions de personnes depuis une dizaine d'années.

Cependant, il y a des effets secondaires qu'il ne faut surtout pas négliger. Je vois encore beaucoup trop de propriétaires de site qui ne prennent pas la mesure de la sécurisation de leur(s) site(s). A mon avis, il existe un malentendu quant à l’importance de la sécurité de leur site Web et de leur responsabilité vis-à-vis de celui-ci.

Puisque tout le monde n'est pas nécessairement au fait des techniques et pratiques en matière de sécurité pour le Web, il me semble important de revenir sur ces questions et de les traiter de manière à vous permettre d'en prendre conscience et d'adopter de bonnes postures en matière de sécurité.

1 – Les mises à jour

C’est le premier point important sur lequel je saurais trop insister. De trop nombreux sites Web sont infectés chaque jour en raison de logiciels obsolètes et non sécurisés.

Il est extrêmement important de mettre à jour votre site dès qu'une nouvelle extension ou qu'une nouvelle version du CMS est disponible. Ces mises à jour peuvent contenir des améliorations de sécurité ou corriger des vulnérabilités. Ne tardez pas pour les appliquer.

Il faut savoir que la plupart des attaques de sites Web sont automatisées. Le plus souvent, ce sont des robots qui scrutent en permanence le Web pour trouver des opportunités à exploiter. Il ne suffit pas de mettre à jour son site une fois par mois, voire une fois par semaine, pour être en sécurité car les robots trouveront et exploiteront probablement une faille ou une vulnérabilité avant qu'elles ne soient corrigées.

Si vous avez un site propulsé par Joomla, je recommande personnellement Admin Tools Professional qui est sans doute ce qui se fait de mieux en la matière. L'outil est vraiment très complet. Revers de la médaille : il est assez complèxe.

Sucuri Website Hack Trend Report 2018
44% des sites hackés en 2018 n'étaient pas à jour lors de l'attaque
Source : Sucuri - Website Hack Trend Report 2018

2 – Vos mots de passe

Avoir un site sécurisé dépend surtout de votre attitude vis-à-vis de la sécurité en général. Connaissez-vous la force du mot de passe de votre site ? L'utilisez-vous sur d'autres sites, applications, outils ? Depuis quand ne l'avez-vous pas changé ?

Lorsqu'il m'arrive d'avoir à nettoyer des sites Web infectés, je dois me connecter au site et au serveur du client à l’aide de ses informations d’administrateur. Et je suis toujours choqué de constater à quel point les mots de passe sont généralement insécurisés. Avec des identifiants du type admin / 123456, autant ne pas avoir de mot de passe du tout !

Il existe de nombreuses listes de mots de passe volés en ligne. Les pirates les combinent avec les listes de mots du dictionnaire pour générer des listes encore plus vastes de mots de passe potentiels. Si le mot de passe que vous utilisez figure sur l'une de ces listes, ce n'est qu'une question de temps avant que votre site ne soit compromis.

Mes conseils pour avoir un mot de passe sécurisé :

  • Un mot de passe unique. Chaque mot de passe que vous utilisez doit être unique. Si vous n'avez pas une mémoire suffisante pour vous souvenir de tous vos mots de passe, le recours à un gestionnaire de mot de passe peut alors être utile.
  • Un mot de passe long. Un mot de passe sécurisé compte au moins 10 à 12 caractères. Plus votre mot de passe sera long, plus il sera long et difficile à casser par un programme.
  • Un mot de passe illisible. Les programmes capables de craquer les mots de passe peuvent deviner des millions de mots de passe en quelques minutes s’ils contiennent des mots trouvés en ligne ou dans des dictionnaires. Si votre mot de passe contient de vrais mots, il n’est pas aléatoire. Si vous êtes capable de lire facilement votre mot de passe, cela signifie qu'il n'est pas assez résistant. Même si vous utilisez le remplacement de caractère (par exemple remplacer la lettre O par le chiffre 0), cela ne suffit pas.

Il existe des gestionnaires de mots de passe en ligne, tels que LastPass ou encore KeePass 2.

Ces outils stockent vos mots de passe dans un format crypté et peuvent générer des mots de passe aléatoires d'un simple clic. Ne vous privez pas d'en utiliser un.

3 – Un Site = un serveur

Je comprends qu'héberger plusieurs sites sur le même serveur soit tentant d'un point de vue financier, surtout si vous avez une offre "illimitée" chez votre hébergeur. Malheureusement, c'est l'une de pires pratiques qui soit en terme de sécurité ! Héberger plusieurs sites sur le même serveur offre une surface très large en cas d'attaque.

Vous devez savoir que le cross-site-contamination est une pratique très courante. Concrétement, un site contamine les autres sites hébergés sur le même serveur en raison d'une mauvaise configuration du serveur ou du compte.

Par exemple, un serveur contenant un site Joomla avec 10 extensions peut être la cible d'une attaque. Cela n'affectera que ce site. Maintenant, si vous hébergez 5 sites sur le même serveur, une attaque pourra contaminer vos 5 sites ainsi que toutes leurs extensions. Et pour aggraver les choses, une fois qu'un attaquant a trouvé une faille sur un site, l'infection peut se propager facilement à d'autres sites sur le même serveur.

Cela peut non seulement entraîner un piratage simultané de tous vos sites, mais également rendre le processus de nettoyage beaucoup plus long et difficile. En effet, les sites infectés peuvent continuer à se réinfecter, provoquant ainsi une boucle sans fin.

Une fois le nettoyage réussi, il faut réinitiliser tous les mots de passe. Au lieu d'un seul site, c'est tous les sites que vous devrez passer en revue. Chaque mot de passe associé à chaque site sur le serveur doit être changé une fois l'infection éliminée. Cela vaut pour les mots de passe des bases de données, les accès FTP et les accès aux différents panneaux d'administration. Si cette étape n'est pas parfaitement réalisée, vos sites pourraient alors être réinfectés et vous devrez tout reprendre depuis le début.

4 – Les droits d'accès

Cette règle ne s'applique pas uniquement aux sites ayant plusieurs administrateurs ou éditeurs autorisés à se connecter au panneau d'administration. En effet, le simple fait de permettre aux visiteurs de s'inscrire sur votre site laisse la porte ouverte à des inscriptions potentiellement malveillantes. Pour limiter ce risque, désactivez cette option dans les réglages de votre site.

Il est important que chaque utilisateur inscrit dispose de l’autorisation appropriée pour effectuer son travail. Si des autorisations supérieures sont nécessaires momentanément, accordez-les mais réduisez-les une fois le travail effectué.

Par exemple, si une personne souhaite écrire un article sur votre blog (guest blogging), ne lui accordez pas des privilèges d'administration dans la meusre où il est possible de rédiger du contenu depuis la vue publique du site. Ce nouveau compte que vous allez devoir ajouter ne devrait pouvoir que créer et modifier ses propres messages, car il n’est pas nécessaire qu'il puisse modifier les paramètres de votre site Web.

Des rôles d’utilisateur et des niveaux d’accès soigneusement définis permettent de limiter les erreurs éventuelles. Cela réduit également la possibilité qu'un compte compromis puisse causer des dommages irréversibles au site. Attention, si plusieurs personnes partagent le même compte utilisateur et qu'un de ces utilisateurs modifie quelque chose dans les paramètres, comment pourrez-vous identifier le ou la responsable ?

Une fois que vous avez séparé les comptes de chaque utilisateur, vous pourrez surveiller leurs actions en consultant les journaux et ainsi vérifier quand et comment ils accèdent à votre site Web. Ainsi, si un utilisateur se connecte à une heure indue ou à partir d'un emplacement suspect, vous aurez un début de piste pour enquêter.

Consulter régulièrement les journaux d'audit du serveur est essentiel pour rester au courant de toute modification suspecte de votre site Web. Un journal d’audit est un document qui enregistre tous les événements survenus sur un site Web, ce qui vous permet de détecter les anomalies éventuelles.

5 – Les réglages par défaut du CMS

Les CMS (bien que simples à utiliser) peuvent être plus délicats à appréhender du point de vue de la sécurité pour les utilisateurs finaux. De ca fait, de très nombreux CMS sont mis en production avec des réglages standards pour ce qui est de la sécurité. Bon nombre des attaques sont lancées de manière automatisée en supposant que les paramètres de sécurité sont ceux par défaut.

Cela signifie qu'il est possible d'éviter un grand nombre d'attaques simplement en changeant les réglages par défaut lors de l'installation du CMS.

Par exemple, certaines applications du CMS peuvent être écrites par l'utilisateur, ce qui lui permet d'installer les extensions de son choix.

Vous pouvez ainsi modérer les commentaires laissés sur votre site, contrôler les utilisateurs inscrits ou encore les accès à certaines parties du site. Les permissions sont un exemple de ce qu'il est possible de renforcer en terme de sécurité (nous verrons ce point plus loin).

Vous pouvez le faire lors de l'installation du CMS ou plus tard. L'important est de penser à le faire.

6 – Le choix des extensions

L’extensibilité d'un CMS comme Joomla est une chose que tous les propriétaires de site adorent généralement. Mais cet avantage peut aussi devenir l’une des plus grandes faiblesses. Il existe des milliers d'extensions qui fournissent pratiquement toutes les fonctionnalités que vous pouvez imaginer. Mais reste à savoir laquelle choisir et installer.

Voici les points que je regarde avec soin lorsque je cherche une extension à installer :

  • Date des dernières mises à jour. Si la dernière mise à jour de l'extension remonte à plusieurs années, je considère que le développeur ne la maintiens plus. Je préfère utiliser des extensions qui sont régulièrement mises à jour car cela indique que l'auteur pourra proposer un correctif éventuel si un problème de sécurité est découvert. De plus, une extension qui n'est plus supportée peut devenir source de conflits avec les dernières versions du CMS.
  • Age et notoriété de l'extension. Une extension proposée par un développeur renommé et qui a été installée de très nombreuses fois sera toujours plus crédible qu'une extension récente provenant d'un auteur quasi inconnu. Non seulement, les développeurs expériementés ont une bien meilleure perception des problèmes liés à la sécurité, mais ils sont également plus attentifs à leur reputation en proposant des extensions exemptes de vulnérabilités.
  • Origines et traçabilité. Ne téléchargez vos extensions que sur le Joomla Extension Directory qui est le site officiel des extensions pour Joomla. Les extensions proposées sur des sites warrez ou des forums ne sont pas des cadeaux gratuits car ce sont des cadeaux empoisonnés. Nombreux sont les cas de sites infectés par ce type d'extensions vérolées. Le jeu n'en vaut clairement pas la chandelle.

7 – Les sauvegardes

Croyez-moi, avoir son site Web piraté n’est pas une expérience que vous voudrez essayer. Aussi, mieux vaut ne pas être pris au dépourvu au cas où cela se produirait.

Disposer d'une sauvegarde complète est indispensable pour recupérer son site après un incident majeur. Même si cette solution ne doit pas remplacer les précautions concernant la sécurité, une sauvegarde peut vous aider à réstaurer les fichiers endommagés.

Une bonne sauvegarde doit avoir les caractéritiques suivantes :

  • Premièrement, elle doit être stockée hors du site. Si vos sauvegardes sont stockées sur le même serveur que votre site, elles sont tout aussi vulnérables aux attaques. Vous devez donc placer vos sauvegardes ailleurs pour vous assurer de leurs intégrités en cas de besoin. Laisser ses sauvegardes sur le serveur est également un facteur de risque aggravant. En effet, elles contiennent toutes les informations sur la version de votre CMS et sur vos extensions. Un pirate n'en demande pas tant !
  • Deuxièmement, vos sauvegardes doivent être automatisées. Vous faites sans doute mille choses en une journée que vous oublierez sans doute de planifier la sauvegarde de votre site. Utilisez une solution fiable qui vous permette de planifier ces tâches afin de ne pas vous en préoccuper.
  • Pour terminer, vos sauvegardes doivent être testées et valides. Cela signifie qu'il faut absolument vérifier que vos sauvegardes fonctionnent. Si ce n'est pas le cas, c'est juste un gros fichier qui premet une palce inutile. Pour la redondance, ayez également plusieurs sauvegardes. En faisant cela, vous pourrez restaurer votre site.

8 – La configuration du serveur

Suivant votre hébergement, votre serveur pourra utiliser différentes technologies. Aussi, il est important de connaître les différents types de fichiers de configuration de votre serveur Web :

  • Un serveur Apache utilise des fichiers .htaccess
  • Un serveur Nginx utilise des fichiers nginx.conf
  • Un serveurs Microsoft IIS utilise des fichiers web.config

Suivant le type de serveur sur lequel est installé votre site, vous pouvez d'ores et déjà supprimer les fichiers de configuration sans rapport avec le vôtre.

Ces fichiers sont placés à la racine de votre site et sont essentiels à sa bonne marche. Ils vous permettent d'exécuter des règles sur le serveur, ce qui inclue des directives qui améliorent la sécurité de votre site Web.

Si vous avez un doute sur le type de serveur, vous pouvez l'identifier grâce à Sitecheck de Sucuri. Indiquez l'URL de votre site puis cliquez sur le bouton Scan website.

Sucuri Sitecheck

Voici quelques règles de sécurité que je vous recommande de chercher et d'ajouter en fonction du type de serveur que vous utilisez :

  • Bloquer la navigation dans vos dossiers. Cela empêche que des utilisateurs malveillants puissent afficher le contenu de chaque répertoire de votre site Web. Limiter au maximum l'accès aux informations aux attaquants constitue toujours une précaution de sécurité utile.
  • Bloquer le hotlinking de vos images. Bien qu’il ne s’agisse pas exactement d’une règle de sécurité, cela empêche les autres sites Web d’afficher les images hébergées sur votre serveur. Si des personnes connectent des images à partir de votre serveur, l’allocation de bande passante prévue par votre contrat d'hébergement risque d’être vite prise par l'affichage d'images pour le site de quelqu'un d'autre.
  • Protéger vos fichiers sensibles. Vous pouvez définir des règles spécifiques pour protéger certains fichiers et certains dossiers. Le fichier configuration.php de Joomla est l'un des fichiers les plus importants et l'un des plus sensibles présent sur votre serveur car il contient toutes les informations de connexion à votre base de données. D'autres emplacements, tels que le dossier administrator, doivent également être verrouillés. Vous pouvez aussi restreindre l'exécution de PHP dans des répertoires contenant des images ou ceux permettant les téléchargements.

9 – Activer le SSL

SSL est l'acronyme de Secure Sockets Layer. Il s'agit d'une technologie de sécurité standard qui permet d'établir un lien crypté entre un serveur Web et un navigateur.

Pour être tout à fait franc, j'ai hésité avant d'inclure le SSL comme conseil pour améliorer la sécurité de votre site Web car il circule de nombreuses informations (souvent inexactes) suggérent que l’installation d'un certificat SSL résoudra vos problèmes de sécurité. C'est faux !

Un certificat SSL encrypte les communications entre un point A et un point B – c'est à dire entre le serveur du site Web et le navigateur de l'internaute. Ce chiffrement est important pour au moins une raison. Cela empêche quiconque de pouvoir intercepter cet échange d'informations. En ce sens, un certificat SSL est donc un excellent moyen de protéger les mots de passe, les informations de carte de crédit ainsi que d’autres données sensibles (comme votre numéro de Sécurité Sociale, par exemple).
Des initiatives telles que Let’s Encrypt ont rendu cette technologie gratuite.

Suite à l'énorme menace de Google visant à étiqueter tout sit Web encore en HTTP comme non sécurisé, le SSL est devenu une quasi norme pour toute l'industrie du Web. Forcer le passage au HTTPS est surtout essentiel pour les sites e-commerce et pour tous les sites qui utilisent des formulaires avec des données utilisateur sensibles ou des informations d'identification personnelles (PII).

Le certificat SSL protège les informations de vos visiteurs en transit, ce qui peut vous éviter des amendes et de graves soucis juridiques qui pourraient survenir si vous êtes reconnu comme étant non conforme à la norme PCI DSS.

10 – Les permissions

Les permissions sur les fichiers (et les dossiers) déterminent qui peut faire qui avec ces fichiers.

Chaque fichier possède 3 niveaux de permissions et chaque permission est représentée par un chiffre :

  • Lire (4): voir le contenu d'un fichier.
  • Ecrire (2): Modifier le contenu d'un fichier.
  • Exécuter (1): éxécuter le programme ou le script.

Si vous voulez accorder plusieurs permissions, additionnez simplement les chifres entre eux. Par exemple, pour permettre la lecture (4) et l'écriture (2), vous donnerez une permission (6). Pour autoriser la lecture (4), l'écriture (2) et l'éxécution (1), alors vous ajusterez la permission à (7).

Il existe 3 groupes d'utilisateurs possibles :

  • Propriétaire – Habituellement, c'est le créateur du fichier mais cela peut être modifié. Seulement un seul utilisateur peut être propriétaire.
  • Groupe – Chaque fichier est assigné à un groupe, et chaque membre de ce groupe aura la permission du groupe.
  • Public – Toutes les autres personnes.

Si vous voulez que le propriétaire puisse lire et écrire, que le groupe puisse seulement lire et que le public n'ait aucun access, les permissions devraient être réglées de la manière suivante :

Exemple de permissions
# Ecrire Lire Exécuter
Popriétaire 2 4 0
Groupe 0 4 0
Public 0 0 0

Dans ce cas, les permissions s'afficheront en 640.

Les dossiers ont également la même structure et logique de permissions. La seule difference est que Exécuter vous permet de définir le dossier comme étant votre dossier de travail. Et c'est probablement ce que vous voudrez.

Mais rassurez-vous, Joomla installe et configure tous les fichiers et les dossiers avec les bonnes permissions. Vous n'avez pas à vous en préoccuper.

Mais alors pourquoi ai-je passé tout ce temps à vous expliquer le fonctionnement des autorisations ?
Parce que lorsque vous rechercherez des solutions aux erreurs d'autorisation, des personnes mal informées (ou mal intentionnées) vous conseilleront de modifier les autorisations de vos fichiers en 666 ou les autorisations de vos dossiers en 777.

Alors d'accord, ce type de configuration règlera toutes vos erreurs de permissions mais c'est le pire conseil qui soit en terme de sécurité.

Si vous appliquez une permission 666 à un fichier et/ou une permission 777 à un dossier, vous permettez à TOUT LE MONDE d'ajouter un code malveillant ou de supprimer n'importe quel fichier sur votre serveur !

Pour terminer

Si vous appliquez ces quelques conseils relativement simples, vous augmentez significativement le niveau de sécurité de votre site. Bien que ces étapes ne suffiront pas à garantir que votre site ne sera jamais piraté, les suivre arrêtera la grande majorité des attaques automatisées, ce qui réduira déjà votre exposition au risque.

Être conscient de ces problèmes et les comprendre vous donnera un aperçu précieux sur le fonctionnement de votre site et de son environnement. Cela vous aidera également à monter en compétences.

Si vous avez besoin d'aide pour améliorer la sécurité de votre site Joomla ou si vous souhaitez me déléguer la gestion technique de celui-ci pour vous concentrer sur ce qui vous interesse, n'hésitez pas à me contacter en toute liberté.

A PROPOS DE L'AUTEUR :
Webmaster freelance passionné par Joomla depuis 2007, Daniel défend la veuve et l'orphelin du web en créant des sites respectueux du W3C. Fort d'une expérience de plusieurs années, il partage ses connaissances dans un état d'esprit open source.
Daniel est également très impliqué dans la communauté Joomla depuis 2014 en étant membre actif de plusieurs projets, conférencier et fondateur du JUG Breizh.