Importare o aggiornare il database delle vulnerabilità con Swarm o Podman

Questa procedura descrive come aggiornare il database delle vulnerabilità di un’istanza Cyberwatch distribuita in modalità offline con Docker Swarm o Podman.

Il database delle vulnerabilità può essere aggiornato da un browser web o da riga di comando. L’importazione da browser è adatta a un aggiornamento occasionale del database delle vulnerabilità. Al contrario, l’importazione da riga di comando è più adatta a un utilizzo frequente, poiché può essere automatizzata.

Prerequisiti

La procedura di importazione del database delle vulnerabilità richiede:

  • una macchina connessa a Internet
  • credenziali valide per l’accesso al repository del software Cyberwatch
  • un’istanza Cyberwatch aggiornata e distribuita in modalità offline con Swarm o Podman

Da un browser

Questa sezione descrive come recuperare e importare il database delle vulnerabilità da un browser web. È adatta a un utilizzo occasionale

  1. Scaricare l’archivio delle vulnerabilità dall’indirizzo https://dl.cyberwatch.com/download_database. L’accesso è protetto da un’autenticazione basic auth. Le credenziali di accesso sono fornite da Cyberwatch

  2. Accedere all’interfaccia web dell’istanza Cyberwatch con un account Amministratore

  3. Accedere alla pagina panoramica di amministrazione

  4. Cliccare sul pulsante «Carica», accanto al titolo «Database di sicurezza»

  5. Importare il file scaricato in precedenza e cliccare su «Aggiorna»

Da riga di comando

Questa sezione descrive come recuperare e importare il database delle vulnerabilità da riga di comando. È pensata per essere automatizzata.

Recuperare il database

  1. Esportare nell’ambiente le variabili di connessione a Cyberwatch (completare con le credenziali fornite da Cyberwatch):

     export CBW_USER=
     export CBW_PASSWORD=
    
  2. Recuperare il database delle vulnerabilità:

    curl -u "$CBW_USER:$CBW_PASSWORD" \
       -sf https://dl.cyberwatch.com/download_database \
       -o vulnerability_db.zip
    
  3. (Facoltativo) Verificare l’integrità del database delle vulnerabilità:

    1. Estrarre l’archivio:

      unzip vulnerability_db.zip
      
    2. Recuperare la chiave pubblica di Cyberwatch:

      curl https://dl.cyberwatch.com/securitydb/cyberwatch.pub -o cyberwatch.pub
      
    3. Calcolare lo SHA-256 del database:

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

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

      Il risultato di questo comando deve essere Verified OK.

Importare l’archivio in Cyberwatch

  1. Copiare l’archivio vulnerability_db.zip sulla macchina in cui è installato Cyberwatch

  2. Connettersi in SSH alla macchina in cui è installato Cyberwatch

  3. Spostare il file .zip nella directory /var/lib/cyberwatch/security_database:

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

    Con Podman, è necessario assegnare i diritti sull’archivio all’utente cyberwatch:
    sudo chown cyberwatch:cyberwatch /var/lib/cyberwatch/security_database/vulnerability_db.zip

  4. Riavviare Cyberwatch:

    sudo cyberwatch restart
    
  5. Importare i dati del database delle vulnerabilità:

    sudo cyberwatch exec sidekiq_master security_database_import_task
    

Automatizzare l’importazione tramite un job cron

È possibile automatizzare l’importazione del database di sicurezza ad esempio tramite un job cron pianificato.

L’eseguibile cyberwatch consente di eseguire comandi direttamente nei container Cyberwatch tramite il comando cyberwatch exec. Questo comando equivale all’utilizzo del comando docker exec -it, che consente di eseguire un comando tramite una shell interattiva in un container.

Questo approccio non funziona tuttavia per gli script eseguiti da una crontab, che non può utilizzare una shell interattiva.

L’utilizzo del comando cyberwatch exec con le impostazioni predefinite in uno script richiamato da cron non avrà quindi alcun effetto.

La soluzione consiste nel richiamare l’utility cyberwatch in modalità non interattiva. Il comando di sincronizzazione del database potrebbe quindi essere:

sudo exec_interactive=false cyberwatch exec sidekiq_master security_database_import_task

L’impostazione di un job cron potrebbe avvenire nel modo seguente tramite un utente sudoer:

# Ouverture de l'éditeur crontab
sudo crontab -e

# A la fin de l'éditeur, placer la ligne suivante qui permet un lancement de la tâche d'import tous les jours à 08h00 du matin :
0 8 * * * exec_interactive=false cyberwatch exec sidekiq_master security_database_import_task