Facilita l'estensione della rete privata su una rete pubblica, l'accesso a siti remoti, la creazione di connessioni point-to-point sicure, mantenendo la sicurezza che sarebbe raggiunta in una rete privata.
Installa e configura il server OpenVPN su Ubuntu 20.04
Esegui l'aggiornamento del sistema
apt update apt upgrade
Installa OpenVPN su Ubuntu 20.04
Il pacchetto OpenVPN è disponibile nei repository Ubuntu 20.04 predefiniti. Quindi l'installazione è semplice come eseguire il comando seguente;
apt install openvpn
Installa Easy-RSA CA Utility su Ubuntu 20.04
Il pacchetto Easy-RSA fornisce utilità per la generazione di coppie di chiavi SSL utilizzate per proteggere le connessioni VPN.
apt install easy-rsa
Crea un'infrastruttura a chiave pubblica OpenVPN
Dopo aver installato easy-rsa, è necessario inizializzare la PKI OpenVPN. La PKI è composta da:
- una chiave pubblica e una chiave privata per il server e ogni client
- un certificato e una chiave dell'autorità di certificazione (CA) master utilizzati per firmare ciascuno dei certificati server e client.
Prima di procedere, copia la directory di configurazione di easy-rsa in una posizione diversa per assicurarti che i futuri aggiornamenti del pacchetto OpenVPN non sovrascrivano le tue modifiche.
cp -r /usr/share/easy-rsa /etc/
Quindi, inizializza la PKI.
cd /etc/easy-rsa/
./easyrsa init-pki
Una volta inizializzata la PKI, /etc/easy-rsa/pki
è creato.
Genera il certificato e la chiave dell'autorità di certificazione (CA)
Quindi, genera il certificato CA e la chiave per la firma dei certificati client e server OpenVPN.
cd /etc/easy-rsa/ ./easyrsa build-ca
Verrà richiesta la passphrase della chiave CA e il nome comune del server.
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Enter New CA Key Passphrase: ENTER PASSWORD Re-Enter New CA Key Passphrase: RE-ENTER PASSWORD Generating RSA private key, 2048 bit long modulus (2 primes) ...................+++++ ..............+++++ e is 65537 (0x010001) Can't load /etc/easy-rsa/pki/.rnd into RNG 139840045897024:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/etc/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]:Kifarunix-demo CA CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /etc/easy-rsa/pki/ca.crt
Il certificato CA viene generato e archiviato in /etc/easy-rsa/pki/ca.crt
.
Genera parametri Diffie Hellman
Genera chiavi Diffie-Hellman utilizzate per lo scambio di chiavi durante l'handshake TLS tra il server OpenVPN e i client di connessione. Questo comando è stato eseguito all'interno della directory Easy-RSA;
./easyrsa gen-dh
Parametri DH di dimensione 2048 creati in /etc/easy-rsa/pki/dh.pem
.
Genera certificato e chiave server OpenVPN
Per generare un certificato e una chiave privata per il server OpenVPN, esegui il comando seguente;
cd /etc/easy-rsa
./easyrsa build-server-full server nopass
Immettere la passphrase della chiave CA creata sopra per generare i certificati e le chiavi.
nopass
disabilita l'uso della passphrase.
Genera chiave HMAC (Message Authentication Code) basata su hash
La chiave di autenticazione precondivisa TLS/SSL viene utilizzata come firma HMAC aggiuntiva su tutti i pacchetti di handshake SSL/TLS per evitare attacchi DoS e inondazioni delle porte UDP. Questo può essere generato usando il comando;
openvpn --genkey --secret /etc/easy-rsa/pki/ta.key
Genera certificato di revoca OpenVPN
Per invalidare un certificato firmato in precedenza, è necessario generare un certificato di revoca. Esegui lo script all'interno della directory Easy-RSA;
./easyrsa gen-crl
Il certificato di revoca viene generato e archiviato in /etc/easy-rsa/pki/crl.pem
.
Copia i certificati e le chiavi del server nella directory di configurazione del server
Copia tutti i certificati/chiavi del server generati nella directory di configurazione del server OpenVPN.
cp -rp /etc/easy-rsa/pki/{ca.crt,dh.pem,ta.key,crl.pem,issued,private} /etc/openvpn/server/
Genera certificati e chiavi client OpenVPN
I certificati dei client OpenVPN e le chiavi private possono essere generati come segue
cd /etc/easy-rsa
./easyrsa build-client-full koromicha nopass
- dove
koromicha
è il nome del client per il quale vengono generati il certificato e le chiavi. - Utilizza sempre un nome comune univoco per ogni client per cui stai generando il certificato e le chiavi.
Per generare per il secondo client,
./easyrsa build-client-full janedoe nopass
Puoi vedere come usare easyrsa
comando con ./easyrsa --help
.
Copia certificati e chiavi client nella directory client
Crea directory client OpenVPN. Ad esempio, abbiamo generato certificati e file chiave per due client, koromicha e janedoe, quindi creiamo directory come;
mkdir /etc/openvpn/client/{koromicha,janedoe}
Successivamente, copia i certificati/le chiavi generati dal client e il certificato CA del server nella directory di configurazione del client OpenVPN. Puoi
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/koromicha.crt,private/koromicha.key} /etc/openvpn/client/koromicha
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/janedoe.crt,private/janedoe.key} /etc/openvpn/client/janedoe/
Configura il server OpenVPN su Ubuntu 20.04
Il prossimo passo è configurare il server OpenVPN. Copia la configurazione del server OpenVPN di esempio in /etc/openvpn/server
directory come mostrato di seguito;
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
Estrai la configurazione e modificala in base alle tue esigenze;
cd /etc/openvpn/server/ gunzip server.conf.gz
vim /etc/openvpn/server/server.conf
Ecco come appaiono le nostre configurazioni di esempio senza commenti. La configurazione è altamente commentata per aiutarti a comprendere l'utilizzo di varie opzioni.
port 1194
proto udp
dev tun
ca ca.crt
cert issued/server.crt
key private/server.key # This file should be kept secret
dh dh.pem
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 192.168.2.11"
client-to-client
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1
auth SHA512
Salva ed esci dalla configurazione una volta terminata la modifica.
Configura l'inoltro IP OpenVPN
Per garantire che il traffico dal client venga instradato attraverso l'indirizzo IP del server OpenVPN (aiuta a mascherare l'indirizzo IP del client), è necessario abilitare l'inoltro IP sul server OpenVPN.
Decommenta la riga, net.ipv4.ip_forward=1
, su /etc/sysctl.conf
per abilitare l'inoltro dei pacchetti per IPv4
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
Applica le modifiche senza riavviare il server.
sysctl --system
Consenti la porta del servizio OpenVPN attraverso il firewall;
ufw allow 1194/udp
Configura IP Masquerading su UFW
Trova la tua interfaccia predefinita attraverso la quale vengono inviati i tuoi pacchetti.
ip route get 8.8.8.8
8.8.8.8 via 10.0.2.2 dev enp0s3 src 10.0.2.15 uid 0
Quindi, aggiorna le regole UFW;
vim /etc/ufw/before.rules
Aggiungi le seguenti righe evidenziate appena prima del *filter
impostazioni della tabella. Nota che l'interfaccia utilizzata deve corrispondere al nome dell'interfaccia sopra.
... *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/8 -o enp0s3 -j MASQUERADE COMMIT # Don't delete these required lines, otherwise there will be errors *filter ...
Salva ed esci dalla configurazione.
Abilita inoltro pacchetti UFW;
sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/' /etc/default/ufw
Ricarica UFW;
ufw reload
Eseguire OpenVPN Server su Ubuntu 20.04
Avvia e abilita il server OpenVPN per l'esecuzione all'avvio del sistema;
systemctl enable --now [email protected]
Verifica dello stato;
systemctl status [email protected]
● [email protected] - OpenVPN service for server
Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-05-01 16:07:33 UTC; 3s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 11980 (openvpn)
Status: "Initialization Sequence Completed"
Tasks: 1 (limit: 2281)
Memory: 1.0M
CGroup: /system.slice/system-openvpn\x2dserver.slice/[email protected]
└─11980 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf
May 01 16:07:33 vpn.kifarunix-demo.com systemd[1]: Starting OpenVPN service for server...
May 01 16:07:33 vpn.kifarunix-demo.com systemd[1]: Started OpenVPN service for server.
Quando il servizio OpenVPN viene eseguito, creerà un'interfaccia di tunneling, tun0;
ip add s
...
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/24 brd 10.8.0.255 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::1989:2bf2:1e7f:7415/64 scope link stable-privacy
valid_lft forever preferred_lft forever
Inoltre, assicurati di controllare i log;
tail /var/log/openvpn/openvpn.log
/sbin/ip link set dev tun0 up mtu 1500 /sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255 Could not determine IPv4/IPv6 protocol. Using AF_INET Socket Buffers: R=[212992->212992] S=[212992->212992] UDPv4 link local (bound): [AF_INET][undef]:1194 UDPv4 link remote: [AF_UNSPEC] MULTI: multi_init called, r=256 v=256 IFCONFIG POOL: base=10.8.0.2 size=252, ipv6=0 IFCONFIG POOL LIST Initialization Sequence Completed
Magnifico. Il server OpenVPN è ora pronto. Questo segna la fine della nostra guida su come installare OpenVPN Server su Ubuntu 20.04.
Ora puoi configurare i tuoi clienti di conseguenza.
Esercitazioni correlate
Installa e configura il client OpenVPN su CentOS 8/Ubuntu 18.04
Configura l'autenticazione basata su LDAP OpenVPN
Configura IPSEC VPN utilizzando StrongSwan su Ubuntu 18.04
Configura il client VPN strongSwan su Ubuntu 18.04/CentOS 8
Connettiti a Cisco VPN utilizzando il file PCF su Ubuntu