Novità
Icona risorsa

Guida Verificata Creare un Tunnel con Cloudflare Zero Trust

Una guida verificata è stata controllata dallo staff punto per punto e se ne attesta la sua validità.

Introduzione​

In questa guida vedremo come creare un tunnel tramite Cloudflare Zero Trust per accedere in modo sicuro alle nostre app (come ad esempio Portainer, OMV, un server web etc...) dall'esterno, senza il bisogno di essere connessi alla nostra rete privata. Questa tecnica è molto usata, perché incredibilmente dinamica, specie in ambito homeserver.

Esempio:
Nella nostra precedente guida
abbiamo installato Portainer su un nostro server e per accedervi dall'esterno, sfruttiamo un tunnel SSH. Con Zero Trust possiamo evitare il tunnel SSH, senza rinunciare alla sicurezza. Altro esempio è un server casalingo come OMV e la sua interfaccia WEB. Sarebbe comodo accedervi ovunque noi siamo vero?

Bene, vediamo come fare!

Requisiti​

  • Aver registrato un account (anche con piano gratuito) su
    Accedi o Registrati per vedere questo link.
    .
  • Possedere un dominio.
  • Utilizzare Cloudflare come DNS primario sul proprio dominio (nameserver) e gestire i record DNS tramite Cloudflare.
  • Avere un servizio da proteggere (nella guida, prenderemo come esempio Portainer).

Iniziamo (leggere tutta la guida prima di applicarla!)​

Prima di tutto, è comodo avere chiaro che cloudflare agirà come "overlay" tra il nostro servizio privato e il client che useremo per accedervi. Qui un'immagine presa direttamente dalla pagina ufficiale

handshake_hufad68abf6107ffc2ef859ebe1b42b6e2_299675_1768x1102_resize_q75_box-3f75968f.jpg


Accediamo intanto al nostro account sul sito cloudflare e dal menu di sinistra, clicchiamo Zero Trust

1.png


Selezioniamo pure il piano gratuito, confermiamo i dati richiesti e arriviamo alla schermata iniziale di Zero Trust.

Sempre dal menu a sinistra, sotto Networks troviamo l'opzione Tunnels, clicchiamoci e arriviamo ad una schermata dov'è presente il tasto "+ Create a Tunnel".

Una volta cliccato, ci verrà chiesto di selezionare il connector, ovvero in che modo Cloudflare si connetterà al nostro server per fornire il servizio attraverso la sua rete. In questa guida useremo Cloudflared come connector, ovvero un piccolo software che possiamo installare direttamente o tramite docker e si occuperà del resto, in modo automatico.

Selezioniamo quindi Cloudflared e clicchiamo Next, alla pagina successiva inseriamo un nome di nostra scelta, per individuare il nostro tunnel (ad esempio "Portainer") e proseguiamo.

Ora, dobbiamo specificare il sistema operativo dove verrà installato il connector. Verranno fornite delle istruzioni molto chiare su come procedere, analizziamone 2 molto comuni, ovvero Debian e Docker:

Esempio 1: Debian (64-bit)​

Dobbiamo semplicemente lanciare sulla nostra macchina i comandi mostrati esattamente come compariranno. Ecco un esempio:

Bash:
Accedi o Registrati per vedere questo contenuto.

Come suggerito, salviamo il nostro token con cura, perché chiunque in possesso del token può accedere al tunnel!

Esempio 2: Docker (e Compose)​

Su Docker, abbiamo 2 possibilità: creare direttamente il container o utilizzare Docker Compose (ad esempio tramite la creazione di Stack su Portainer):

Per creare direttamente il container usiamo il comando suggerito, ovvero
Bash:
Accedi o Registrati per vedere questo contenuto.
Mentre se preferiamo usare Compose, possiamo utilizzare questo jaml
YAML:
Accedi o Registrati per vedere questo contenuto.

da notare che network_mode: host potrebbe non essere necessario, nel caso in cui il tunnel non dovesse avviarsi, aggiungerlo al vostro jaml.

Installato Cloudflared, verifichiamo il collegamento dalla schermata di sotto
2.png

Dobbiamo ricevere il messaggio Connected.

Proseguiamo dunque, nella schermata successiva dobbiamo indicare in che modo accedere al tunnel. In questa guida scegliamo di rendere il servizio accessibile tramite Public Hostname, ovvero creando un sottodominio del nostro dominio.

In Subdomain inseriamo il nome che vogliamo usare per accedere, ad esempio ilmioservizio.example.tld
In Domain inseriamo il dominio registrato su cloudflare, verrà automaticamente creato un record DNS di tipo CNAME per il sottodominio da noi scelto

In Type e URL dobbiamo indicare il protocollo e l'url locale del servizio che vogliamo rendere disponibile tramite tunnel.

Nel caso volessimo rendere disponibile Portainer, che in un'installazione locale predefinita è presente all'indirizzo
Accedi o Registrati per vedere questo link.
allora dobbiamo riportare come protocollo HTTPS (anche se il certificato SSL è self-signed) e l'indirizzo localhost. Di seguito un esempio:
3.png


Da notare che sotto Additional application settings è stato selezionato No TLS Verify in quanto il certificato SSL di Portainer è self-signed, altrimenti non verrebbe accettato. Non dobbiamo selezionare questa voce nel caso il protocollo da noi scelto fosse il normale HTTP.

ATTENZIONE: Proseguendo, il sottodomonio verrà creato e il tunnel sarà operativo, da questo momento CHIUNQUE si connetterà al sottodominio da voi indicato accederà al vostro Portainer!!!

Se il vostro scopo è quello di rendere un servizio pubblicamente accessibile, avete finito! Altrimenti dobbiamo procedere e creare una Policy, ovvero NON rendere il servizio pubblicamente accessibile, ma limitare l'accesso a chi decidiamo noi!

Creare le policy di accesso​

Torniamo al menu principale di Cloudflare Zero Trust e clicchiamo, nel menu di sinistra, su Access -> Application.
Poi su Add an application -> Self-hosted.

Nel riquadro Application Configuration inseriamo quanto segue:
  • Application name: Un nome di nostra scelta, ad esempio "Portainer Access".
  • Session duration: Per quanto tempo un utente avrà accesso al nostro servizio prima che venga richiesto nuovamente di autenticarsi.
  • Subdomain e Domain: L'esatto sottodominio utilizzato nella creazione del Tunnel al passo precedente.
Ora, se creiamo più tunnel, saranno tutti disponibili (previa accesso, ove richiesto) all'indirizzo nomescelto.cloudflareaccess.com. Se NON vogliamo far comparire il tunnel a quest'indirizzo, deselezioniamo Enable App in App Launcher nel menù di sotto, ovvero Application Appearence.

Scorriamo in basso fino al riquadro Identity Providers, da qui scegliamo in che modo gli utenti (o semplicemente noi) dobbiamo autenticarci per accedere al servizio. Possiamo anche usare sistemi di autenticazione di terze parti, ad esempio GitHub (in questo caso, decidiamo quali account github possono accedere dalle impostazioni di GitHub).

Come sistema predefinito, abbiamo solo One-time PIN, ovvero verrà inviato un codice alle sole mail che possono accedere. Se vogliamo aggiungere altri metodi, possiamo seguire le guide presenti in Settings -> Authentication -> Login methods.

Possiamo lasciare tranquillamente il metodo predefinito e procedere al passo successivo.

Creiamo ora una policy, nel nostro caso inserendo le sole mail autorizzate a ricevere il codice di verifica per accedere al nostro servizio.
Un esempio può essere il seguente:
4.png


Abbiamo dato un nome alla nostra policy, selezionato il selector emails e indicato le sole (o la sola mail) che possono accedere al servizio.

Come ultimo passaggio dobbiamo ora inserire la policy appena creata al nostro tunnel avviato in precedenza.

Torniamo dunque nel menu dei tunnel, dove vedremo il nostro tunnel operativo. Apriamo le impostazioni. Sotto Public Hostname -> nome del nostro sottodominio, clicchiamo (come prma) su Additional application settings -> Access e attiviamo la spunta Protect with Access, selezioniamo dal menu a tendina la policy appena creata e abbiamo finito!

Navigando ora su ilmioservizio.example.tld ci troveremo di fronte alla schermata di accesso di Cloudflare, dove dovremmo (nel nostro caso) inserire una mail e confermare il codice ricevuto. Da notare che se viene indicata una mail non presente nella nostra Policy, non verrà restituito nessun errore, semplicemente nessun codice verrà inviato e dunque sarà impossibile accedere.

Abbiamo presentato solo uno dei tantissimi metodi di accesso possibili, il miglior modo per capire come muoversi all'interno di questo potente tunnel è sperimentare, magari con servizi di test.

Facciamo attenzione al metodo di autenticazione selezionato. Solo alcuni servizi di autenticazione (come GitHub) permettono gratuitamente di stabilire gli account che possono accedere. Ad esempio il metodo di autenticazione proposto da Google, in versione gratuita, permette a CHIUNQUE in possesso di un account gmail di accedere!

Siamo giunti al termine di questa guida, come sempre spero possa esservi utile e non esitate a rilasciare Feedback o scrivere per chiarimenti :)
Autore
Anyma
Visite
82
Primo rilascio
Ultimo aggiornamento
Valutazione
0.00 stella(e) 0 valutazioni

Più risorse di Anyma

Indietro
Alto