
Scanner de vulnerabilidades de código aberto com descoberta automatizada de rede, detecção baseada em CVE, pontuação CVSS, painéis de risco, agentes remotos via gRPC e uma interface web moderna para equipes de segurança 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)  O Sirius é um scanner de vulnerabilidades de código aberto com descoberta automatizada, detecção baseada em CVE e uma interface web moderna. Clone, execute quatro comandos e comece a escanear. ## Início 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 faça login: | | | |---|---| | **E-mail** | `[email protected]` | | **Senha** | impressa pelo instalador (procure por `INITIAL_ADMIN_PASSWORD` na saída) | É isso. Todos os seis serviços são iniciados automaticamente. O instalador gera segredos seguros na primeira execução e é seguro reexecutá-lo. Por padrão, o instalador deixa `IMAGE_TAG` vazio, então o Compose baixa **`latest`** do GHCR. Para fixar uma versão (por exemplo, `v1.0.0` no `.env`), faça isso somente após essa tag existir para **todas as seis** imagens de contêiner; verifique com `bash scripts/verify-ghcr-public-access.sh v1.0.0` em um shell que não esteja logado no `ghcr.io`. > **Requisitos:** Docker Engine 20.10+ com Compose V2, 4 GB de RAM, 10 GB de disco. Funciona no Linux, macOS e Windows (WSL2). ## O que o Sirius Faz - **Descoberta de Rede** – enumeração automatizada de hosts e serviços via Nmap - **Detecção de Vulnerabilidades** – varredura baseada em CVE com pontuação CVSS - **Painéis de Risco** – progresso da varredura em tempo real, tendências de gravidade e orientação de remediação - **Agentes Remotos** – varredura distribuída em vários ambientes via gRPC - **Terminal Interativo** – console PowerShell para scripts avançados e automação - **API REST** – integração com fluxos de trabalho de segurança existentes (autenticação `X-API-Key` na porta 9001) ## Opções de Implantação A etapa do instalador é sempre a mesma. Apenas o comando `docker compose up` muda. | Modo | Comando | Caso de uso | |------|---------|-------------| | **Padrão** | `docker compose up -d` | Maioria dos usuários – baixa a stack completa de release do GHCR | | **Desenvolvimento** | `docker compose -f docker-compose.yaml -f docker-compose.dev.yaml up -d` | Recarga automática para trabalho local com código | | **Build a partir do código** | `docker compose -f docker-compose.yaml -f docker-compose.build.yaml up -d --build` | Builds explícitos locais de toda a stack | | **Produção** | `docker compose -f docker-compose.yaml -f docker-compose.prod.yaml up -d` | Configurações reforçadas, `pull_policy: always` | ### Configuração não interativa (CI / Terraform / automação) ```bash docker compose -f docker-compose.installer.yaml run --rm sirius-installer --non-interactive --no-print-secrets docker compose up -d ``` ### Rotacionar segredos ```bash docker compose -f docker-compose.installer.yaml run --rm sirius-installer --force docker compose up -d --force-recreate ``` ## Verificar Instalação ```bash docker compose ps # todos os 6 serviços devem mostrar "healthy" ou "running" curl http://localhost:3000 # UI responde curl http://localhost:9001/health # API responde ``` Serviços esperados: `sirius-ui` (3000), `sirius-api` (9001), `sirius-engine` (5174, 50051), `sirius-postgres` (5432), `sirius-rabbitmq` (5672, 15672), `sirius-valkey` (6379). ## Arquitetura ```mermaid graph TD subgraph clients [Clients] UI["Sirius UI (Next.js)"] CLI["Terminal and Agent Runtime"] end subgraph core [Core Services] API["Sirius API (Go/Gin)"] Engine["Sirius Engine"] end subgraph infra [Infrastructure] 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 ``` | Serviço | Tecnologia | Portas | Propósito | |---------|------------|--------|-----------| | **sirius-ui** | Next.js 14, React, Tailwind | 3000 | Interface web | | **sirius-api** | Go, Gin | 9001 | API REST e lógica de negócios | | **sirius-engine** | Go + agente gRPC embutido | 5174, 50051 | Serviços de scanner, terminal e agente | | **sirius-postgres** | PostgreSQL 15 | 5432 | Dados de vulnerabilidades e varreduras | | **sirius-rabbitmq** | RabbitMQ | 5672, 15672 | Mensageria entre serviços | | **sirius-valkey** | Valkey (compatível com Redis) | 6379 | Dados de cache e sessão | ## Interface | Painel | Scanner | Navegador de Vulnerabilidades | |--------|---------|-----------------------------| |  |  |  | | Ambiente | Detalhes do Host | Terminal | |----------|------------------|----------| |  |  |  | ## API O Sirius expõe endpoints REST na porta 9001, protegidos pela **chave de API interna do serviço**. Prefira o arquivo de segredo do Docker (`SIRIUS_API_KEY_FILE`, padrão `/run/secrets/sirius_api_key`); `SIRIUS_API_KEY` continua sendo suportado como fallback de variável de ambiente. O instalador escreve `./secrets/sirius_api_key.txt` (modo **0644** para que UIDs de aplicativos não-root possam ler o segredo montado via bind) e configura ambos. ```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" ``` Documentação completa da API: [Referência da API REST](https://sirius.opensecurity.com/docs/api/rest/authentication) ## Recomendações de Segurança Para implantações em produção: 1. **Rotacione segredos** – execute o instalador com `--force` para regenerar todas as credenciais 2. **Restrinja portas** – exponha apenas a porta 3000 (UI); mantenha 5432, 6379, 5672 internas 3. **Use um proxy reverso** – coloque nginx ou Traefik na frente com TLS 4. **Mantenha as imagens atualizadas** – `docker compose pull && docker compose up -d` ## Solução de Problemas Correções rápidas para problemas comuns: | Problema | Correção | |----------|----------| | Serviços não iniciam | `docker compose logs <serviço>` para encontrar o erro | | Sobreposição de dev sem infraestrutura | Use ambos os arquivos: `-f docker-compose.yaml -f docker-compose.dev.yaml` | | Conflito de porta | `lsof -i :3000` para encontrar o processo conflitante | | Erro de conexão com banco de dados | `docker exec sirius-postgres pg_isready` | | Segredos obsoletos após reset | Reexecute o instalador, depois `docker compose up -d --force-recreate` | Para runbooks operacionais detalhados, procedimentos de verificação e recuperação de emergência, consulte [Operações & Solução de Problemas](https://github.com/siriusscan/sirius/blob/main/documentation/OPERATIONS.md). ## Contribuindo Consulte [CONTRIBUTING.md](https://github.com/siriusscan/sirius/blob/main/CONTRIBUTING.md) para configuração de desenvolvimento, padrões de codificação e diretrizes de PR. **Links rápidos:** [Issues](https://github.com/SiriusScan/Sirius/issues) | [Discussões](https://github.com/SiriusScan/Sirius/discussions) | [Discord](https://sirius.opensecurity.com/community) ## Leitura Adicional - [Guia de Instalação](https://sirius.opensecurity.com/docs/getting-started/installation) - [Tour pela Interface](https://sirius.opensecurity.com/docs/getting-started/interface-tour) - [Guia de Varredura](https://sirius.opensecurity.com/docs/guides/scanning) - [Arquitetura Docker](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.docker-architecture.md) - [Arquitetura do Sistema](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.architecture.md) - [Guia de CI/CD](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.cicd.md) - [Operações & Solução de Problemas](https://github.com/siriusscan/sirius/blob/main/documentation/OPERATIONS.md) ## Licença [MIT](https://github.com/siriusscan/sirius/blob/main/LICENSE)