OpenVPN crea un tunnel crittografato tra due punti, impedendo a terzi di accedere al traffico di rete. Configurando il tuo server di rete privata virtuale (VPN), diventi il tuo provider VPN. Molti servizi VPN popolari utilizzano già OpenVPN, quindi perché collegare la tua connessione a un provider specifico quando puoi avere il controllo completo?
Il primo articolo di questa serie ha dimostrato come impostare e configurare un PC Linux per fungere da server OpenVPN. Ha anche discusso di come configurare il tuo router in modo da poter raggiungere il tuo server VPN da una rete esterna.
Questo secondo articolo mostra come installare il software del server OpenVPN utilizzando i passaggi personalizzati dal wiki OpenVPN.
Installa OpenVPN
Innanzitutto, installa OpenVPN e easy-rsa
applicazione (per aiutarti a configurare l'autenticazione sul tuo server) utilizzando il tuo gestore di pacchetti. Questo esempio usa Fedora Linux; se hai scelto qualcosa di diverso, usa il comando appropriato per la tua distribuzione:
$ sudo dnf install openvpn easy-rsa
Questo crea delle directory vuote:
/etc/openvpn
/etc/openvpn/client
/etc/openvpn/server
Se questi non vengono creati durante l'installazione, creali manualmente.
Configura l'autenticazione
OpenVPN dipende da easy-rsa
script e dovrebbe avere una propria copia di essi. Copia il easy-rsa
script e file:
$ sudo mkdir /etc/openvpn/easy-rsa
$ sudo cp -rai /usr/share/easy-rsa/3/* \
/etc/openvpn/easy-rsa/
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
L'autenticazione è importante e OpenVPN la prende molto sul serio. La teoria è che se Alice ha bisogno di accedere a informazioni private all'interno dell'azienda di Bob, è fondamentale che Bob si assicuri che Alice sia davvero Alice. Allo stesso modo, Alice deve assicurarsi che Bob sia davvero Bob. Chiamiamo questa autenticazione reciproca.
La best practice di oggi controlla un attributo in base a due dei tre possibili fattori:
- Qualcosa che hai
- Qualcosa che sai
- Qualcosa che sei
Ci sono molte scelte. Questa configurazione OpenVPN utilizza:
- Certificati: Qualcosa che hanno sia il client che il server
- Password del certificato: Qualcosa che la gente sa
Alice e Bob hanno bisogno di aiuto per autenticarsi reciprocamente. Dal momento che entrambi si fidano di Cathy, Cathy assume un ruolo chiamato autorità di certificazione (CIRCA). Cathy attesta che Alice e Bob sono entrambi chi affermano di essere. Poiché Alice e Bob si fidano entrambi di Cathy, ora si fidano anche l'uno dell'altro.
Ma cosa convince Cathy che Alice e Bob sono davvero Alice e Bob? La reputazione di Cathy all'interno della comunità dipende da come funziona, quindi se vuole che anche Danielle, Evan, Fiona, Greg e altri si fidino di lei, metterà alla prova rigorosamente le affermazioni di Alice e Bob. Dopo che Alice e Bob hanno convinto Cathy che in realtà sono Alice e Bob, Cathy firma dei certificati da condividere tra loro e con il mondo.
Come fanno Alice e Bob a sapere che Cathy, e non qualcuno che la impersona, ha firmato i certificati? Usano una tecnologia chiamata crittografia a chiave pubblica:
- Trova un algoritmo di crittografia che crittografa con una chiave e decrittografa con un'altra.
- Dichiara una chiave privata e condividi l'altra chiave con il pubblico.
- Cathy condivide la sua chiave pubblica e una copia in chiaro della sua firma con il mondo intero.
- Cathy cripta la sua firma con la sua chiave privata. Chiunque può decifrarlo con la sua chiave pubblica.
- Se la firma decifrata di Cathy corrisponde alla copia in chiaro, Alice e Bob possono fidarsi che Cathy l'abbia davvero firmata.
Utilizzi questa stessa tecnologia ogni volta che acquisti beni e servizi online.
Implementa l'autenticazione
La documentazione di OpenVPN suggerisce di configurare una CA su un sistema separato o almeno una directory separata sul server OpenVPN. La documentazione suggerisce anche di generare certificati server e client dal server e dai client. Poiché si tratta di una configurazione semplice, puoi utilizzare il server OpenVPN come propria CA e inserire i certificati e le chiavi in directory specificate sul server.
Genera certificati dal server e copiali su ciascun client come parte della configurazione del client.
Questa implementazione utilizza certificati autofirmati. Funziona perché il server si fida di se stesso e i client si fidano del server. Pertanto, il server è la migliore CA per firmare i certificati.
Dal server OpenVPN, imposta la CA:
$ sudo mkdir /etc/openvpn/ca
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa init-pki
$ sudo /etc/openvpn/easy-rsa/easyrsa build-ca
Usa una passphrase facile da ricordare ma difficile da indovinare.
Configura la coppia di chiavi del server e la richiesta di certificato:
$ cd /etc/openvpn/server
$ sudo /etc/openvpn/easy-rsa/easyrsa init-pki
$ sudo /etc/openvpn/easy-rsa/easyrsa gen-req OVPNserver2020 nopass
In questo esempio, OVPNServer2020
è il nome host che hai assegnato al tuo server OpenVPN nel primo articolo di questa serie.
Genera e firma certificati
Ora devi inviare una richiesta del server alla CA e generare e firmare il certificato del server.
Questo passaggio essenzialmente copia il file di richiesta da /etc/openvpn/server/pki/reqs/OVPNserver2020.req
a /etc/openvpn/ca/pki/reqs/OVPNserver2020.req
per prepararlo per la revisione e la firma:
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
import-req /etc/openvpn/server/pki/reqs/OVPNserver2020.req OVPNserver2020
Esamina e firma la richiesta
Hai generato una richiesta, quindi ora devi rivedere e firmare i certificati:
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
show-req OVPNserver2020
Firma come server:
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
sign-req server OVPNserver2020
Metti una copia del server e dei certificati CA a cui appartengono per il file di configurazione per prelevarli:
$ sudo cp /etc/openvpn/ca/pki/issued/OVPNserver2020.crt \
/etc/openvpn/server/pki/
$ sudo cp /etc/openvpn/ca/pki/ca.crt \
/etc/openvpn/server/pki/
Quindi, genera parametri Diffie-Hellman in modo che i client e il server possano scambiare chiavi di sessione:
$ cd /etc/openvpn/server
$ sudo /etc/openvpn/easy-rsa/easyrsa gen-dh
Ci siamo quasi
Il prossimo articolo di questa serie mostrerà come configurare e avviare il server OpenVPN che hai appena creato.
Questo articolo è basato sul blog di D. Greg Scott e viene riutilizzato previa autorizzazione.