⌂ Self-hosting

Raggiungere i servizi di casa da fuori: porte, tunnel o rete mesh

Port forwarding, tunnel inversi e reti mesh basate su WireGuard a confronto: rischi, vantaggi e quale scegliere per accedere ai servizi self-hosted.

Un servizio ospitato in casa diventa davvero utile quando lo si può usare anche fuori: le foto caricate dal telefono in vacanza, il calendario sincronizzato in ufficio, la libreria musicale in auto. Il modo in cui si apre questa porta verso l'esterno è la decisione di sicurezza più importante di tutto il self-hosting. Le strade principali sono tre, e ciascuna ha un profilo di rischio diverso.

1. Aprire una porta sul router

Il metodo tradizionale è il port forwarding: si configura il router perché inoltri le connessioni in arrivo su una porta (tipicamente la 443) verso il server di casa, dove un reverse proxy smista le richieste ai vari servizi.

Vantaggi

  • nessun intermediario: il traffico arriva direttamente a casa;
  • funziona con qualsiasi client, anche dispositivi di amici e parenti senza software aggiuntivo;
  • prestazioni limitate solo dalla linea.

Svantaggi

  • il servizio è visibile a chiunque su Internet e sarà scansionato in modo automatico, di continuo;
  • ogni vulnerabilità del reverse proxy o delle applicazioni esposte diventa sfruttabile dall'esterno;
  • non funziona se l'operatore usa il CGNAT, cioè condivide lo stesso indirizzo pubblico tra più clienti.

Chi sceglie questa strada deve avere aggiornamenti tempestivi, HTTPS ovunque, autenticazione robusta e un sistema che blocchi i tentativi ripetuti.

2. Tunnel inverso verso un servizio esterno

Con un tunnel inverso è il server di casa a stabilire una connessione in uscita verso un servizio esterno, che poi riceve le richieste dal pubblico e le inoltra attraverso il tunnel. L'esempio più diffuso è Cloudflare Tunnel, con il programma cloudflared; esistono anche alternative open source da ospitare su un piccolo server virtuale.

Vantaggi

  • nessuna porta aperta sul router;
  • funziona anche dietro CGNAT;
  • l'indirizzo IP di casa non viene esposto;
  • il fornitore può aggiungere protezioni e controlli di accesso davanti al servizio.

Svantaggi

  • con un servizio commerciale, la cifratura TLS viene terminata presso il fornitore, che quindi può vedere il traffico in chiaro;
  • si dipende dalle condizioni d'uso del fornitore, che possono limitare alcuni tipi di contenuto, come lo streaming video;
  • se il fornitore ha un problema, i servizi non sono raggiungibili.

Ospitare il punto d'ingresso su un proprio server virtuale, collegato a casa con WireGuard, elimina il problema della terminazione TLS presso terzi, al prezzo di un altro sistema da mantenere.

3. Rete privata mesh

La terza strada è non esporre nulla al pubblico: i propri dispositivi entrano in una rete privata e raggiungono i servizi come se fossero in casa. Le soluzioni moderne, come Tailscale o il progetto open source Headscale che ne reimplementa il server di coordinamento, sono basate su WireGuard e creano collegamenti diretti tra i dispositivi, attraversando il NAT quando possibile.

Vantaggi

  • superficie d'attacco minima: i servizi non sono visibili da Internet;
  • funziona dietro CGNAT;
  • ogni dispositivo è autenticato individualmente e può essere revocato.

Svantaggi

  • ogni dispositivo che deve accedere ha bisogno del client installato e attivo;
  • non adatta a chi deve condividere un servizio con persone esterne, come un album con amici;
  • con un servizio di coordinamento commerciale, si dipende da un account presso terzi, anche se il traffico resta cifrato end-to-end.

Confronto rapido

Criterio Porta aperta Tunnel inverso Rete mesh
Porte aperte sul router sì no no
Funziona con CGNAT no sì sì
Visibile da Internet sì sì no
Client da installare no no sì
Intermediario sul traffico no sì, se commerciale solo coordinamento

Una strategia mista

Nel mio lavoro la configurazione che consiglio più spesso è ibrida:

  1. tutto dietro rete privata per impostazione predefinita: pannelli di amministrazione, gestore di password, archivio documenti, domotica;
  2. esposizione pubblica solo per ciò che deve essere condiviso con persone esterne, come un link a un album o un servizio usato da parenti senza competenze tecniche;
  3. mai esporre interfacce di gestione di router, hypervisor, NAS o database.

Questa divisione riduce drasticamente il numero di componenti che devono essere perfetti in ogni momento.

Domande da farsi prima di esporre un servizio

  • Chi deve accedere, e da quali dispositivi?
  • Il servizio ha un'autenticazione solida, con secondo fattore?
  • Quanto velocemente vengono pubblicate le correzioni di sicurezza, e riesco ad applicarle in tempo?
  • Cosa succede se qualcuno entra: quali dati vede, quali altri sistemi raggiunge?
  • Posso accorgermi di accessi anomali, leggendo i log o ricevendo notifiche?

Se a una di queste domande non c'è una risposta chiara, la rete privata è la scelta più prudente.

In sintesi

  • Il modo in cui si espongono i servizi è la scelta di sicurezza più importante del self-hosting.
  • Il port forwarding è diretto ma rende tutto visibile e non funziona con il CGNAT.
  • I tunnel inversi evitano porte aperte, ma un fornitore commerciale vede il traffico.
  • Le reti mesh basate su WireGuard offrono la superficie d'attacco minore, al prezzo di un client su ogni dispositivo.
  • Una strategia mista, privata per default e pubblica solo dove serve, è spesso la migliore.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche