Recommandations de sécurité relatives à un système GNU/Linux

De Docaposte Cyberdéfense
Aller à : navigation, rechercher
DocapostCyberdefense.logo15.textlong.green.png
Centre Opérationnel de Sécurité et de Cyberdéfense

Recommandations de sécurité relatives à un système GNU/Linux
DRAFT

Gestion du document

Date de la première version :

27/08/2018

Date de la dernière version :

27/08/2018

Version :

1.0

Source :

ANSSI  : Agence National de la Sécurité des Systèmes d'Information
COSC  : Centre Opérationnel de Sécurité et de Cyberdéfense

Préambule

Ce document ne se veut pas une procédure générique de sécurisation d’un système GNU/Linux, les bonnes pratiques à appliquer dépendant de la fonction de la machine à sécuriser (serveur, poste client, passerelle, etc.). Les éléments qui suivent ne sauraient donc aucunement avoir un caractère exhaustif. Il s’agit simplement d’énoncer les principaux axes de durcissement à explorer. Ces derniers viennent en complément de principes de base applicables à tout système d’eploitation comme par exemple l’application régulière des correctifs. Il convient bien entendu d’étudier l’applicabilité de chaque recommandation au cas d’espèce considéré. Il est par ailleurs fortement conseillé d’avoir recours aux compétences d’un expert du système GNU/Linux pour la mise en oeuvre de ces bonnes pratiques.

Principe de base : Réduction de la surface d’attaque !

En premier lieu, « minimisation » est un leitmotiv qui doit guider la configuration sécurisée d’un système GNU/Linux quel que soit son usage : il faut supprimer tous les éléments logiciels superflus pour réduire la surface d’attaque (tout ce qui est inutile aux utilisateurs légitimes ne servira qu’à l’attaquant). Le principe de minimisation de la surface d’attaque s’applique non seulement à la couche utilisateur («userland»), mais aussi au noyau.

Au niveau userland :

Cela passe notamment par l’élimination des services inutiles en écoute sur le réseau 1, en priorité, ainsi que des services qui s’exécutent sous le compte root et qui ne sont pas nécessaires au fonctionnement du système (exemples : pulseaudio ou dbus). Dans le cas d’un serveur, cela passe notamment par l’élimination du serveur X, qui constitue un service particulièrement complexe et privilégié. On notera bien que le terme "élimination" pris dans ce contexte ne signifie pas nécessairement la désinstallation des programmes associés, qui peut s’avérer impossible du fait de dépendances entre paquetages. Dans un tel cas de figure, il peut s’avérer nécessaire de conserver le démon installé sur le système, mais en faisant en sorte qu’il ne soit pas lancé automatiquement. De manière complémentaire, on pourra chercher à désinstaller tous les programmes qui ne sont pas utiles dans le contexte d’utilisation légitime du système, et dont l’installation n’est pas strictement nécessaire au titre des dépendances entre paquetages. De tels programmes ne peuvent en effet servir qu’à un attaquant. A titre d’exemple, si la présence d’un compilateur ou d’un débogueur (gdb) sur le système cible n’est jamais strictement nécessaire à la mise en oeuvre d’une attaque, la disponibilité de tels outils peut souvent faciliter grandement la tâche de l’attaquant.
Lorsque la machine comporte plusieurs interfaces réseau, il est souhaitable de spécialiser celles-ci pour dissocier les différents type de flux métiers et les flux d’administration. Il convient alors d’imposer que les services soient en écoute uniquement sur les interfaces adaptées. Par exemple, dans le cas d’un serveur Web doté de deux interfaces, le serveur http ne sera en écoute que sur l’interface de production alors que le serveur ssh ne sera en écoute que sur l’interface d’administration.