Gestisci un VPC (cloud virtuale privato) su aws (Amazon Web Service) e vorresti configurare una VPN per l'accesso sicuro ai tuoi server? Cerchi una VPN snella, sicura e performante per la navigazione anonima e lo streaming audio-video in sicurezza?
Allora seguimi in questo articolo nel quale vedremo insieme come configurare un VPN Server con Wireguard per l'accesso in sicurezza ai tuoi server EC2 da desktop o da mobile.
L'articolo è molto tecnico per cui prenditi tutto il tempo necessario per la lettura e ricorda che questo articolo fa al caso tuo se:
- Hai già un VPC su aws (o su un altro cloud provider) e vuoi configurare una VPN per l'accesso sicuro ai servizi da desktop o da mobile
- Non hai un VPC ma vuoi creare una VPN per lo streaming audio-video in sicurezza
Quindi l'articolo è perfetto per te sia che tu stia cercando di creare un “tunnel” che ti permetta di accedere in sicurezza ai tuoi server su un VPC esistente, sia che tu voglia creare una VPN per lo streaming audio-video criptato e sicuro.
I contenuti dell'articolo
Cos'è Wireguard VPN
Ma cos'è quindi Wireguard VPN e perché potrebbe essere la soluzione ideale per il business o per lo svago?
WireGuard® è una VPN ossia un software che permette di creare una Rete Virtuale Privata (Virtual Private Network) in grado di garantire sicurezza, privacy ed anonimato attraverso un tunnel VPN (canale di comunicazione) logicamente privato e costruito sopra il Protocollo Pubblico (Internet).
Esistono molte VPN in commercio, sia gratuite (Open Source) che a pagamento e possono essere usate sia per creare delle rete virtuali private molto utili, ad esempio, nello smart working sia per la navigazione sicura ed anonima su internet, proprio perché il protocollo usato nelle VPN è criptato e sicuro.
Wireguard VPN (Virtual Private Network) è una soluzione gratuita semplice, veloce e moderna che utilizza una crittografia all'avanguardia.
Progettata come VPN generica per l'esecuzione su interfacce integrate e container di microservizi, inizialmente rilasciata per il solo kernel Linux, ora è multipiattaforma (Windows, macOS, BSD, iOS, Android) e ampiamente distribuibile.
Attualmente è ancora in forte sviluppo, ma potrebbe già essere considerata la soluzione VPN più sicura, facile da usare e semplice del settore.
Cryptokey Routing di Wireguard
Alla base del funzionamento della VPN Wireguard c'è un concetto chiamato “Cryptokey Routing“, che funziona associando chiavi pubbliche ad un elenco di indirizzi IP consentiti all'interno del tunnel.
Ogni interfaccia di rete ha una chiave privata e un elenco di peer (client) ed ogni peer ha una chiave pubblica.
Le chiavi pubbliche sono stringhe di testo che vengono utilizzate dai peer per autenticarsi a vicenda.
Ad esempio una configurazione server potrebbe essere la seguente
[Interface] PrivateKey = yCnz5RF+lXsJte14tji3zlMNq+hd2rYUIgJBgB3fBmk= ListenPort = 51820 [Peer] PublicKey = xTIBA5rboUvnH4htodjb6e697QjLERt1NAB4mZqp8Dg= AllowedIPs = 10.0.0.200/32 [Peer] PublicKey = TrMvSoP4jYQlY6RIzBgbssQqY3vxI2Pi+y71lOWWXX0= AllowedIPs = 10.0.0.201/32
mentre il client potrebbe avere una configurazione simile alla seguente
[Interface] PrivateKey = gI6EdUSYvn8ugXOt8QQD6Yc+JyiZxIhp3GInSWRfWGE= Address = 10.0.0.200/24 [Peer] PublicKey = HIgo9xNzJMWLKASShiTqIybxZ0U3wGLiUeJ1PKf8ykw= Endpoint = 192.95.5.70:51820 AllowedIPs = 0.0.0.0/0
Dove il tag [Interface] indica l'interfaccia e [Peer] il client.
Cosa fare prima di cominciare
Prima di cominciare con la configurazione della VPN è bene progettare su carta quella che sarà la nuova configurazione della tua rete, ad esempio potresti avere un cloud con le seguenti configurazioni di IP:
VPC esistente: 192.168.0.0/16 (classi di indirizzi IP privati del tuo VPC esistente)
VPN wireguard: 10.0.0.0/16 (classi di indirizzi IP della VPN wireguard)
IP Pubblici: insieme di IP pubblici (elastic IP in aws) che userai nella tua configurazione.
Considera che per il tuo nuovo server VPN sarà necessario avere un IP pubblico fisso (in aws elastic IP), più potresti avere altri IP pubblici in funzione di quello che è il tuo VPC esistente (se ad esempio hai un webserver ti servirà certamente un IP pubblico fisso).
Per cui segnati e prendi nota di tutti gli IP e di tutti i server che formeranno la tua rete, sia server che client.
Come creare un Wireguard VPN Server
Per configurare una VPN con Wireguard è necessario, come prima cosa, installare e configurare un Wireguard VPN server, una volta creato il server potrai utilizzarlo per l'accesso sicuro a tutti gli altri server del tuo aws cloud (o di qualsiasi altro VPS come linode o Azure) o semplicemente per navigare in sicurezza dai tuoi dispositivi client (Windows, macOS, BSD, iOS, Android, … )
Creare la macchina Linux per Wireguard
Iniziamo con il vedere come creare e configurare un VPN Server, per cui come prima cosa crea una nuova macchina virtuale Linux, io utilizzo server Ubuntu valido anche per la versione gratuita di AWS.
Su AWS può andar bene un server di dimensioni minime come t2.micro con una CPU ed 1 GB di RAM
Anche il disco non deve essere particolarmente capiente, va bene anche la soluzione minima con 8GB SSD
Seleziona la chiave ssh, crea la macchina Linux EC2 ed attendi il provisioning completo.
Configurare le policy di sicurezza (security group)
Una volta che la macchina è live e funzionante accedi al security group relativo e crea (al minimo) le seguenti regole Inbound (in ingresso):
Con queste regole andrai ad abilitare tutto il traffico sulla porta UDP di default Wireguard (51820) ed il traffico SSH ai soli client facenti parte della rete virtuale privata ossia ai client con installato e configurato Wireguard client (10.0.0.0/16).
Questo secondo aspetto è molto importante, perché l'accesso in ssh, con la nuova configurazione sarà consentito ai soli client attestati alla rete VPN e non più abilitato ai tutti i clienti su internet.
Questa regola renderà ancor più sicuro il VPC esistente, disabilitando di fatto tutti gli accessi in ssh su rete internet pubblica.
Per far ciò dovrai andare a riconfigurare le regole di accesso ssh ai tuoi server EC2 esistenti in questo modo:
Dove il source ossia la sorgente abilitato è il security group appena creato per il server VPN Wireguard, questo significa che si potrà accedere alla macchina solo passando per il tunnel VPN.
Associare un IP pubblico alla macchina
Una volta creata la macchina e configurate le regole di sicurezza dovrai associare all'istanza EC2 un IP Elastico ossia un IP pubblico fisso.
Per farlo accedi alla sezione aws dedicata agli IP Elastici e creane uno nuovo
Una volta creato l'IP associalo alla macchina Wireguard appena creata, in questo modo avrai un indirizzo ip pubblico (es 192.95.5.70) che dovrai utilizzare per la configurazione dei client di accesso.
Installare Wireguard su server Ubuntu
Ora che hai configurato i security group ed hai un IP Pubblico Elastico, puoi procedere con l'installazione e configurazione di Wireguard VPN sulla macchina Linux Ubuntu, procedi nel seguente modo:
sudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:wireguard/wireguard sudo apt install wireguard sudo apt install linux-headers-$(uname -r)
Ora crea le chiavi pubbliche e private del server
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
A questo punto stampale a video ed appuntati in un posto sicuro i valori
sudo nano /etc/wireguard/publickey sudo nano /etc/wireguard/privatekey
Ora mostra a video la nuova interfaccia di rete associata alla VPN con il comando:
ip -o -4 route show to default | awk '{print $5}'
Potresti avere a video un valore tipo ens5
Ora hai tutti i valori per configurare il file wg0.conf, per cui editalo
sudo nano /etc/wireguard/wg0.conf
ed inserisci i valori
[Interface] Address = 10.0.0.1/24 SaveConfig = true PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE; PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens5 -j MASQUERADE; ListenPort = 51820 PrivateKey = [CHIAVE-PRIVATA-SERVER] ListenPort = 51820
Fai molta attenzione alle sezioni in bold, inserisci i tuoi valori poi salva e chiudi.
E' arrivato il momento di abilitare la rete wg0, se hai fatto tutto correttamente non dovresti ricevere errori lanciando i seguenti comandi:
sudo wg-quick up wg0 sudo systemctl enable wg-quick@wg0 wg-quick save wg0
Per consentire la navigazione Internet ai client dovrai abilitare il port forward editando il file
sudo nano /etc/sysctl.conf
Cerca la riga ed abilita il valore
net.ipv4.ip_forward=1
Poi lancia il comando
sudo sysctl -p
Se non hai ricevuto codici di errore la configurazione preliminare è terminata ed il server Wireguard VPN è installato.
Come creare un Wireguard VPN Client
Ora che hai configurato il tuo server VPN Wireguard ed abilitato l'accesso al VPC tramite il security group puoi iniziare a configurare il client (o i client) per l'accesso in sicurezza alla VPC e la navigazione anonima e criptata su Internet.
Ti farò vedere come configurare l'accesso usando un mac ed un iPhone ma la procedura è del tutto similare anche per macchine Windows e dispositivi Android.
Configurare il client Wireguard VPN su macOS
Come prima cosa scarica ed installa il client Wireguard per macOS, a questo link trovi tutti i riferimenti per il download del software.
Una volta installato troverai in alto a destra la seguente icona
Seleziona la voce Gestisci i tunnel e poi aggiungi un nuovo tunnel vuoto
Appena aperta la nuova finestra avrai solo due valori: chiave pubblica e chiave privata
Completa quindi con tutti i valori necessari
[Interface] PrivateKey = [CHIAVE-PRIVATA-CLIENT] Address = 10.0.0.200/24 [Peer] PublicKey = [CHIAVE-PUBBLICA-SERVER] Endpoint = 192.95.5.70:51820 AllowedIPs = 0.0.0.0/0
Fai molta attenzione alle sezioni in bold, inserisci i tuoi valori poi salva e chiudi, ricordando che in questo caso la sezione [Peer] contiene i dati del server mentre la sezione [Interface] contiene i valori relativi all'interfaccia di rete del client.
A questo punto torna sulla shell del server Wireguard e lancia il comando di abilitazione del nuovo client
sudo wg set wg0 peer [CHIAVE-PUBBLICA-CLIENT] allowed-ips 10.0.0.200
Nel caso in cui tu abbia deciso di associare l'ip 10.0.0.200 al tuo client, altrimenti cambia l'ip secondo la configurazione scelta.
Ripeti questa operazione per tutti i client macOS che vuoi attestare alla rete VPN.
Configurare il client Wireguard VPN su iPhone
Come prima cosa scarica ed installa il client Wireguard per macOS, a questo link trovi tutti i riferimenti per il download del software.
Una volta installata l'app
lanciala e clicca sul + in alto a destra, poi seleziona “Crea da zero“.
A questo punto utilizza come al solito la sezione Interface per inserire i dati del client e la sezione Peer per inserire i dati del server.
Come prima cosa genera chiave pubblica e privata per l'iPhone, poi segnati questi valori.
Per tenere sempre attiva la connessione inserisci alla voce “Keep alive permanente” il valore 25 ed i dati del peer già inseriti precedentemente.
Salva la configurazione e torna sulla shell del server Wireguard e lancia il comando di abilitazione del nuovo client
sudo wg set wg0 peer [CHIAVE-PUBBLICA-CLIENT] allowed-ips 10.0.0.201
Nel caso in cui tu abbia deciso di associare l'ip 10.0.0.201 al tuo client iPhone, altrimenti cambia l'ip secondo la configurazione scelta.
Ora dovresti poter accedere alla rete usando il tunnel VPN
ti basterà solo attivare la nuova connessione.
Come verificare il funzionamento della VPN Wireguard
Una volta installato il server, abilitate le rotte di accesso al tuo VPC, abilitata la navigazione Internet per i client ed installati e configurati i client sei pronto per verificarne il corretto funzionamento.
La prima cosa da fare per verificare che tutto funzioni è editare il file
sudo nano /etc/wireguard/wg0.conf
E verificare che in automatico Wireguard abbia aggiunto i peer (client) periferici, dovresti vedere alla voce [Peer] anche il valore Endpoint, con l'ip address del tuo client ed una porta randomica, come questo
Endpoint = 132.6.12.29:1920
Poi da un client (mac o iPhone) abilita la VPN e verifica che la navigazione Internet funzioni correttamente.
Poi accedi al sito whats my ip address e verifica che l'ip address sia quello elastico configurato per la VPN Wireguard e non quello del tuo provider internet.
Per concludere verifica che l'accesso in ssh ai tuoi server EC2 e servizi AWS funzioni solo con la VPN attiva e sia inibito a VPN spenta.
Se tutto è andato per il meglio avrai messo in sicurezza il tuo cloud virtuale privato con pochi semplici passi e reso la tua navigazione sicura ed anonima.
Conclusioni
In questo articolo ti ho fatto vedere come configurare una VPN per l'accesso sicuro ai tuoi server e per la navigazione su internet in modo sicuro ed anonimo.
Abbiamo visto come come configurare un VPN Server con Wireguard per l'accesso in sicurezza ai tuoi server EC2 da desktop o da mobile.
Che te ne pare di questo tutorial? Conoscevi già Wireguard VPN? Usi anche tu una VPN per la navigazione o per l'accesso sicuro a contenuti per lo streaming audio video?
Fammi sapere cosa ne pensi e quali sono le tue esperienze nei commenti!
2 commenti
Caspita non sapevo che Wireguard c’era anche su OSX. Grazie! Lo giro nel gruppo di https://vpn24.it/
Grazie