
Scanner di vulnerabilità open-source con rilevamento automatico della rete, rilevamento basato su CVE, punteggio CVSS, dashboard di rischio, agenti remoti tramite gRPC e una moderna interfaccia web per team di sicurezza aziendale.
# Sirius Scan [](https://github.com/SiriusScan/Sirius/actions/workflows/ci.yml) [](https://github.com/SiriusScan/Sirius/releases) [](https://github.com/orgs/SiriusScan/packages) [](./LICENSE) [](https://sirius.opensecurity.com/community)  Sirius è uno scanner di vulnerabilità open-source con rilevamento automatico, individuazione basata su CVE e una moderna interfaccia web. Clona, esegui quattro comandi, inizia la scansione. ## Avvio Rapido ```bash git clone https://github.com/SiriusScan/Sirius.git cd Sirius docker compose -f docker-compose.installer.yaml run --rm sirius-installer docker compose up -d ``` Apri **http://localhost:3000** e accedi: | | | |---|---| | **Email** | `[email protected]` | | **Password** | stampato dall'installer (cerca `INITIAL_ADMIN_PASSWORD` nell'output) | Questo è tutto. Tutti e sei i servizi si avviano automaticamente. L'installer genera segreti sicuri al primo avvio ed è sicuro da rieseguire. Per impostazione predefinita, l'installer lascia `IMAGE_TAG` non impostato, quindi Compose scarica **`latest`** da GHCR. Per fissare una release (ad esempio `v1.0.0` in `.env`), fallo solo dopo che quel tag esiste per **tutte e sei** le immagini dei container; verifica con `bash scripts/verify-ghcr-public-access.sh v1.0.0` da una shell che non sia autenticata su `ghcr.io`. > **Requisiti:** Docker Engine 20.10+ con Compose V2, 4 GB di RAM, 10 GB di disco. Funziona su Linux, macOS e Windows (WSL2). ## Cosa fa Sirius - **Scoperta di Rete** -- enumerazione automatica di host e servizi tramite Nmap - **Rilevamento delle Vulnerabilità** -- scansione basata su CVE con punteggio CVSS - **Dashboard di Rischio** -- progresso della scansione in tempo reale, tendenze di gravità e guida alla correzione - **Agenti Remoti** -- scansione distribuita su più ambienti tramite gRPC - **Terminale Interattivo** -- console PowerShell per scripting e automazione avanzati - **API REST** -- integrazione con flussi di lavoro di sicurezza esistenti (autenticazione tramite `X-API-Key` sulla porta 9001) ## Opzioni di Distribuzione Il passo dell'installer è sempre lo stesso. Cambia solo il comando `docker compose up`. | Modalità | Comando | Caso d'uso | |----------|---------|------------| | **Standard** | `docker compose up -d` | Maggior parte degli utenti -- scarica l'intero stack di release da GHCR | | **Sviluppo** | `docker compose -f docker-compose.yaml -f docker-compose.dev.yaml up -d` | Ricarica live per lavoro su codice locale | | **Build da Sorgente** | `docker compose -f docker-compose.yaml -f docker-compose.build.yaml up -d --build` | Build esplicite complete locali | | **Produzione** | `docker compose -f docker-compose.yaml -f docker-compose.prod.yaml up -d` | Impostazioni rafforzate, `pull_policy: always` | ### Configurazione non interattiva (CI / Terraform / automazione) ```bash docker compose -f docker-compose.installer.yaml run --rm sirius-installer --non-interactive --no-print-secrets docker compose up -d ``` ### Ruota i segreti ```bash docker compose -f docker-compose.installer.yaml run --rm sirius-installer --force docker compose up -d --force-recreate ``` ## Verifica dell'Installazione ```bash docker compose ps # tutti e 6 i servizi dovrebbero mostrare "healthy" o "running" curl http://localhost:3000 # L'interfaccia risponde curl http://localhost:9001/health # L'API risponde ``` Servizi previsti: `sirius-ui` (3000), `sirius-api` (9001), `sirius-engine` (5174, 50051), `sirius-postgres` (5432), `sirius-rabbitmq` (5672, 15672), `sirius-valkey` (6379). ## Architettura ```mermaid graph TD subgraph clients [Clienti] UI["Sirius UI (Next.js)"] CLI["Runtime Terminale e Agente"] end subgraph core [Servizi Core] API["Sirius API (Go/Gin)"] Engine["Sirius Engine"] end subgraph infra [Infrastruttura] MQ["RabbitMQ"] DB["PostgreSQL"] Cache["Valkey"] end UI -->|"HTTP/WebSocket"| API CLI -->|"gRPC"| Engine API -->|"Pubblicazione AMQP"| MQ MQ -->|"Consumo coda"| Engine API -->|"Lettura/scrittura SQL"| DB Engine -->|"Lettura/scrittura SQL"| DB API -->|"Operazioni sessione/cache"| Cache Engine -->|"Operazioni cache stato scansione"| Cache ``` | Servizio | Tecnologia | Porte | Scopo | |----------|------------|-------|-------| | **sirius-ui** | Next.js 14, React, Tailwind | 3000 | Interfaccia web | | **sirius-api** | Go, Gin | 9001 | API REST e logica di business | | **sirius-engine** | Go + agente gRPC incorporato | 5174, 50051 | Scanner, terminale, servizi agente | | **sirius-postgres** | PostgreSQL 15 | 5432 | Dati di vulnerabilità e scansione | | **sirius-rabbitmq** | RabbitMQ | 5672, 15672 | Messaggistica tra servizi | | **sirius-valkey** | Valkey (compatibile Redis) | 6379 | Cache e dati di sessione | ## Interfaccia | Dashboard | Scanner | Navigatore di Vulnerabilità | |-----------|---------|----------------------------| |  |  |  | | Ambiente | Dettagli Host | Terminale | |----------|---------------|-----------| |  |  |  | ## API Sirius espone endpoint REST sulla porta 9001, protetti dalla **chiave API del servizio interno**. Preferisci il file segreto di Docker (`SIRIUS_API_KEY_FILE`, predefinito `/run/secrets/sirius_api_key`); `SIRIUS_API_KEY` rimane un fallback di ambiente supportato. L'installer scrive `./secrets/sirius_api_key.txt` (modalità **0644** in modo che gli UID delle app non-root possano leggere il segreto montato) e configura entrambi. ```bash curl http://localhost:9001/health -H "X-API-Key: $SIRIUS_API_KEY" curl http://localhost:9001/api/v1/scan/get/all -H "X-API-Key: $SIRIUS_API_KEY" ``` Documentazione API completa: [Riferimento API REST](https://sirius.opensecurity.com/docs/api/rest/authentication) ## Raccomandazioni di Sicurezza Per deployment in produzione: 1. **Ruota i segreti** -- esegui l'installer con `--force` per rigenerare tutte le credenziali 2. **Limita le porte** -- espone solo la porta 3000 (UI); tieni 5432, 6379, 5672 interne 3. **Usa un proxy inverso** -- metti nginx o Traefik davanti con TLS 4. **Mantieni le immagini aggiornate** -- `docker compose pull && docker compose up -d` ## Risoluzione dei Problemi Soluzioni rapide per problemi comuni: | Problema | Soluzione | |----------|-----------| | I servizi non partono | `docker compose logs <servizio>` per trovare l'errore | | Overlay sviluppo manca infrastruttura | Usa entrambi i file: `-f docker-compose.yaml -f docker-compose.dev.yaml` | | Conflitto di porta | `lsof -i :3000` per trovare il processo in conflitto | | Errore di connessione al database | `docker exec sirius-postgres pg_isready` | | Segreti obsoleti dopo reset | Riesegui l'installer, poi `docker compose up -d --force-recreate` | Per manuali operativi dettagliati, procedure di verifica e ripristino di emergenza, vedi [Operazioni e Risoluzione dei Problemi](https://github.com/siriusscan/sirius/blob/main/documentation/OPERATIONS.md). ## Contributi Vedi [CONTRIBUTING.md](https://github.com/siriusscan/sirius/blob/main/CONTRIBUTING.md) per la configurazione dello sviluppo, gli standard di codifica e le linee guida per le PR. **Collegamenti rapidi:** [Issues](https://github.com/SiriusScan/Sirius/issues) | [Discussioni](https://github.com/SiriusScan/Sirius/discussions) | [Discord](https://sirius.opensecurity.com/community) ## Ulteriori Letture - [Guida all'installazione](https://sirius.opensecurity.com/docs/getting-started/installation) - [Tour dell'interfaccia](https://sirius.opensecurity.com/docs/getting-started/interface-tour) - [Guida alla scansione](https://sirius.opensecurity.com/docs/guides/scanning) - [Architettura Docker](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.docker-architecture.md) - [Architettura di Sistema](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.architecture.md) - [Guida CI/CD](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.cicd.md) - [Operazioni e Risoluzione dei Problemi](https://github.com/siriusscan/sirius/blob/main/documentation/OPERATIONS.md) ## Licenza [MIT](https://github.com/siriusscan/sirius/blob/main/LICENSE)