--- title: "Escaneo de cumplimiento con OpenSCAP en Ubuntu 24.04" description: "Instala OpenSCAP en Ubuntu 24.04, evalúa el sistema contra los perfiles CIS y STIG de SCAP Security Guide, genera informes HTML y programa escaneos semanales." category: "Cumplimiento y Auditoría" language: es source: https://cubepath.com/es/docs/cumplimiento-y-auditoría/escaneo-automatizado-de-cumplimiento-con-openscap updated: 2026-09-25 --- # Escaneo de cumplimiento con OpenSCAP en Ubuntu 24.04 OpenSCAP es la implementación de código abierto del estándar SCAP (Security Content Automation Protocol). Su escáner, `oscap`, evalúa un sistema contra un perfil de seguridad escrito en XCCDF/OVAL, como el CIS Benchmark o el DISA-STIG, y genera un informe con cada regla aprobada o fallida. En este tutorial instalarás OpenSCAP en Ubuntu 24.04, descargarás el contenido de SCAP Security Guide, lanzarás un escaneo CIS, generarás la remediación, comprobarás vulnerabilidades conocidas con los datos OVAL de Canonical y programarás un escaneo semanal. ## Requisitos previos - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath. - Un usuario no root con privilegios `sudo`. - Unos 500 MB libres en disco para el contenido SCAP y los informes. - Acceso a internet desde el servidor para descargar el contenido. ## Paso 1: Instalar el escáner El escáner está en el repositorio `universe` de Ubuntu: ```bash sudo apt update sudo apt install openscap-scanner unzip ``` Comprueba la versión: ```bash oscap --version | head -n 1 ``` ```output OpenSCAP command line tool (oscap) 1.3.9 ``` Ubuntu 24.04 también trae los paquetes `ssg-*` con contenido SCAP, pero su versión (0.1.71) solo incluye data streams hasta Ubuntu 22.04. Por eso descargarás el contenido directamente del proyecto ComplianceAsCode en el paso siguiente. ## Paso 2: Descargar SCAP Security Guide SCAP Security Guide (SSG) es el contenido que define las reglas y perfiles. Consulta la última versión en la página de releases de `github.com/ComplianceAsCode/content` y guárdala en una variable. En el momento de escribir esta guía es la 0.1.82: ```bash SSG_VERSION=0.1.82 cd /tmp wget "https://github.com/ComplianceAsCode/content/releases/download/v${SSG_VERSION}/scap-security-guide-${SSG_VERSION}.zip" wget "https://github.com/ComplianceAsCode/content/releases/download/v${SSG_VERSION}/scap-security-guide-${SSG_VERSION}.zip.sha512" ``` Verifica la integridad del fichero descargado: ```bash sha512sum -c "scap-security-guide-${SSG_VERSION}.zip.sha512" ``` ```output scap-security-guide-0.1.82.zip: OK ``` Extrae solo el data stream de Ubuntu 24.04 en `/usr/local/share/scap`: ```bash sudo mkdir -p /usr/local/share/scap sudo unzip -j -o "scap-security-guide-${SSG_VERSION}.zip" "*/ssg-ubuntu2404-ds.xml" -d /usr/local/share/scap ls /usr/local/share/scap ``` ```output ssg-ubuntu2404-ds.xml ``` Para no repetir la ruta en cada comando, guárdala en una variable de la sesión: ```bash DS=/usr/local/share/scap/ssg-ubuntu2404-ds.xml ``` ## Paso 3: Ver los perfiles disponibles Un data stream contiene varios perfiles. Lístalos: ```bash oscap info --profiles "$DS" ``` ```output xccdf_org.ssgproject.content_profile_cis_level1_server:CIS Ubuntu 24.04 Level 1 Server Benchmark xccdf_org.ssgproject.content_profile_cis_level1_workstation:CIS Ubuntu 24.04 Level 1 Workstation Benchmark xccdf_org.ssgproject.content_profile_cis_level2_server:CIS Ubuntu 24.04 Level 2 Server Benchmark xccdf_org.ssgproject.content_profile_cis_level2_workstation:CIS Ubuntu 24.04 Level 2 Workstation Benchmark xccdf_org.ssgproject.content_profile_stig:... ``` La parte anterior a los dos puntos es el ID del perfil. Si quieres leer qué comprueba cada regla antes de escanear, genera la guía del perfil en HTML: ```bash oscap xccdf generate guide \ --profile xccdf_org.ssgproject.content_profile_cis_level1_server \ "$DS" > ~/guia-cis-l1.html ``` ## Paso 4: Lanzar un escaneo CIS Crea un directorio para los resultados y lanza la evaluación con `sudo`, porque muchas reglas leen ficheros que solo root puede ver: ```bash sudo mkdir -p /var/lib/oscap sudo oscap xccdf eval \ --profile xccdf_org.ssgproject.content_profile_cis_level1_server \ --results-arf /var/lib/oscap/arf-cis-l1.xml \ --report /var/lib/oscap/informe-cis-l1.html \ "$DS" ``` Durante el escaneo verás cada regla con su resultado: ```output Title Ensure SSH root login is disabled Rule xccdf_org.ssgproject.content_rule_sshd_disable_root_login Ident CCE-... Result pass Title Ensure auditd service is enabled Rule xccdf_org.ssgproject.content_rule_service_auditd_enabled Result fail ``` El código de salida indica el resultado global: `0` si todas las reglas pasan, `2` si alguna falla y `1` si hubo un error en la evaluación. Que termine con `2` es lo normal en un primer escaneo. Cuenta las reglas por resultado: ```bash sudo grep -o 'result>[a-z]*failnotapplicablepass Advertencia: la remediación cambia SSH, PAM, módulos del kernel, sysctl y reglas de auditoría. Léela entera, elimina los bloques que no apliquen a tu servidor (por ejemplo, desactivar el reenvío IP en un host de Docker) y pruébala primero en un servidor de pruebas con acceso por consola. Revisa el script y, cuando estés conforme, ejecútalo guardando la salida: ```bash sudo less /var/lib/oscap/remediacion-cis-l1.sh sudo bash /var/lib/oscap/remediacion-cis-l1.sh 2>&1 | sudo tee /var/lib/oscap/remediacion.log ``` Reinicia el servidor y repite el escaneo del paso 4 con otros nombres de fichero. El número de reglas en `fail` debería bajar considerablemente; las que queden suelen necesitar decisiones manuales, como particiones separadas. ## Paso 6: Buscar vulnerabilidades conocidas con OVAL Además de configuración, OpenSCAP evalúa definiciones OVAL de vulnerabilidades. Canonical publica una para cada versión de Ubuntu, con todos sus avisos de seguridad (USN): ```bash cd /tmp wget https://security-metadata.canonical.com/oval/com.ubuntu.noble.usn.oval.xml.bz2 bunzip2 -f com.ubuntu.noble.usn.oval.xml.bz2 ``` Evalúa el sistema y genera el informe: ```bash oscap oval eval \ --report /var/lib/oscap/informe-usn.html \ com.ubuntu.noble.usn.oval.xml ``` En la salida, cada definición con resultado `true` es un aviso de seguridad cuyo parche no está instalado: ```bash oscap oval eval com.ubuntu.noble.usn.oval.xml | grep -c ': true' ``` ```output 3 ``` Si el número es mayor que cero, `sudo apt update && sudo apt upgrade` suele resolverlo. Descarga el fichero OVAL de nuevo antes de cada escaneo, ya que se actualiza a diario. ## Paso 7: Programar un escaneo semanal Un escaneo aislado solo dice cómo estaba el sistema ese día. Programar uno semanal te permite detectar desviaciones, por ejemplo cuando alguien reactiva el acceso root por SSH. Crea el script: ```bash sudo nano /usr/local/sbin/oscap-weekly ``` ```bash #!/usr/bin/env bash set -euo pipefail ds="/usr/local/share/scap/ssg-ubuntu2404-ds.xml" profile="xccdf_org.ssgproject.content_profile_cis_level1_server" outdir="/var/lib/oscap/$(date +%F)" mkdir -p "$outdir" rc=0 oscap xccdf eval \ --profile "$profile" \ --results-arf "$outdir/arf.xml" \ --report "$outdir/informe.html" \ "$ds" > "$outdir/salida.txt" 2>&1 || rc=$? # 0 = todo correcto, 2 = alguna regla falla; cualquier otro código es un error if [ "$rc" -ne 0 ] && [ "$rc" -ne 2 ]; then echo "oscap terminó con error (código $rc), revisa $outdir/salida.txt" >&2 exit "$rc" fi fails=$(grep -o 'result>fail