
Escáner de vulnerabilidades de código abierto con descubrimiento automatizado de redes, detección basada en CVE, puntuación CVSS, paneles de riesgo, agentes remotos vía gRPC y una interfaz web moderna para equipos de seguridad empresarial.
# 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 es un escáner de vulnerabilidades de código abierto con descubrimiento automatizado, detección basada en CVE y una interfaz web moderna. Clona el repositorio, ejecuta cuatro comandos y empieza a escanear. ## Inicio rápido ```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 ``` Abra **http://localhost:3000** e inicie sesión: | | | |---|---| | **Correo electrónico** | `[email protected]` | | **Contraseña** | impresa por el instalador (busque `INITIAL_ADMIN_PASSWORD` en la salida) | Eso es todo. Los seis servicios se inician automáticamente. El instalador genera secretos seguros en la primera ejecución y es seguro volver a ejecutarlo. Por defecto, el instalador deja `IMAGE_TAG` sin establecer, por lo que Compose obtiene **`latest`** de GHCR. Para fijar una versión (por ejemplo `v1.0.0` en `.env`), hágalo solo después de que esa etiqueta exista para **todas las seis** imágenes de contenedor; verifique con `bash scripts/verify-ghcr-public-access.sh v1.0.0` desde un shell que no haya iniciado sesión en `ghcr.io`. > **Requisitos:** Docker Engine 20.10+ con Compose V2, 4 GB de RAM, 10 GB de disco. Funciona en Linux, macOS y Windows (WSL2). ## Qué hace Sirius - **Descubrimiento de red** -- enumeración automatizada de hosts y servicios mediante Nmap - **Detección de vulnerabilidades** -- escaneo basado en CVE con puntuación CVSS - **Paneles de riesgo** -- progreso del escaneo en tiempo real, tendencias de severidad y guía de remediación - **Agentes remotos** -- escaneo distribuido en múltiples entornos a través de gRPC - **Terminal interactiva** -- consola PowerShell para scripting avanzado y automatización - **API REST** -- integración con flujos de trabajo de seguridad existentes (autenticación `X-API-Key` en el puerto 9001) ## Opciones de despliegue El paso del instalador siempre es el mismo. Solo cambia el comando `docker compose up`. | Modo | Comando | Caso de uso | |------|---------|----------| | **Estándar** | `docker compose up -d` | La mayoría de usuarios -- obtiene la pila completa de la versión desde GHCR | | **Desarrollo** | `docker compose -f docker-compose.yaml -f docker-compose.dev.yaml up -d` | Recarga en vivo para trabajo local con código | | **Compilación desde fuente** | `docker compose -f docker-compose.yaml -f docker-compose.build.yaml up -d --build` | Compilaciones explícitas de la pila completa local | | **Producción** | `docker compose -f docker-compose.yaml -f docker-compose.prod.yaml up -d` | Configuración reforzada, `pull_policy: always` | ### Configuración no interactiva (CI / Terraform / automatización) ```bash docker compose -f docker-compose.installer.yaml run --rm sirius-installer --non-interactive --no-print-secrets docker compose up -d ``` ### Rotar secretos ```bash docker compose -f docker-compose.installer.yaml run --rm sirius-installer --force docker compose up -d --force-recreate ``` ## Verificar la instalación ```bash docker compose ps # los 6 servicios deberían mostrar "healthy" o "running" curl http://localhost:3000 # la UI responde curl http://localhost:9001/health # la API responde ``` Servicios esperados: `sirius-ui` (3000), `sirius-api` (9001), `sirius-engine` (5174, 50051), `sirius-postgres` (5432), `sirius-rabbitmq` (5672, 15672), `sirius-valkey` (6379). ## Arquitectura ```mermaid graph TD subgraph clients [Clientes] UI["Sirius UI (Next.js)"] CLI["Terminal y runtime de agente"] end subgraph core [Servicios principales] API["Sirius API (Go/Gin)"] Engine["Sirius Engine"] end subgraph infra [Infraestructura] MQ["RabbitMQ"] DB["PostgreSQL"] Cache["Valkey"] end UI -->|"HTTP/WebSocket"| API CLI -->|"gRPC"| Engine API -->|"AMQP publish"| MQ MQ -->|"Queue consume"| Engine API -->|"SQL read/write"| DB Engine -->|"SQL read/write"| DB API -->|"Session/cache ops"| Cache Engine -->|"Scan state cache ops"| Cache ``` | Servicio | Tecnología | Puertos | Propósito | |---------|-----------|-------|---------| | **sirius-ui** | Next.js 14, React, Tailwind | 3000 | Interfaz web | | **sirius-api** | Go, Gin | 9001 | API REST y lógica de negocio | | **sirius-engine** | Go + agente gRPC embebido | 5174, 50051 | Servicios de escáner, terminal y agente | | **sirius-postgres** | PostgreSQL 15 | 5432 | Datos de vulnerabilidades y escaneos | | **sirius-rabbitmq** | RabbitMQ | 5672, 15672 | Mensajería entre servicios | | **sirius-valkey** | Valkey (compatible con Redis) | 6379 | Datos de caché y sesiones | ## Interfaz | Panel de control | Escáner | Navegador de vulnerabilidades | |-----------|---------|------------------------| |  |  |  | | Entorno | Detalles del host | Terminal | |-------------|--------------|----------| |  |  |  | ## API Sirius expone endpoints REST en el puerto 9001, protegidos por la **clave de API de servicio interno**. Prefiera el archivo de secreto de Docker (`SIRIUS_API_KEY_FILE`, por defecto `/run/secrets/sirius_api_key`); `SIRIUS_API_KEY` sigue siendo una alternativa de variable de entorno compatible. El instalador escribe `./secrets/sirius_api_key.txt` (modo **0644** para que los UIDs de aplicaciones no root puedan leer el secreto montado) y configura ambas. ```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" ``` Documentación completa de la API: [Referencia de la API REST](https://sirius.opensecurity.com/docs/api/rest/authentication) ## Recomendaciones de seguridad Para despliegues en producción: 1. **Rote los secretos** -- ejecute el instalador con `--force` para regenerar todas las credenciales 2. **Restrinja los puertos** -- exponga solo el puerto 3000 (UI); mantenga 5432, 6379, 5672 internos 3. **Use un proxy inverso** -- coloque nginx o Traefik al frente con TLS 4. **Mantenga las imágenes actualizadas** -- `docker compose pull && docker compose up -d` ## Solución de problemas Soluciones rápidas para problemas comunes: | Problema | Solución | |---------|-----| | Los servicios no arrancan | `docker compose logs <servicio>` para encontrar el error | | La superposición de desarrollo carece de infraestructura | Use ambos archivos: `-f docker-compose.yaml -f docker-compose.dev.yaml` | | Conflicto de puertos | `lsof -i :3000` para encontrar el proceso conflictivo | | Error de conexión a la base de datos | `docker exec sirius-postgres pg_isready` | | Secretos obsoletos tras reinicio | Vuelva a ejecutar el instalador, luego `docker compose up -d --force-recreate` | Para manuales operativos detallados, procedimientos de verificación y recuperación de emergencia, consulte [Operaciones y solución de problemas](https://github.com/siriusscan/sirius/blob/main/documentation/OPERATIONS.md). ## Contribuciones Consulte [CONTRIBUTING.md](https://github.com/siriusscan/sirius/blob/main/CONTRIBUTING.md) para la configuración de desarrollo, estándares de codificación y directrices para PR. **Enlaces rápidos:** [Incidencias](https://github.com/SiriusScan/Sirius/issues) | [Discusiones](https://github.com/SiriusScan/Sirius/discussions) | [Discord](https://sirius.opensecurity.com/community) ## Lecturas adicionales - [Guía de instalación](https://sirius.opensecurity.com/docs/getting-started/installation) - [Tour de la interfaz](https://sirius.opensecurity.com/docs/getting-started/interface-tour) - [Guía de escaneo](https://sirius.opensecurity.com/docs/guides/scanning) - [Arquitectura Docker](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.docker-architecture.md) - [Arquitectura del sistema](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.architecture.md) - [Guía de CI/CD](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.cicd.md) - [Operaciones y solución de problemas](https://github.com/siriusscan/sirius/blob/main/documentation/OPERATIONS.md) ## Licencia [MIT](https://github.com/siriusscan/sirius/blob/main/LICENSE)