Module 10 · 10.1
Français
Hardening et principes CIS
Module 10: Rester en sécurité · Temps de lecture : 11 minutes
Objectif pédagogique : À l'issue de cette leçon, vous saurez expliquer ce qu'est le hardening et quels principes le sous-tendent, vous saurez ce que sont les CIS Benchmarks et comment les utiliser judicieusement, et vous pourrez passer votre serveur en revue de façon méthodique avec Lynis.
Notions clés : hardening, surface d'attaque, installation minimale, moindre privilège (least privilege), défense en profondeur (defense in depth), CIS Benchmarks, Level 1 et Level 2, CIS Controls, Lynis, hardening index, AppArmor, SELinux, sysctl, synchronisation de l'heure
Qu'est-ce que le hardening ?
Une installation toute neuve de Debian ou d'Ubuntu est raisonnablement sûre, mais elle est conçue pour fonctionner dans le plus grand nombre de situations possible. Le hardening (durcissement) consiste à adapter votre serveur précisément à votre usage : supprimer tout ce dont vous n'avez pas besoin, rendre plus strict tout ce qui peut l'être, sans casser vos propres services.
Dans les modules précédents, vous l'avez déjà fait pas à pas : SSH avec des clés (module 2), un utilisateur ordinaire avec sudo (module 3), les mises à jour automatiques (module 4), un pare-feu et fail2ban (module 5), des services sous leurs propres utilisateurs (module 6). Cette leçon place ces mesures isolées dans un cadre, afin que vous voyiez ce qui manque encore.
Quatre principes
1. Une surface d'attaque réduite. Ce qui n'existe pas ne peut pas être cassé. Chaque service installé, chaque port ouvert, chaque compte est une porte d'entrée possible (leçon 5.1). Installez le strict minimum et faites le ménage dans ce que vous n'utilisez plus :
anna@web1:~$ systemctl list-units --type=service --state=running
anna@web1:~$ sudo ss -tulpn
anna@web1:~$ apt list --installed | wc -lSi un service que vous ne connaissez pas est en cours d'exécution, découvrez ce qu'il fait (leçon 6.1). Si vous n'en avez pas besoin, supprimez le paquet.
2. Le moindre privilège. Chaque utilisateur et chaque programme reçoit uniquement les droits nécessaires (leçon 3.2). Pas de travail quotidien en root, des services sous leurs propres utilisateurs, des utilisateurs de base de données qui n'ont de droits que sur leur propre base, pas de chmod 777.
3. La défense en profondeur. Partez du principe qu'une mesure finira par échouer. Une base de données qui n'écoute que sur 127.0.0.1 et se trouve derrière un pare-feu et possède un mot de passe robuste reste sûre même si l'une de ces trois protections tombe par accident. C'est ce qu'on appelle la defense in depth.
4. Savoir ce qui se passe. Le hardening ne consiste pas seulement à fermer, mais aussi à voir : des journaux conservés (leçon 6.2), une surveillance qui alerte (leçon 8.3) et des sauvegardes qui permettent de revenir en arrière (module 8). Sans cela, vous ne remarquez une intrusion que lorsqu'il est trop tard.
Les CIS Benchmarks
Le Center for Internet Security (CIS) est une organisation américaine à but non lucratif qui publie les CIS Benchmarks : des listes détaillées de paramètres recommandés pour chaque produit, rédigées par des bénévoles du monde de la sécurité. Il en existe plus d'une centaine, notamment pour Debian Linux et Ubuntu Linux, version par version. Vous pouvez télécharger gratuitement les PDF pour un usage non commercial, après avoir créé un compte.
Un benchmark pour Linux contient des centaines de recommandations, chacune avec une explication, une méthode de vérification et une méthode de mise en place. Elles sont réparties en profils :
- Level 1 : des mesures de base que vous pouvez mettre en place assez rapidement, avec un bénéfice de sécurité évident, sans que le serveur devienne beaucoup moins utilisable. C'est l'objectif pour la plupart des serveurs.
- Level 2 : des mesures supplémentaires pour les environnements où la sécurité passe avant tout (défense en profondeur). Elles peuvent coûter des fonctionnalités ou des performances et, selon le CIS lui-même, causer des dégâts si vous les appliquez sans précaution.
Pour Linux, il existe des profils distincts pour les serveurs et pour les postes de travail.
Exemples de sujets traités dans un benchmark Linux : des partitions séparées pour /tmp et /var/log, la désactivation des systèmes de fichiers et protocoles réseau inutilisés, la synchronisation de l'heure, la journalisation d'audit, les paramètres SSH (vous en connaissez beaucoup depuis la leçon 2.2), la politique de mots de passe, les droits sur les fichiers importants et le pare-feu.
À côté des Benchmarks, il existe les CIS Controls (actuellement en version 8.1) : il ne s'agit pas de paramètres par produit, mais d'une liste de dix-huit groupes de mesures pour toute une organisation, comme « inventaire des logiciels », « gestion des vulnérabilités » et « récupération des données ». Pour un seul serveur, les Benchmarks sont plus utiles ; les Controls vous aident lorsque vous réfléchissez à votre entreprise dans son ensemble.
Utiliser un benchmark judicieusement
Un benchmark n'est pas un bouton sur lequel on appuie. Quelques règles :
- Comprendre d'abord, appliquer ensuite. Chaque recommandation est accompagnée d'une explication. Si vous ne comprenez pas pourquoi, ne l'appliquez pas encore.
- Une chose à la fois, et tester. Un paramètre strict pour le noyau ou le réseau peut casser votre application. Créez un snapshot, modifiez une seule chose, vérifiez que tout fonctionne encore.
- Tout ne vous concerne pas. Une recommandation pour une partition
/var/logséparée est compliquée sur un VPS existant et apporte peu. Choisissez en connaissance de cause et notez pourquoi vous ne faites pas quelque chose. - Méfiez-vous des scripts de hardening tout faits trouvés sur internet qui appliquent « tout le CIS » d'un seul coup. Ils peuvent modifier SSH, votre pare-feu ou vos journaux au point de vous enfermer dehors, et vous ne savez plus ensuite ce qui a été changé.
Lynis : un audit de l'intérieur
Lynis est un programme gratuit et open source (GPL) de CISOfy qui parcourt votre serveur de l'intérieur et donne, par sujet, des avertissements et des suggestions. Il ne modifie rien lui-même ; il se contente de produire un rapport.
anna@web1:~$ sudo apt install lynis
anna@web1:~$ sudo lynis audit system
...
-[ Lynis 3.x Results ]-
Warnings (1):
----------------------------
! Found one or more vulnerable packages. [PKGS-7392]
Suggestions (34):
----------------------------
* Consider hardening SSH configuration [SSH-7408]
- Details : AllowTcpForwarding (set YES to NO)
...
Lynis security scan details:
Hardening index : 66 [############# ]
Tests performed : 262Comment le lire :
- Les Warnings sont des points que vous devez vraiment examiner, comme des paquets présentant des failles connues (vous avez alors des mises à jour en attente, leçon 4.1).
- Les Suggestions sont des conseils. Beaucoup sont utiles, certaines ne conviennent pas à votre serveur. Une suggestion de désactiver
AllowTcpForwardingcasse par exemple vos tunnels SSH (leçon 2.3). Choisissez en connaissance de cause. - Chaque message comporte un code entre crochets, comme
[SSH-7408]. Il vous permet de retrouver dans le journal/var/log/lynis.logce qui a été testé précisément. - Le hardening index est un nombre qui va jusqu'à 100. C'est un indicateur de direction, pas une note à poursuivre. Une hausse après vos modifications montre que vous progressez ; 100 n'est pas un objectif.
La version de Lynis présente dans les dépôts de votre distribution peut avoir un peu de retard. Pour un premier audit, ce n'est pas un problème.
Trois autres sujets en bref
- AppArmor et SELinux sont des couches de sécurité supplémentaires dans le noyau qui définissent, programme par programme, ce que chacun a le droit de faire. Debian et Ubuntu utilisent AppArmor, activé par défaut ; AlmaLinux et Rocky utilisent SELinux. Ne les désactivez pas « parce que quelque chose ne marche pas » : cherchez le message dans le journal et résolvez le problème de façon ciblée.
- sysctl définit des paramètres du noyau, par exemple pour le réseau. Les valeurs par défaut de Debian et d'Ubuntu sont raisonnables. Si vous voulez modifier quelque chose, placez-le dans votre propre fichier dans
/etc/sysctl.d/(Debian 13 ne lit plus/etc/sysctl.conf). - L'heure : un serveur à l'heure incorrecte rend les journaux inexploitables et peut considérer des certificats comme invalides. Vérifiez avec
timedatectlque la ligne « System clock synchronized: yes » apparaît.
En pratique
Chez WebOké, comme chez les autres fournisseurs de VPS, vous gérez vous-même la sécurité à l'intérieur de votre serveur : le fournisseur s'occupe du matériel, du réseau et de la plateforme de virtualisation. Cette formation est une aide en autonomie : personne ne surveille votre serveur à votre place. Avant une série de mesures de hardening, créez un snapshot dans le panneau et sachez comment ouvrir la console si vous vous enfermez malgré tout dehors.
Résumé
- Le hardening consiste à adapter votre serveur à votre propre usage : supprimer ce qui est inutile, rendre plus strict ce qui peut l'être.
- Quatre principes : une surface d'attaque réduite, le moindre privilège, la défense en profondeur et la visibilité sur ce qui se passe.
- Les CIS Benchmarks proposent, par produit, des centaines de recommandations réparties en profils Level 1 (base) et Level 2 (strict) ; utilisez-les en les comprenant, une étape à la fois.
- Lynis passe votre serveur en revue de l'intérieur et fournit des avertissements, des suggestions et un hardening index ; il ne modifie rien lui-même.
- Ne désactivez pas AppArmor/SELinux ; placez vos propres paramètres du noyau dans
/etc/sysctl.d/; vérifiez la synchronisation de l'heure.
Quiz
Exercice
Exercice O10.1: Un audit avec Lynis. Créez un snapshot, installez Lynis sur votre serveur et lancez sudo lynis audit system. Notez le hardening index, tous les avertissements et cinq suggestions. Choisissez trois suggestions que vous appliquez et une que vous n'appliquez sciemment pas, avec la raison. Relancez ensuite l'audit et notez le nouvel index.
Exercice O10.1: Un audit avec Lynis
Cet exercice, vous le faites vous-même ; personne ne le vérifie. Cochez ce que vous avez fait et marquez l'exercice comme terminé.
D'abord les avertissements (le plus souvent des mises à jour en attente). Utile : des réglages SSH plus stricts, les mises à jour automatiques, la suppression des services inutilisés. Une bonne raison d'ignorer une suggestion : AllowTcpForwarding si vous utilisez des tunnels. L'index est un indicateur, pas un objectif.
Vos cases cochées et vos notes restent uniquement dans ce navigateur ; nous ne les envoyons nulle part. Si vous êtes connecté, nous enregistrons dans Mes formations uniquement le fait que vous avez terminé l'exercice.
Pour aller plus loin
- Sécuriser votre VPS : les cinq premières minutes
- CIS Benchmarks (vue d'ensemble, y compris Debian et Ubuntu) : https://www.cisecurity.org/cis-benchmarks
- CIS Controls : https://www.cisecurity.org/controls
- Lynis, documentation : https://cisofy.com/documentation/lynis/
- Le NCSC néerlandais, Beginnen met cybersecurity (source néerlandaise, en néerlandais) : https://www.ncsc.nl/beginnen-met-cybersecurity
