Aller au contenu

Plugin OpenSCAP : audits de conformité automatisés

Mise à jour :

Logo rudder

Quand vous gérez des dizaines ou des centaines de serveurs, comment vous assurez-vous qu’ils respectent tous les règles de sécurité de votre entreprise ? Comment prouvez-vous à un auditeur que vos systèmes sont conformes aux normes PCI-DSS ou CIS ? C’est précisément ce que permet le plugin OpenSCAP de Rudder : exécuter automatiquement des audits de conformité sur tous vos nodes et centraliser les rapports dans une interface unique.

Qu’est-ce qu’OpenSCAP ?

Avant de configurer le plugin, prenons le temps de comprendre ce qu’est OpenSCAP et pourquoi c’est un outil essentiel pour la sécurité.

OpenSCAP est un écosystème d’outils open source qui permet de vérifier automatiquement si la configuration d’un serveur respecte un ensemble de règles de sécurité prédéfinies. Ces règles sont regroupées dans des profils (CIS, PCI-DSS, ANSSI…) reconnus internationalement.

Concrètement, voici ce que fait OpenSCAP :

  1. Il lit un profil de sécurité — un fichier XML contenant des centaines de règles à vérifier (permissions des fichiers, services actifs, paramètres réseau…)
  2. Il inspecte le système — il examine la configuration réelle du serveur
  3. Il compare et génère un rapport — pour chaque règle, il indique si elle est respectée (pass), non respectée (fail) ou non applicable

Le problème sans automatisation : si vous avez 50 serveurs, vous devriez vous connecter à chacun, exécuter la commande oscap, récupérer le rapport HTML, le stocker quelque part… C’est fastidieux et source d’erreurs. Le plugin OpenSCAP de Rudder automatise tout ce processus.

Guide complet OpenSCAP — pour comprendre les concepts SCAP, XCCDF, OVAL et les profils disponibles.

Ce que fait le plugin

Audit automatique

Déclenche un scan OpenSCAP à intervalle régulier (par défaut toutes les heures) sur les nodes ciblés.

Centralisation

Les rapports HTML sont automatiquement uploadés sur le serveur Rudder et consultables depuis l’interface.

Installation automatique

La Technique installe automatiquement les outils OpenSCAP sur les nodes si nécessaire.

Intégration native

Un nouvel onglet “OpenSCAP” apparaît dans les détails de chaque node avec le rapport intégré.

Prérequis

Avant de commencer, assurez-vous que votre environnement est prêt.

Sur le serveur Rudder :

  • Python requests : le plugin utilise cette bibliothèque Python pour recevoir les rapports des agents. Sans elle, les rapports ne seront pas centralisés.
  • Plugin OpenSCAP : le plugin Rudder qui fournit la Technique et l’interface web.

Sur les nodes (serveurs à auditer) :

  • Accès aux dépôts de paquets : les nodes doivent pouvoir installer le scanner OpenSCAP (la Technique le fait automatiquement).
  • Profils SCAP : les fichiers XML contenant les règles de sécurité. Sur RHEL/Rocky, ils sont fournis par le paquet scap-security-guide. Sur Ubuntu, il faut souvent les compiler (nous verrons comment).

Installation du plugin

L’installation se fait en deux étapes : d’abord la dépendance Python, puis le plugin lui-même.

Étape 1 : Installer la dépendance Python

Connectez-vous sur votre serveur Rudder (pas sur les nodes) et installez la bibliothèque requests :

Terminal window
# Sur Debian / Ubuntu
apt install -y python3-requests
# Sur RHEL / Rocky
dnf install -y python3-requests

Cette bibliothèque permet au serveur Rudder de recevoir et traiter les rapports envoyés par les agents.

Étape 2 : Installer le plugin OpenSCAP

Toujours sur le serveur Rudder, installez le plugin avec la commande :

Terminal window
rudder package install openscap

Cette commande télécharge et installe automatiquement le plugin depuis le dépôt Rudder.

Vérification

Pour confirmer que le plugin est bien installé :

Terminal window
rudder package list | grep openscap

Vous devriez voir une ligne indiquant le plugin OpenSCAP avec sa version.

Installation d’OpenSCAP et des profils sur les nodes

Maintenant que le plugin est installé côté serveur, il faut préparer les nodes (serveurs à auditer). Deux éléments sont nécessaires :

  1. Le scanner OpenSCAP : l’outil qui exécute l’audit, normalement fait par la technique Rudder OpenSCAP
  2. Les profils SCAP : les fichiers XML contenant les règles de sécurité

La Technique Rudder OpenSCAP installe automatiquement le scanner OpenSCAP sur les nodes. Cependant, elle n’installe pas les profils (fichiers XML de règles) car ils varient selon les distributions et vos besoins. Vous devez donc installer les profils manuellement ou via une directive Rudder de gestion de paquets.

Installation par distribution

Sur les distributions Red Hat et dérivées, les profils sont fournis par Red Hat dans le paquet scap-security-guide. L’installation est simple :

Terminal window
# Installer le scanner ET les profils en une seule commande
dnf install -y openscap-scanner scap-security-guide

Ce que ça installe :

  • openscap-scanner : l’outil en ligne de commande oscap
  • scap-security-guide : tous les profils de sécurité (CIS, PCI-DSS, ANSSI, DISA STIG, etc.)

Vérifiez que les fichiers sont bien présents :

Terminal window
ls /usr/share/xml/scap/ssg/content/
# Vous devriez voir : ssg-rhel7-ds.xml, ssg-rhel8-ds.xml, ssg-rhel9-ds.xml, etc.

Découvrir les profils disponibles

Maintenant que les paquets sont installés, comment savoir quels profils de sécurité sont disponibles ? Chaque fichier SCAP (.xml) peut contenir plusieurs profils : CIS Level 1, CIS Level 2, PCI-DSS, ANSSI, DISA STIG…

Pour lister les profils contenus dans un fichier, utilisez la commande oscap info :

Terminal window
# Lister tous les profils contenus dans un fichier SCAP
oscap info /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml

Cette commande affiche de nombreuses informations techniques. La partie qui vous intéresse est la liste des Profiles :

Document type: Source Data Stream
...
Profiles:
Title: CIS Red Hat Enterprise Linux 9 Benchmark for Level 1 - Server
Id: xccdf_org.ssgproject.content_profile_cis_server_l1
Title: CIS Red Hat Enterprise Linux 9 Benchmark for Level 2 - Server
Id: xccdf_org.ssgproject.content_profile_cis_server_l2
Title: PCI-DSS v4.0 Control Baseline for Red Hat Enterprise Linux 9
Id: xccdf_org.ssgproject.content_profile_pci-dss
Title: ANSSI-BP-028 (minimal)
Id: xccdf_org.ssgproject.content_profile_anssi_bp28_minimal
...

Chaque profil a deux éléments :

  • Un Title (titre lisible) : “CIS Red Hat Enterprise Linux 9 Benchmark for Level 1”
  • Un Id (identifiant technique) : xccdf_org.ssgproject.content_profile_cis_server_l1

C’est l’Id que vous utiliserez dans la directive Rudder. Copiez-le exactement comme affiché — une faute de frappe et l’audit échouera.

Exemples de profils courants par distribution

DistributionProfilIdentifiant (Id)
RHEL 9CIS Level 1 Serverxccdf_org.ssgproject.content_profile_cis_server_l1
RHEL 9PCI-DSS v4xccdf_org.ssgproject.content_profile_pci-dss
RHEL 9ANSSI BP-028 minimalxccdf_org.ssgproject.content_profile_anssi_bp28_minimal
Debian 12CIS Level 1xccdf_org.ssgproject.content_profile_cis_level1_server
Ubuntu 22.04CIS Level 1xccdf_org.ssgproject.content_profile_cis_level1_server

Créer la directive dans Rudder

Maintenant que les profils sont installés sur vos nodes et que vous connaissez l’identifiant du profil à utiliser, configurons Rudder pour lancer les audits automatiquement.

Dans Rudder, une Directive est la combinaison d’une Technique (le “savoir-faire”) avec des paramètres précis (le “quoi faire”). Ici, nous allons créer une directive qui dit : “Exécute un audit OpenSCAP avec tel profil et tel fichier SCAP”.

Les deux paramètres obligatoires

La Technique OpenSCAP nécessite deux paramètres :

ParamètreCe que c’estExemple
profileL’identifiant du profil de sécurité (copié depuis oscap info)xccdf_org.ssgproject.content_profile_cis_server_l1
scap_fileLe chemin complet vers le fichier XML sur les nodes/usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml

Étapes de création

  1. Accéder aux Directives

    Connectez-vous à l’interface web de Rudder (https://<SERVEUR>/rudder/) et naviguez vers Configuration → Directives dans le menu de gauche.

  2. Trouver la Technique OpenSCAP

    Dans le panneau de gauche, dépliez les catégories ou utilisez la barre de recherche pour trouver la Technique OpenSCAP. Cliquez dessus pour la sélectionner.

  3. Créer une nouvelle Directive

    Cliquez sur le bouton Create Directive qui apparaît à droite.

  4. Remplir les paramètres

    Donnez un nom explicite à votre directive et renseignez les deux paramètres :

    • Nom de la directive : Audit CIS RHEL9 Level 1 (choisissez un nom descriptif qui indique le profil et la cible)
    • profile : xccdf_org.ssgproject.content_profile_cis_server_l1 (l’identifiant exact du profil, copié depuis oscap info)
    • scap_file : /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml (le chemin complet vers le fichier sur les nodes)
  5. Sauvegarder

    Cliquez sur Save en bas de la page. La directive est créée mais n’est pas encore appliquée à des serveurs.

Appliquer la directive à des serveurs (Rule)

Une directive seule ne fait rien : il faut l’associer à des nodes (serveurs) via une Rule (règle). C’est la Rule qui dit : “Applique cette directive à ce groupe de serveurs”.

  1. Accéder aux Rules

    Dans l’interface Rudder, allez dans Configuration → Rules.

  2. Créer une nouvelle Rule

    Cliquez sur Create pour créer une nouvelle règle. Donnez-lui un nom descriptif, par exemple “Audit sécurité CIS sur serveurs RHEL”.

  3. Sélectionner la Directive

    Dans la section Directives, cochez la directive OpenSCAP que vous avez créée précédemment (“Audit CIS RHEL9 Level 1”).

  4. Sélectionner les nodes cibles

    Dans la section Groups, sélectionnez le groupe de serveurs à auditer. Vous pouvez choisir un groupe existant (ex : “All nodes with RHEL”) ou créer un groupe spécifique au préalable.

  5. Activer et sauvegarder

    Assurez-vous que la règle est activée (toggle en haut), puis cliquez sur Save.

Une fois la règle sauvée, les agents Rudder sur les nodes ciblés récupèreront la configuration lors de leur prochaine exécution (toutes les 5 minutes par défaut). L’audit OpenSCAP sera ensuite déclenché selon le planning configuré (par défaut, une fois par heure).

Consulter les rapports

Après l’exécution de l’audit, le rapport HTML généré par OpenSCAP est automatiquement envoyé au serveur Rudder. Vous pouvez le consulter de plusieurs façons.

Dans l’interface web (méthode recommandée)

C’est la façon la plus simple de consulter les résultats. Le plugin ajoute un nouvel onglet OpenSCAP dans la page de détails de chaque node audité.

  1. Accéder aux nodes

    Dans l’interface Rudder, allez dans Node Management → Nodes.

  2. Sélectionner un node

    Cliquez sur un serveur qui a la directive OpenSCAP appliquée.

  3. Ouvrir l’onglet OpenSCAP

    Dans la page de détails du node, vous verrez un nouvel onglet OpenSCAP. Cliquez dessus pour afficher le rapport.

Le rapport HTML complet s’affiche directement dans l’interface. Vous y verrez :

  • Le score global de conformité (pourcentage de règles passées)
  • La liste de toutes les règles avec leur statut (pass, fail, notapplicable)
  • Pour chaque règle échouée, une explication et des recommandations de correction

Openscap Report

Via l’API REST

Pour intégrer les rapports dans vos outils (tableaux de bord, SIEM…), vous pouvez utiliser l’API Rudder :

Terminal window
# Récupérer le rapport d'un node spécifique
curl -k -H "X-API-Token: <VOTRE_TOKEN>" \
"https://<SERVEUR>/rudder/api/latest/openscap/report/<NODE_ID>"

Remplacez :

  • <VOTRE_TOKEN> : votre token API Rudder (créé dans Settings → API Accounts)
  • <SERVEUR> : l’adresse de votre serveur Rudder
  • <NODE_ID> : l’identifiant du node (visible dans les détails du node)

Accès direct aux fichiers sur le serveur

Les rapports sont également stockés sous forme de fichiers HTML sur le serveur Rudder. Utile pour l’archivage ou l’analyse hors ligne :

Terminal window
# Chemin des rapports sur le serveur Rudder
ls /var/rudder/shared-files/root/files/<NODE_ID>/openscap_report.html

Chaque node a son propre sous-répertoire identifié par son NODE_ID.

Forcer un audit immédiat

Par défaut, l’audit OpenSCAP s’exécute une fois par nuit. Mais quand vous configurez une nouvelle directive ou que vous voulez vérifier immédiatement un serveur, vous ne voulez pas attendre.

Pour forcer un audit immédiat, connectez-vous sur le node concerné et exécutez :

Terminal window
# Sur le node à auditer
rudder agent run -D schedule_simple_openscap_repaired -ui

Explications des options :

  • -D schedule_simple_openscap_repaired : cette “classe” CFEngine force le déclenchement de l’audit OpenSCAP immédiatement, sans attendre la planification nocturne
  • -u : met à jour les politiques depuis le serveur avant l’exécution
  • -i : affiche les informations détaillées pendant l’exécution

L’audit se lance immédiatement et le rapport sera uploadé sur le serveur Rudder dès qu’il est terminé (généralement quelques minutes selon la taille du profil).

Exemples de configurations prêts à l’emploi

Voici des configurations testées pour les cas d’usage les plus courants. Copiez simplement les valeurs dans votre directive Rudder.

Audit CIS Level 1 sur RHEL 9 / Rocky 9

Ce profil applique les recommandations de base du CIS, adaptées à la plupart des environnements de production.

ParamètreValeur
profilexccdf_org.ssgproject.content_profile_cis_server_l1
scap_file/usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml

Audit PCI-DSS sur Debian 12

Pour les serveurs qui traitent des données de cartes bancaires.

ParamètreValeur
profilexccdf_org.ssgproject.content_profile_pci-dss
scap_file/usr/share/xml/scap/ssg/content/ssg-debian12-ds.xml

Audit standard sur Ubuntu 22.04 (après compilation)

Le profil “standard” est plus léger que CIS, idéal pour un premier test.

ParamètreValeur
profilexccdf_org.ssgproject.content_profile_standard
scap_file/usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml

Bonnes pratiques

Quelques recommandations pour tirer le meilleur parti du plugin OpenSCAP.

Audit seul, pas de correction automatique

Autres recommandations

  • Testez d’abord en lab : les profils CIS peuvent être stricts. Une règle peut désactiver un service dont votre application a besoin. Validez toujours sur un environnement de test avant la production.

  • Documentez les exceptions : certaines règles peuvent légitimement ne pas s’appliquer à votre contexte (ex : règle sur le partitionnement /home sur un serveur sans utilisateurs locaux). Notez ces exceptions et leurs justifications.

  • Combinez avec le plugin Security Benchmarks : si vous voulez une remédiation automatique (mode “enforce”), utilisez le plugin Security Benchmarks de Rudder qui intègre cette fonctionnalité.

  • Planifiez les audits en heures creuses : un scan complet peut consommer du CPU pendant plusieurs minutes. Évitez les heures de forte charge.

  • Archivez les rapports : les rapports dans /var/rudder/shared-files/ sont écrasés à chaque nouvel audit. Si vous avez besoin d’un historique, mettez en place une copie régulière.

Dépannage

Voici les problèmes les plus fréquents et comment les résoudre.

Le rapport n’apparaît pas dans l’interface

Causes possibles :

  1. L’audit n’a pas encore été exécuté : par défaut, l’audit s’exécute toutes les heures. Forcez une exécution immédiate (voir section précédente).

  2. L’agent n’a pas récupéré la politique : vérifiez que l’agent communique avec le serveur :

    Terminal window
    rudder agent run -ui | grep -i openscap

    Si rien n’apparaît, la politique n’est pas appliquée à ce node.

  3. Le fichier SCAP n’existe pas : vérifiez que le chemin est correct :

    Terminal window
    ls -la /usr/share/xml/scap/ssg/content/
  4. Problème côté serveur : consultez les logs Rudder :

    Terminal window
    tail -f /var/log/rudder/webapp/rudder-webapp.log | grep -i openscap

Erreur “Profile not found”

Cette erreur signifie que le profil spécifié n’existe pas dans le fichier SCAP.

Solution : listez les profils disponibles et copiez l’identifiant exact :

Terminal window
oscap info /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml | grep -A 100 "Profiles:"

Vérifiez que vous avez bien copié l’Id complet (ex : xccdf_org.ssgproject.content_profile_cis_server_l1), sans faute de frappe.

Audit très long (plus de 15 minutes)

Les profils complets (CIS Level 2) vérifient des centaines de règles et peuvent prendre du temps sur des serveurs peu puissants.

Solutions :

  • Pour un premier test, utilisez le profil standard qui est beaucoup plus léger (quelques dizaines de règles)

  • Vérifiez que le serveur n’est pas en surcharge (CPU, I/O)

  • Si le problème persiste, exécutez l’audit manuellement pour voir les messages d’erreur :

    Terminal window
    oscap xccdf eval --profile <profile_id> --results results.xml \
    --report report.html /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml

Aller plus loin

Vous maîtrisez maintenant les bases du plugin OpenSCAP. Voici des ressources pour approfondir.

Guides de cette série