GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare il server e il client VPN Linux utilizzando OpenVPN

VPN sta per Virtual Private Network.

Una rete privata virtuale consente a un computer di inviare e ricevere dati da una rete privata a un'altra rete privata connessa tramite rete pubblica (Internet).

Ciò è utile per coloro che sono al di fuori dell'intranet aziendale e desiderano connettersi alla rete dell'ufficio in modo sicuro per accedere ai server interni. La VPN è utile anche quando si collegano più filiali insieme.

Anche quando non si collegano più filiali insieme, è comunque possibile utilizzare la configurazione VPN per consentire ai dipendenti di connettersi in remoto dal proprio laptop al datacenter e accedere ai sistemi.

A volte l'azienda acquista linee affittate per formare WAN (Wide Area Network) e comunica con le sue filiali. Sebbene la linea dedicata sia sicura e affidabile, è costosa.

La VPN colma il divario fornendo una connessione virtuale point-to-point tramite la rete pubblica. Una VPN può crescere per ospitare facilmente più utenti in diverse località geografiche.

Tipi di VPN

Ad alto livello, i seguenti sono due tipi di VPN:

  • Accesso remoto
  • Da sito a sito

Accesso remoto sta collegando un singolo computer a una rete tramite VPN. "Da sito a sito" collega due reti insieme tramite VPN.

Cos'è OpenVPN

Da OpenVPN uomo:

OpenVPN è un demone VPN open source di James Yonan. OpenVPN è un demone VPN robusto e altamente flessibile. OpenVPN supporta sicurezza SSL/TLS, bridging ethernet, trasporto tramite tunnel TCP o UDP tramite proxy o NAT, supporto per indirizzi IP dinamici e DHCP, scalabilità per centinaia o migliaia di utenti e portabilità sulla maggior parte delle principali piattaforme OS.

Questo tutorial spiega il processo per impostare e configurare il server e il client OpenVPN per l'accesso remoto.

Io. Configurazione di OpenVPN – Lato server

1. Installa OpenVPN

Installa il pacchetto openvpn sia sul server che sulla macchina client.

$ sudo apt-get install openvpn

Usa il rispettivo gestore di pacchetti della distribuzione su cui stai lavorando. Se stai usando yum, procedi come segue

$ yum install openvpn

2. Crea directory e imposta le variabili di ambiente

Crea una directory all'interno di /etc/openvpn e copia easy-rsa contenuto ad esso. Questo viene fatto per assicurarsi che le modifiche apportate agli script non vadano perse quando il pacchetto viene aggiornato. Modifica il proprietario come utente corrente in modo che l'utente corrente abbia l'autorizzazione per creare file.

$ sudo mkdir /etc/openvpn/easy-rsa

$ sudo cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa

$ sudo chown -R $USER /etc/openvpn/easy-rsa/

Quindi, modifica /etc/openvpn/easy-rsa/vars per adattarsi al tuo ambiente.

export KEY_COUNTRY="IN"
export KEY_PROVINCE="TN"
export KEY_CITY="CHN"
export KEY_ORG="tgs"
export KEY_EMAIL="[email protected]"

3. Creazione della CA – Autorità di certificazione (Certificato radice)

Il passaggio successivo nella creazione di un server openvpn è stabilire un'infrastruttura a chiave pubblica in modo che il server e i client possano autenticarsi a vicenda.

$ cd /etc/openvpn/easy-rsa/

$ source vars

$ ./clean-all

$ ln -s openssl-1.0.0.cnf openssl.cnf

$ ./build-ca

Generating a 1024 bit RSA private key
........++++++
......++++++
unable to write 'random state'
writing new private key to 'ca.key'
-----
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.
-----
Country Name (2 letter code) [IN]:
State or Province Name (full name) [TN]:
Locality Name (eg, city) [CHN]:
Organization Name (eg, company) [tgs]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [changeme]:
Name [changeme]:lakshmanan
Email Address [[email protected]]:[email protected]

Una volta ./build-ca è completato, vedrai un file chiamato “ca.key ” e “ca.crt ” dentro /etc/openvpn/easy-rsa/keys/

Ricorda che il ".key ” i file devono essere mantenuti riservati.

4. Creazione del certificato per il server

Il prossimo passo è creare un certificato per il nostro server Openvpn.

$ /etc/openvpn/easy-rsa/build-key-server vpnserver
...
...

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Si noti che vpnserver è l'HOSTNAME del server. Questo comando prenderà input dall'utente in modo simile al precedente. Questo comando creerà il certificato e i file chiave per il server.

5. Creazione del certificato per il cliente

Il client VPN avrà anche bisogno del certificato per autenticarsi con il server. Se desideri configurare più client, devi creare un certificato per ciascun client separatamente.

$ ./build-key vpnclient1
...
...

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

vpnclient1 è il nome host del client. Questo comando creerà il certificato e i file chiave per il client.

6. Crea parametri Diffie Hellman

$ ./build-dh

Una volta completati con successo tutti i passaggi precedenti, avrai molti file di chiavi e certificati all'interno di /etc/openvpn/easy-rsa/keys .

7. Copia i certificati nelle rispettive posizioni

Abbiamo creato certificato radice, certificato server e certificato client. Dobbiamo copiarli nelle posizioni appropriate.

$ cd /etc/openvpn/easy-rsa/keys/

$ sudo cp ca.crt vpnserver.crt vpnserver.key dh1024.pem /etc/openvpn/

$ scp ca.crt vpnclient1.key  vpnclient1.crt root@vpnclient1:/etc/openvpn

Ora abbiamo copiato il certificato client e la chiave sulla macchina client. Ricorda di utilizzare un supporto sicuro come scp, mentre copi i file chiave.

8. Configurazione del server

OpenVPN fornisce un server.conf predefinito. Puoi modificarlo in base alle tue esigenze.

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/

$ sudo gzip -d /etc/openvpn/server.conf.gz

Modifica "/etc/openvpn/server.conf “.

...
ca ca.crt
cert vpnserver.crt
key vpnserver.key
dh dh1024.pem
...

Ora avvia il server OpenVPN:

$ sudo /etc/init.d/openvpn start
 * Starting virtual private network daemon(s)... 
 * Autostarting VPN 'server'

$ ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255

Per impostazione predefinita, openVPN registrerà gli errori nel file syslog.

II. Configurazione di OpenVPN – Lato client

9. Imposta i file di configurazione del client

Ora configureremo openVPN per funzionare come client. Ricorda che abbiamo già installato il pacchetto openvpn nel client e abbiamo “ca.crt”, “vpnclient1.key”, vpnclient1.crt” in /etc/openvpn/

Copia il client.conf di esempio in /etc/openvpn .

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

Modifica /etc/openvpn/client.conf .

...
# Specify that this is openvpn client
client

remote vpnserver 1194

ca ca.crt

cert vpnclient1.crt

key vpnclient1.key
...

Ora avvia OpenVPN nel client

$ /etc/init.d/openvpn start
 * Starting virtual private network daemon(s)... 
 * Autostarting VPN 'client'

$ ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255

10. Testa la configurazione della VPN

Esegui il ping del server VPN dal computer client per vedere se la VPN funziona o meno.

$ ping 10.8.0.1

PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=2.14 ms

Se sei in grado di eseguire il ping, hai eseguito la configurazione corretta.

Tieni presente quanto segue:

  1. Assicurati che il client e il server utilizzino lo stesso protocollo e numero di porta.
  2. Client e server devono utilizzare la stessa configurazione per quanto riguarda alcuni parametri come la dimensione della chiave, la compressione ecc...
  3. In caso di problemi, aumenta la verbosità del log nella configurazione e controlla il file syslog per la risoluzione dei problemi.

Linux
  1. Come configurare server e client NTP su Debian 9 Stretch Linux

  2. Come configurare server e client NFS su Rocky/Alma Linux 8

  3. Come installare e configurare cPanel su un server Linux

  4. Come configurare SSH senza password su Linux

  5. Come impostare e configurare il server e il client YPServ Linux NIS

Come configurare un server VPN utilizzando Pritunl su Ubuntu 18.04 LTS

Come configurare il server di backup utilizzando Rsnapshot in Linux

Come configurare il server multimediale in streaming utilizzando Jellyfin in Linux

Come configurare client e server NFS su Linux

Come configurare server e client NTP su Ubuntu 20.04 LTS

Come connettersi a una VPN con OpenVPN