Benchmarks
Une analyse de conformité compare le système cible à une référence (le benchmark) qui est un ensemble de règles de sécurité pour évaluer la conformité ou la non-conformité du système.
Un benchmark est défini en utilisant la norme SCAP qui permet aux organisations d’automatiser la façon dont elles surveillent les vulnérabilités et s’assurent qu’elles sont conformes aux politiques de sécurité.
Structure d’un benchmark
Un benchmark comprend un fichier XCCDF qui décrit les règles de conformité et les tests permettant de les évaluer. Ces tests peuvent être écrits au format OVAL ou SCE.
Cyberwatch supporte deux formats de benchmark :
- un fichier ZIP contenant a minima un fichier XCCDF et éventuellement les autres fichiers (scripts SCE ou OVAL) dont les chemins relatifs ont été déclarés dans le XCCDF ;
- un fichier au format DataStream.
Exemple minimaliste de fichier XCCDF
Exemple de fichier XCCDF extrait du benchmark CIS pour Ubuntu Linux 22.04 LTS qui définit un benchmark contenant une seule règle de conformité :
<xccdf:Benchmark id="xccdf_org.cisecurity.benchmarks_benchmark_1.0.0_CIS_Ubuntu_Linux_22.04_LTS_Benchmark" xmlns:xccdf="http://checklists.nist.gov/xccdf/1.2" xmlns="http://checklists.nist.gov/xccdf/1.2" >
<xccdf:title>CIS Ubuntu Linux 22.04 LTS Benchmark</xccdf:title>
<xccdf:platform idref="cpe:2.3:o:canonical:ubuntu_linux:22.04:*:*:*:lts:*:*:*"/>
<xccdf:Rule id="xccdf_org.cisecurity.benchmarks_rule_1.1.5.3_Ensure_noexec_option_set_on_varlog_partition" role="full" selected="false" weight="1.0">
<xccdf:title xml:lang="en">Ensure noexec option set on /var/log partition</xccdf:title>
<xccdf:description xml:lang="en">
<xhtml:p><xhtml:span class="inline_block">noexec</xhtml:span> mount option specifies that the filesystem cannot contain executable binaries.</xhtml:p>
</xccdf:description>
<xccdf:rationale xml:lang="en">
<xhtml:p> Since the <xhtml:span class="inline_block">/var/log</xhtml:span> filesystem is only intended for log files, set this option to ensure that users cannot run executable binaries from <xhtml:span class="inline_block">/var/log</xhtml:span>.</xhtml:p>
</xccdf:rationale>
<xccdf:fixtext xml:lang="en">
<xhtml:div>
<xhtml:p><xhtml:strong>IF</xhtml:strong> the <xhtml:span class="inline_block">/var/log</xhtml:span> partition exists, edit the <xhtml:span class="inline_block">/etc/fstab</xhtml:span> file and add <xhtml:span class="inline_block">noexec</xhtml:span> to the fourth field (mounting options) for the <xhtml:span class="inline_block">/var/log</xhtml:span> partition.</xhtml:p>
<xhtml:p>Run the following command to remount <xhtml:span class="inline_block">/var/log</xhtml:span> with the configured options: </xhtml:p>
<xhtml:code class="code_block"># mount -o remount /var/log</xhtml:code>
</xhtml:div>
</xccdf:fixtext>
<xccdf:complex-check operator="AND">
<check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
<check-content-ref href="CIS_Ubuntu_Linux_22.04_LTS_Benchmark_v1.0.0-oval.xml" name="oval:org.cisecurity.benchmarks.canonical_ubuntu_linux_22:def:2956581"/>
</check>
</xccdf:complex-check>
</xccdf:Rule>
</xccdf:Benchmark>
Quelques éléments à noter dans ce document :
- L’identifiant du benchmark défini par l’attribut
id
sur la balise<xccdf:Benchmark>
qui sert de référence pour Cyberwatch. - La plateforme ciblée est définie au format CPE par l’attribut
idref
sur la balise<xccdf:platform>
. Il est également possible de déclarer une ou plusieurs plateformes au niveau d’une règle si on veut restreindre son application. - Dans la définition de la règle
<xccdf:Rule>
, le contenu de la balise<xccdf:complex-check>
permet de lister les tests à exécuter et les chemins relatifs pour accéder aux fichiers où ils sont définis.
Dans cet exemple, l’unique règle référence un test au format OVAL, le benchmark contiendra donc ce fichier XCCDF et le fichier OVAL déclaré. Il pourra alors être distribué au format ZIP ou au format DataStream.
En revanche, si la règle avait fait référence à un script au format SCE, en déclarant par exemple :
<check system="http://open-scap.org/page/SCE">
<check-import import-name="stdout"/>
<check-content-ref href="sce/ensure_no_exec_option.sh"/>
</check>
Le benchmark contiendrait le fichier XCCDF et un répertoire sce
contenant le script Shell ensure_no_exec_option.sh
. Le tout devrait être compressé au format ZIP pour pouvoir être ajouté à Cyberwatch, comme décrit ci-dessous.
L’arborescence des fichiers dans le fichier ZIP doit impérativement respecter les chemins relatifs déclarés dans le fichier XCCDF.
Ajouter un benchmark
- Se rendre sur Réglages > Benchmarks
- Cliquer sur le bouton « Ajouter »
- Sélectionner le benchmark à ajouter, au format ZIP ou DataStream
- Cliquer sur « Importer »
Lors de l’import, si l’identifiant du benchmark existe déjà dans Cyberwatch, le benchmark est mis à jour. Dans le cas contraire, un nouveau benchmark est créé.
Il est possible d’importer de nouveaux benchmarks uniquement pour les plateformes supportées par le module de gestion des conformités de Cyberwatch. Il est donc possible d’importer un benchmark pour d’autres versions de systèmes d’exploitation comme macOS ou Ubuntu 12.04 par exemple, mais pas d’importer un benchmark permettant de vérifier une configuration logicielle ou d’un équipement réseau par exemple.
Liste des plateformes supportées
Dans le tableau suivant, sont listés les plateformes supportées et les benchmarks déjà installés :
Systèmes d’exploitation | CPE de la plateforme | Benchmarks installés |
---|---|---|
AlmaLinux | cpe:/o:almalinux:almalinux:8, … | CIS Alma Linux OS 8 Benchmark CIS AlmaLinux OS 9 Benchmark |
Amazon Linux 2 | cpe:/o:amazon:linux_2 | CIS Amazon Linux 2 Benchmark |
Apple macOS | cpe:/o:apple:mac_os_x:10.15.0, … | CIS Apple macOS 10.15 Catalina Benchmark CIS Apple macOS 11.0 Big Sur Benchmark CIS Apple macOS 12.0 Monterey Benchmark CIS Apple macOS 13.0 Ventura Benchmark |
CentOS Linux | cpe:/o:centos:centos:6, … | CIS CentOS Linux 6 Benchmark CIS CentOS Linux 7 Benchmark |
Debian | cpe:/o:debian:debian_linux:9.0, … | CIS Debian Linux 9 Benchmark CIS Debian Linux 10 Benchmark CIS Debian Linux 11 Benchmark |
Fedora Linux | cpe:/o:fedora:linux:28 | CIS Fedora 28 Family Linux Benchmark |
Microsoft Windows 8 | cpe:/o:microsoft:windows_8 | CIS Microsoft Windows 8 Benchmark |
Microsoft Windows 10 | cpe:/o:microsoft:windows_10 | CIS Microsoft Windows 10 Enterprise Benchmark CIS Microsoft Intune for Windows 10 Benchmark |
Microsoft Windows 11 | cpe:/o:microsoft:windows_11 | CIS Microsoft Windows 11 Enterprise Benchmark CIS Microsoft Intune for Windows 11 Benchmark |
Microsoft Windows Server 2008 | cpe:/o:microsoft:windows_server_2008, cpe:/o:microsoft:windows_server_2008:r2 | CIS Microsoft Windows Server 2008 (non-R2) Benchmark CIS Microsoft Windows Server 2008 R2 Benchmark |
Microsoft Windows Server 2012 | cpe:/o:microsoft:windows_server_2012, cpe:/o:microsoft:windows_server_2012:r2 | CIS Microsoft Windows Server 2012 (non-R2) Benchmark CIS Microsoft Windows Server 2012 R2 Benchmark |
Microsoft Windows Server 2016 | cpe:/o:microsoft:windows_server_2016 | CIS Microsoft Windows Server 2016 Benchmark |
Microsoft Windows Server 2019 | cpe:/o:microsoft:windows_server_2019 | CIS Microsoft Windows Server 2019 Benchmark |
Microsoft Windows Server 2022 | cpe:/o:microsoft:windows_server:2022 | CIS Microsoft Windows Server 2022 Benchmark |
Oracle Linux | cpe:/o:oracle:linux:6, … | CIS Oracle Linux 6 Benchmark CIS Oracle Linux 7 Benchmark CIS Oracle Linux 8 Benchmark CIS Oracle Linux 9 Benchmark |
Red Hat Enterprise Linux | cpe:/o:redhat:redhat_enterprise_linux:6, … | CIS Red Hat Enterprise Linux 6 Benchmark CIS Red Hat Enterprise Linux 7 Benchmark CIS Red Hat Enterprise Linux 8 Benchmark CIS Red Hat Enterprise Linux 9 Benchmark |
Rocky Linux | cpe:/o:rocky:rocky_linux:8, … | CIS Rocky Linux 8 Benchmark CIS Rocky Linux 9 Benchmark |
SUSE Linux Enterprise Server | cpe:/o:suse:suse_linux_enterprise_server:12, … | CIS SUSE Linux Enterprise 12 Benchmark CIS SUSE Linux Enterprise 15 Benchmark |
Ubuntu | cpe:/o:canonical:ubuntu_linux:16.04, … | CIS Ubuntu Linux 14.04 LTS Benchmark CIS Ubuntu Linux 16.04 LTS Benchmark CIS Ubuntu Linux 18.04 LTS Benchmark CIS Ubuntu Linux 20.04 LTS Benchmark CIS Ubuntu Linux 22.04 LTS Benchmark |
Noyau Linux | cpe:/o:linux:linux_kernel:* | CIS Docker Benchmark |
Standards supportés
Les versions des composants SCAP supportés, avec leur espace de noms XML, sont :
- DataStream 1.2 (
http://scap.nist.gov/schema/scap/source/1.2
), - XCCDF 1.2 (
http://checklists.nist.gov/xccdf/1.2
), - OVAL 5 (
http://oval.mitre.org/XMLSchema/oval-definitions-5
).
Les espaces de noms XML non reconnus seront ignorés. Une tentative d’import de benchmark avec une version DataStream ou XCCDF inconnue aboutira alors avec une erreur de fichier XCCDF introuvable.
Liens utiles
Glossaire
SCAP
La norme SCAP (Security Content Automation Protocol) comprend plusieurs normes de composants conçus pour travailler ensemble. Pour chaque composant, la norme définit un format de document avec la syntaxe et la sémantique des structures de données internes. Toutes les normes de composants sont basées sur XML et chaque norme de composant définit son propre espace de noms XML.
XCCDF
XCCDF (Extensible Configuration Checklist Description Format) est le langage utilisé pour décrire les listes de contrôle de sécurité. Le langage est conçu pour prendre en charge l’échange d’informations, la génération de documents, l’adaptation organisationnelle et situationnelle, les tests de conformité automatisés et la notation de conformité.
Le langage ne contient aucune commande pour effectuer l’analyse et il est principalement descriptif. D’autres documents de composants (OVAL et scripts SCE) peuvent être référencés à partir du document XCCDF.
OVAL
OVAL (Open Vulnerability and Assessment Language) est un langage déclaratif pour faire des assertions logiques sur l’état du système. Il est utilisé pour décrire les vulnérabilités de sécurité ou la configuration souhaitée des systèmes. Les définitions OVAL définissent un état sécurisé de certains objets dans un ordinateur, par exemple les fichiers de configuration, les autorisations de fichiers, les processus. Les définitions OVAL sont évaluées à l’aide d’un interpréteur appelé scanner.
Les principaux concepts du document OVAL sont les définitions, les tests, les objets et les états. Chaque définition spécifie les tests qui doivent être satisfaits. Un test relie un objet et un état. Le test réussira lorsqu’une ressource désignée par un objet donné satisfait aux exigences dans un état correspondant.
SCE
SCE (Script Check Engine) est une extension permettant l’exécution de scripts (écrits par exemple en Bash, PowerShell, …) à partir de la politique SCAP. Il vous permet de rendre vos scripts interopérables avec votre politique de sécurité.
DataStream
DataStream est un format permettant de regrouper en un seul fichier XML les différents composants SCAP du benchmark, dans notre cas : XCCDF et OVAL.
CPE
Le CPE (Common Platform Enumeration) sert à identifier les plateformes et les systèmes informatiques à l’aide de noms définis sans équivoque.