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) <noreply@anthropic.com>
This commit is contained in:
Adriano Dal Pastro
2026-08-04 09:35:49 +00:00
parent fb01c5714c
commit f81c783ea7
+6 -1
View File
@@ -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.