
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 ?
Section intitulée « 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 :
- 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…)
- Il inspecte le système — il examine la configuration réelle du serveur
- 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
Section intitulée « 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
Section intitulée « 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
Section intitulée « 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
Section intitulée « Étape 1 : Installer la dépendance Python »Connectez-vous sur votre serveur Rudder (pas sur les nodes) et installez
la bibliothèque requests :
# Sur Debian / Ubuntuapt install -y python3-requests
# Sur RHEL / Rockydnf install -y python3-requestsCette bibliothèque permet au serveur Rudder de recevoir et traiter les rapports envoyés par les agents.
Étape 2 : Installer le plugin OpenSCAP
Section intitulée « Étape 2 : Installer le plugin OpenSCAP »Toujours sur le serveur Rudder, installez le plugin avec la commande :
rudder package install openscapCette commande télécharge et installe automatiquement le plugin depuis le dépôt Rudder.
Vérification
Section intitulée « Vérification »Pour confirmer que le plugin est bien installé :
rudder package list | grep openscapVous devriez voir une ligne indiquant le plugin OpenSCAP avec sa version.
Installation d’OpenSCAP et des profils sur les nodes
Section intitulée « 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 :
- Le scanner OpenSCAP : l’outil qui exécute l’audit, normalement fait par la technique Rudder OpenSCAP
- 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
Section intitulée « 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 :
# Installer le scanner ET les profils en une seule commandednf install -y openscap-scanner scap-security-guideCe que ça installe :
openscap-scanner: l’outil en ligne de commandeoscapscap-security-guide: tous les profils de sécurité (CIS, PCI-DSS, ANSSI, DISA STIG, etc.)
Vérifiez que les fichiers sont bien présents :
ls /usr/share/xml/scap/ssg/content/# Vous devriez voir : ssg-rhel7-ds.xml, ssg-rhel8-ds.xml, ssg-rhel9-ds.xml, etc.Sur Debian, les profils sont disponibles dans les dépôts officiels :
# Installer le scanner ET les profilsapt install -y libopenscap8 ssg-base ssg-debian ssg-debderivedCe que ça installe :
libopenscap8: la bibliothèque OpenSCAP et l’outiloscapssg-base: la base commune des profilsssg-debian: les profils spécifiques à Debianssg-debderived: les profils pour les distributions dérivées de Debian
Vérifiez l’installation :
ls /usr/share/xml/scap/ssg/content/# Vous devriez voir : ssg-debian11-ds.xml, ssg-debian12-ds.xml, etc.Voici la procédure complète à exécuter sur chaque node Ubuntu :
# 1. Installer le scanner OpenSCAPsudo apt updatesudo apt install -y libopenscap8
# 2. Installer les outils de compilationsudo apt install -y cmake make expat libxml2-utils ninja-build \ python3-jinja2 python3-yaml xsltproc git
# 3. Télécharger les sources des profilscd /tmpgit clone https://github.com/ComplianceAsCode/content.gitcd content
# 4. Compiler les profils pour votre version d'Ubuntu./build_product ubuntu2204 # Pour Ubuntu 22.04# ou./build_product ubuntu2404 # Pour Ubuntu 24.04
# 5. Copier les profils compilés dans le répertoire standardsudo mkdir -p /usr/share/xml/scap/ssg/content/sudo cp build/ssg-ubuntu2204-ds.xml /usr/share/xml/scap/ssg/content/
# 6. Vérifier l'installationls -la /usr/share/xml/scap/ssg/content/oscap info /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml | grep -A 20 "Profiles:"La compilation prend environ 5 à 10 minutes selon votre machine.
Une fois les profils installés, les directives Rudder OpenSCAP fonctionneront normalement sur vos nodes Ubuntu.
Découvrir les profils disponibles
Section intitulée « 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 :
# Lister tous les profils contenus dans un fichier SCAPoscap info /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xmlCette 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
Section intitulée « Exemples de profils courants par distribution »| Distribution | Profil | Identifiant (Id) |
|---|---|---|
| RHEL 9 | CIS Level 1 Server | xccdf_org.ssgproject.content_profile_cis_server_l1 |
| RHEL 9 | PCI-DSS v4 | xccdf_org.ssgproject.content_profile_pci-dss |
| RHEL 9 | ANSSI BP-028 minimal | xccdf_org.ssgproject.content_profile_anssi_bp28_minimal |
| Debian 12 | CIS Level 1 | xccdf_org.ssgproject.content_profile_cis_level1_server |
| Ubuntu 22.04 | CIS Level 1 | xccdf_org.ssgproject.content_profile_cis_level1_server |
Créer la directive dans Rudder
Section intitulée « 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
Section intitulée « Les deux paramètres obligatoires »La Technique OpenSCAP nécessite deux paramètres :
| Paramètre | Ce que c’est | Exemple |
|---|---|---|
profile | L’identifiant du profil de sécurité (copié depuis oscap info) | xccdf_org.ssgproject.content_profile_cis_server_l1 |
scap_file | Le chemin complet vers le fichier XML sur les nodes | /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml |
Étapes de création
Section intitulée « Étapes de création »-
Accéder aux Directives
Connectez-vous à l’interface web de Rudder (
https://<SERVEUR>/rudder/) et naviguez vers Configuration → Directives dans le menu de gauche. -
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.
-
Créer une nouvelle Directive
Cliquez sur le bouton Create Directive qui apparaît à droite.
-
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é depuisoscap info) - scap_file :
/usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml(le chemin complet vers le fichier sur les nodes)
- Nom de la directive :
-
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)
Section intitulée « 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”.
-
Accéder aux Rules
Dans l’interface Rudder, allez dans Configuration → Rules.
-
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”.
-
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”).
-
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.
-
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
Section intitulée « 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)
Section intitulée « 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é.
-
Accéder aux nodes
Dans l’interface Rudder, allez dans Node Management → Nodes.
-
Sélectionner un node
Cliquez sur un serveur qui a la directive OpenSCAP appliquée.
-
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

Via l’API REST
Section intitulée « Via l’API REST »Pour intégrer les rapports dans vos outils (tableaux de bord, SIEM…), vous pouvez utiliser l’API Rudder :
# Récupérer le rapport d'un node spécifiquecurl -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
Section intitulée « 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 :
# Chemin des rapports sur le serveur Rudderls /var/rudder/shared-files/root/files/<NODE_ID>/openscap_report.htmlChaque node a son propre sous-répertoire identifié par son NODE_ID.
Forcer un audit immédiat
Section intitulée « 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 :
# Sur le node à auditerrudder agent run -D schedule_simple_openscap_repaired -uiExplications 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
Section intitulée « 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
Section intitulée « 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ètre | Valeur |
|---|---|
| profile | xccdf_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
Section intitulée « Audit PCI-DSS sur Debian 12 »Pour les serveurs qui traitent des données de cartes bancaires.
| Paramètre | Valeur |
|---|---|
| profile | xccdf_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)
Section intitulée « 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ètre | Valeur |
|---|---|
| profile | xccdf_org.ssgproject.content_profile_standard |
| scap_file | /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml |
Bonnes pratiques
Section intitulée « Bonnes pratiques »Quelques recommandations pour tirer le meilleur parti du plugin OpenSCAP.
Audit seul, pas de correction automatique
Section intitulée « Audit seul, pas de correction automatique »Autres recommandations
Section intitulée « 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
Section intitulée « Dépannage »Voici les problèmes les plus fréquents et comment les résoudre.
Le rapport n’apparaît pas dans l’interface
Section intitulée « Le rapport n’apparaît pas dans l’interface »Causes possibles :
-
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).
-
L’agent n’a pas récupéré la politique : vérifiez que l’agent communique avec le serveur :
Fenêtre de terminal rudder agent run -ui | grep -i openscapSi rien n’apparaît, la politique n’est pas appliquée à ce node.
-
Le fichier SCAP n’existe pas : vérifiez que le chemin est correct :
Fenêtre de terminal ls -la /usr/share/xml/scap/ssg/content/ -
Problème côté serveur : consultez les logs Rudder :
Fenêtre de terminal tail -f /var/log/rudder/webapp/rudder-webapp.log | grep -i openscap
Erreur “Profile not found”
Section intitulée « 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 :
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)
Section intitulée « 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
standardqui 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 :
Fenêtre de terminal 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
Section intitulée « Aller plus loin »Vous maîtrisez maintenant les bases du plugin OpenSCAP. Voici des ressources pour approfondir.