Descripció dels serveis de Cyberwatch

El conjunt de programari Cyberwatch es basa en l’ús d’imatges Docker. Com a orquestrador, podeu utilitzar Docker swarm o Kubernetes. Els contenidors ofereixen un conjunt de serveis que es comuniquen entre si i que constitueixen els components del conjunt de programari.

Aquesta documentació enumera i descriu tots els serveis necessaris per al funcionament del conjunt de programari Cyberwatch, així com la seva presència o absència als servidors de Cyberwatch segons el tipus d’arquitectura triat.

L’estat d’aquests serveis es pot consultar des del servidor de Cyberwatch amb l’ordre següent:

sudo cyberwatch status

Si no tots els serveis estan en execució, consulteu els registres del servei.

Descripció de cada servei

db
Base de dades MariaDB on s’emmagatzemen les dades de l’aplicació.
nginx
Servidor web responsable de la interfície entre l’aplicació i l’exterior. Per defecte, el contenidor exposa els ports 80 i 443 a l’exterior. El servei redirigeix les sol·licituds al contenidor adequat (web, kibana, third_parties).
web
Contenidor Olympe responsable del tractament de les sol·licituds web.
sidekiq_master
Contenidor Olympe responsable de l’execució dels treballs en mode asíncron. El servei tracta les tasques que s’han d’executar al node mestre. El servei es va afegir amb la versió 5.21 de la plataforma base.
sidekiq
Semblant a sidekiq_master, amb la diferència que el servei està disponible a tots els tipus de node. El servei tracta les tasques que no s’han d’executar en un escàner concret.
sidekiq_node
Semblant a sidekiq, però s’utilitza per executar les tasques en un escàner concret. En particular, és responsable de la connexió a les màquines supervisades amb connexió sense agent.
cron
Planificador de les tasques de l’aplicació. Suprimit a les versions de la plataforma base iguals o superiors a la 5.21.
redis
Base de dades en RAM que s’utilitza per a la pila de tasques.
cache
Base de dades en RAM que s’utilitza per a la memòria cau de l’aplicació.
elasticsearch
Contenidor responsable dels índexs Elasticsearch.
kibana
Eina de visualització que permet crear taulers personalitzats.
web-scanner
Navegador web per als escanejos d’objectius de xarxa i de llocs web. També genera els informes PDF.
container-scanner
Motor dels escanejos de les imatges Docker.
third_parties
Contenidor que conté el fitxer cab de Windows.

Serveis esperats a cada node

ServeiNode mestreNode satèl·lit independent
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) Només a les versions de la plataforma base iguals o inferiors a la 5.20.
(2) Només als nodes fora de línia.
(3) Absent si s’utilitza una base de dades o un servidor redis extern.
(4) Absent quan la variable CBW_DISABLE_ELK està activada.

En un clúster de nodes independents, els nodes satèl·lit utilitzen els serveis propis del node mestre (base de dades, pila de tasques, Elastic Stack):

flowchart TB
  U["Navegador / API"] -- "80 / 443" --> NG
  subgraph MASTER["Node mestre"]
    NG["nginx"] --> WEB["web-application"]
    NG --> KIB["kibana"]
    NG -. "fora de línia" .-> TP["third_parties"]
    WEB --> DB[("db")]
    SKM["sidekiq_master"] --> REDIS[("redis")]
    KIB --> ES[("elasticsearch")]
  end
  subgraph SAT["Node satèl·lit independent"]
    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