Quando si devono trasferire dati a distanza con i dispositivi collegati alla rete locale dell’azienda, dell’ufficio o di casa, aspetto sempre più comune in epoca di smart working, sicurezza e prestazioni devono andare necessariamente di pari passo.
In un altro articolo abbiamo visto quanto conta la VPN e il protocollo sulle prestazioni e in altri approfondimenti abbiamo parlato del livello di sicurezza garantito da soluzioni come OpenVPN e WireGuard.
Mentre però OpenVPN non convince dal punto di vista delle performance, WireGuard è una delle soluzioni più veloci per allestire una VPN (Virtual Private Network) ovvero un collegamento sicuro con una rete posta a decine, centinaia o migliaia di chilometri di distanza.
Avevamo già visto come creare un server VPN WireGuard: questa volta ne configuriamo uno automatizzando l’operazione con Tailscale.
Quali tipi di VPN è possibile creare
Un server VPN permette di gestire le richieste di connessione remote e permettere l’accesso alle risorse della rete locale o la condivisione del collegamento dati solo agli utenti autenticati e autorizzati.
Possiamo individuare quattro diversi tipi di configurazioni VPN.
1) Personal. Una VPN di questo tipo permette soltanto l’accesso alla rete Internet utilizzando l’IP pubblico del server. È il tipo di servizio che offrono i provider di servizi VPN acquistabili su base mensile o annuale.
2) Remote Access. Una VPN che permette di accedere a distanza alle risorse della rete locale con la possibilità di utilizzare e modificarle da remoto.
3) Site-to-Site. Immaginate di avere due uffici fisicamente posti in luoghi diversi e collegati a reti differenti. Per mettere direttamente in comunicazione le reti dei due uffici e far parlare i dispositivi a queste collegati si imposta un collegamento privato chiamato appunto Site-to-Site VPN.
4) Mesh. Questa particolare configurazione è una di quelle meno conosciute, soprattutto a causa della sua complessità.
In una VPN Mesh ogni singolo dispositivo ha una connessione VPN diretta con ogni altro dispositivo eventualmente collegato a reti del tutto diverse. A più reti differenti possono essere connessi più dispositivi. Le VPN Mesh permettono di creare reti “piatte” in cui non è necessario instradare il traffico attraverso altri dispositivi scongiurando problemi prestazionali (aumento della latenza) e problematiche di sicurezza.
Come funziona Tailscale
Ideato da Brad Fitzpatrick, noto per una vasta schiera di progetti presentati sul Web nel corso degli anni, Tailscale è uno strumento chiamato in gergo hub and spoke: si tratta di un punto centrale che funge da gateway per lo scambio delle comunicazioni via VPN.
Tailscale poggia il suo funzionamento sul protocollo WireGuard e consente di far dialogare attraverso un tunnel crittografato sicuro qualunque dispositivo connesso alla rete (chiamato “nodo” o endpoint), sia esso fisico o virtuale (si pensi alle macchine virtuali e ai container Docker).
Ogni nodo WireGuard deve conoscere la chiave pubblica, l’indirizzo IP pubblico e il numero di porta di ogni altro nodo a cui vuole connettersi direttamente.
Se si volessero connettere 10 nodi l’utente dovrebbe istruire ciascuno di essi sull’esistenza di altri 9 nodi e creare l’equivalente di 90 tunnel cifrati separati.
Con una configurazione hub and spoke si ha un hub centrale (ruolo ricoperto da Tailscale) e 9 outlier con un approccio quindi che risulta molto più semplice.
Questo schema non è comunque esente da problemi in termini di flessibilità così come sul piano delle performance.
Come fa Tailscale a portare tutte le chiavi di cifratura WireGuard su ogni dispositivo che compone la rete dell’utente? Viene utilizzato un “coordination server” (login.tailscale.com
) che opera come una sorta di cassetta condivisa per le chiavi pubbliche:
1) Ogni nodo genera una coppia di chiavi pubbliche/private casuale per se stesso. La chiave pubblica viene associata alla sua specifica identità.
2) Il nodo contatta il coordination server di Tailscale, vi pubblica la sua chiave pubblica insieme con i dati sulle modalità per raggiungere il nodo stesso.
3) Il nodo scarica una lista di chiavi pubbliche e indirizzi attingendo alle informazioni memorizzate sul coordination server e conferite dagli altri nodi.
4) Il nodo configura la sua istanza WireGuard con l’appropriato set di chiavi pubbliche.
Con questo modello ibrido centralizzato-distribuito ogni nodo può colloquiare con qualunque altro indipendentemente dalla rete alla quale è connesso e alla configurazione dei firewall.
Con Tailscale non è necessario modificare le policy dei firewall, aprire porte in ingresso e modificare le tabelle di routing.
Per utilizzare Tailscale è sufficiente effettuare il download del client per Windows, macOS, Linux, iOS, Android, effettuare il login quindi confermare l’aggiunto del nodo alla propria rete VPN.
È disponibile anche un client per i NAS Synology.
Nel caso di Windows, ma la stessa cosa è fattibile per gli altri client, basta cliccare sull’icona del client Tailscale quindi scegliere il proprio nome utente e infine Admin console per ottenere la lista dei dispositivi collegati con la VPN WireGuard insieme con i rispettivi nomi e indirizzi IP.
A questo punto è ad esempio possibile accedere alle risorse condivise come si farebbe se si fosse collegati con la rete locale. L’importante, nel caso di Windows, è che la connessione sia indicata come Rete privata altrimenti le risorse condivise non risulteranno accessibili da remoto. In un altro articolo abbiamo visto le differenze tra rete privata e pubblica in Windows.
Il bello di Tailscale è che l’intero progetto è opensource tranne i client per i sistemi operativi proprietari come Windows, macOS, iOS e il coordination server.
Gli interessati possono trovare un’implementazione opensource di quest’ultimo su GitHub sotto il nome di Headscale.