Sécurité : Se protéger du défacement de site web

En ces temps troublés et avec la recrudescence des attaques de sites web, il m’a semblé opportun de faire un point sur les façons de prévenir ce genre de choses et de s’en défendre.

Si vous avez suivi les récentes suites de l’actualité, vous avez certainement entendu parlé de ces nombreux sites web défacés par des personnes pas vraiment amicales et profitant des failles de sécurité de ces sites pour afficher leurs messages incitant à la haine.

Personne n’a été épargné, que ce soit les sites de certains grands médias nationaux ou les sites de municipalités françaises.

Défacement de sites web : De quoi parle-t-on ?

Toutes ces attaques ont en commun un type d’attaque visant à remplacer le contenu initial d’une page web par un message relayant l’idéologie « souvent fort nauséabonde » de l’attaquant. Il est d’usage d’employer le terme de défaçement de sites web pour ce type d’attaques.

Ce n’est donc pas une attaque de type « Deny Of Service » où l’attaquant va rendre le site web visé indisponible en l’innondant de connexions. Ce type d’attaque vise plus à rendre un contenu indisponible plutôt qu’à le remplacer.

Cela n’a donc rien à voir non plus avec un autre type d’attaque consistant à essayer d’introduire via le site web un malware, cheval de troie qui participera à son tour à des attaques de type DDOS ou de relais de spam.

Et cela n’est pas non plus en rapport avec les attaques de type SSH visant à « deviner » par essais successifs des mots de passe un peu trop faciles. Ces attaques sont désormais continues sur Internet et le meilleur conseil reste d’utiliser l’authentification SSH par clé privé/publique en plus d’un mot de passe fort.

Nous allons nous focaliser uniquement sur les attaques de type défacement pour la suite de cet article et voir :

  • Les techniques à utiliser pour protéger son site web du défacement.
  • Les techniques à utiliser pour détecter un défacement.

Tous égaux devant cette menace ?

La bonne réponse me paraît être oui et non. Oui car il paraît évident aujourd’hui quand on voit les sites infiltrés que les attaquants sont prêts à profiter de toutes failles de sécurité facilement détectables pour relayer leur propos.

Non car il existe de grandes différences entre un site dit statique et un site dynamique comme peuvent l’être ceux faits avec Wordpress, Magento, Joomla, Drupal, Prestashop pour ne citer que les plus utilisés dans notre beau pays.

La surface d’attaque est bien plus forte dans le second cas puisque du code est exécuté côté serveur.

Dans les deux cas, la règle de base est d’avoir un serveur web à jour, quelque soit celui utilisé. Pour les sites dynamiques, cela comprend aussi bien sûr la mise à jour du Système de Gestion de Contenu.

Sites statiques

La règle de base pour protéger un site statique est simple. Autoriser les répertoires utilisés pour servir le site web uniquement en lecture.

Les commandes chown et chmod sont donc très certainement vos meilleurs alliés sur systèmes de type Unix/Linux. Ces commandes peuvent être éxécutés directement sur un shell si vous disposez d’un accès SSH à votre hébergement ou plus fréquemment depuis n’importe quel logiciel d’accès FTP vous permettant de vous connecter à votre espace web.

De nombreux outils existent dans le monde Open Source pour ensuite vérifier que ces permissions ne bougent pas dans le temps comme Monit ou OSSEC, tous deux capables de vous alerter dans le cas contraire.

Dans tous les cas, ces outils supposent de pouvoir installer un agent sur le système hôte de votre site web. Ils sont donc réservés à ceux d’entre vous qui opérent leur site web sur un VPS ou un dédié ou du ressort de votre hébergeur pour les hébergements de type mutualisés.

Sites dynamiques

Ce cas est beaucoup plus sensible pour la raison invoquée ci-dessus. L’attaquant va effectivement pouvoir profiter des failles sur le système de fichiers comme dans le cas précédent mais aussi profiter des failles de sécurité contenues dans le code applicatif de votre site web. Il peut utiliser toutes sortes de requêtes permettant d’injecter sa page de remplacement.

Vous pouvez donc vérifier strictement les permissions sur vos fichiers comme dans le cas précédent mais aussi utiliser un WAF, « Web Application Firewall ». Il en existe un particulièrement bien fait pour Nginx du nom de Naxsi.

En fonction du CMS que vous utilisez, vous trouverez aussi disponible tout une batterie de plugins permettant de renforcer la sécurité de votre site dynamique comme Anti CRSF pour Wordpress. celui-ci vérifie les permissions de votre installation Wordpress.

Quelque soit votre situation côté hébergement, il n’en reste pas moins à votre charge de détecter vous-même les problèmes quand ils surviennent.

Comment détecter un défacement ?

il existe plusieurs méthodes pour détecter rapidement un défacement de sites web et pour réagir en conséquence.

Rechercher une chaîne de caractère

Cette solution est la plus simple à comprendre et mettre en œuvre. À chaque contrôle d’un site web, vous profitez de la connexion pour vérifier dans la réponse du serveur la présence d’une chaîne de caractères qui vous semble unique ou représentative de votre contenu.

Ce type de contrôle, qui paraît basique fonctionne plutôt bien dans la majorité des cas car l’attaquant remplace en général l’intégralité de votre contneu par le sien et vous ne trouverez donc plus votre chaîne de caractères habituelle dans la réponse du serveur.

Par exemple, si je vérifie la disponibilité de la page d’acceuil de Wooster, le blog que vous êtes en train de lire, j’en profite aussi pour rechercher cette chaine de caractères « Wooster » dans la réponse du serveur.

C’est facilement faisable avec notre service de supervision Check my Website.

Précision d’une chaîne de caractères à trouver
Précision d’une chaîne de caractères à trouver

Dans les préférences en mode avancé du site web que vous souhaitez superviser, sélectionner simplement la chaîne de caractère que vous souhaitez voi apparaître dans la réponse du serveur et voilà.

Vous serez alors alertés par mail ou SMS dès que cette chaîne de caractère ne sera plus trouvé dans la réponse du serveur.

Surveiller le poids de la page

Il est question de vérifier l’évolution du poids de la page à surveiller dans le temps pour détecter une variation soudaine de ce poids.

Poids d’une page dans la console
Poids d’une page dans la console

Si je continue à prendre exemple sur Wooster, la page d’accueil à l’heure où j’écris ces lignes pèse 1,59 MB. En cas d’attaque par défacement, là encore, l’attaquant remplaçant l’intégralité du contenu par le sien, la page risque d’être beaucoup plus légère que ce poids de référence. Il ne vous reste plus qu’être alerté dans ce cas précis de brusque variation du poids de page.

Comparer des copies d’écran de la page

la dernière technique que je connaisse est certainement la plus sophistiquée d’un point de vue technique, mais est-elle la plus efficace, rien n’est moins sûr à mon avis.

Elle consiste à prendre à intervalles réguliers une copie d’écran d’un site et de comparer la dernière prise avec la précédente.

Vous pouvez utiliser ce genre de service en ligne pour ce type de contrôle ou si vous êtes plus enclin à la technique, utiliser ce plugin pour Grunt qui fait exactement ce boulot.

Alors protégé maintenant ?

Je ne prétends que cet article puisse résoudre tous les cas de figure des attaques de type défacement de sites web. Mais si vous appliquez ces quelques recommandations et que vous surveillez vos pages avec l’une des techniques évoquées, il y a de fortes chances que votre site disparaîsse des radars « sites faciles à compromettre », au moins en ce qui concerne le défacement. Et puis vous serez rapidement prévenu dans le cas contraire.

Olivier Jan

À propos de l’auteur

| Cofondateur de Check my Website

Check my Website est un service pour la supervision et la surveillance à distance de la disponibilité, de la performance et du bon fonctionnement des sites et applications web.

Suivez @olivjan sur Twitter !

Laissez un commentaire

comments powered by Disqus