Dix astuces pour renforcer votre site internet

Gazette Linux n°180 — novembre 2010

Franck Chevallier

Adaptation française  

Article paru dans le n°180 de la Gazette Linux de novembre 2010.

Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

Introduction
1. Renforcez votre système d'exploitation
2. Utilisez des logiciels et des systèmes d'exploitation que vous pouvez maintenir
3. Réduisez l'environnement logiciel de votre serveur
4. Accédez à votre interface de maintenance via SSL
5. Placez les actions autorisées sur une liste blanche, les aggressives sur une liste noire
6. Utilisez un Firewall
7. Tenez vos logiciels à jour
8. Lisez attentivement vos logs
9. Empêchez l'écriture dans la racine des documents
10. Utilisez des mots de passe à usage unique
Conclusion : Utilisez « Le CLUB »
À propos de l'auteur

Introduction

Les sites internet sont constamment attaqués. Defaçage, injection de malwares et vols de données sont quelques-unes des motivations des attaquants et chaque personne administrant un site internet devrait être préparée à s'en défendre.

Les possesseurs de site internet disposent de nombreux outils pour contrer les cyber-attaquants. Des livres entiers ont été écrits sur le sujet. Voici dix astuces qui pourront rapidement améliorer la sécurité de votre site web.

1. Renforcez votre système d'exploitation

L'installation par défaut de l'OS de votre serveur, vous fournira certainement de nombreuses fonctionnalités dont vous n'aurez pas besoin. Arrêter les services inutiles à vos applications web. Évitez particulièrement de laisser tourner un « network listener » (un network listener est une tâche système qui écoute les connexions clientes entrantes sur un port donné). Désinstaller les logiciels que vous n'utilisez pas, ou mieux désélectionnez-les lors de l'installation du serveur : plus votre installation sera compacte et plus les opportunités d'attaques seront réduites. Utilisez les fonctionnalités supplémentaires de sécurité offertes par votre système d'exploitation telles que SELinux ou le securelevel de BSD. Par exemple, la configuration par défaut de SELinux sous Red Hat Entreprise offre un bon compromis en verrouillant fermement les programmes écoutant le réseau (ce qui a du sens), tout en laissant les utilitaires de maintenance s'exécuter librement sur le système (en effet verrouiller ces derniers compliquerait la configuration et la maintenance du système).

2. Utilisez des logiciels et des systèmes d'exploitation que vous pouvez maintenir

L'idée que le système d'exploitation de tel ou tel fournisseur puisse être intrinsèquement plus sûr que tous les autres est un grand mythe. Améliorer la sécurité de son système ne se résume pas à choisir un OS, puis à le laisser tel quel. Tout système d'exploitation est sujet à des vulnérabilités, qui sont corrigées et comblées au fur et à mesure. Faites tourner votre site web sur un système d'exploitation que vous et votre équipe maintiendrez et corrigerez aisément : un serveur Windows à jour et correctement maintenu sera certainement plus sécurisé qu'une installation Linux dépassée et non maintenue. Votre mission est de maintenir et défendre votre site internet, pas d'engager une guerre de religion entre systèmes d'exploitations.

3. Réduisez l'environnement logiciel de votre serveur

À la première installation, la configuration par défaut de l'environnent logiciel du serveur ressemble plus à une vitrine de fonctionnalités qu'à un environnement de déploiement d'applications web. Stoppez les modules Apache inutilisés. Réduisez le fichier de configuration de votre serveur : incluez uniquement les directives de configuration dont vous aurez effectivement besoin. Supprimez les exemples de code, les comptes par défaut et les pages de manuels : installez-les plutôt sur votre serveur de développement. Arrêtez l'affichage des erreurs sur le navigateur. Une configuration allégée du serveur est plus simple à administrer et offre moins d'opportunités d'attaques.

4. Accédez à votre interface de maintenance via SSL

De nombreux eco-systèmes de site web et des logiciels de gestion de contenu (CMS) sont administrés au travers d'une interface faisant partie intégrante du site lui-même. Envisagez plutôt d'accéder à cette partie via SSL afin de protéger vos identifiants de connexion et vos données sensibles. Un site web accessible via SSL est protégé par une clé cryptographique et un certificat qui identifie le serveur. Pas la peine de dépenser énormément pour un certificat : générez votre propre certificat et ajoutez-le au gestionnaire de certificats de votre navigateur : en tant qu'administrateur du site, vous seul avez besoin d'avoir confiance en ce certificat. Les CMS, tels que Wordpress, vous permettent d'activer l'accès via SSL à l'interface de gestion, en ne modifiant seulement que quelques paramètres de configuration. Utiliser SSL pour crypter ses connexions aux interfaces de gestion est une manière efficace de protéger tous vos identifiants de connexion importants.

5. Placez les actions autorisées sur une liste blanche, les aggressives sur une liste noire

En tant qu'administrateur du site, vous devriez être en mesure de savoir quelles actions HTTP les utilisateurs peuvent effectuer sur votre site. Idéalement, vous devriez considérer toutes autres actions comme hostiles et les rejeter. Malheureusement ce n'est pas toujours faisable ou politiquement réalisable : vous pouvez avoir hérité d'un environnement dans lequel toutes les URL valides et l'ensemble des actions sont simplement inconnues, et dans lequel appliquer des restrictions draconiennes pourrait nuire au fonctionnement du système. Avec le serveur web Apache, vous pouvez utiliser un firewall pour les applications web tel que ModSecurity, de Ivan Ristic, afin d'autoriser ou d'interdire des URLS ou des actions particulières. D'autres logiciels de serveur web fournissent les mêmes fonctionnalités. Si vous n'avez pas la possibilité d'établir une liste des actions autorisées, vous devriez être capable de placer les agressives sur une liste noire à mesure que vous les rencontrez.

6. Utilisez un Firewall

Une fois l'application web sous contrôle, les attaquants tenteront souvent de la faire télécharger des malwares additionnels. Un malware installé pourra se connecter et obéir à un serveur maître hébergé n'importe où dans le monde. Généralement, une application web ne devrait répondre qu'à des requêtes entrantes et ne pas pouvoir établir de connexions TCP sortantes. Cela rend la maintenance du serveur un peu plus compliquée, mais c'est un petit prix à payer pour mettre fin aux actions des attaquants.

7. Tenez vos logiciels à jour

Des vulnérabilités sont régulièrement découvertes sur chaque système d'exploitation et chaque plateforme. Heureusement, une fois découvertes, elles sont souvent réparées dans un délai relativement court. Prenez soin de garder votre système et vos logiciels à jour et d'installer tous les correctifs proposés par les fournisseurs.

8. Lisez attentivement vos logs

Votre serveur écrira dans un fichier de log chaque requête qu'il a à traiter et y notera chaque erreur rencontrée. Une tentative d'attaque sur votre serveur web laissera certainement une flopée de messages d'erreurs dans les logs du serveur, vous devriez donc surveiller régulièrement ces logs pour voir si vous avez subi des attaques. La surveillance des logs peut également permettre de déceler quelles sont les URLs et les actions à l'origine des attaques et lesquelles devraient être placées sur une liste noire.

9. Empêchez l'écriture dans la racine des documents

Votre site web peut avoir deux types de contenus : le contenu que vous y mettez, et le contenu que quelqu'un d'autre y met à votre insu. Le service qui permet d'accéder à votre application par internet est son épine dorsale : sans lui votre application ne serait pas utilisable. Cependant, c'est aussi une opportunité d'attaque. Grâce à des requêtes HTTP spécialement conçues, les attaquants sonderont les vulnérabilités de votre application et sa configuration. Ils essayeront de charger du contenu et des scripts sur votre site : s'ils parviennent à charger un script PHP sur votre serveur et à l'invoquer, ce dernier tournera avec les mêmes privilèges que le logiciel du serveur web et pourra être utilisé pour faire des ravages.

Les CMS tels que Joomla! et Wordpress permettent à leurs administrateurs, via un navigateur web, de charger et de mettre à jour des plugins, et parfois, de configurer la partie serveur. Cela rend l'utilisation de ces logiciels très simple, avec l'inconvénient toutefois que le logiciel du serveur web doit avoir les droits en écriture sur les répertoires qui contiennent l'application. Les intrus abusent largement de cette propriété. N'autorisez jamais le logiciel du serveur web à écrire, à partir des URLs du site, dans les répertoires où les contenus uploadés pourraient être invoqués et exécutés comme des scripts. À la place, uploadez votre logiciel et les plugins via SSH ou SFTP.

10. Utilisez des mots de passe à usage unique

Le détournement des identifiants de connexion est souvent une méthode d'attaque plus fructueuse que l'exploitation des vulnérabilités du logiciel. Les internautes actifs ont souvent des dizaines de logins et mots de passe pour des dizaines de sites web différents. Il est irréaliste d'espérer que les utilisateurs suivent les recommandations en matière de robustesse de mot de passe et de fréquence de renouvellement.

Cependant, s'il doit n'y avoir qu'un seul site sur lequel vous utilisez des mots de passe robustes que vous modifiez régulièrement, il faut que ce soit l'interface de gestion de votre site.

Une manière encore plus efficace de protéger vos identifiants de connexion est l'utilisation de mots de passe à usage unique (OTP). Cette méthode calcule un nouveau mot de passe chaque fois que vous vous connectez à l'interface de gestion de votre site, en se basant sur une combinaison retournée par le site et un code que vous seul connaissez. Les programmes d'OTP sont disponibles sur tous les systèmes d'exploitations, incluant les smartphones, ainsi vous pouvez emporter avec vous votre générateur d'OTP et le séparer du réseau de votre site web. Puisqu'un OTP ne peut être utilisé deux fois, cette technique protège l'interface de gestion de votre site contre les keyloggers et les sniffers de réseau : même si vos identifiants sont écoutés et capturés, les attaquants ne peuvent les réutiliser.

Conclusion : Utilisez « Le CLUB »

Le CLUB™ est un verrou que vous placez sur le volant de votre voiture lorsque vous vous garez. C'est économique et clairement visible pour quiconque envisagerait de fracturer votre voiture pour la voler. De plus, cela encourage les voleurs à épargner votre voiture et en choisir une autre qui n'a aucun système de sécurité visible. Rendre votre voiture la moins attirante possible est une technique sécuritaire des plus efficaces.

On peut faire une analogie avec le CLUB™ pour protéger votre site web : avec quelques mesures relativement simples comme celles décrites précedemment, vous pouvez contrer les scripts qui analysent automatiquement le Web à la recherche de sites vulnérables et renvoyer leurs utilisateurs se concentrer sur les très nombreux sites dénués des protections les plus basiques.

Bien entendu ces mesures de protections basiques ne vous dispensent pas totalement de rester vigilant : votre site web est probablement en ligne 24h/24 et 7J/7, et contrairement aux voleurs de voiture, les cyber-attaquants ont tout le temps qu'ils veulent pour tranquillement crocheter les serrures de votre site web jusqu'à ce qu'ils trouvent un point faible et l'exploitent. En tant qu'administrateur, vous devez boucher tous les trous, mais les méchants n'ont besoin de trouver qu'une fuite. Par conséquent, vous devez faire preuve d'une vigilance continue et les astuces décrites précédemment devraient vous donner une bonne base de départ.

À propos de l'auteur

Sander Temme est ingénieur de solutions d'entreprises pour Thales E-security, dont les clients comprennent des sociétés du Fortune 500, des sociétés de services financiers et des agences gouvernementales. Il est membre de l'Apache Software Foundation et est actif dans les projets http Infrastructure et Gump.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.