Copyright © 2010 Sander Temme
Copyright © 2011 Franck Chevallier
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
SSL
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.
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).
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.
À 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.
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.
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.
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.
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.
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.
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
.
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.
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.
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.