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
| Servizio | Nodo master | Nodo 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