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
| Servei | Node mestre | Node 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