Skip to content

Qu’est ce que le durcissement ?

Dans cet article, nous allons nous intéresser à la notion d’hardening, ou « system hardening » qui est une des bases de la sécurité informatique.

Hardening, ou « durcissement »

« Hardening » est un terme anglais signifiant « durcissement« . Appliqué à la sécurité d’un système d’information, il s’agit donc d’améliorer la sécurité d’un système, d’un réseau ou d’une application via le durcissement de sa configuration ou de sa structure.

Initialement, hardening est un terme emprunté à la métallurgie, il signifiait alors rendre le matériau physiquement plus résistant via différents procédés.
Plus précisément, le durcissement d’un système informatique consiste à le rendre plus résistant et mieux protégé face à des attaques ou des mauvaises utilisations. Cela peut s’effectuer à plusieurs niveaux sur un système, et cela est même nécessaire. Ainsi, le durcissement d’un système complet va passer par :

  • Le durcissement de la couche réseau
  • Le durcissement du système d’exploitation
  • Le durcissement des applications installées
  • Le durcissement des accès physiques
  • etc.

Le durcissement est donc plus globalement le fait de réduire la surface d’attaque d’un système et de rendre plus résistants les points d’entrée nécessaires à sa bonne utilisation. Je vous ai déjà parlé de la surface d’attaque sur information-security dans cet article : Analyse et réduction de la surface d’attaque

La notion de surface d’attaque est ici très intéressante, car elle expose bien l’intérêt de l’hardening. L’hardening ayant pour objectif principal de minimiser les risques en termes de sécurité suite à l’installation d’un système ou d’une application.

Une nécessité pour la sécurité

Le fait est que, dans sa configuration par défaut, un système va proposer un ensemble de fonctionnalités qui le rendent facile à utiliser et rapide à mettre en place. Bien souvent, les configurations par défaut des systèmes et applications embarquent des faiblesses qu’il est possible de corriger en modifiant leur fonctionnement ou leur configuration. On parle alors de durcissement.

La surface d’attaque « par défaut » d’une application ou d’un système peut en effet embarquer des fonctionnalités non utilisées qu’il faut alors désactiver.

Un exemple concret pourrait être la configuration par défaut d’un serveur Apache qui affiche, en cas de message d’erreur, le numéro de sa version. Également, une politique de mot de passe trop faible sur certains systèmes, un durcissement va alors consister à durcir cette politique de mot de passe afin de les rendre plus robustes.

Autre exemple, la configuration par défaut d’une authentification .htaccess va faire passer les identifiants des utilisateurs en base64, ils transiteront alors en clair sur le réseau. Un hardening de cette configuration va consister en le fait de hasher ces informations avant de les faire transiter sur le réseau. Vous trouverez plus d’informations sur ce dernier point à cette adresse : Sécuriser les authentifications Htaccess avec l’option Digest

Pour un système Linux, de nombreuses techniques d’hardening existent. On peut par exemple citer l’umask sur un système Linux, qui par défaut permet aux fichiers créés même par « root » d’être visibles de tous (rxwr–r–). L’hardening de ce point de sécurité va donc être le durcissement de la règle d’umask : Gestion de l’umask sous Linux

De par ces exemples simples, nous pouvons alors comprendre l’intérêt du hardening. Le fait est que certains systèmes embarquent par défaut des faiblesses qui ne peuvent être décrites comme des vulnérabilités, mais qui exposent tout de même à un danger. L’hardening peut alors se concentrer sur un système dans son ensemble avec toutes les applications qu’il possède, ou alors sur une application en particulier.

Le concept même du durcissement revient donc à utiliser des fonctionnalités de sécurité qui sont disponibles mais non appliquées par défaut dans le but d’améliorer la sécurité des systèmes. Cela nécessitant bien sûr une configuration supplémentaire. Il s’agit là de ne pas laisser un système dans sa configuration par défaut en jugeant que cela est suffisant. Les configurations par défaut des applications et systèmes d’exploitation sont aujourd’hui conçues dans un souci fonctionnel et non dans un souci de sécurité. Ce qui aboutit au fait que dans la majorité des cas, les options de sécurité que propose un système ou une application ne sont utilisées que rarement, lorsque l’administrateur a pris la peine d’hardener (de durcir) son système.

Le durcissement d’un système se fait généralement en suivant des white-papers qui référencent et expliquent les fonctionnalités de sécurité présentes dans ce système. Une fois cela fait, on peut dire que le système est « harderned » (durcit).

On pourrait comprendre que l’hardening ne se fait que par l’utilisation de quelques options mises à « on » ou « off » , mais la réalité est plus vaste que cela. On peut ainsi hardener un OS en lui apportant des couches de sécurité supplémentaires. Pour un système Linux, on pourrait par exemple utiliser SElinux, pour un système web, lui rajouter un pare-feu applicatif tel que mod_security. Les techniques et « astuces » d’hardening sont nombreuses et peuvent se positionner à différents endroits du système d’information, je pense par exemple à des pare-feu applicatifs ou des IDS.
Parmi les systèmes qu’il est le plus courant d’hardener :

  • SSH hardening : Il s’agit ici de renforcer la sécurité du protocole SSH et plus précisément du serveur OpenSSH Server. J’ai d’ailleurs dédié une partie de mon cours SSH à ce sujet : Sécurité du protocole SSH et d’OpenSSH
  • Web Server Hhrdening : Le serveur web le plus répandu aujourd’hui est Apache, il est courant de trouver sur le net des tutoriels qui référencent un ensemble d’options et de points de sécurité à ajouter à la configuration par défaut d’un serveur Apache, afin de renforcer sa sécurité
  • Database system hardening : Les systèmes de base de données sont aujourd’hui très importants et leur hardening fait l’objet de nombreuses discussions. Également, on trouvera de nombreux white paper à ce sujet, exemple avec celui-ci pour le système de gestion de base de données Oracle : Hardening the Oracle 11g Database
  • Linux hardening : Des livres entiers existent au sujet du hardening des systèmes UNIX, ces systèmes sont tellement manipulables et personnalisables qu’il est possible de les durcir à des niveaux très différents et de façon extrêmement efficace, voici une source intéressante à ce sujet : 25 Hardening Security Tips for Linux Servers

Notons que dans certains cas, comme sous Linux, des applications permettent de rendre plus simple l’application des mesures d’hardening, on pourra par exemple citer « Bastille » .

Les implications du hardening

L’hardening constitue donc un renforcement de la sécurité, mais il implique différents points qu’il est important de connaître. On ne peut procéder au hardening d’un système de la même façon que son installation, en suivant un tutoriel en copy/paste sur internet.

L’hardening implique un renforcement de la sécurité qui peut s’avérer très efficace mais qui nécessite un minimum de connaissances. Comme je l’ai dit plus haut, la plupart des systèmes et applications sont aujourd’hui diffusés avec une configuration et un fonctionnement par défaut conçu pour fonctionner rapidement et proposer un ensemble de fonctionnalités. Bien souvent l’hardening passe par la désactivation de certaines fonctionnalités ou opérations présentant des faiblesses. Les configurations et options de sécurité hardening sont très souvent désactivées par défaut et cela pour une bonne raison : leur activation ne rentre pas dans le fonctionnement de la majorité des contextes d’utilisation.

De par ce fait, la mise en place d’un hardening nécessite d’effectuer un ensemble d’études et de tests afin de voir si les configurations et procédés de sécurité que l’on s’apprête à appliquer ne bloqueront pas le fonctionnement qui est fait de l’application dans notre contexte. Je prends pour exemple le cas de la désactivation de la réponse au ping dans un système Linux. Dans certains cas, ce hardening permettra de rendre un serveur plus discret face aux scans réseau sur une plage IP, dans d’autres, cela pourra mettre à mal le fonctionnement d’un système de supervision qui se base sur la réponse au ping pour repérer le fait que le système supervisé est « en vie » ou non. À nouveau, il s’agit de savoir ce que l’on fait et de voir si la politique d’hardening présent dans un tutoriel ou un white-paper est applicable à notre contexte.

Nous avons vu dans cet article ce qu’était l’hardening et les implications qu’il avait sur un système ou une application. Je ne peux que vous conseiller de vous intéresser au durcissement de vos systèmes et applications au travers les nombreux white-papers et tutoriels que l’on peut trouver sur le net ou auprès des éditeurs.
Gardez à l’esprit que l’hardening doit devenir une habitude et que les systèmes ne sont par défaut pas configurés dans un souci de sécurité.

N’hésitez pas à partager dans les commentaires vos astuces d’hardening ou des sources intéressantes pour le durcissement des systèmes et applications.

Partager :
Published inArticles

6 Comments

    • Ogma_Sec

      Merci pour le partage de ces ressources AtomiKe. 🙂
      Je ne connaissais pas le guide du site n0where, il est vraiment pas mal !

    • Ogma_Sec

      Effectivement ils ont l’air très intéressant ! Je pense faire un petit article dessus 🙂
      Merci AtomiKe !

  1. jamal

    cool Atomike merci

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *