Chapitre 915 minIntermédiaire
Vulnérabilités et conformité CIS : Vulnerability Detection et SCA
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- expliquer comment Wazuh rapproche l'inventaire logiciel des CVE ;
- prioriser une vulnérabilité au-delà de son score CVSS ;
- lire un contrôle SCA et calculer le score d'une politique ;
- écrire une politique SCA simple pour un serveur Linux.
3 exercices corrigés
La détection des vulnérabilités de Wazuh compare la liste des logiciels installés sur chaque machine, relevée par l'agent, aux failles connues et publiées (les CVE), pour dire quelles machines sont vulnérables à quoi. L'évaluation de la configuration de sécurité (SCA, Security Configuration Assessment) vérifie, elle, que la configuration des machines respecte des règles de durcissement, le plus souvent celles des CIS Benchmarks. Ce chapitre explique les deux modules, la façon de prioriser ce qu'ils trouvent, et l'écriture d'une politique SCA maison.
Comment Wazuh trouve les vulnérabilités
Le mécanisme tient en trois étapes :
- L'inventaire. Le module
syscollectorde l'agent relève, toutes les heures par défaut, le système d'exploitation et sa version, les paquets et logiciels installés avec leur version, les correctifs Windows, les ports ouverts et les processus. Il l'envoie au serveur. Tu le consultes dans Security operations > IT Hygiene. - La comparaison. Le module de détection des vulnérabilités du serveur compare cet inventaire à la base de failles de Wazuh, un flux de renseignement sur les menaces (CTI, publié par l'éditeur sur
cti.wazuh.com) qui agrège les sources publiques : la base américaine NVD, les avis des éditeurs de systèmes (Microsoft, Debian, Ubuntu, Red Hat…). La base est mise à jour toutes les heures par défaut. - Le résultat. Chaque couple « machine, faille » devient une entrée de l'inventaire des vulnérabilités, et une alerte dont le niveau dépend de la sévérité : 23503 (faible, niveau 5), 23504 (moyenne, niveau 7), 23505 (haute, niveau 10), 23506 (critique, niveau 13). Quand une mise à jour corrige la faille, la règle 23502 signale qu'elle est résolue.
Le module est actif par défaut, avec ce bloc dans l'ossec.conf du serveur :
<vulnerability-detection>
<enabled>yes</enabled>
<index-status>yes</index-status>
<feed-update-interval>60m</feed-update-interval>
</vulnerability-detection>
Les résultats sont dans Threat intelligence > Vulnerability Detection : un tableau de bord (vulnérabilités par sévérité, par machine, par paquet), l'inventaire détaillé et les événements de détection et de résolution.
Une vulnérabilité y est décrite par :
| Information | Exemple | Sens |
|---|---|---|
| Identifiant CVE | CVE-2021-44228 | L'identifiant unique de la faille dans le catalogue public |
| Paquet et version | log4j 2.14.1 | Le logiciel installé qui est vulnérable |
| Sévérité et score CVSS | Critique, 10.0 | La gravité intrinsèque de la faille, de 0 à 10 |
| Machine | srv-gestion | L'agent sur lequel le paquet est installé |
| Correction | Version 2.17.1 ou plus | Ce qu'il faut installer pour corriger |
| Score CVSS (v3) | Sévérité |
|---|---|
| 9,0 à 10,0 | Critique |
| 7,0 à 8,9 | Haute |
| 4,0 à 6,9 | Moyenne |
| 0,1 à 3,9 | Faible |
Prioriser une vulnérabilité
Le premier inventaire d'un parc donne souvent des centaines de vulnérabilités. Tout corriger en même temps est impossible ; tout traiter dans l'ordre du score CVSS est une erreur, parce que le score mesure la gravité de la faille dans l'absolu, pas le risque chez toi. On priorise avec quatre questions :
- La machine est-elle exposée ? Une faille critique sur
srv-web, joignable depuis Internet, passe avant la même faille sur un poste du VLAN 10. - La faille est-elle exploitée ? Le catalogue Known Exploited Vulnerabilities (KEV) de l'agence américaine CISA recense les failles exploitées dans des attaques réelles ; en France, le CERT-FR publie des alertes pour les failles exploitées ou sur le point de l'être, et des avis pour les autres. Une faille exploitée se traite en urgence, quel que soit son score.
- La machine est-elle critique ? Un contrôleur de domaine ou le serveur de la paie comptent plus qu'une machine de test.
- Le logiciel vulnérable est-il réellement utilisé ? Un composant installé mais inactif reste à corriger, mais moins vite ; s'il ne sert à rien, le désinstaller supprime la faille.
| Situation | Priorité |
|---|---|
| Faille exploitée (catalogue KEV, alerte du CERT-FR) sur une machine exposée à Internet | Immédiate : corriger ou isoler dans la journée |
| Faille critique ou haute sur un serveur interne critique | Haute : dans la semaine |
| Faille haute ou moyenne sur les postes | Cycle normal de mises à jour mensuelles |
| Faille faible, ou logiciel inutilisé | À planifier, ou désinstaller |
Corriger, puis vérifier. On applique la mise à jour (Windows Update ou le serveur de mises à jour pour Windows, voir le cours Windows Server ; apt pour Debian), puis on attend le prochain inventaire de l'agent (une heure par défaut) : la vulnérabilité passe en résolue et disparaît de l'inventaire actif. C'est la preuve que la correction a pris, à joindre au ticket.
L'évaluation de configuration (SCA)
Une machine à jour peut rester vulnérable par sa configuration : un compte invité actif, des mots de passe trop courts, une connexion SSH de root autorisée, un pare-feu local désactivé. Le module SCA de l'agent vérifie la configuration selon des politiques écrites en YAML. Wazuh en fournit une par système, presque toutes tirées des CIS Benchmarks, les guides de durcissement publiés par le Center for Internet Security :
| Système | Politique fournie |
|---|---|
| Windows Server 2025 | cis_win2025 |
| Windows Server 2022 | cis_win2022 |
| Windows 11 Enterprise | cis_win11_enterprise |
| Debian 13 | cis_debian13 |
| Debian 12 | cis_debian12 |
| Ubuntu 24.04 LTS | cis_ubuntu24-04 |
L'agent choisit seul la politique qui correspond à son système et l'exécute au démarrage puis toutes les 12 heures. Chaque contrôle (check) donne l'un de trois résultats :
| Résultat | Sens |
|---|---|
| Passed | La configuration est conforme |
| Failed | Elle ne l'est pas |
| Not applicable | Le contrôle n'a pas pu s'appliquer (une erreur pendant la vérification, un composant absent) |
Le score d'une politique est la part de contrôles réussis parmi ceux qui ont pu s'appliquer : score = réussis ÷ (réussis + échoués). Les contrôles non applicables ne comptent pas. Les résultats sont dans Endpoint security > Configuration Assessment, par agent et par politique, avec pour chaque contrôle sa justification et la façon de corriger.
Un contrôle typique de la politique Windows Server, présenté ainsi dans le tableau de bord :
| Champ | Contenu |
|---|---|
| Titre | Ensure 'Minimum password length' is set to '14 or more character(s)' |
| Justification (rationale) | Des mots de passe courts se devinent ou se cassent plus vite |
| Correction (remediation) | Régler la valeur dans la GPO Default Domain Policy (la stratégie de mots de passe des comptes du domaine ne s'applique que là) : Configuration ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Stratégies de comptes > Stratégie de mots de passe |
Résultat sur srv-fichiers | Failed |
Wazuh alerte aussi sur les changements de résultat : un contrôle qui passe de réussi à échoué déclenche la règle 19011, de niveau 9. C'est une détection précieuse : quelqu'un vient d'affaiblir la configuration d'une machine, par erreur ou pour préparer la suite d'une attaque.
Écrire une politique SCA maison
La politique de sécurité de Sorbier impose deux règles sur les serveurs Linux : pas de connexion SSH directe de root, pas d'authentification SSH par mot de passe (clés uniquement). Une politique SCA de quelques lignes vérifie que c'est vrai partout, en permanence.
Sur le serveur Wazuh, crée /var/ossec/etc/shared/linux/sorbier_ssh.yml : les fichiers du dossier d'un groupe sont envoyés à tous les agents du groupe, comme agent.conf.
policy:
id: "sorbier_ssh"
file: "sorbier_ssh.yml"
name: "Sorbier : configuration SSH des serveurs Linux"
description: "Vérifie les règles SSH imposées par la politique de sécurité de Sorbier Logistique."
requirements:
title: "Le serveur OpenSSH est installé"
description: "La politique ne s'applique qu'aux machines qui ont un fichier sshd_config."
condition: any
rules:
- 'f:/etc/ssh/sshd_config'
checks:
- id: 100001
title: "SSH : la connexion directe de root est interdite"
description: "Le compte root ne doit pas pouvoir ouvrir de session SSH."
rationale: "Une connexion nominative suivie de sudo laisse une trace de la personne qui administre."
remediation: "Ajouter la ligne 'PermitRootLogin no' dans /etc/ssh/sshd_config, puis recharger le service ssh."
condition: all
rules:
- 'f:/etc/ssh/sshd_config -> r:^\s*PermitRootLogin\s+no'
- id: 100002
title: "SSH : l'authentification par mot de passe est désactivée"
description: "Seules les clés SSH doivent permettre de se connecter."
rationale: "Un mot de passe se devine par force brute ; une clé privée, non."
remediation: "Ajouter la ligne 'PasswordAuthentication no' dans /etc/ssh/sshd_config, puis recharger le service ssh."
condition: all
rules:
- 'f:/etc/ssh/sshd_config -> r:^\s*PasswordAuthentication\s+no'
| Élément | Sens |
|---|---|
requirements | Condition préalable : si elle n'est pas remplie, la politique ne s'applique pas à la machine |
condition: all | Toutes les règles du contrôle doivent être vraies (any : au moins une ; none : aucune) |
f:/chemin | Le fichier existe |
f:/chemin -> r:regex | Une ligne du fichier correspond à l'expression ; les espaces autour de -> sont obligatoires |
Active-la dans l'agent.conf du groupe linux ; le chemin relatif part du dossier d'installation de l'agent, et etc/shared est le dossier où il reçoit les fichiers du groupe :
<agent_config>
<sca>
<policies>
<policy>etc/shared/sorbier_ssh.yml</policy>
</policies>
</sca>
</agent_config>
Au prochain passage (ou au redémarrage de l'agent), la politique « Sorbier : configuration SSH des serveurs Linux » apparaît dans Configuration Assessment pour srv-web, avec son score.
Exercices
Exercice 1 sur 3 Prioriser Réussi À revoir
L'inventaire des vulnérabilités de Sorbier, un lundi matin, contient notamment les lignes suivantes. Classe-les par ordre de traitement et justifie.
| Machine | Paquet | Sévérité (CVSS) | Information complémentaire |
|---|---|---|---|
| Poste PC-COMM-04 | Lecteur PDF | Haute (7,8) | Exploitation par un fichier piégé ouvert par l'utilisateur |
srv-web | Apache | Haute (7,5) | Faille inscrite au catalogue KEV de la CISA ; alerte du CERT-FR publiée vendredi |
srv-ad | Composant Windows | Critique (9,8) | Correctif publié mardi dernier ; pas d'exploitation connue |
srv-gestion | Bibliothèque de journalisation | Moyenne (5,3) | Composant d'un module de rapports désactivé depuis 2024 |
Voir la réponseMasquer la réponse de l'exercice 1
srv-web, Apache : la sévérité n'est « que » haute, mais la faille est exploitée (KEV, alerte du CERT-FR) et le serveur est exposé à Internet. On corrige le jour même ; si la mise à jour n'est pas disponible, on applique la mesure de contournement de l'alerte, ou on isole le service.srv-ad, composant Windows : critique, sur la machine la plus sensible du domaine, correctif disponible. Pas d'exploitation connue, donc pas dans l'heure, mais dans la semaine, après un test sursrv-ad2ou en dehors des heures de travail.- Poste PC-COMM-04, lecteur PDF : haute, mais exploitable seulement si l'utilisateur ouvre un fichier piégé ; elle entre dans le cycle normal de mise à jour des postes, à accélérer si une campagne d'hameçonnage est signalée.
srv-gestion, bibliothèque inutilisée : moyenne, composant désactivé. On planifie sa désinstallation : un composant inutile, c'est une faille potentielle sans aucun bénéfice.
Tu avais trouvé ?
Exercice 2 sur 3 Calculer un score SCA Réussi À revoir
Sur srv-fichiers, la politique cis_win2025 donne 212 contrôles réussis, 158 échoués et 33 non applicables. Calcule le score. Après une GPO de durcissement, 41 contrôles échoués passent en réussis et 2 réussis deviennent échoués. Quel est le nouveau score, et quelle alerte les 2 contrôles dégradés ont-ils produite ?
Voir la réponseMasquer la réponse de l'exercice 2
Score initial : 212 ÷ (212 + 158) = 212 ÷ 370 ≈ 57,3 % (les 33 non applicables ne comptent pas).
Après la GPO : réussis 212 + 41 − 2 = 251 ; échoués 158 − 41 + 2 = 119 ; total toujours 370. Score : 251 ÷ 370 ≈ 67,8 %.
Les 2 contrôles passés de réussi à échoué ont chacun déclenché la règle 19011 « Status changed from passed to failed », de niveau 9. Il faut les examiner : la nouvelle GPO a peut-être écrasé un réglage plus strict qu'appliquait une autre GPO.
Tu avais trouvé ?
Exercice 3 sur 3 Un contrôle SCA de plus Réussi À revoir
Ajoute à la politique sorbier_ssh un contrôle 100003 qui vérifie que le fichier /etc/ssh/sshd_config limite les tentatives d'authentification par connexion à 3 ou moins (MaxAuthTries).
Voir la réponseMasquer la réponse de l'exercice 3
- id: 100003
title: "SSH : trois tentatives d'authentification au plus par connexion"
description: "Le serveur SSH coupe la connexion après trois échecs."
rationale: "Limiter les essais par connexion ralentit une attaque par force brute et la rend plus visible."
remediation: "Ajouter la ligne 'MaxAuthTries 3' dans /etc/ssh/sshd_config, puis recharger le service ssh."
condition: all
rules:
- 'f:/etc/ssh/sshd_config -> n:^\s*MaxAuthTries\s+(\d+) compare <= 3'
Le préfixe n: capture un nombre avec (\d+) et le compare : compare <= 3 réussit pour 1, 2 ou 3 et échoue pour MaxAuthTries 30, ce qu'une simple expression régulière (r:) ferait mal. C'est la syntaxe des politiques CIS fournies par Wazuh, qui l'appliquent à la sortie de sshd -T. Par défaut, OpenSSH autorise 6 tentatives par connexion. Dans un sujet, on peut aussi te demander l'inverse : lire un contrôle SCA échoué et dire quelle ligne de configuration corriger.
Tu avais trouvé ?