From f81c783ea71c469ba5a448fe13ca692257a4f8eb Mon Sep 17 00:00:00 2001 From: Adriano Dal Pastro Date: Tue, 4 Aug 2026 09:35:49 +0000 Subject: [PATCH] fix(sicurezza): dashboard 8787 solo su 127.0.0.1, era raggiungibile da internet La riga era "8787:8787", cioe' pubblicata su tutte le interfacce. ufw non la fermava: il DNAT che Docker installa in nat/PREROUTING devia il pacchetto prima della catena INPUT su cui ufw lavora, e in FORWARD la catena DOCKER lo accetta prima delle catene ufw-*-forward (DOCKER-USER era vuota). Verificato: da IP pubblico la dashboard rispondeva HTTP 200. Dietro c'erano conto e posizioni reali (monta .env.mainnet per lo Shadow live), senza autenticazione, su http.server della stdlib, processo root. Svista e non scelta: la riga sotto lega gia' il gateway IB a 127.0.0.1 con il commento "raggiungibile solo da localhost dell'host". Dopo il fix: DNAT con -d 127.0.0.1/32, listener solo su 127.0.0.1:8787, da IP pubblico connessione rifiutata. pythagoras-ibgw non toccato. Co-Authored-By: Claude Opus 5 (1M context) --- docker-compose.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index ce2a3e3..92dc514 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,12 @@ services: restart: unless-stopped command: ["uv", "run", "python", "-m", "src.live.dashboard", "--port", "8787"] ports: - - "8787:8787" + # Bind SOLO su 127.0.0.1: la dashboard non ha autenticazione e mostra conto e + # posizioni reali (Shadow live). Fino al 2026-08-04 era "8787:8787", cioe' pubblicata + # su tutte le interfacce e raggiungibile da internet: ufw NON protegge le porte + # pubblicate da Docker (il DNAT scavalca la catena INPUT). La consuma AI-OS da + # localhost per le risposte via Telegram. + - "127.0.0.1:8787:8787" volumes: - ./data:/app/data:ro # token mainnet (sola lettura) per lo "Shadow live": conto/posizioni reali sulla dashboard.