refactor: distribute Acaua as a Docker image instead of a desktop app
Release / Plan (reuse the published image?) (push) Successful in 3s
CI / Docker image (build and smoke test) (push) Skipped
CI / Format and clippy (push) Successful in 4m32s
CI / Dependency audit (push) Successful in 11s
CI / Tests (Linux) (push) Successful in 9m15s
Release / ci (push) Successful in 9m18s
Release / Build image (arm64) (push) Failing after 7m7s
Release / Build image (amd64) (push) Failing after 13m53s
Release / Publish tags (push) Skipped
Release / Gitea release (push) Skipped
Release / Plan (reuse the published image?) (push) Successful in 3s
CI / Docker image (build and smoke test) (push) Skipped
CI / Format and clippy (push) Successful in 4m32s
CI / Dependency audit (push) Successful in 11s
CI / Tests (Linux) (push) Successful in 9m15s
Release / ci (push) Successful in 9m18s
Release / Build image (arm64) (push) Failing after 7m7s
Release / Build image (amd64) (push) Failing after 13m53s
Release / Publish tags (push) Skipped
Release / Gitea release (push) Skipped
Acaua is a collective SOC daemon consuming only Zeek log files, not a single-user tool needing local hardware like its siblings. Drop the Tauri desktop shell, installers and self-update entirely; the server and its web dashboard ship as a container, updated by pulling a new image tag. Link against the official prebuilt libduckdb instead of compiling it from source via the bundled feature, cutting image build time from 15+ minutes to about 3. Fix a real bug found along the way: as PID 1 in a container, the daemon ignored SIGTERM and was always killed after the stop timeout; it now shuts down gracefully. Also corrects the Pillar 1 beaconing score: the period estimate had a harmonic alias (a perfectly periodic 4h series resolved to 600s), and the old score formula flagged pure random traffic as suspicious (p95 = 0.839 on Poisson noise). The new formula was validated against 300 samples per scenario. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VAyr8d7HuAdUGB6aA5xmDD
This commit is contained in:
1 parent
1b974bb90d
commit
8a80504c45
72 files changed
+2524
-6384
No files matched your search
+24
-36
@@ -2,56 +2,44 @@
|
||||
|
||||
[English](ROADMAP.md) · **Português**
|
||||
|
||||
Este roadmap separa o que existe do que está planejado. Os quatro pilares **não
|
||||
estão implementados** em `0.1.0`; eles são o próximo bloco de trabalho.
|
||||
Este roadmap separa o que existe do que está planejado. Os quatro pilares estão
|
||||
**em desenvolvimento**; eles representam o trabalho analítico principal.
|
||||
|
||||
## Feito
|
||||
|
||||
- Workspace Rust com `acaua-core` e `acaua-cli`.
|
||||
- Esqueleto da CLI, esqueleto da API Axum e UI vanilla embutida.
|
||||
- Shell desktop Tauri com configurações de idioma e tema.
|
||||
- Stubs dos quatro pilares, fusão de evidências, armazenamento, ingestão Zeek e
|
||||
updater baseado em Gitea.
|
||||
- Comandos CLI, API Axum e dashboard web embutido.
|
||||
- Containerização 100% Docker, implantação Compose, perfil endurecido não-root.
|
||||
- Linkagem da DuckDB pré-compilada e fundações de armazenamento Parquet.
|
||||
- Stubs dos quatro pilares, fusão de evidências e ingestão Zeek.
|
||||
- Documentação em inglês/português, workflows de CI/release e `scripts/check.sh`.
|
||||
- Testes de fumaça determinísticos e checagem bilíngue da UI.
|
||||
- Testes determinísticos de fumaça e checagem de tradução bilíngue da UI.
|
||||
|
||||
## Próximo
|
||||
|
||||
1. **Pilar 1 — beaconing.** Implementar o periodograma de Rayleigh/Schuster
|
||||
sobre timestamps de eventos, adicionar Lomb–Scargle generalizado só quando
|
||||
existir um `y` real e entregar fixtures douradas com valores esperados fixos.
|
||||
1. **Pilar 1 — beaconing.** Implementar o periodograma de Rayleigh/Schuster sobre
|
||||
timestamps de eventos, resistência a harmônicos e validação com fixtures determinísticas.
|
||||
2. **Pilar 2 — sessões persistentes.** Detectar conexões longas que nunca
|
||||
produzem um intervalo curto, com limiares explícitos e sem sobreposição com o
|
||||
pilar 1.
|
||||
3. **Parser Zeek real.** Ler `conn.log`, `dns.log`, `ssl.log` e logs de
|
||||
protocolo com memória limitada, confinamento de caminho e ordem determinística.
|
||||
4. **Registro de evidência.** Emitir um JSON por alerta com entradas, valores
|
||||
intermediários, versão do código e hash do dataset.
|
||||
produzem intervalos curtos, com limiares explícitos sem sobreposição ao pilar 1.
|
||||
3. **Parser Zeek real.** Ler `conn.log`, `dns.log`, `ssl.log` e logs de protocolo
|
||||
com memória delimitada, confinamento de caminhos e ordem determinística.
|
||||
4. **Registro de evidência.** Emitir registro JSON por alerta contendo entradas,
|
||||
valores intermediários, versão do código e hash do dataset.
|
||||
|
||||
## Depois
|
||||
|
||||
- Pilar 3 — anomalias determinísticas de protocolo, incluindo identidade e
|
||||
movimento lateral.
|
||||
- Pilar 4 — fusão limitada e simétrica, com pesos reproduzíveis.
|
||||
- Armazenamento DuckDB/Parquet atrás da feature opcional `duckdb`, com TTL de
|
||||
sete dias e comando de exportação.
|
||||
- Visão de dataset no desktop, detalhe de alerta com evidência e execuções
|
||||
agendadas do `serve`.
|
||||
- NetFlow/IPFIX como modo degradado documentado e Suricata EVE JSON como entrada
|
||||
secundária opcional.
|
||||
- Metadados de release assinados, SBOM e builds reproduzíveis.
|
||||
movimentação lateral.
|
||||
- Pilar 4 — fusão limitada e simétrica com pesos reproduzíveis.
|
||||
- Otimizações no store analítico, particionamento diário Parquet e limpeza por TTL.
|
||||
- Ingestão agendada e tratamento automático de rotação de logs em modo daemon.
|
||||
- NetFlow/IPFIX como modo degradado documentado e Suricata EVE JSON como entrada secundária.
|
||||
- Metadados assinados de release, SBOM e builds reproduzíveis.
|
||||
|
||||
## Fora de plano
|
||||
|
||||
- Pontuação por IA opaca que não explica um alerta.
|
||||
- Serviço de nuvem obrigatório ou pipeline de telemetria.
|
||||
- Pontuação por IA opaca que não consiga explicar um alerta.
|
||||
- Serviço em nuvem obrigatório ou pipeline de telemetria.
|
||||
- Python no runtime distribuído.
|
||||
- Tratar registros de fluxo como equivalentes a logs completos de protocolo Zeek.
|
||||
- Auto-atualização automática do desktop.
|
||||
|
||||
## Versionamento
|
||||
|
||||
O projeto segue SemVer 2.0.0. `0.x` significa que a API e a saída de detecção
|
||||
podem mudar entre versões menores. Uma versão `1.0.0` vai exigir formato de
|
||||
evidência estável, limiares documentados e caminho de migração para dados
|
||||
armazenados.
|
||||
- Tratar registros de fluxo como equivalentes a logs Zeek completos.
|
||||
- Shell desktop nativo ou auto-modificação de binário.
|
||||
Reference in new issue
Block a user