Importar o actualizar la base de vulnerabilidades con Swarm o Podman

Este procedimiento describe como actualizar la base de datos de vulnerabilidades de una instancia Cyberwatch desplegada en modo sin conexión con Docker Swarm o Podman.

La base de datos de vulnerabilidades puede actualizarse desde un navegador web o por linea de comandos. La importacion desde un navegador es adecuada para una actualización puntual de la base de datos de vulnerabilidades. En cambio, la importacion por linea de comandos sera mas adecuada para un uso frecuente, ya que puede automatizarse.

Requisitos previos

El procedimiento de importacion de la base de vulnerabilidades requiere:

  • una maquina conectada a internet
  • credenciales validas para acceder al repositorio del software Cyberwatch
  • una instancia Cyberwatch actualizada desplegada en modo sin conexión con Swarm o Podman

Desde un navegador

Esta sección describe como recuperar e importar la base de datos de vulnerabilidades desde un navegador web. Esta adaptada a un uso puntual

  1. Descargar el archivo de vulnerabilidades desde https://dl.cyberwatch.com/download_database. El acceso esta protegido por autenticación basic auth. Las credenciales de acceso son proporcionadas por Cyberwatch

  2. Iniciar sesión en la interfaz web de la instancia Cyberwatch con una cuenta Administrador

  3. Ir a la pagina vista general de admin

  4. Hacer clic en el botón “Subir”, cerca del titulo “Base de datos de seguridad”

  5. Importar el archivo descargado anteriormente y hacer clic en “Actualizar”

En linea de comandos

Esta sección describe como recuperar e importar la base de datos de vulnerabilidades desde la linea de comandos. Esta pensada para automatizarse.

Recuperar la base de datos

  1. Exportar las variables de conexión a Cyberwatch en el entorno (completar con las credenciales proporcionadas por Cyberwatch):

     export CBW_USER=
     export CBW_PASSWORD=
    
  2. Recuperar la base de datos de vulnerabilidades:

    curl -u "$CBW_USER:$CBW_PASSWORD" \
       -sf https://dl.cyberwatch.com/download_database \
       -o vulnerability_db.zip
    
  3. (Opcional) Verificar la integridad de la base de datos de vulnerabilidades:

    1. Extraer el archivo:

      unzip vulnerability_db.zip
      
    2. Recuperar la clave publica de Cyberwatch:

      curl https://dl.cyberwatch.com/securitydb/cyberwatch.pub -o cyberwatch.pub
      
    3. Calcular el sha256 de la base:

      head -c -1 cyberwatch.db | sha256sum | cut -f1 -d' ' | tr -d '\n' > cyberwatch.db.sha256
      
    4. Verificar la firma:

      openssl dgst -sha256 -verify cyberwatch.pub -signature cyberwatch.sig cyberwatch.db.sha256
      

      El resultado de este comando debe ser Verified OK.

Importar el archivo en Cyberwatch

  1. Importar el archivo vulnerability_db.zip a la maquina donde Cyberwatch esta instalado

  2. Conectarse por SSH a la maquina donde Cyberwatch esta instalado

  3. Mover el archivo .zip a la carpeta /var/lib/cyberwatch/security_database:

    mv vulnerability_db.zip /var/lib/cyberwatch/security_database/vulnerability_db.zip
    

    Con Podman, es necesario otorgar permisos sobre el archivo al usuario cyberwatch:
    sudo chown cyberwatch:cyberwatch /var/lib/cyberwatch/security_database/vulnerability_db.zip

  4. Reiniciar Cyberwatch:

    sudo cyberwatch restart
    
  5. Importar los datos de la base de datos de vulnerabilidades:

    sudo cyberwatch exec sidekiq_master security_database_import_task
    

Automatizar la importacion mediante una tarea cron

Es posible automatizar la importacion de la base de seguridad usando una tarea cron programada, por ejemplo.

El ejecutable cyberwatch permite ejecutar comandos directamente en nuestros contenedores con el comando cyberwatch exec. Este comando equivale al uso del comando docker exec -it que permite ejecutar una orden mediante un shell interactivo en un contenedor.

Sin embargo, este enfoque no funciona para scripts ejecutados desde una crontab, que no puede usar un shell interactivo.

Por lo tanto, usar el comando cyberwatch exec por defecto en un script llamado por cron no tendrá efecto.

La solución consiste en llamar al utilitario cyberwatch en modo no interactivo. El comando de sincronización de la base de datos podría ser:

sudo exec_interactive=false cyberwatch exec sidekiq_master security_database_import_task

La implementación de una tarea cron podría hacerse de la siguiente manera con un usuario sudoer:

# Apertura del editor crontab
sudo crontab -e

# Al final del editor, colocar la linea siguiente que permite ejecutar la tarea de importacion todos los dias a las 08h00 de la manana:
0 8 * * * exec_interactive=false cyberwatch exec sidekiq_master security_database_import_task

Volver arriba

English Français Español