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

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.
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 :
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.
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é.
Avant de commencer, assurez-vous que votre environnement est prêt.
Sur le serveur Rudder :
requests : le plugin utilise cette bibliothèque Python pour
recevoir les rapports des agents. Sans elle, les rapports ne seront pas
centralisés.Sur les nodes (serveurs à auditer) :
scap-security-guide. Sur Ubuntu,
il faut souvent les compiler (nous verrons comment).L’installation se fait en deux étapes : d’abord la dépendance Python, puis le plugin lui-même.
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.
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.
Pour confirmer que le plugin est bien installé :
rudder package list | grep openscapVous devriez voir une ligne indiquant le plugin OpenSCAP avec sa version.
Maintenant que le plugin est installé côté serveur, il faut préparer les nodes (serveurs à auditer). Deux éléments sont nécessaires :
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.
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 commande oscapscap-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’outil oscapssg-base : la base commune des profilsssg-debian : les profils spécifiques à Debianssg-debderived : les profils pour les distributions dérivées de DebianVé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.
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 :
xccdf_org.ssgproject.content_profile_cis_server_l1C’est l’Id que vous utiliserez dans la directive Rudder. Copiez-le exactement comme affiché — une faute de frappe et l’audit échouera.
| 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 |
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”.
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 |
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 :
Audit CIS RHEL9 Level 1 (choisissez un nom
descriptif qui indique le profil et la cible)xccdf_org.ssgproject.content_profile_cis_server_l1
(l’identifiant exact du profil, copié depuis oscap info)/usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml
(le chemin complet vers le fichier sur les nodes)Sauvegarder
Cliquez sur Save en bas de la page. La directive est créée mais n’est pas encore appliquée à des serveurs.
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).
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.
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 :

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)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.
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écutionL’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).
Voici des configurations testées pour les cas d’usage les plus courants. Copiez simplement les valeurs dans votre directive Rudder.
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 |
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 |
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 |
Quelques recommandations pour tirer le meilleur parti du plugin OpenSCAP.
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.
Voici les problèmes les plus fréquents et comment les résoudre.
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 :
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 :
ls -la /usr/share/xml/scap/ssg/content/Problème côté serveur : consultez les logs Rudder :
tail -f /var/log/rudder/webapp/rudder-webapp.log | grep -i openscapCette 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.
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 :
oscap xccdf eval --profile <profile_id> --results results.xml \ --report report.html /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xmlVous maîtrisez maintenant les bases du plugin OpenSCAP. Voici des ressources pour approfondir.