- docs/AUDITORIA_BASE_2GT.md: full audit of upstream 1a4b635 (v0.24.5-beta)
- 0 critical, 1 high (SEC-002: no per-site RBAC), 4 medium, 5 low, 5 informational
- Verdict: APROVADO COM CORREÇÕES OBRIGATÓRIAS
- First read-only RB: authorized (SIM)
- test: add regression coverage proving SEC-001 (no JWT revocation) and
SEC-002 (site scoping has no per-user authorization component)
- docs/SISTEMA_ATUAL.md: record confirmed facts (RBAC scope, Change Guard
coverage, RouterOS TLS verification) surfaced by the audit
No production code changed — audit-only per mission scope.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
8.2 KiB
MikroRMM — Sistema Atual
1. Objetivo do sistema
Plataforma de gestão e monitoramento de dispositivos MikroTik (RouterOS): inventário de clientes/dispositivos, polling de métricas, backups, automação, alertas, change guard, firmware rollout, topologia de rede.
2. Base upstream
- Projeto: MikroTik Manager (2GT Media Group LLC)
- Repositório: https://github.com/2GT-Media-Group-LLC/mikrotik-manager
- Licença: ver
LICENSEna raiz do repo - Remote local:
origin→ https://github.com/2GT-Media-Group-LLC/mikrotik-manager.git - Commit baseline:
1a4b6350528b8c656ab7a84ee4806a8a86cf9932(branchmain, tag semântica v0.24.5-beta) - Branch de trabalho MikroRMM:
mikrormm-dev
3. Arquitetura atual
Stack Docker Compose com 5 serviços: nginx (proxy/reverse proxy + estáticos do frontend), backend (API Node/Express + poller + coletor NetFlow), postgres (dados relacionais), redis (filas BullMQ), influxdb (métricas de série temporal).
4. Estrutura do repositório
backend/— API Node.js/TypeScript (Express, BullMQ, Socket.IO, SSH2)frontend/— SPA React 19 + Vite + TailwindCSSnginx/— Dockerfile,nginx.conf,entrypoint.sh(gera cert self-signed se ausente)docs/— documentação (mkdocs)scripts/— utilitários e fixtures de seed
5. Containers e serviços
| Serviço | Imagem | Porta host (DEV) | Healthcheck |
|---|---|---|---|
| nginx | build local | 80, 443 | nenhum definido no compose |
| backend | build local | 2055/udp (NetFlow) | GET /api/health |
| postgres | postgres:15-alpine | interno | pg_isready |
| redis | redis:7-alpine | interno | redis-cli ping |
| influxdb | influxdb:2.7 | interno | influx ping |
6. Banco de dados
PostgreSQL 15, banco mikrotik_manager, usuário mikrotik. Migrations em backend/src/db/migrate.ts, executadas automaticamente no boot do backend (idempotente — cria usuário admin default apenas se a tabela users estiver vazia).
7. Redis / filas
BullMQ para jobs de polling/automação. maxmemory configurável via REDIS_MAXMEMORY (default 512mb), política noeviction (ver comentário no docker-compose.yml).
8. InfluxDB / métricas
InfluxDB 2.7, org/bucket configuráveis via env (INFLUXDB_ORG, INFLUXDB_BUCKET), token de admin gerado no setup inicial.
9. Frontend
React 19 + Vite + TailwindCSS, servido como estático pelo nginx. Build gera chunk principal >500KB (aviso do Vite, não bloqueante).
10. Backend
Node.js/TypeScript, Express, autenticação JWT, TOTP opcional, OIDC opcional, coletor NetFlow/IPFIX na porta 2055/udp, backups, SSH (ssh2) para RouterOS.
11. Autenticação
JWT (JWT_SECRET, HS256, expiração 24h), senha com bcryptjs, suporte a TOTP e OIDC. Usuário admin default criado na migration inicial (admin/admin) — a senha padrão DEVE ser trocada imediatamente após o primeiro login (feito nesta instalação DEV; ver seção 12 do CLAUDE.md).
RBAC: 3 papéis globais (admin/operator/viewer), aplicados corretamente no backend em toda rota (ver docs/AUDITORIA_BASE_2GT.md). Não existe isolamento por site/cliente — o filtro X-Site-Id é apenas de exibição; qualquer usuário autenticado enxerga todos os dispositivos de todos os sites se omitir o header (achado SEC-002). Sessões JWT não têm revogação server-side: trocar senha, desabilitar TOTP ou remover um usuário não invalida tokens já emitidos até expirarem (achado SEC-001).
12. Ambiente DEV
- Diretório:
D:\PROJETOS\MIKROTIK RMM\mikrormm(Windows 11, Git Bash/MINGW64) - Docker: 29.6.2 / Compose v5.3.1
- Compose usado:
docker-compose.yml(build local a partir do código-fonte, nãodocker-compose.ghcr.yml) - Portas publicadas: 80 (HTTP), 443 (HTTPS self-signed), 2055/udp (NetFlow)
.envlocal com secrets DEV gerados aleatoriamente (nunca versionado)TZ=America/Bahia
13. Ambiente PROD planejado
Infraestrutura Docker dedicada da GTI. Deve manter paridade com DEV (mesmo docker-compose.yml como base, variando apenas .env/secrets/domínio/CORS). Não implementado nesta missão.
14. Variáveis de ambiente
Somente nomes e finalidade (ver .env.example para a lista completa):
HTTP_PORT,HTTPS_PORT— portas publicadas do nginxTZ— timezone dos containersCORS_ORIGIN— origens permitidas pela APIDB_PASSWORD— senha do PostgreSQLJWT_SECRET— segredo de assinatura JWTENCRYPTION_KEY— chave de criptografia de senhas de dispositivos (32 bytes)INFLUXDB_TOKEN,INFLUXDB_ORG,INFLUXDB_BUCKET,INFLUXDB_ADMIN_PASSWORD— InfluxDBPOLLER_*— tuning do poller de dispositivosREDIS_MAXMEMORY— teto de memória do Redis
15. Como iniciar
docker compose up -d
16. Como parar
docker compose down
17. Como rebuildar
docker compose build
docker compose up -d
18. Como verificar saúde
docker compose ps
curl -k https://localhost/api/health
19. Como executar testes
# backend
cd backend && npm ci && npm test && npm run lint && npx tsc --noEmit
# frontend
cd frontend && npm ci && npm test -- --run && npm run lint && npm run build
20. Persistência e volumes
Volumes nomeados: postgres_data, redis_data, influxdb_data, backups_data, certs_data, app_data. Persistência comprovada via docker compose restart nesta missão.
21. Backup do próprio MikroRMM
Backend expõe rotas de backup de dispositivos (backups_data); backup do próprio stack MikroRMM (dump de postgres_data/influxdb_data) ainda não documentado/procedimentado — pendente de missão futura.
22. Segurança atual
.envfora do Git (confirmado viagit check-ignore)- Secrets DEV gerados aleatoriamente (DB_PASSWORD 32c, JWT_SECRET 64c hex, ENCRYPTION_KEY 32c, INFLUXDB_TOKEN 64c hex, INFLUXDB_ADMIN_PASSWORD 24c)
- Senha padrão do admin alterada (ver
.secrets-local/dev-admin-password.txt, fora do Git) - Certificado HTTPS self-signed gerado pelo nginx (
nginx/entrypoint.sh) — adequado só para DEV - Lint de segurança (
eslint-plugin-security) roda no baseline com 270 (backend) + 108 (frontend) warnings, 0 erros — auditados na Missão 01 (docs/AUDITORIA_BASE_2GT.md), majoritariamente falso positivo - Credenciais RouterOS cifradas em repouso com AES-256-GCM, chave fora do banco (
SECRETS_DIR/secrets.json), IV único por operação, tag autenticada — design confirmado correto na auditoria - Conexão RouterOS API-SSL usa
rejectUnauthorized: false(sem verificação de certificado) — suscetível a MITM na rede local (achado SEC-003, OPEN) - Change Guard (dead-man-switch) só cobre o fluxo de "preflight + apply analisado" em
devices.ts; a maioria das edições diretas de firewall/rotas/VLAN, comandos em massa e o terminal interativo não passam por ele (achado SEC-005, OPEN) - Ver
docs/AUDITORIA_BASE_2GT.mdpara a lista completa de achados, severidades e status
23. Integrações atuais
Nenhuma integração externa real conectada (GLPI, Slack, SFTP, RouterBOARD real) — fora do escopo desta missão.
24. Funcionalidades atualmente disponíveis
Conforme upstream v0.24.5-beta: gestão de clientes/dispositivos, polling, backups, automação, alertas, change guard, firmware rollout, topologia, NetFlow, OIDC, TOTP. Ver README.md do upstream para detalhes completos.
25. Funcionalidades GTI ainda não implementadas
Integração GLPI, SFTP, Slack, onboarding customizado, renomeação para "MikroRMM", RouterBOARD real conectada.
26. Procedimento para mudanças com IA
Ver CLAUDE.md na raiz do projeto.
27. Prompt/missão operacional atual
Missão 00 — Preparar Ambiente Dev Local (concluída): bootstrap e baseline apenas. Clonar upstream, subir stack local via build de código-fonte, validar saúde/login/testes, documentar, manter Git limpo, zero secrets versionados. Proibido nesta missão: renomear o produto, redesenhar UI, implementar GLPI/SFTP/Slack, alterar autenticação/schema/Change Guard, conectar RouterBOARD real, corrigir achados de auditoria. Próxima missão recomendada: Auditoria Técnica e de Segurança da Base Upstream.