WireGuard VPN: informazioni di base
WireGuard è un software gratuito per la creazione di una rete virtuale privata (VPN). Utilizzando una VPN, si apre in Internet un tunnel virtuale tra due dispositivi: la connessione di rete attraversa il tunnel come se i dispositivi fossero collegati direttamente da un cavo di rete. Le grandi organizzazioni come istituti di ricerca, ministeri e aziende utilizzano spesso le VPN poiché permettono di regolare l’accesso a determinate risorse della rete e isolare il flusso di dati dell’utente dal mondo esterno.
IPsec,OpenVPN, L2TP e PPTP offrono già una serie di stack evoluti di protocollo VPN. I fornitori di soluzioni VPN si basano su questi protocolli per consentire ai propri utenti di gestire il proprio traffico Internet attraverso la VPN. Adesso sempre più fornitori di VPN integrano WireGuard nelle proprie applicazioni per i vantaggi che offre.
Che cos’è WireGuard?
WireGuard è un’applicazione e un protocollo di rete per la creazione di tunnel VPN criptati. Il software è gratuito con la licenza GPLv2 ed è disponibile su più piattaforme. WireGuard è scritto nei linguaggi “C” e “Go” e funziona con Windows, macOS, BSD, iOS e Android.
WireGuard crea un tunnel criptato attraverso il quale vengono instradati i flussi di dati così protetti da accessi non autorizzati. wOltre all'attenzione per una crittografia avanzata, WireGuard offre ottimizzazioni per dispositivi e sistemi mobili “Internet of Things+ (IoT)”.
Dalla primavera del 2020, WireGuard è stato integrato direttamente nel kernel Linux. Dal momento che Linux opera come sistema operativo standard su miliardi di dispositivi collegati in tutto il mondo, WireGuard può essere utilizzato praticamente ovunque. Il suo utilizzo su larga scala è dovuto anche al fatto che il software è relativamente leggero e richiede solo bassi requisiti di hardware.
Quali sono le caratteristiche di WireGuard?
La caratteristica principale del protocollo WireGuard è il cosiddetto Cryptokey Routing.Gli indirizzi IP consentiti all’interno di un tunnel vengono assegnati alla chiave pubblica di un partner di connessione che decifra i pacchetti in entrata. Dopo la decodifica, un pacchetto in entrata viene consegnato solo se proviene da un indirizzo IP corrispondente alla chiave, altrimenti viene scartato.
A differenza degli stack di protocollo VPN IPsec e OpenVPN, WireGuard non è un protocollo agile: invece di negoziare singolarmente le basi crittografiche da utilizzare durante la fase di handshake quando si stabilisce una connessione, WireGuard si limita ad alcune opzioni. Le funzioni crittografiche utilizzate sono in forma riassuntiva. Qualora una delle basi crittografiche risulti compromessa, viene pubblicata una nuova versione sicura del protocollo WireGuard che, se utilizzata da entrambi i partner di comunicazione, proteggerà il flusso di dati.
Al momento della stesura di questo articolo sono in uso i seguenti protocolli e tecnologie di crittografia:
- Noise protocolframework
- Curve25519
- ChaCha20
- Poly1305
- BLAKE2
- SipHash24
- HKDF
Quali sono i vantaggi di WireGuard?
Uno dei maggiori vantaggi di WireGuard sta nelle dimensioni del suo codebase. L'intero codice kernel è costituito da circa 4.000 linee di codice mentre il codice di un'implementazione di OpenVPN o IPsecne contiene circa 100.00-600.000. Un codebase più piccolo è intrinsecamente più sicuro perché rende più facile trovare i bug e riduce al minimo la superficie di attacco.
Anche l'inventore di Linux Linus Torvalds, noto per la sua scrittura pungente e gli scatti d’ira occasionali, ha elogiato esplicitamente la codebase di WireGuard:
“Maybe the code isn’t perfect, but I’ve skimmed it, and compared to the horrors that are OpenVPN and IPSec, it’s a work of art.” – Fonte: netdev - Re: [GIT] Networking
Traduzione: “Forse il codice non è perfetto, ma a una prima occhiata, rispetto all’orribile codice di OpenVPN e IPSec, è un’opera d'arte.”
Grazie alla minore complessità del software, si possono ottenere maggiore sicurezza e prestazioni più elevate. Nei benchmark, WireGuard garantisce una velocità di trasmissione maggiore e una latenza minore rispetto ai protocolli concorrenti. Inoltre, WireGuard non è un protocollo "chiacchierone": (“it is not a chattyprotocol”): se l'utente non invia dati attraverso il tunnel, WireGuard è a riposo riducendo in questo modo la quantità di energia utilizzata, a beneficio della durata della batteria.
L'efficienza energetica è molto importante per i dispositivi mobili e in questo settore WireGuard è ben posizionato per diversi aspetti. Ad esempio, questo protocollo supporta il roaming ovvero il passaggio automatico dalla rete Wi-Fi alla rete di telefonia mobile e viceversa. Questo significa che se si perde una connessione, WireGuard di solito si ricollega più velocemente rispetto ai protocolli concorrenti.
Come funziona WireGuard?
In linea di principio WireGuard è un protocollo VPN peer-to-peer decentralizzato che, senza utilizzare un server, permette di aprire un tunnel direttamente tra due dispositivi. Un "server" WireGuard è semplicemente un dispositivo su cui sono memorizzate le configurazioni di connessione per diversi utenti.
Il procedimento per stabilire una connessione con WireGuard è simile a SecureShell (SSH): con WireGuard gli utenti ("peers") creano chiavi pubbliche che scambiano tra loro e usano per autenticarsi a vicenda e criptare i pacchetti di dati.
Dopo aver creato le chiavi crittografiche, su ogni utente vengono effettuate diverse impostazioni di rete (vedi di seguito la nostra guida alla configurazione di WireGuard). Per permettere lo scambio di dati, si collegano alla chiave crittografica gli indirizzi IP autorizzati degli utenti mentre vengono scartati quelli di diversa provenienza. Con WireGuard la trasmissione dei dati avviene tramite il protocollo User Datagram Protocol (UDP).
La configurazione sul dispositivo di un utente viene effettuata utilizzando lo strumento della barra dei comandi WireGuard e altri strumenti standard disponibili su Linux. Sebbene il software sia considerato relativamente facile da configurare, WireGuard serve solo come base. Nelle singole fasi di configurazione e di connessione, l’utente può avvalersi di un'applicazione basata sul protocollo. Gli utenti di servizi VPN commerciali possono così godere dei vantaggi del moderno protocollo VPN senza dover utilizzare la barra dei comandi.
Primi passi con WireGuard
In linea di massima, l’installazione e la configurazione di WireGuard su un sistema Linux risultano abbastanza agevoli. Per esempio, è possibile creare una propria configurazione configurare i server VPN con Raspberry Pi. Tuttavia, la procedura esatta cambia a seconda dell'uso previsto, del sistema operativo utilizzato e dell'ambiente di rete esistente. Qui possiamo solo delineare la procedura approssimativa, pertanto vi preghiamo di utilizzare le nostre istruzioni solo a scopo di test.
Installate WireGuard sull’hosting VPS di IONOS e create la vostra VPN.https://www.ionos.it/server/vps="c287858" class="textmedia" data-ctype="textmedia"> Per installare WireGuard sul vostro sistema Linux eseguite i seguenti ordini nella barra dei comandi: Installare WireGuard sul proprio sistema
# per Ubuntu a partire dalla versione 19.10
sudoaptinstallwireguard
# per le versioni Ubuntu precedenti alla 19.10
sudo add-apt-repository ppa:wireguard/wireguard
sudo apt-get update
sudo apt-get install wireguard
Qui viene mostrata l'installazione su Ubuntu-Linux. Su altri sistemi potrebbe essere necessario adattare il codice.
Creare chiavi WireGuard
In modo analogo a SSH e PGP, le chiavi crittografiche costituiscono la base per utilizzare WireGuard. Come da prassi, c'è una chiave privata che deve essere assolutamente tenuta segreta e dalla quale viene poi generata una chiave pubblica condivisa con gli utenti. In questo modo gli utenti possono criptare e inviare i dati utilizzando la chiave privata per decifrare i dati criptati.
Eseguite i seguenti ordini sulla barra dei comandi per creare una chiave WireGuard privata e pubblica:
# Creare una directory per le chiavi
# ATTENZIONE: solo a scopo di test perché non è sicuro!
mkdir ~/.wireguard/ && cd ~/.wireguard/
# Impostare i diritti dei file
umask 077
# creare una chiave privata
wggenkey>privatekey
# creare una chiave pubblica da una chiave privata
wgpubkey<privatekey>publickey</privatekey>
Configurare le impostazioni di rete per WireGuard
L'installazione di WireGuard e la creazione di chiavi sono procedimenti di base più o meno uguali su ogni sistema. Al contrario, la configurazione di WireGuard dipende dalle impostazioni di rete locale esistenti. Qui possiamo solo delineare lo schema generale e per un’analisi più approfondita raccomandare la Guida rapida all’avvio del progetto WireGuard.
Il procedimento generale per la creazione di una connessione di rete con WireGuard segue questo schema:
# Aggiungere l’interfaccia di rete WireGuard
ip link adddev wg0 typewireguard
# Configurare gli indirizzi IP
ip address add dev wg0 192.168.2.1 peer 192.168.2.2
# Configurare l'interfaccia di rete utilizzando il file di configurazione
wgsetconf wg0 myconfig.conf
# Abilitare l’interfaccia di rete
ip link set up dev wg0
WireGuardè un concorrente moderno e agile che aspira a soppiantare i vecchi stack di protocollo VPN IPsec e OpenVPN e nel prossimo futuro potrebbe in gran parte sostituirli.