ADR-007 — Security stack avançada deferida
Status
Vigente — 2026-05-01.
Contexto
Discussões com Gemini levantaram várias ferramentas de segurança modernas:
- CrowdSec (sucessor moderno do Fail2Ban com inteligência coletiva)
- Suricata (IDS/IPS por assinaturas)
- Wazuh (SIEM/EDR completo)
- Octelium (ZTNA/PAM)
- Headscale (Tailscale OSS)
Cada uma é tecnicamente boa, mas a soma vira stack inviável pra time de 1-3 admins (já com 11+ peças no pipeline). Codex review confirmou que o MVP que falta não é security stack moderna — é secrets management, certs, CI/CD de IaC.
Decisão
Security stack avançada deferida. MVP de segurança usa componentes simples e bem-conhecidos:
Tier 0 — Higiene básica (MVP)
| Componente | Cobertura |
|---|---|
| VyOS firewall rules | Default-deny inbound, allow explicit por serviço |
| SSH hardening | Key-only auth, PermitRootLogin no, fail2ban no SSH |
| Cloudflare proxy | Rate limiting básico, WAF gratuito, DDoS protection nos hostnames públicos |
| TLS em tudo público | Let’s Encrypt via DNS-01, sem HTTP plain — depende de ADR-006 e cert-manager |
| Secrets management (ADR-006) | SOPS + age, evita leak de credenciais |
Tier 1 — Após MVP de plataforma
| Componente | Cobertura |
|---|---|
| Cilium NetworkPolicy default-deny | Microsegmentação intra-K8s |
| Authentik (IdP) + LDAP Outpost | SSO unificado, MFA, RBAC por grupos |
| Audit log K8s → OpenObserve | Trilha de auditoria de mudanças no cluster |
Tier 2 — Avaliar com critérios objetivos
| Componente | Critério de ativação |
|---|---|
| CrowdSec | (a) >100 IPs únicos/mês fazendo brute-force OU (b) serviço público alto valor com tráfego significativo |
| Suricata IDS/IPS | Ataque sofisticado detectado por assinatura específica |
| Wazuh SIEM/EDR | Compliance acadêmico formal exigir audit trail granular |
| Octelium / Teleport | Audit trail de acesso a DB/SSH virar requisito formal OU >10 pesquisadores acessando infra com frequência |
| Headscale | >5 nodes externos OU pesquisadores acessando K3s da casa |
Alternativas rejeitadas (pra MVP)
- Adotar CrowdSec já: bom mas mais um componente; fail2ban + Cloudflare cobrem 70% pelo MVP
- Adotar Octelium já: maturidade baixa (projeto 2023-2024), substitui SSH+Authentik LDAP que nem temos ainda
- Adotar Wazuh: pesado demais pra time pequeno; agente em cada nó + ElasticSearch backend
- Adotar Suricata: requer tuning constante de rules pra evitar false positives
Consequências
Positivas:
- Stack operacional mais leve, MVP entregável em prazo realista
- Componentes do Tier 0 são bem-conhecidos e documentados
- Foco do tempo de SRE em fundamentos (secrets, certs, CI) em vez de proteção exótica
- Clareza sobre quando cada Tier 2 entra (critérios objetivos, não “elegância”)
Negativas:
- Sem inteligência coletiva (CrowdSec) — perde-se proteção contra bots já bloqueados em outras orgs
- Sem audit L7 detalhado (Octelium) — auditoria depende de logs fragmentados
- Sem IDS/IPS por assinatura — exploits zero-day passam pelo VyOS
- Sem mesh administrativa (Headscale) — adicionar admin remoto exige config manual
Critério de revisão
Reabrir Tier 2 quando:
- Métricas dos logs mostrarem padrões que justifiquem (ex: VyOS log mostra 200 IPs únicos/mês fazendo SSH brute-force → CrowdSec faz sentido)
- Compliance institucional Unesp exigir formalmente algo que MVP não cobre
- Time aumentar pra 4+ admins (alguém pode ser dono de security)
- Incidente real acontecer e MVP for insuficiente pra investigar/conter
Notas operacionais
- Cada release de aplicação nova deve documentar superfície de ataque adicionada
- Logs do VyOS e SSH devem ir pro OpenObserve (Fase 8) — sem isso, métricas pra critério de revisão não existem
- Default-deny em Cilium NetworkPolicy entra com Cilium (Fase 5), não antes