Zero Trust Access con Cloudflare
Pubblicazione sicura di servizi self-hosted senza porte aperte su internet
Context
Problem and context
Esporre servizi self-hosted su internet tradizionalmente richiede port forwarding, certificati SSL, aggiornamenti costanti e una superficie d'attacco che cresce con ogni servizio aggiunto. Il modello Zero Trust inverte questa logica: nessuna porta aperta, nessuna fiducia implicita, ogni accesso verificato.
Solution
Implemented solution
Cloudflare Zero Trust (Tunnel + Access) come layer di pubblicazione e autenticazione per tutti i servizi interni. Il tunnel stabilisce una connessione uscente cifrata verso Cloudflare — nessuna regola NAT, nessun IP pubblico esposto. Cloudflare Access gestisce chi può accedere e come.
Architettura
Il demone cloudflared gira in un LXC dedicato e mantiene connessioni uscenti verso i PoP Cloudflare più vicini. Il file di configurazione del tunnel mappa ogni hostname a un servizio interno.
Ogni hostname ha una policy Access associata: autenticazione OTP via email, oppure service token per accessi machine-to-machine.
mTLS per servizi critici
Per i servizi che richiedono il massimo livello di sicurezza (API Ollama, management interfaces) viene usato mTLS con certificati client emessi dalla PKI interna. Solo i client con certificato valido possono stabilire la connessione — indipendentemente dall'autenticazione Cloudflare Access.
La CA interna è gestita con cfssl, i certificati client sono distribuiti via policy Intune per i dispositivi aziendali e manualmente per il lab.
Segmentazione rete
Tre livelli di isolamento: VLAN di rete (traffico separato a L2), firewall rules MikroTik (controllo L3/L4), Cloudflare Access (autenticazione applicativa). Un servizio esposto su danplab.com non può raggiungere la VLAN management anche se l'accesso Cloudflare fosse compromesso.
Outcomes