Introduzione
Una rete privata virtuale (VPN) crittografa tutto il traffico di rete, mascherando gli utenti e proteggendoli da reti non affidabili. Può fornire una connessione sicura a una rete aziendale, aggirare le restrizioni geografiche e consentirti di navigare sul Web utilizzando le reti Wi-Fi pubbliche mantenendo i tuoi dati privati.
OpenVPN è una soluzione VPN Secure Socket Layer (SSL) open source completa.
In questo tutorial imparerai come configurare OpenVPN su un server CentOS 7 e connetterti a OpenVPN da un computer client.
Prerequisiti
- Un server CentOS 7 o CentOS 8
- Un account utente con accesso root (sudo)
- Accesso alla riga di comando/finestra del terminale
- Un dominio o sottodominio che si risolve nel tuo server
- Un computer client da cui ti connetterai al server OpenVPN
Passaggio 1:installa OpenVPN
1. Aggiorna i repository e i pacchetti CentOS eseguendo:
yum update -y
2. Non è possibile scaricare il pacchetto OpenVPN dai repository CentOS predefiniti. Tuttavia, OpenVPN è disponibile nel repository EPEL (Extra Packages for Enterprise Linux). Per abilitare il repository EPEL, esegui il comando:
yum install epel-release -y
3. Aggiorna nuovamente i repository:
yum update -y
4. Ora puoi installare OpenVPN con il comando:
yum install -y openvpn
Fase 2:installa Easy RSA
Il prossimo passo è costruire una Public Key Infrastructure (PKI). Per fare ciò, devi installare easy RSA , un'utilità CLI per la creazione e la gestione di un'autorità di certificazione (CA) PKI.
Easy RSA ti aiuta a configurare un'autorità di certificazione interna (CA) e generare coppie di chiavi SSL per proteggere le connessioni VPN.
1. Per scaricare il pacchetto RSA facile, usa il wget
comando. Se non hai wget sul tuo sistema CenOS, installalo eseguendo:
yum install -y wget
2. Al momento della scrittura, l'ultima versione dell'utility CLI è la 3.0.8, che scaricheremo. Per utilizzare un'altra versione, controlla la semplice pagina di rilascio di RSA su GitHub.
wget https://github.com/OpenVPN/easy-rsa/archive/v3.0.8.tar.gz
3. Quindi, estrai l'archivio scaricato:
tar -xf v3.0.8.tar.gz
4. Crea e passa a un nuovo openvpn directory:
cd /etc/openvpn/
5. Quindi, crea una sottodirectory easy-rsa
nel percorso /etc/openvpn
:
mkdir /etc/openvpn/easy-rsa
6. Sposta la directory estratta in /etc/openvpn/easy-rsa:
mv /root/easy-rsa-3.0.8 /etc/openvpn/easy-rsa
Per verificare se hai spostato con successo tutto da easy-rsa-3.0.8 directory, passa a easy-rsa con cd /etc/openvpn/easy-rsa
ed elenca il contenuto con ls
. Dovresti vedere un elenco di file e cartelle, come nell'immagine qui sotto.
Fase 3:configura OpenVPN
Dopo aver installato OpenVPN e Easy RSA, puoi passare alla configurazione del server OpenVPN.
Le istruzioni in questa sezione aiutano a impostare la configurazione di base. Puoi modificarlo in base alle tue esigenze.
Prima di eseguire uno qualsiasi dei comandi, assicurati di tornare alla directory principale. Per farlo, digita cd
nella finestra del terminale e premi Invio .
1. Il primo passaggio consiste nel copiare l'esempio server.conf file dalla directory della documentazione di OpenVPN:
cp /usr/share/doc/openvpn-2.4.9/sample/sample-config-files/server.conf /etc/openvpn
Se non riesci a trovare il file di configurazione di esempio di OpenVPN, cerca la sua posizione utilizzando find
comando:
find / -name server.conf
2. Quindi, apri il file di configurazione copiato con un editor di testo a tua scelta:
vi etc/openvpn/server.conf
Il comando apre il file di configurazione OpenVPN di esempio. I commenti nel file iniziano con un hashtag # o un punto e virgola ;
.
3. Per impostare la configurazione di base, devi decommentare le righe seguenti rimuovendo il punto e virgola.
topology subnet
(fa funzionare l'installazione di OpenVPN come una sottorete)push "redirect-gateway def1 bypass-dhcp"
(indica al client di reindirizzare il traffico attraverso il server OpenVPN)push "dhcp-option DNS 208.67.222.222"
(utilizza un resolver OpenDNS per connettersi a OpenVPN)push "dhcp-option DNS 208.67.220.220"
(utilizza un resolver OpenDNS per connettersi a OpenVPN)user nobody
(esegue OpenVPN senza privilegi)group nobody
(esegue OpenVPN senza privilegi)
4. Quindi, generare una chiave di crittografia statica per abilitare l'autenticazione TLS. Per farlo, individua la riga tls-auth ta.key 0
e commentalo aggiungendo ;
davanti ad esso. Quindi, aggiungi una nuova riga sotto di essa:
tls-crypt myvpn.tlsauth
5. Salva ed esci dal file di configurazione.
6. Infine, genera la chiave di crittografia statica specificata nel file con il comando:
openvpn --genkey --secret /etc/openvpn/myvpn.tlsauth
Fase 4:Genera chiavi e certificati
1. Crea un vars file di configurazione utilizzando vars.example memorizzato in /easy-rsa/easyrsa3 directory. Spostati nella directory menzionata con:
cd /etc/openvpn/easy-rsa/easyrsa3
2. Puoi elencare i contenuti usando ls
comando per verificare se hai il vars.example file.
3. Copia il file di esempio vars.example sotto il nome vars :
cp vars.example vars
Se elenchi di nuovo i file nella directory, dovresti avere un vars separato file che puoi utilizzare per configurare Easy RSA.
4. Apri le vars file in un editor di testo a tua scelta:
vi vars
5. Scorri il file e trova le righe elencate di seguito.
#set_var EASYRSA_REQ_COUNTRY "US"
#set_var EASYRSA_REQ_PROVINCE "California"
#set_var EASYRSA_REQ_CITY "San Francisco"
#set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"
#set_var EASYRSA_REQ_EMAIL "[email protected]"
#set_var EASYRSA_REQ_OU "My Organizational Unit"
6. Decommenta le righe rimuovendo #
e sostituisci i valori predefiniti con le tue informazioni.
7. Quindi, trova la riga che specifica il KEY_NAME e cambialo in "server"
:
export KEY_NAME="server"
8. Infine, cambia KEY_CN al dominio o sottodominio che si risolve nel tuo server.
export KEY_CN=openvpn.yourdomain.com
9. Salva e chiudi il file.
10. Pulisci tutte le chiavi precedenti e genera l'autorità di certificazione:
./easyrsa clean-all
11. Ora puoi passare alla creazione dell'autorità di certificazione con build-ca
sceneggiatura. Esegui il comando:
./easyrsa build-ca
Ti verrà chiesto di impostare una CA Key Passphrase e un nome comune per la tua CA.
12. Crea una chiave e un certificato per il server:
./easyrsa build-server-full server
13. Quindi, genera un file di scambio di chiavi Diffie-Hellman eseguendo:
./easyrsa gen-dh
14. Hai anche bisogno di un certificato per ogni cliente. Generarli sul server e quindi copiarli sulla macchina client.
Con il comando seguente creiamo un certificato e una chiave per client1 . Puoi modificare il comando utilizzando un nome a tua scelta.
./easyrsa build-client-full client1
15. Dopo aver generato le chiavi e i certificati, copiali da pki in openvpn directory. Per farlo, vai al pki directory eseguendo:
cd /etc/openvpn/easy-rsa/easyrsa3/pki
Devi copiare quattro file in totale:
- ca.crt
- dh.pem
- ca.chiave
- chiave.server
I primi due file (ca.crt e dh.pem ) sono memorizzati nel pki directory, mentre ca.key e server.key si trovano in una sottodirectory pki/private .
Pertanto, copia ca.crt e dh.pem in openvpn prima la directory:
cp ca.crt dh.pem /etc/openvpn
Quindi, spostati nella sottodirectory private e copia ca.key e server.key eseguendo:
cd private
cp ca.key server.key/etc/openvpn
Fase 5:Firewall e configurazione di routing
Imposta le regole del firewall
1. Inizia controllando la tua zona firewalld attiva:
firewall-cmd --get-active-zones
L'output mostrerà la tua zona firewalld. Nell'esempio seguente, è pubblico .
2. Aggiungi openvpn servizio all'elenco dei servizi che firewalld consente all'interno della zona attiva. La zona attiva nel nostro esempio è pubblica . Se la tua zona attiva è attendibile, modifica il comando di conseguenza.
firewall-cmd --zone=public --add-service openvpn
3. Quindi, rendere permanenti le impostazioni precedenti eseguendo il comando:
firewall-cmd --zone=public --add-service openvpn --permanent
4. Per verificare se è stato aggiunto il servizio openvpn, utilizzare:
firewall-cmd --list-services --zone=public
5. Quindi, aggiungi una mascherata all'istanza di runtime:
firewall-cmd --add-masquerade
6. E rendilo permanente:
firewall-cmd --add-masquerade --permanent
7. Verifica che la masquerade sia stata aggiunta eseguendo:
firewall-cmd --query-masquerade
L'output dovrebbe rispondere con yes
.
Instradamento della configurazione
Dopo aver completato i passaggi precedenti, passa al routing alla tua sottorete OpenVPN.
1. Creare una variabile che rappresenti l'interfaccia di rete primaria utilizzata dal server. Nel comando seguente, la variabile è denominata VAR
. Tuttavia, puoi creare una variabile con il nome che preferisci.
VAR=$(ip route get 208.67.222.222 | awk 'NR==1 {print $(NF-2)}')
2. Successivamente, aggiungi in modo permanente la regola di routing utilizzando la variabile creata sopra:
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $VAR -j MASQUERADE
3. Ricarica firewalld affinché le modifiche avvengano:
firewall-cmd --reload
4. Passare all'instradamento di tutto il traffico Web dal client all'indirizzo IP del server abilitando l'inoltro IP. Apri sysctl.conf file:
vi /etc/sysctl.conf
5. Aggiungi la seguente riga all'inizio del file:
net.ipv4.ip_forward = 1
6. Infine, riavvia il servizio:
systemctl restart network.service
Passaggio 6:avvia OpenVPN
1. Per avviare il servizio OpenVPN, esegui il comando:
systemctl -f start [email protected]
2. Quindi, abilita l'avvio all'avvio eseguendo:
systemctl -f enable [email protected]
3. Verifica che il servizio sia attivo con:
systemctl status [email protected]
L'output dovrebbe rispondere che il servizio OpenVPN per il server è attivo (in esecuzione) .
Passaggio 7:Configura un client OpenVPN
Con tutto configurato sul server OpenVPN, puoi configurare la tua macchina client e collegarla al server.
Come menzionato nel passaggio 4, ogni macchina client deve disporre di copie locali del certificato CA, della chiave client, del certificato SSL e della chiave di crittografia.
1. Trova e copia i seguenti file dal server al computer client:
- /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/client.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/private/client.key
- /etc/openvpn/myvpn.tlsauth
2. Quindi, crea un file di configurazione per il client OpenVPN con il nome client.ovpn sul computer client:
vi client.ovpn
3. Aggiungi il seguente contenuto al file:
client
tls-client
ca /path/to/ca.crt
cert /path/to/client.crt
key /path/to/client.key
tls-crypt /path/to/myvpn.tlsauth
remote-cert-eku "TLS Web Client Authentication"
proto udp
remote your_server_ip 1194 udp
dev tun
topology subnet
pull
user nobody
group nobody
Assicurati di sostituire le parti in grassetto con i tuoi valori rispettati.
4. Salva e chiudi il file.
Fase 8:connetti un client a OpenVPN
Le istruzioni su come connettersi a OpenVPN variano a seconda del sistema operativo del tuo computer client.
Per utenti Linux
Per connetterti a OpenVPN, esegui il comando:
openvpn --config /path/to/client.ovpn
Per utenti Windows
1. Per prima cosa, copia il client.ovpn file di configurazione in C:ProgrammiOpenVPNconfig directory.
2. Scarica e installa l'applicazione OpenVPN. Puoi trovare l'ultima build nella pagina dei download della community di OpenVPN. Dopo aver installato l'applicazione, avvia OpenVPN.
3. Fare clic con il pulsante destro del mouse sull'icona di OpenVPN nella barra delle applicazioni e selezionare Connetti . Per eseguire questa attività, sono necessari i privilegi di amministratore.
Per utenti macOS
Puoi connetterti a OpenVPN da un sistema macOS utilizzando Tunnelblick (un'interfaccia utente grafica open source per OpenVPN su OS X e macOS).
Prima di avviare Tunnelblick, assicurati di archiviare il client.ovpn file di configurazione nella directory ~/Library/Application Support/Tunnelblick/Configurations .