Sensibilisation et durcissement
Introduction
Dans les chapitres précédents, nous avons installé et configuré simplement notre serveur web, tout en mettant en place des sécurités de base, comme l’accès SSH par clé et l’usage de certificats TLS. C’est un bon début, mais, dans la pratique, cela reste loin d’être suffisant pour assurer une protection convenable.
Votre serveur web est une machine qui dispose d’un système d’exploitation, de logiciels, de services et de mécanismes de protection qui lui sont propres. Chacun de ces éléments, s’il n’est pas mis à jour ou s’il est mal configuré, peut présenter une faille de sécurité. Si un moyen d’exploiter cette faille existe, qu’il soit technique ou non, le serveur peut être mis en danger. Connecté à Internet, ce dernier constitue une cible potentielle pour les pirates du monde entier.
Considérez les composants de votre serveur comme les maillons d’une chaîne : si un seul maillon cède à la suite de l’exploitation d’une faille, toute la chaîne, et donc le serveur, peut être compromise.
Notez bien les points suivants :
-
Ce n’est pas parce qu’une faille connue ne dispose d’aucun exploit public connu qu’il n’en existe pas, notamment sous la forme d’une vulnérabilité...
Les raisons de ne pas négliger la sécurité de votre système
1. DICT
L’acronyme DICT, qui signifie disponibilité, intégrité, confidentialité et traçabilité, désigne les quatre critères à prendre en compte pour protéger votre système. Ces critères représentent, en quelque sorte, les principaux enjeux de sa sécurité. Chaque point faible du serveur, qu’il soit connu ou non, a un impact plus ou moins direct sur un ou plusieurs de ces critères :
-
Disponibilité : le fait que le serveur et ses services soient opérationnels. Exemples : vous souhaitez que vos sites web restent accessibles et pouvoir administrer votre serveur à tout moment.
-
Intégrité : le fait que les données présentes sur le serveur ne soient pas altérées par des personnes non autorisées. Exemple : vous souhaitez que le code source de votre site vitrine reste inchangé, sauf lorsque vous le modifiez vous-même.
-
Confidentialité : le fait que certaines données présentes sur le serveur ne soient pas accessibles à des personnes non autorisées. Exemple : vous ne souhaitez pas divulguer votre base de données contenant notamment la liste de vos clients et leurs coordonnées, et ces derniers ne le souhaiteraient certainement pas non plus.
-
Traçabilité...
Dans la pratique
Ce que nous verrons
Nous allons présenter plusieurs techniques de durcissement destinées à améliorer la sécurité de votre serveur web.
De façon générale, retenez que, lorsqu’une mesure de sécurité est facile à mettre en place et n’a pas d’incidence notable sur les performances, il est préférable de l’appliquer immédiatement.
Les contrôles de sécurité, ou audits, sont généralement réalisés depuis un poste client : capture et analyse de trames avec Wireshark, analyse de ports avec Nmap ou curl, test de résistance des mots de passe avec Hydra, ou encore audit de certains services avec des outils spécialisés comme ssh-audit. Évitez donc de les effectuer depuis le serveur lui-même. À l’inverse, certains contrôles nécessitent l’installation et l’exécution d’outils directement sur le serveur, comme Debsecan.
Les techniques présentées ici ne constituent pas une finalité : il en existe bien d’autres, dont l’étude nécessiterait un ou plusieurs ouvrages supplémentaires. Si, comme nous, vous êtes curieux et décidez d’effectuer vos propres recherches, ne prenez pas systématiquement pour argent comptant les recommandations trouvées en ligne. Certains sites proposent encore des procédures reposant sur des composants obsolètes ou sur des outils incompatibles avec le système et les logiciels en place, voire qui ne sont plus maintenus. Évitez autant que possible d’installer de tels outils, car ils augmentent inutilement la surface d’attaque de votre serveur. Un guide de durcissement fiable doit préciser les versions concernées. Vous rencontrerez parfois aussi des conseils préconisant des configurations dangereuses pour le serveur. Il est utile d’expérimenter, mais effectuez d’abord vos essais sur une machine dédiée à cet usage. Si tout fonctionne correctement, vous pourrez ensuite appliquer la configuration au serveur.
Limites de l’ouvrage
Les sites web développés sur mesure que vous mettez en place sur votre serveur doivent être correctement codés et respecter les bonnes pratiques...