Torna al blog

Configurazione di OpenVPN su Ubuntu 18.04

Configurazione di OpenVPN su Ubuntu 18.04

Introduzione

Desideri accedere a Internet in modo sicuro dal tuo smartphone o laptop quando ti connetti a una rete non affidabile (ad es. il WiFi di un hotel o di un bar)? Fortunatamente, c'è un modo per esaudire i tuoi desideri. Puoi connetterti in modo sicuro a una rete non affidabile come se fossi su una rete privata utilizzando una Virtual Private Network (VPN).

Cos'è una VPN?

VPN sta per Virtual Private Network (Rete Privata Virtuale). Offre la possibilità di aprire un tunnel sicuro verso un server affidabile. Tutte le richieste vengono quindi inviate e ricevute tramite questo server. Il vantaggio è quello di proteggere l'accesso e le transazioni quando si utilizzano reti pubbliche come il WiFi gratuito di un hotel.

Attraverso la VPN, tutti i dati vengono crittografati ed elaborati tramite il server. I dispositivi intermedi, come i router di terze parti e simili, non hanno modo di reindirizzare il traffico verso destinazioni indesiderate. Inoltre, una volta stabilita con successo la connessione, si entra a far parte della rete del server. Altri server, computer o dispositivi come le stampanti che normalmente sarebbero accessibili solo nella rete locale del server possono ora essere raggiunti anche attraverso il tunnel VPN. Tuttavia, poiché non tutti i dati devono essere inviati attraverso un tunnel crittografato, è possibile configurare il client VPN in modo che solo una parte definita delle richieste venga inviata attraverso il tunnel VPN. Il resto del traffico viene elaborato normalmente su Internet.

In questo tutorial, ti guideremo attraverso i passaggi per configurare un server OpenVPN su Ubuntu 18.04.

Requisiti

È necessario avere accesso a un server Ubuntu 18.04 per ospitare il tuo OpenVPN servizio per completare questo tutorial. Prima di iniziare questa guida, è necessario configurare anche un utente non-root con permessi sudo. Puoi installare facilmente il tuo server seguendo il nostro tutorial sulla configurazione di un server Ubuntu.

Inoltre, avrai bisogno di un computer separato che funga da autorità di certificazione (CA). Tecnicamente, puoi usare il tuo server OpenVPN o il tuo computer locale come autorità di certificazione. Tuttavia, non lo consigliamo in quanto esporrebbe la tua VPN a falle di sicurezza. Secondo la documentazione ufficiale di OpenVPN, dovresti posizionare l’autorità di certificazione su un computer separato dedicato all’importazione e alla firma delle richieste di certificato. Pertanto, assumiamo che la tua autorità di certificazione si trovi su un server Ubuntu 18.04 separato che dispone anche di un utente non-root con permessi sudo e di un firewall di base. In questa guida, tutti i passaggi di installazione e configurazione saranno il più semplici possibile per ciascuna delle installazioni. Puoi anche dare un’occhiata al nostro tutorial su come configurare un server Open VPN con Docker.

Step 1 – Installare OpenVPN e EasyRSA

Innanzitutto, aggiorna l’indice dei pacchetti del tuo server VPN e installa OpenVPN. Puoi installare OpenVPN usando apt perché è disponibile nei repository predefiniti di Ubuntu:

Step 2: Creare un’autorità di certificazione

Crea una semplice autorità di certificazione (CA) per emettere certificati attendibili per il server OpenVPN. Per fare ciò, scarica l’ultima versione di EasyRSA sia sulla tua macchina CA che sul server OpenVPN usando wget. Per ottenere l’ultima versione, vai alla pagina Releases del progetto ufficiale EasyRSA su GitHub, copia il link di download per il file che termina con .tgz e incollalo nel seguente comando:

Quindi, estrai il tarball:

 OpenVPN EasyRSA software

A questo punto, tutto il software richiesto è stato installato con successo sul computer CA e sul server.

Step 3 – Configurare le variabili EasyRSA e compilare la CA

EasyRSA viene fornito con un file di configurazione che puoi modificare per definire una serie di variabili per la tua CA utilizzando questo comando:

Nella directory è presente un file denominato vars.example. Crea una copia di questo file e nominala vars senza estensione:

Usa il tuo editor di testo preferito per aprire questo nuovo file:

Successivamente, trova le impostazioni che definiscono i valori predefiniti dei campi per i nuovi certificati. Sarà simile a questo:

Aggiorna queste variabili con i valori che preferisci, come mostrato di seguito:

Salva e chiudi il file una volta pronto. Il passo successivo consiste nel richiamare lo script easyrsa ed eseguirlo con l'opzione init-pki per avviare l'infrastruttura a chiave pubblica sul server CA:

easyrsa init-pki

Successivamente, esegui il comando build-ca con l'opzione nopass in modo che non ti venga richiesta una password ogni volta che interagisci con la tua CA:

Nell'output ti verrà chiesto di confermare il common name per la tua CA:

 OpenVPN build-ca

Fatto questo, la tua CA è configurata ed è pronta per iniziare a firmare le richieste di certificato.

Passo 4 – Generare il certificato del server, la chiave e i file di crittografia

Dopo che la CA è pronta, puoi generare la chiave privata e la richiesta di certificato dal server e poi inviarla alla CA per la firma creando il certificato richiesto. Per prima cosa, naviga nella directory EasyRSA sul server OpenVPN:

Da lì, esegui lo script easyrsa con l'opzione init-pki. Sebbene tu abbia già eseguito questo comando sul computer della CA, questo comando deve essere eseguito anche qui. Questo perché le directory PKI del server e della CA sono diverse:

Quindi richiama nuovamente lo script easyrsa, questa volta con l'opzione gen-req, seguita dal nome generico del computer:

Questo creerà una chiave privata per il server e un file di richiesta di certificato denominato server.req. Copia la chiave del server nella directory /etc/openvpn/:

Trasferisci il file server.req sul tuo computer CA utilizzando un metodo sicuro (come SCP nel seguente esempio):

Successivamente, naviga nella directory EasyRSA sul tuo computer CA:

Usa nuovamente lo script easyrsa per importare il file server.req e aggiungi il suo common name dopo il percorso del file:

Quindi, firma la richiesta eseguendo lo script easyrsa con l'opzione sign-req seguita dal tipo di richiesta e dal common name. Per la richiesta di certificato del server OpenVPN, assicurati di utilizzare il tipo di richiesta server:

L'output richiede di verificare che la richiesta provenga da una fonte attendibile. Digitare yes e premere Invio per confermare. Verificare i dettagli mostrati di seguito per assicurarne l'accuratezza. Si prega di notare che questa richiesta non è stata ancora verificata tramite password.

Richiedere il soggetto e firmarlo come certificato del server per 3650 giorni:

 OpenVPN sign certificate for server

Se la chiave CA è stata crittografata, a questo punto verrà richiesta la password. Successivamente, utilizzare un metodo sicuro per trasferire il certificato firmato al server VPN:

Trasferire il file ca.rt sul server prima di disconnettersi dal computer CA:

Successivamente, accedere nuovamente al server OpenVPN e copiare i file server.crt e ca.crt nella directory /etc/openvpn/:

Quindi, navigare nella directory EasyRSA:

Inserire il seguente codice per creare una chiave Diffie-Hellman robusta da utilizzare durante lo scambio di chiavi:

Al termine, generare una firma HMAC per migliorare la funzionalità di controllo dello stato TLS del server:

Al termine del comando, copiare i due nuovi file nella directory / etc / openvpn /:

In questo modo vengono generati tutti i certificati e i file di chiave richiesti dal server. Ora è possibile creare il certificato e la chiave appropriati che il computer client utilizzerà per accedere al server OpenVPN.

Passo 4 – Generare il certificato client e la coppia di chiavi

Successivamente, creeremo una chiave client e diversi certificati. Se si hanno più client, è possibile ripetere questo processo per ciascun client. Si noti, tuttavia, che è necessario passare un valore di nome univoco allo script per ciascun client. In questo tutorial, chiameremo la prima coppia certificato/chiave client1. Innanzitutto, creare una struttura di directory nella propria home directory per memorizzare i certificati client e i file di chiave:

Poiché per motivi di sicurezza la coppia certificato/chiave e il file di configurazione del client vengono salvati in questa directory, è ora necessario revocare i permessi:

Quindi tornare alla directory EasyRSA ed eseguire lo script easyrsa con le opzioni gen-req e nopass, oltre al nome generico del client:

Premere Invio per confermare il common name. Successivamente, copiare il file client1.key nella directory / client-configs / keys / precedentemente creata:

Successivamente, utilizzare un metodo sicuro per trasferire il file client1.req al computer CA:

Accedere al computer CA, navigare nella directory EasyRSA e importare la richiesta di certificato:

import client.req

Quindi, come nel passaggio precedente, firmare la richiesta sul server. Ma questa volta è necessario specificare il tipo di richiesta client:

Al prompt, digitare yes per confermare che si desidera firmare la richiesta di certificato e che la richiesta proviene da una fonte attendibile. Inserire la parola “yes” per continuare o inserire qualsiasi altra cosa per annullare:

sign certificate

Se la chiave CA è stata crittografata, anche in questo caso verrà richiesto di inserire la password. Questo creerà un file di certificato client denominato client1.crt. Trasferire questo file di nuovo al server:

Riconnettiti via SSH al tuo server OpenVPN e copia il certificato del client nella directory / client-configs / keys /:

Successivamente, copia i file ca.crt e ta.key nella directory / client-configs / keys /:

Allo stesso tempo, tutti i certificati e le chiavi del server e del client sono stati generati e salvati nelle directory corrispondenti sul server. Ora puoi continuare a configurare OpenVPN sul server.

 Passo 5 – Configurazione del servizio OpenVPN

Dopo aver generato i certificati del client e del server, puoi configurare il servizio OpenVPN per utilizzare queste credenziali. Innanzitutto, copia il file di configurazione di esempio di OpenVPN nella tua directory di configurazione e poi estrailo per utilizzarlo come base per la configurazione:

Apri il file di configurazione del server nel tuo editor di testo preferito:

Quindi, trova la parte HMAC cercando il comando tls-auth:

Trova la parte relativa alla password cercando la riga della password commentata. La cifratura AES-256-CBC offre un buon livello di cifratura ed è ben supportata. La riga non dovrebbe essere commentata, ma se lo è, elimina il “;” precedente:

Sotto di essa, aggiungi un comando Auth per selezionare l'algoritmo di message-digest HMAC. SHA256 è una buona scelta per questo:

Successivamente, trova la riga con l'istruzione dh che definisce i parametri Diffie-Hellman. A causa di alcune recenti modifiche a EasyRSA, il nome del file della chiave Diffie-Hellman potrebbe essere diverso da quello elencato nel file di configurazione di esempio del server. Se necessario, modifica il nome del file elencato qui eliminando 2048 per allinearlo con la chiave del passaggio precedente:

Infine, trova le impostazioni user e group ed elimina il “;” all'inizio di ogni riga:

Finora, le modifiche apportate al file server.conf di esempio dovrebbero consentire il funzionamento di OpenVPN.

Passo 6 – Configurazione di rete del server

Configura l'IP forwarding per instradare correttamente il traffico attraverso la VPN. Questo è essenziale per la funzionalità VPN fornita dal tuo server:

Cerca la riga commentata che imposta net.ipv4.ip_forward. Rimuovi il carattere “#” dall'inizio della riga per decommentare questa impostazione:

Salva il file e chiudilo una volta terminato. Per leggere il file e applicare i valori per la sessione corrente, digita:

sysctl -p

Successivamente, aggiungi l'interfaccia di rete pubblica della tua macchina:

La tua interfaccia pubblica è la stringa all'interno dell'output di questo comando che segue la parola “dev”. Ad esempio, questo risultato mostra l'interfaccia denominata ens3.

default ip route

Apri il file /etc/ufw/before.rules per aggiungere la configurazione pertinente:

Verso la parte superiore del file, aggiungi le righe evidenziate di seguito per impostare la policy predefinita per la catena POSTROUTING nella tabella nat e mascherare tutto il traffico proveniente dalla VPN. Sostituisci ens3 nella riga -A POSTROUTING qui sotto con l'interfaccia trovata nel comando precedente:

Salva il file e chiudilo una volta terminato. Successivamente, devi indicare a UFW di consentire anche i pacchetti inoltrati per impostazione predefinita. Per fare ciò, apri il file /etc/default/ufw:

All'interno, trova la direttiva DEFAULT_FORWARD_POLICY e cambia il valore da DROP ad ACCEPT:

Salva e chiudi il file quando hai finito. Successivamente, regola il firewall per abilitare il traffico verso OpenVPN. Se non hai modificato la porta e il protocollo nel file /etc/openvpn/server.conf, dovrai aprire il traffico UDP verso la porta 1194. Se hai modificato la porta e/o il protocollo, sostituisci qui i valori che hai selezionato. Nel caso in cui tu abbia dimenticato di aggiungere la porta SSH seguendo il tutorial dei prerequisiti, aggiungila anche qui:

Dopo aver aggiunto queste regole, disabilita e riabilita UFW per riavviarlo e caricare le modifiche da tutti i file che hai modificato:

ufw commands

Congratulazioni, il tuo server è ora configurato per gestire correttamente il traffico OpenVPN!

Conclusione

Se hai seguito questo tutorial fino in fondo, ora sei in grado di navigare in Internet in modo sicuro. Potrai tenere la tua identità, la tua posizione e il tuo traffico al sicuro da sguardi indiscreti.

Buon computing!

 

 

author

Akshay Nagpal

Autore · CloudSigma

Preslav Dobrev è un designer creativo presso CloudSigma, con un focus su un'identità aziendale coerente attraverso l'uso di canali di marketing tradizionali e innovativi. È abile nel fondere la visione artistica con il marketing strategico per creare narrazioni di brand di grande impatto.

Commenti

Ancora nessun commento. Scrivi il primo.