Descrizione dei servizi Cyberwatch

La suite software Cyberwatch si basa sull’utilizzo di immagini Docker. È possibile utilizzare Docker swarm o Kubernetes come orchestratore. I container offrono un insieme di servizi che comunicano tra loro e costituiscono i componenti della suite software.

Questa documentazione elenca e descrive tutti i servizi necessari al funzionamento della suite software Cyberwatch, nonché la loro presenza o assenza sui server Cyberwatch in base al tipo di architettura scelto.

Lo stato di questi servizi può essere consultato dal server Cyberwatch tramite il comando seguente:

sudo cyberwatch status

Nel caso in cui non tutti i servizi siano in esecuzione, consultare i log del servizio.

Descrizione di ciascun servizio

db
Database MariaDB in cui sono memorizzati i dati dell’applicazione.
nginx
Server web responsabile dell’interfaccia tra l’applicazione e l’esterno. Per impostazione predefinita, il container espone le porte 80 e 443 verso l’esterno. Il servizio reindirizza le richieste al container appropriato (web, kibana, third_parties).
web
Container Olympe responsabile dell’elaborazione delle richieste web.
sidekiq_master
Container Olympe responsabile dell’esecuzione dei job in modalità asincrona. Il servizio elabora i job che devono essere eseguiti sul nodo master. Il servizio è stato aggiunto con la piattaforma di base in versione 5.21.
sidekiq
Simile a sidekiq_master, con la differenza che il servizio è disponibile su tutti i tipi di nodo. Il servizio elabora i job che non devono essere eseguiti su uno scanner specifico.
sidekiq_node
Simile a sidekiq, ma utilizzato per eseguire i job su uno scanner specifico. È responsabile in particolare della connessione alle macchine monitorate tramite connessione agentless.
cron
Scheduler dei job dell’applicazione. Rimosso nelle piattaforme di base in versione 5.21 o successiva.
redis
Database in RAM utilizzato per la coda dei job.
cache
Database in RAM utilizzato per la cache dell’applicazione.
elasticsearch
Container responsabile degli indici Elasticsearch.
kibana
Strumento di visualizzazione che consente la creazione di dashboard personalizzate.
web-scanner
Browser web per le scansioni dei target di rete e dei siti web. Genera anche i report PDF.
container-scanner
Motore delle scansioni delle immagini Docker.
third_parties
Container contenente il file cab di Windows.

Servizi previsti su ciascun nodo

ServizioNodo masterNodo satellite indipendente
db✓(3) 
nginx✓✓
web✓✓
sidekiq_master✓ 
sidekiq✓✓
sidekiq_node✓✓
cron✓(1) 
redis✓(3) 
cache✓✓
elasticsearch✓(4) 
kibana✓(4) 
web-scanner✓✓
container-scanner✓✓
third_parties✓(2)✓(2)

(1) Solo nelle versioni della piattaforma di base fino alla 5.20 inclusa.
(2) Solo sui nodi offline.
(3) Assente in caso di utilizzo di un database o di un server Redis esterno.
(4) Assente quando la variabile CBW_DISABLE_ELK è attivata.

In un cluster di nodi indipendenti, i servizi specifici del nodo master (database, coda dei job, Elastic Stack) vengono utilizzati dai nodi satellite:

flowchart TB
  U["Browser / API"] -- "80 / 443" --> NG
  subgraph MASTER["Nodo master"]
    NG["nginx"] --> WEB["web-application"]
    NG --> KIB["kibana"]
    NG -. "offline" .-> TP["third_parties"]
    WEB --> DB[("db")]
    SKM["sidekiq_master"] --> REDIS[("redis")]
    KIB --> ES[("elasticsearch")]
  end
  subgraph SAT["Nodo satellite indipendente"]
    direction LR
    NG2["nginx"] --> WEB2["web-application"]
    WRK["sidekiq, sidekiq_node, cache,<br/>web-scanner, container-scanner"]
  end
  SAT -- "TCP 3306" --> DB
  SAT -- "TCP 6379" --> REDIS