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

  1. Se rendre sur Réglages > Benchmarks
  2. Cliquer sur le bouton « Ajouter »
  3. Sélectionner le benchmark à ajouter, au format ZIP ou DataStream
  4. 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’exploitationCPE de la plateformeBenchmarks installés
AlmaLinuxcpe:/o:almalinux:almalinux:8, …CIS Alma Linux OS 8 Benchmark
CIS AlmaLinux OS 9 Benchmark
Amazon Linux 2cpe:/o:amazon:linux_2CIS Amazon Linux 2 Benchmark
Apple macOScpe:/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 Linuxcpe:/o:centos:centos:6, …CIS CentOS Linux 6 Benchmark
CIS CentOS Linux 7 Benchmark
Debiancpe:/o:debian:debian_linux:9.0, …CIS Debian Linux 9 Benchmark
CIS Debian Linux 10 Benchmark
CIS Debian Linux 11 Benchmark
Fedora Linuxcpe:/o:fedora:linux:28CIS Fedora 28 Family Linux Benchmark
Microsoft Windows 8cpe:/o:microsoft:windows_8CIS Microsoft Windows 8 Benchmark
Microsoft Windows 10cpe:/o:microsoft:windows_10CIS Microsoft Windows 10 Enterprise Benchmark
CIS Microsoft Intune for Windows 10 Benchmark
Microsoft Windows 11cpe:/o:microsoft:windows_11CIS Microsoft Windows 11 Enterprise Benchmark
CIS Microsoft Intune for Windows 11 Benchmark
Microsoft Windows Server 2008cpe:/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 2012cpe:/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 2016cpe:/o:microsoft:windows_server_2016CIS Microsoft Windows Server 2016 Benchmark
Microsoft Windows Server 2019cpe:/o:microsoft:windows_server_2019CIS Microsoft Windows Server 2019 Benchmark
Microsoft Windows Server 2022cpe:/o:microsoft:windows_server:2022CIS Microsoft Windows Server 2022 Benchmark
Oracle Linuxcpe:/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 Linuxcpe:/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 Linuxcpe:/o:rocky:rocky_linux:8, …CIS Rocky Linux 8 Benchmark
CIS Rocky Linux 9 Benchmark
SUSE Linux Enterprise Server
OpenSUSE Leap
cpe:/o:suse:suse_linux_enterprise_server:12, …CIS SUSE Linux Enterprise 12 Benchmark
CIS SUSE Linux Enterprise 15 Benchmark
Ubuntucpe:/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 Linuxcpe:/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.


Retour en haut