Regra de banco no UFW não alcança porta que o Docker publicou

[!NOTE] Resumo Executivo (DEV-2026-054): O Docker publica porta por FORWARD e DNAT e ignora o UFW no INPUT. O filtro de 3306, 6379 e 5432 fica na cadeia DOCKER-USER.


🚨 O Desafio Técnico / Contexto

Trancar o banco no UFW não mudava o que estava publicado pelo compose. A regra nunca era consultada no caminho que o Docker usa para expor a porta.


💡 Principais Lições Aprendidas & Descobertas

  • 💡 deployments/ainativo/RESTRINGIR_PORTAS_DB.md: a regra entra em DOCKER-USER, cadeia AINATIVO_DB_PORTS.
  • 💡 restrict-db-ports.sh –persist instala o script em /usr/sbin e a unit restrict-db-ports.service depois do docker.service.
  • 💡 Nesta VPS os bancos não têm ports no host. O script cobre o dia em que alguém publicar 5432 ou 6379.

🛠️ Especificação Técnica & Código-Chave

sudo /opt/ainativo/src/sio-ecosystem/tools/scripts/restrict-db-ports.sh --persist
sudo restrict-db-ports.sh --status

📈 Impacto no Ecossistema & Valor Prático

Porta de banco publicada pelo Docker passou a depender da cadeia DOCKER-USER, não do UFW de entrada.

  • Projetos Relacionados: sio-ecosystem
  • Registro de Origem: _data/daily.dev-04.yml

Publicado originalmente como parte do Diário de Desenvolvimento 2026 do ecossistema Artes do Sul & Araguaci.