Benchmarks
Un análisis de cumplimiento compara el sistema objetivo con una referencia (el benchmark), que es un conjunto de reglas de seguridad para evaluar el cumplimiento o no cumplimiento del sistema.
Un benchmark se define usando la norma SCAP, que permite a las organizaciones automatizar la forma en que supervisan las vulnerabilidades y se aseguran de que cumplen las políticas de seguridad.
Estructura de un benchmark
Un benchmark incluye un archivo XCCDF que describe las reglas de cumplimiento y las pruebas que permiten evaluarlas. Estas pruebas pueden estar escritas en formato OVAL o SCE.
Cyberwatch soporta dos formatos de benchmark:
- un archivo ZIP que contiene, como mínimo, un archivo XCCDF y, opcionalmente, los demás archivos (scripts SCE u OVAL) cuyos caminos relativos se han declarado en el XCCDF
- un archivo en formato DataStream
Ejemplo minimalista de archivo XCCDF
Ejemplo de archivo XCCDF extraído del benchmark CIS para Ubuntu Linux 22.04 LTS que define un benchmark que contiene una sola regla de cumplimiento:
<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>
Algunos elementos a tener en cuenta en este documento:
- El identificador del benchmark definido por el atributo
iden la etiqueta<xccdf:Benchmark>que sirve de referencia para Cyberwatch - La plataforma objetivo se define en formato CPE mediante el atributo
idrefen la etiqueta<xccdf:platform>. También es posible declarar una o varias plataformas a nivel de una regla si se quiere restringir su aplicación - En la definición de la regla
<xccdf:Rule>, el contenido de la etiqueta<xccdf:complex-check>permite listar las pruebas a ejecutar y los caminos relativos para acceder a los archivos donde se definen
En este ejemplo, la única regla hace referencia a una prueba en formato OVAL, por lo que el benchmark contendrá este archivo XCCDF y el archivo OVAL declarado. Entonces podrá distribuirse en formato ZIP o en formato DataStream.
En cambio, si la regla hubiera hecho referencia a un script en formato SCE, declarando por ejemplo:
<check system="http://open-scap.org/page/SCE">
<check-import import-name="stdout"/>
<check-content-ref href="sce/ensure_no_exec_option.sh"/>
</check>
El benchmark contendría el archivo XCCDF y un directorio sce que contiene el script Shell ensure_no_exec_option.sh. Todo debería comprimirse en formato ZIP para poder ser añadido a Cyberwatch, como se describe a continuación.
El árbol de archivos en el archivo ZIP debe respetar obligatoriamente las rutas relativas declaradas en el archivo XCCDF.
Añadir un benchmark
- Ir a Configuración > Benchmarks
- Hacer clic en el botón “Añadir”
- Seleccionar el benchmark a añadir, en formato ZIP o DataStream
- Hacer clic en “Importar”
Durante la importación, si el identificador del benchmark ya existe en Cyberwatch, el benchmark se actualiza. En caso contrario, se crea un nuevo benchmark.
Es posible importar nuevos benchmarks únicamente para las plataformas soportadas por el módulo de gestión de cumplimientos de Cyberwatch. Por lo tanto, es posible importar un benchmark para otras versiones de sistemas operativos como macOS o Ubuntu 12.04, por ejemplo, pero no importar un benchmark que permita verificar una configuración de software o de un equipo de red, por ejemplo.
Lista de plataformas soportadas
En la tabla siguiente se enumeran las plataformas soportadas y los benchmarks ya instalados:
| Sistemas operativos | CPE de la plataforma | Benchmarks instalados |
|---|---|---|
| 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 CIS Amazon Linux 2023 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 CIS Apple macOS 14.0 Sonoma Benchmark CIS Apple macOS 15.0 Sequoia 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 CIS Debian Linux 12 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 |
| Microsoft Windows Server 2025 | cpe:/o:microsoft:windows_server:2025 | CIS Microsoft Windows Server 2025 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 OpenSUSE Leap | 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 CIS Ubuntu Linux 24.04 LTS Benchmark |
| Kernel Linux | cpe:/o:linux:linux_kernel:* | CIS Docker Benchmark |
Estándares soportados
Las versiones de los componentes SCAP soportadas, con su espacio de nombres XML, son:
Los espacios de nombres XML no reconocidos se ignorarán. Un intento de importación de benchmark con una versión DataStream o XCCDF desconocida acabará con un error de archivo XCCDF no encontrado.
Enlaces útiles
Glosario
SCAP
La norma SCAP (Security Content Automation Protocol) incluye varias normas de componentes diseñadas para trabajar juntas. Para cada componente, la norma define un formato de documento con la sintaxis y la semántica de las estructuras de datos internas. Todas las normas de componentes están basadas en XML y cada norma de componente define su propio espacio de nombres XML.
XCCDF
XCCDF (Extensible Configuration Checklist Description Format) es el lenguaje utilizado para describir listas de control de seguridad. El lenguaje está diseñado para soportar el intercambio de información, la generación de documentos, la adaptación organizacional y situacional, los tests de cumplimiento automatizados y la puntuación de cumplimiento.
El lenguaje no contiene ningún comando para realizar el análisis y es principalmente descriptivo. Otros documentos de componentes (OVAL y scripts SCE) pueden referenciarse desde el documento XCCDF.
OVAL
OVAL (Open Vulnerability and Assessment Language) es un lenguaje declarativo para realizar afirmaciones lógicas sobre el estado del sistema. Se utiliza para describir vulnerabilidades de seguridad o la configuración deseada de los sistemas. Las definiciones OVAL definen un estado seguro de ciertos objetos en un equipo, por ejemplo archivos de configuración, permisos de archivos, procesos. Las definiciones OVAL se evalúan mediante un intérprete llamado escáner.
Los conceptos principales del documento OVAL son las definiciones, las pruebas, los objetos y los estados. Cada definición especifica las pruebas que deben cumplirse. Una prueba vincula un objeto y un estado. La prueba tendrá éxito cuando un recurso designado por un objeto satisfaga los requisitos en un estado correspondiente.
SCE
SCE (Script Check Engine) es una extensión que permite ejecutar scripts (escritos, por ejemplo, en Bash, PowerShell, …) desde la política SCAP. Le permite hacer que sus scripts sean interoperables con su política de seguridad.
DataStream
DataStream es un formato que permite agrupar en un único archivo XML los diferentes componentes SCAP del benchmark, en nuestro caso: XCCDF y OVAL.