Come creare un tunnel sicuro per SSH e SFTP con Cloudflare

Perché creare un tunnel sicuro?

Con Tunnel, non invii il traffico a un indirizzo IP esterno, invece un demone leggero nella tua infrastruttura (cloudflared) crea connessioni in uscita solo alla rete globale di Cloudflare; così puoi chiudere le porte inutilizzate con il firewall nella tua infrastruttura. Per creare il tuo tunnel la tua infrastruttura (dominio+server DNS) deve essere all'interno della cloudflare network- [Network of Contents: is the channel in which owners can post their content and the audience can see the contents posted by the owners] - .

Di cosa ho bisogno per creare un tunnel sicuro?

Un account- [Account: an Account contains the personal information that is assigned to those who register and access with email and password] - in cloudflare con il tuo nome di dominio collegato al tuo server con le configurazioni dei server DNS; l'applicazione cloudflared può essere scaricata per ogni sistema operativo qui: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/

Cos'è l'applicazione Zero Trust?

Zero Trust è un framework di sicurezza che richiede che tutti gli utenti, sia all'interno che all'esterno della rete dell'organizzazione, siano autenticati, autorizzati e continuamente validati per la configurazione di sicurezza e lo stato prima di essere autorizzati ad accedere alle applicazioni e ai dati. Quando crei il tuo tunnel per SSH e SFTP con cloudflare, dovrai associarlo a un'applicazione Zero Trust.

Inizia il tuo tunnel sicuro

Una volta scaricato cloudflared, puoi creare il primo tunnel semplicemente tramite terminale o tramite webui.

TERMINALE

Digita questo comando per l'autenticazione:

$ cloudflared tunnel login

Crea un tunnel e dagli un nome:

$ cloudflared tunnel create <NOME>

Dall'output del comando, prendi nota dell'UUID del tunnel e del percorso del file delle credenziali del tunnel.

Verifica che il tunnel sia stato creato correttamente eseguendo:

$ cloudflared tunnel list

Leggi la guida ufficiale per creare un tunnel tramite terminale: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/install-and-setup/tunnel-guide/local/

WEBUI

  1. Accedi a Zero Trust e vai a Access- [Access the simple access to a website as a visitor] - > Tunnels.
  2. Seleziona Create a tunnel.
  3. Inserisci un nome per il tuo tunnel. Suggeriamo di scegliere un nome che rifletta i tipi di risorse a cui vuoi connetterti tramite questo tunnel (ad esempio, enterprise-VPC-01).
  4. Seleziona Save tunnel.
  5. Successivamente, dovrai installare cloudflared e avviarlo. Per farlo, verifica che l'ambiente sotto Scegli un ambiente rifletta il sistema operativo della tua macchina, quindi copia il comando nella casella sottostante e incollalo in una finestra del terminale. Esegui il comando.
  6. Una volta terminato l'esecuzione del comando, il tuo connettore apparirà in Zero Trust.
  7. Seleziona Avanti.

Leggi la documentazione ufficiale per creare un tunnel tramite webui: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/install-and-setup/tunnel-guide/remote/

Connettiti tramite SSH tramite Cloudflare Tunnel

Il Protocollo Secure Shell (SSH) consente agli utenti di accedere in remoto ai dispositivi tramite la riga di comando. Con Cloudflare Zero Trust, puoi rendere disponibile il tuo server SSH su Internet senza il rischio di aprire porte in entrata sul server.

Cloudflare Zero Trust offre due soluzioni per fornire un accesso sicuro ai server SSH:

cloudflared access è quello che abbiamo utilizzato qui.

Ricorda che cloudflared è un software- [Program/Software: the instructions that control what a computer does; computer programs] - in continua evoluzione e pertanto è necessario consultare la documentazione ufficiale per assicurarsi di utilizzare le migliori procedure per la versione utilizzata.

Utilizza SSH dal terminale o dalla webui

Utilizza il tuo nuovo hostname pubblico (ad esempio ssh.example.com) per raggiungere la tua applicazione SSH tramite il terminale:

$ ssh [username]@ssh.example.com

Puoi anche utilizzare l'interfaccia web per accedere al terminale ssh tramite web; per farlo, è necessario abilitare il rendering del browser per la tua applicazione. Leggi la documentazione ufficiale su questi argomenti qui: https://developers.cloudflare.com/cloudflare-one/applications/non-http/#rendering-in-the-browser

Utilizza SFTP con il Tunnel SSH Cloudflare

SFTP, o Secure File Transfer Protocol, è un protocollo di trasferimento file sicuro che utilizza la crittografia del protocollo Secure Shell per fornire un elevato livello di sicurezza per il trasferimento di file. Per utilizzare SFTP con i tuoi client è necessario eseguire ulteriori passaggi per connettere il client al tunnel; basta aprire il terminale (dal client da cui vuoi connetterti) e digitare questo comando:

$ cloudflared access tcp --hostname ssh.example.com --url localhost:2222

La prossima volta che vuoi connetterti tramite SFTP (con qualsiasi software abilitato) inserisci come hostname localhost:2222 e le credenziali del tuo nome utente SFTP del server; quando chiudi il terminale, la connessione termina e non sarà più possibile connetterti fino a quando non apri di nuovo il terminale e digiti di nuovo questo comando.

Regola le impostazioni di sicurezza

Quando tutte le procedure funzionano perfettamente, è ora possibile chiudere le porte utilizzate da SSH e SFTP (solitamente la porta 22) tramite il firewall; in questo modo, solo chi è in possesso dell'applicazione cloudflared e/o dei certificati necessari potrà connettersi.

Leggi sempre la documentazione ufficiale

Come ho scritto da un po', ti consiglio sempre di leggere e imparare dalla documentazione ufficiale cloudflare perché questo software potrebbe anche avere delle modifiche nel tempo. Questo documento è stato scritto senza aver ricevuto alcun supporto ufficiale da cloudflare ed è destinato ad essere un esempio per chi lavora nella nostra organizzazione.