Files
acaua/README.pt-BR.md
T
Lucas RayanandClaude Sonnet 5 8a80504c45
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
refactor: distribute Acaua as a Docker image instead of a desktop app
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
2026-10-31 19:54:45 -03:00

153 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<p align="center"><img src="logo.png" width="300" alt="Acauã"></p>
<h1 align="center">Acauã</h1>
<p align="center">Caça determinística a ameaças em rede.<br>NDR com Zeek como entrada principal · local-first · uso autorizado.</p>
<p align="center"><a href="docs/pt-BR/cli.md">Terminal</a> · <a href="docs/pt-BR/interface.md">Interface</a> · <a href="docs/pt-BR/arquitetura.md">Arquitetura</a> · <a href="docs/pt-BR/docker.md">Docker</a> · <a href="docs/pt-BR/suporte.md">Suporte</a> · <a href="ROADMAP.pt-BR.md">Roadmap</a> · <a href="CHANGELOG.pt-BR.md">Changelog</a></p>
<p align="center"><a href="README.md">English</a> · <b>Português</b></p>
---
**Estado: esqueleto pré-alfa.** A estrutura do projeto, a documentação, o CI e
os stubs que compilam existem. Os quatro pilares matemáticos de detecção, o
parser real de logs Zeek, o armazenamento DuckDB e o motor de alertas estão
**em desenvolvimento** e ainda não são distribuídos. Nada nesta página deve ser
lido como promessa de que a detecção já funciona.
O Acauã é um motor de caça a ameaças em rede construído em torno de evidência
determinística, não de um modelo opaco. O objetivo é responder não só "isto
parece suspeito", mas "estas entradas exatas, com estes valores intermediários,
produziram esta pontuação".
- **Determinístico por projeto:** reduções em ordem fixa, sentinelas
documentados e um registro JSON de evidência para cada alerta futuro.
- **Local-first:** o armazenamento analítico mora dentro do processo; nenhum
banco externo e nenhuma telemetria por padrão.
- **Zeek como entrada principal:** `dns.log`, `ssl.log`, `conn.log` e os logs de
protocolo necessários para identidade e movimento lateral. NetFlow/IPFIX é um
modo degradado documentado, nunca apresentado como equivalente. Suricata EVE
JSON é uma entrada secundária opcional.
- **Daemon servidor e dashboard web:** `acaua serve` roda ingestão contínua,
agendador, API e o dashboard web embutido, distribuído 100% via Docker.
- **Pesquisa fora do produto:** `research/` é um espaço Python isolado para
validação científica e fixtures. Ele nunca é compilado, empacotado ou
distribuído.
## O que existe hoje
| Área | Estado |
|---|---|
| Workspace Rust e stubs da CLI | ✅ compila |
| API Axum com rotas de health, status, alertas e análise | ✅ stub |
| Dashboard web embutido | ✅ shell da UI, servido pelo daemon |
| Documentação e workflows de CI/release | ✅ |
| Imagem Docker multi-arch e deployment com Compose | ✅ |
| Armazenamento analítico DuckDB | ✅ biblioteca oficial pré-compilada linkada |
| Quatro pilares de detecção | 🚧 em desenvolvimento |
| Parser de logs Zeek | 🚧 stub |
| Evidência e pontuação de alertas | 🚧 stub |
| Releases publicadas | ❌ nenhuma ainda |
## Os quatro pilares
Todos os quatro estão **em desenvolvimento**. O roadmap os mantém como trabalho
futuro, não como recurso implementado.
1. **Beaconing:** periodicidade sobre timestamps de eventos com periodograma de
Rayleigh/Schuster, e Lomb–Scargle generalizado só onde existe um `y` real.
2. **Sessões persistentes:** conexões longas que nunca produzem um `Δt` curto e
ficariam invisíveis para um detector de beaconing.
3. **Anomalias de protocolo:** features determinísticas sobre logs de protocolo
do Zeek, incluindo sinais de identidade e movimento lateral.
4. **Fusão de evidências:** combinação limitada e simétrica das pontuações dos
pilares, com um registro de evidência reproduzível por alerta.
As decisões de projeto por trás desses pilares, incluindo as seis correções ao
blueprint original, estão em **[docs/pt-BR/arquitetura.md](docs/pt-BR/arquitetura.md)**.
## Uso autorizado
O Acauã é software defensivo para redes próprias ou para redes que você tem
autorização explícita para monitorar. Capturar ou analisar tráfego de terceiros
sem permissão pode ser ilegal. O operador é responsável por escopo, privacidade e
retenção.
O daemon escuta em `127.0.0.1` por padrão. A implantação via Docker Compose
isola o daemon em um container não privilegiado, somente leitura e sem capabilities.
## Instalação
Executar via Docker Compose (recomendado para operadores):
```bash
cp .env.example .env
docker compose pull && docker compose up -d
```
Ou compilar e rodar localmente com Docker:
```bash
docker compose up -d --build
```
Para compilar do código nativamente (requer Rust 1.88+):
```bash
scripts/fetch-libduckdb.sh ~/.cache/acaua/duckdb
export DUCKDB_LIB_DIR=~/.cache/acaua/duckdb LD_LIBRARY_PATH=~/.cache/acaua/duckdb
cargo build --release -p acaua-cli
./target/release/acaua --help
```
Matriz de plataformas suportadas para as imagens publicadas: `linux/amd64` e `linux/arm64`.
## Começando
```bash
acaua doctor
acaua serve --bind 127.0.0.1:8787 --data-dir .acaua
acaua analyze /var/log/zeek/current --json
acaua update
```
O `analyze` hoje valida o diretório e devolve um relatório de esqueleto; ele
ainda não lê logs Zeek. O `serve` expõe a API stub e o dashboard web embutido.
O `update` checa por versões novas e orienta a atualização da imagem do container.
## Desenvolvimento
```bash
scripts/fetch-libduckdb.sh ~/.cache/acaua/duckdb
export DUCKDB_LIB_DIR=~/.cache/acaua/duckdb LD_LIBRARY_PATH=~/.cache/acaua/duckdb
cargo test --workspace
cargo clippy --workspace --all-targets
node scripts/check-ui-i18n.mjs
scripts/check.sh --full
```
Veja **[CONTRIBUTING.pt-BR.md](CONTRIBUTING.pt-BR.md)** e
**[docs/pt-BR/arquitetura.md](docs/pt-BR/arquitetura.md)**.
## Limites conhecidos
- O motor de detecção, o parser Zeek e a camada de armazenamento são stubs.
- Não há imagem de release publicada ainda.
- NetFlow/IPFIX é um modo degradado por projeto; ele não substitui os logs de
protocolo do Zeek em todos os pilares.
- O projeto mira ambientes de container Linux (`linux/amd64`, `linux/arm64`).
## Para onde vai
Resumo do [ROADMAP](ROADMAP.pt-BR.md):
| | |
|---|---|
| **Feito** | Workspace, stubs de CLI/API, dashboard web, containerização Docker, workflows de CI/release |
| **Próximo** | Implementação dos pilares 1 e 2 com fixtures determinísticas; parser Zeek real |
| **Depois** | Particionamento Parquet completo, limpeza por TTL, pilares 3 e 4, fusão de evidências |
| **Fora de plano** | Pontuação por IA opaca, serviço de nuvem obrigatório, Python no runtime distribuído |
## Licença
[MIT](LICENSE-MIT) ou [Apache-2.0](LICENSE-APACHE), à sua escolha.