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
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 CyberwatchIniciar sesión en la interfaz web de la instancia Cyberwatch con una cuenta Administrador
Ir a la pagina vista general de admin
Hacer clic en el botón “Subir”, cerca del titulo “Base de datos de seguridad”
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
Exportar las variables de conexión a Cyberwatch en el entorno (completar con las credenciales proporcionadas por Cyberwatch):
export CBW_USER= export CBW_PASSWORD=Recuperar la base de datos de vulnerabilidades:
curl -u "$CBW_USER:$CBW_PASSWORD" \ -sf https://dl.cyberwatch.com/download_database \ -o vulnerability_db.zip(Opcional) Verificar la integridad de la base de datos de vulnerabilidades:
Extraer el archivo:
unzip vulnerability_db.zipRecuperar la clave publica de Cyberwatch:
curl https://dl.cyberwatch.com/securitydb/cyberwatch.pub -o cyberwatch.pubCalcular el sha256 de la base:
head -c -1 cyberwatch.db | sha256sum | cut -f1 -d' ' | tr -d '\n' > cyberwatch.db.sha256Verificar la firma:
openssl dgst -sha256 -verify cyberwatch.pub -signature cyberwatch.sig cyberwatch.db.sha256El resultado de este comando debe ser
Verified OK.
Importar el archivo en Cyberwatch
Importar el archivo
vulnerability_db.zipa la maquina donde Cyberwatch esta instaladoConectarse por SSH a la maquina donde Cyberwatch esta instalado
Mover el archivo
.zipa la carpeta/var/lib/cyberwatch/security_database:mv vulnerability_db.zip /var/lib/cyberwatch/security_database/vulnerability_db.zipCon Podman, es necesario otorgar permisos sobre el archivo al usuario
cyberwatch:
sudo chown cyberwatch:cyberwatch /var/lib/cyberwatch/security_database/vulnerability_db.zipReiniciar Cyberwatch:
sudo cyberwatch restartImportar 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