┌──────────────────────────────────────────────┐
│ misp-core (web UI → localhost:8080) │
│ ├─ nginx + PHP │
│ └─ MISP v2.5.38 │
├──────────────────────────────────────────────┤
│ misp-modules (enriquecimento/import) │
├──────────────────────────────────────────────┤
│ db (MariaDB 10.11) │
├──────────────────────────────────────────────┤
│ redis (Redis 7.2) │
└──────────────────────────────────────────────┘
Todos os containers numa rede Docker interna misp. Apenas o misp-core expõe a porta 80 como 127.0.0.1:8080 — não acessível da LAN nem internet.
# 1. Clonar
git clone <repo-url> && cd misp-playground
# 2. Configurar secrets
cp .env.example .env
# Editar .env com passwords fortes (openssl rand -hex 16)
# 3. Arrancar
docker compose up -d
# 4. Acompanhar inicialização (5-10 min na primeira vez)
docker compose logs -f misp-core
# Esperar até ver "All updates completed"
# 5. Login em http://localhost:8080- URL:
http://localhost:8080 - Email:
admin@local.lab - Password: definida no
.env - API Key: definida no
.env
O MISP força a mudança de password no primeiro login.
| Feed | Formato | Descrição |
|---|---|---|
| CIRCL OSINT Feed | MISP JSON | Curado pelo CIRCL, alta qualidade |
| Botvrij.eu Data | MISP JSON | Mantido pelo NCSC-NL |
| abuse.ch URLhaus | CSV | URLs maliciosas |
| abuse.ch MalwareBazaar | CSV | Hashes de malware |
# Estado dos containers
docker compose ps
# Logs em tempo real
docker compose logs -f misp-core
# Parar
docker compose down
# Reiniciar sem perder dados
docker compose restart
# Aceder ao container
docker compose exec misp-core bash
# Actualizar galaxies via CLI
docker compose exec misp-core /var/www/MISP/app/Console/cake admin updateGalaxies# Galaxies
docker compose exec misp-core /var/www/MISP/app/Console/cake admin updateGalaxies
# Taxonomies
docker compose exec misp-core /var/www/MISP/app/Console/cake admin updateTaxonomies
# Object Templates
docker compose exec misp-core /var/www/MISP/app/Console/cake admin updateObjectTemplates 1
# Warning Lists
docker compose exec misp-core /var/www/MISP/app/Console/cake admin updateWarningLists.
├── docker-compose.yml # Stack MISP
├── .env.example # Template de configuração
├── .gitignore
├── docs/
│ └── SPEC.md # Spec original
├── PLAYBOOK.md # Guia para juniors
└── data/ # Volumes Docker (não commitado)
├── misp-files/
├── misp-config/
├── misp-logs/
└── misp-certs/
- v0.1 — MISP base + feeds OSINT ✅
- v0.2 — Parser OSV→MISP (SPEC separada)
- v0.3 — Galaxy cluster custom para TTPs supply chain CI/CD
- v0.4 — STIX 2.1 export bridge para OpenCTI
- v0.5 — Cron-based feed sync + retention policy
- v1.0 — HTTPS via reverse proxy (Caddy/Traefik), exposição controlada
- Imagens:
ghcr.io/misp/misp-docker(oficial MISP team), versões fixas (sem:latest) - Bind localhost:
127.0.0.1:8080:80— sem exposição LAN - Persistência: MariaDB usa volume Docker nomeado; configs/logs/files usam bind mounts em
./data/ - Volume MariaDB: Named volume
mariadb_data(evita problemas de permissão UID 999)
Geralmente causado por password com caracteres especiais. Usar openssl rand -hex 16 para gerar passwords alfanuméricas.
O database.php pode estar desactualizado se mudaste o .env depois do primeiro arranque. Corrigir:
# Apagar config para forçar regeneração
rm -rf ./data/misp-config
docker compose down
docker compose up -dOu editar o password directamente:
docker compose exec misp-core sed -i "s/OLD_PASSWORD/NEW_PASSWORD/g" /var/www/MISP/app/Config/database.php
docker compose restart misp-coreSe mudaste passwords no .env, apagar o volume e recomeçar:
docker compose down -v
docker compose up -dGPL-3.0