GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare e configurare il server OpenVPN su Ubuntu 20.04

OpenVPN è una soluzione VPN open source per le aziende che utilizzano tecniche di rete privata virtuale per creare connessioni point-to-point sicure con strutture di accesso remoto. OpenVPN è una tecnologia affidabile utilizzata da molte VPN per assicurarsi che tutti i dati inviati su Internet siano crittografati e privati.

In parole povere, OpenVPN ti consente di connetterti ad altri dispositivi all'interno di una rete sicura. È multipiattaforma e può essere Windows, Mac, Android, iOS e Linux. OpenVPN offre un ricco set di funzionalità tra cui:

  • Larghezza di banda illimitata
  • Cambi server illimitati
  • Utilizzo multidispositivo
  • Nessuna memorizzazione del registro
  • Scelte del protocollo
  • Connessioni multiple simultanee

In questo tutorial impareremo come installare e configurare il server e il client OpenVPN su un VPS Ubuntu 20.04.

Prerequisiti

  • Un nuovo VPS Ubuntu 20.04 sulla piattaforma Atlantic.net Cloud.
  • Sul tuo server è configurata una password di root.

Fase 1:crea il server cloud Atlantic.Net

Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo Ubuntu 20.04 come sistema operativo, con almeno 1GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.

Dopo aver effettuato l'accesso al tuo server Ubuntu 20.04, esegui il comando seguente per aggiornare il tuo sistema di base con gli ultimi pacchetti disponibili.

apt-get update -y

Passaggio 2:abilita l'inoltro IP

Successivamente, dovrai abilitare l'inoltro IP nel tuo sistema in modo che OpenVPN possa instradare correttamente il traffico attraverso la VPN.

Puoi abilitare l'inoltro IP modificando il file /etc/sysctl.conf:

nano /etc/sysctl.conf

Decommenta la seguente riga:

net.ipv4.ip_forward = 1

Salva il file al termine, quindi esegui il comando seguente per applicare le modifiche:

sysctl -p

Fase 3:installa il server OpenVPN

apt-get install openvpn -y

Una volta completata l'installazione, puoi procedere al passaggio successivo.

Fase 4:crea l'autorità di certificazione

Per configurare l'autorità di certificazione e l'infrastruttura PKI, dovrai scaricare EasyRSA nel tuo sistema. Puoi scaricarlo con il seguente comando:

wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz

Una volta scaricato, estrai il file scaricato con il seguente comando:

tar -xvzf EasyRSA-unix-v3.0.6.tgz

Quindi, sposta la directory estratta in /etc/openvpn/ con il seguente comando:

mv EasyRSA-v3.0.6 /etc/openvpn/easy-rsa

Quindi, cambia la directory in /etc/openvpn/easy-rsa e crea un file di configurazione EasyRSA:

cd /etc/openvpn/easy-rsa
nano vars

Aggiungi le seguenti righe includendo il tuo paese, città e indirizzo email preferito:

set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "INDIA"
set_var EASYRSA_REQ_PROVINCE    "Gujarat"
set_var EASYRSA_REQ_CITY        "Junagadh"
set_var EASYRSA_REQ_ORG         "Atlantic CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL     "[email protected]"
set_var EASYRSA_REQ_OU          "Atlantic EASY CA"
set_var EASYRSA_KEY_SIZE        2048
set_var EASYRSA_ALGO            rsa
set_var EASYRSA_CA_EXPIRE      7500
set_var EASYRSA_CERT_EXPIRE     365
set_var EASYRSA_NS_SUPPORT  "no"
set_var EASYRSA_NS_COMMENT            "Atlantic CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR         "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA_DIGEST          "sha256"

Salva il file quando hai finito.

Quindi, avvia la directory PKI utilizzando il seguente comando:

./easyrsa init-pki

Dovresti ottenere il seguente output:

Note: using Easy-RSA configuration from: ./vars

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki

Quindi, crea i certificati CA con il seguente comando:

./easyrsa build-ca

Dovresti ottenere il seguente output:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020

Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
Generating RSA private key, 2048 bit long modulus (2 primes)
.....................................................................................................+++++
..................................................+++++
e is 65537 (0x010001)
Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG
139636302492992:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/etc/openvpn/easy-rsa/pki/.rnd
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields, there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easy-rsa/pki/ca.crt

Il comando precedente genererà due file denominati ca.key e ca.crt. Questi certificati verranno utilizzati per firmare i certificati del server e dei client.

Passaggio 5:crea i file di certificato del server

Successivamente, dovrai generare una coppia di chiavi e una richiesta di certificato per il tuo server.

Eseguire il comando seguente per generare la chiave del server denominata atlantic-server:

./easyrsa gen-req atlantic-server nopass

Dovresti vedere il seguente output:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
Generating a RSA private key
.............................+++++
...+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/atlantic-server.key.IMonKybM0y'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [atlantic-server]:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/atlantic-server.req
key: /etc/openvpn/easy-rsa/pki/private/atlantic-server.key

Questo genererà una chiave privata e un file di richiesta di certificato per il server.

Fase 6:firma la chiave del server utilizzando la CA

Successivamente, dovrai firmare la chiave atlantic-server utilizzando il tuo certificato CA:

Puoi firmare la chiave del server usando il seguente comando:

./easyrsa sign-req server atlantic-server

Dovresti vedere il seguente output:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020

You are about to sign the following certi
ficate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 365 days:

subject=
commonName                = atlantic-server

Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'atlantic-server'
Certificate is to be certified until Jun 29 11:43:05 2021 GMT (365 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/atlantic-server.crt

Successivamente, verifica il file del certificato generato con il seguente comando:

openssl verify -CAfile pki/ca.crt pki/issued/atlantic-server.crt

Dovresti ottenere il seguente output:

pki/issued/atlantic-server.crt: OK

Quindi, esegui il comando seguente per generare una chiave Diffie-Hellman forte da utilizzare per lo scambio di chiavi:

./easyrsa gen-dh

Dovresti ottenere il seguente output:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
......................+...........................+............................................

DH parameters of size 2048 created at /etc/openvpn/easy-rsa/pki/dh.pem

Dopo aver creato tutti i file del certificato, copiali nella directory /etc/openvpn/server/:

cp pki/ca.crt /etc/openvpn/server/
cp pki/dh.pem /etc/openvpn/server/
cp pki/private/atlantic-server.key /etc/openvpn/server/
cp pki/issued/atlantic-server.crt /etc/openvpn/server/

Passaggio 7:Genera certificato client e file chiave

Successivamente, dovrai creare la chiave e il file del certificato per il client.

Innanzitutto, esegui il comando seguente per creare il file della chiave del client:

./easyrsa gen-req client nopass

Dovresti ottenere il seguente output:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
Generating a RSA private key
...+++++
........+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/client.key.JmBal6cmr8'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [client]:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/client.req
key: /etc/openvpn/easy-rsa/pki/private/client.key

Quindi, firma la chiave client utilizzando il tuo certificato CA:

./easyrsa sign-req client client

Dovresti ottenere il seguente output:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020

You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a client certificate for 365 days:

subject=
commonName                = client

Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'client'
Certificate is to be certified until Jun 29 11:46:58 2021 GMT (365 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/client.crt

Quindi, copia tutti i certificati client e i file chiave nella directory /etc/openvpn/client/:

cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/client.crt /etc/openvpn/client/
cp pki/private/client.key /etc/openvpn/client/

Fase 8:configura il server OpenVPN

A questo punto, tutti i certificati e i file delle chiavi sono pronti. Quindi, crea un nuovo file di configurazione OpenVPN all'interno della directory /etc/openvpn/:

nano /etc/openvpn/server.conf

Aggiungi le seguenti righe in base al certificato e al percorso della chiave:

port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/atlantic-server.crt
key /etc/openvpn/server/atlantic-server.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
duplicate-cn
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-
CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-
CBC-SHA256
auth SHA512
auth-nocache
keepalive 20 60
persist-key
persist-tun
compress lz4
daemon
user nobody
group nogroup
log-append /var/log/openvpn.log
verb 3

Salva il file al termine, quindi avvia il servizio OpenVPN e abilita l'avvio dopo il riavvio del sistema utilizzando il seguente comando:

systemctl start [email protected]
systemctl enable [email protected]

Esegui il comando seguente per verificare lo stato del servizio OpenVPN:

systemctl status [email protected]

Dovresti ottenere il seguente output:

Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
Active: active (running) since Mon 2020-06-29 11:48:25 UTC; 7s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 2868 (openvpn)
Status: "Initialization Sequence Completed"
Tasks: 1 (limit: 2353)
Memory: 2.0M
CGroup: /system.slice/system-openvpn.slice/[email protected]
└─2868 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --conf>

Jun 29 11:48:25 vpnserver systemd[1]: Starting OpenVPN connection to server...
Jun 29 11:48:25 vpnserver systemd[1]: Started OpenVPN connection to server.

Una volta che il servizio OpenVPN è stato avviato correttamente, creerà una nuova interfaccia di rete denominata tun0. Puoi verificarlo con il seguente comando:

ip a show tun0

Dovresti ottenere la nuova interfaccia tun0 nel seguente output:

4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state 
UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::5f83:99a:30d:eb0/64 scope link stable-privacy
valid_lft forever preferred_lft forever

Fase 9:crea il file di configurazione del client

Successivamente, dovrai creare un file di configurazione del client OpenVPN denominato client.ovpn. Avrai bisogno di questo file per connettere il tuo server OpenVPN dal sistema client.

nano /etc/openvpn/client/client.ovpn

Aggiungi le seguenti righe:

client
dev tun
proto udp
remote your-vpn-server-ip 1194
ca ca.crt
cert client.crt
key client.key
cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-
CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-
CBC-SHA256
resolv-retry infinite
compress lz4
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3

Salva il file quando hai finito.

Fase 10:installa e configura il client OpenVPN

Successivamente, dovrai installare OpenVPN sul sistema client e connetterti al server OpenVPN.

Innanzitutto, accedi al computer client e installa il pacchetto OpenVPN con il seguente comando:

apt-get install openvpn -y

Successivamente, dovrai copiare i file di configurazione del client OpenVPN dal server OpenVPN al computer client.

Sul computer client, eseguire il comando seguente per scaricare tutti i file di configurazione del client:

scp -r [email protected]:/etc/openvpn/client .

Una volta copiati tutti i file, cambia la directory nel client ed esegui il seguente comando per connetterti al server OpenVPN:

cd client
openvpn --config client.ovpn

Una volta connesso al server OpenVPN, dovresti vedere il seguente output:

Jun 29 11:48:27 2020 TCP/UDP: Preserving recently used remote address: 
[AF_INET]69.87.218.145:1194
Jun 29 11:48:27 2020 Socket Buffers: R=[212992->212992] S=[212992->212992]
Jun 29 11:48:27 2020 UDP link local: (not bound)
Jun 29 11:48:27 2020 UDP link remote: [AF_INET]69.87.218.145:1194
Jun 29 11:48:27 2020 TLS: Initial packet from [AF_INET]69.87.218.145:1194, sid=6d27e1cb 
524bd8cd
Jun 29 11:48:27 2020 VERIFY OK: depth=1, CN=Easy-RSA CA
Jun 29 11:48:27 2020 VERIFY OK: depth=0, CN=atlantic-server
Jun 29 11:48:27 2020 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, 
2048 bit RSA
Jun 29 11:48:27 2020 [atlantic-server] Peer Connection Initiated with 
[AF_INET]69.87.218.145:1194
Jun 29 11:48:27 2020 SENT CONTROL [atlantic-server]: 'PUSH_REQUEST' (status=1)
Jun 29 11:48:27 2020 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway 
def1,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology 
net30,ping 20,ping-restart 60,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM'
Jun 29 11:48:27 2020 OPTIONS IMPORT: timers and/or timeouts modified
Jun 29 11:48:27 2020 OPTIONS IMPORT: --ifconfig/up options modified
Jun 29 11:48:27 2020 OPTIONS IMPORT: route options modified

Dopo una connessione riuscita, OpenVPN assegnerà un indirizzo IP al tuo sistema. Puoi verificarlo con il seguente comando:

ip a show tun0

Uscita:

4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state 
UNKNOWN group default qlen 100
link/none
inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::7226:57b1:f101:313b/64 scope link stable-privacy
valid_lft forever preferred_lft forever

Puoi anche controllare il registro del server OpenVPN per verificare lo stato della connessione utilizzando il seguente comando:

tail -f /var/log/openvpn.log

Conclusione

Congratulazioni! Hai configurato correttamente un server VPN con OpenVPN su un VPS Ubuntu 20.04. Ora puoi accedere a Internet in modo sicuro e proteggere la tua identità, posizione e traffico. Visita la documentazione ufficiale di OpenVPN per ulteriori informazioni.


Linux
  1. Come installare e configurare OpenVPN Access Server

  2. Come installare e configurare un server NFS su Ubuntu 20.04

  3. Come installare e configurare OpenVPN Server su Debian 10

  4. Come installare e configurare il server DHCP su Ubuntu 20.04

  5. Come installare e configurare il server Redis in Ubuntu

Come installare e utilizzare pgAdmin su Ubuntu 18.04

Come installare e configurare Parse Server su Ubuntu 20.04

Come installare e configurare Elasticsearch su Ubuntu 20.04

Come installare e configurare Nextcloud su Ubuntu 20.04

Come installare e configurare un TeamSpeak Server su Ubuntu 18.04

Come installare e configurare un server Minecraft su Ubuntu 18.04