GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare server e client OpenVPN con Easy-RSA 3 su CentOS 8

OpenVPN è un'applicazione open source che ti consente di creare una rete privata sicura su Internet pubblico. OpenVPN implementa una rete privata virtuale (VPN) per creare una connessione sicura. OpenVPN Utilizza la libreria OpenSSL per fornire la crittografia e fornisce diversi meccanismi di autenticazione, come chiavi precondivise basate su certificati e autenticazione nome utente/password.

In questo tutorial, ti mostreremo come installare e configurare passo dopo passo OpenVPN su CentOS 8 Server. E implementeremo l'autenticazione OpenVPN basata su certificato.

Prerequisiti

  • Server CentOS 8
  • Privilegi di root

Cosa faremo?

  • Installa OpenVPN e Easy-RSA
  • Configura Easy-RSA 3 Vars
  • Crea chiavi OpenVPN
  • Configura il server OpenVPN
  • Configura Firewalld e abilita Port Forwarding
  • Configurazione client
  • Test

Passaggio 1:installa OpenVPN e Easy-RSA

Innanzitutto, aggiungeremo il repository EPEL (Extra Package for Enterprise Linux), installeremo l'ultimo pacchetto OpenVPN e scaricheremo lo script easy-rsa sul sistema CentOS 8.

Installa il repository EPEL utilizzando il comando dnf di seguito.

dnf install epel-release

Successivamente, installa l'ultimo pacchetto OpenVPN 2.4.7.

dnf install openvpn

Una volta completata l'installazione, vai su '/etc/openvpn' e scarica lo script easy-rsa usando il comando wget qui sotto.

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

Ora estrai il file 'EasyRSA-unix-v3.0.6.tgz' e rinomina la directory in 'easy-rsa'.

tar -xf EasyRSA-unix-v3.0.6.tgz
mv EasyRSA-v3.0.6/ easy-rsa/; rm -f EasyRSA-unix-v3.0.6.tgz

Il pacchetto OpenVPN e lo script easy-rsa sono stati installati sul sistema CentOS 8.

Passaggio 2 - Configura Easy-RSA 3

In questo passaggio configureremo easy-rsa 3 creando un nuovo file 'vars'. Il file 'vars' contiene le impostazioni di Easy-RSA 3.

Vai alla directory '/etc/openvpn/easy-rsa/' e crea un nuovo script vars usando l'editor vim.

cd /etc/openvpn/easy-rsa/
vim vars

Incolla le configurazioni di vars easy-rsa 3 di seguito.

set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "ID"
set_var EASYRSA_REQ_PROVINCE    "Jakarta"
set_var EASYRSA_REQ_CITY        "Jakarta"
set_var EASYRSA_REQ_ORG         "hakase-labs CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL       "[email protected]"
set_var EASYRSA_REQ_OU          "HAKASE-LABS 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      "HAKASE-LABS 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 ed esci.

Nota:

  • Cambia i valori delle variabili di cui hai bisogno.
  • Aumenta "EASYRSA_KEY_SIZE" per una maggiore sicurezza.
  • Cambia 'EASYRSA_CA_EXPIRE' e 'EASYRSA_CERT_EXPIRE'.

Ora rendi eseguibile il file 'vars' modificando i permessi del file.

chmod +x vars

La configurazione di easy-rsa 3 è stata completata.

Passaggio 3:crea chiavi OpenVPN

In questo passaggio, creeremo le chiavi OpenVPN in base al file 'vars' di easy-rsa 3 che abbiamo creato. Creeremo la chiave CA, le chiavi del server e del client, il file PEM DH e CRL.

Costruiremo tutte quelle chiavi usando la riga di comando 'easyrsa'. Vai alla directory '/etc/openvpn/easy-rsa/'.

cd /etc/openvpn/easy-rsa/3/

- Inizializzazione e build CA

Prima di creare la chiave server e client, è necessario inizializzare la directory PKI (Public Key Infrastructure) e creare la chiave CA.

Avvia la directory PKI e crea la chiave CA utilizzando il comando seguente.

./easyrsa init-pki
./easyrsa build-ca

Ora digita la password per la tua chiave CA e otterrai i tuoi file 'ca.crt' e 'ca.key' nella directory 'pki'.

- Crea chiave server

Ora vogliamo creare la chiave del server e costruiremo la chiave del server denominata 'hakase-server'.

Crea la chiave del server 'hakase-server' usando il comando seguente.

./easyrsa gen-req hakase-server nopass

Nota:

  • nopass =opzione per disabilitare la password per la chiave 'hakase-server'.

E firma la chiave 'hakase-server' utilizzando il nostro certificato CA.

./easyrsa sign-req server hakase-server

Ti verrà richiesta la password 'CA', digita la password e premi Invio. E otterrai il file del certificato 'hakase-server.crt' nella directory 'pki/issued/'.

Verifica il file del certificato utilizzando il comando OpenSSL e assicurati che non ci siano errori.

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

Tutte le chiavi del certificato del server sono state create. La chiave privata del server si trova in "pki/private/hakase-server.key" e il certificato del server in "pki/issued/hakase-server.crt".

- Crea chiave client

Ora dobbiamo creare chiavi per il client. Genereremo una nuova chiave client denominata 'client01'.

Genera la chiave 'client01' usando il comando seguente.

./easyrsa gen-req client01 nopass

Ora firma la chiave "client01" usando il nostro certificato CA come di seguito.

./easyrsa sign-req client client01

Digita "yes" per confermare la richiesta del certificato client, quindi digita la password della CA.

Il certificato client denominato 'client01' è stato generato, verifica il certificato client utilizzando il comando openssl.

openssl verify -CAfile pki/ca.crt pki/issued/client01.crt

Assicurati che non ci siano errori.

- Costruisci la chiave Diffie-Hellman

La chiave Diffie-Hellman è necessaria per una maggiore sicurezza. E genereremo la chiave DH "2048" in base al file di configurazione "vars" creato in alto.

Genera la chiave Diffie-Hellman usando il comando seguente.

./easyrsa gen-dh

E la chiave DH è stata generata, situata nella directory 'pki'.

- Facoltativo:genera la chiave CRL

La chiave CRL (Certificate Revoking List) verrà utilizzata per revocare la chiave client. Se hai più certificati client di client sul tuo server VPN e desideri rimuovere la chiave di qualcuno, devi solo revocare utilizzando il comando easy-rsa.

Se vuoi revocare una chiave, esegui il comando seguente.

./easyrsa revoke someone

E quindi genera la chiave CRL.

./easyrsa gen-crl

Il file CRL PEM è stato generato nella directory 'pki':quello che segue è un esempio sul mio server.

- Copia i file del certificato

Tutti i certificati sono stati generati, ora copia i file del certificato e i file PEM.

Copia la chiave e il certificato del server.

cp pki/ca.crt /etc/openvpn/server/
cp pki/issued/hakase-server.crt /etc/openvpn/server/
cp pki/private/hakase-server.key /etc/openvpn/server/

Copia la chiave e il certificato client01.

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

Copia la chiave DH e CRL.

cp pki/dh.pem /etc/openvpn/server/
cp pki/crl.pem /etc/openvpn/server/

Tutti i certificati per server e client sono stati copiati in ciascuna directory.

Passaggio 4 - Configura OpenVPN

In questo passaggio creeremo una nuova configurazione 'server.conf' per il server OpenVPN.

Vai alla directory '/etc/openvpn/server/' e crea un nuovo file di configurazione 'server.conf' usando vim.

cd /etc/openvpn/server/
vim server.conf

Incolla lì la seguente configurazione del server OpenVPN.

# OpenVPN Port, Protocol, and the Tun
port 1194
proto udp
dev tun

# OpenVPN Server Certificate - CA, server key and certificate
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/hakase-server.crt
key /etc/openvpn/server/hakase-server.key

#DH and CRL key
dh /etc/openvpn/server/dh.pem
crl-verify /etc/openvpn/server/crl.pem

# Network Configuration - Internal network
# Redirect all Connection through OpenVPN Server
server 10.5.0.0 255.255.255.0
push "redirect-gateway def1"

# Using the DNS from https://dns.watch
push "dhcp-option DNS 84.200.69.80"
push "dhcp-option DNS 84.200.70.40"

#Enable multiple clients to connect with the same certificate key
duplicate-cn

# TLS Security
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

# Other Configuration
keepalive 20 60
persist-key
persist-tun
compress lz4
daemon
user nobody
group nobody

# OpenVPN Log
log-append /var/log/openvpn.log
verb 3

Salva ed esci.

Ed è stata creata la configurazione del server OpenVPN.

Passaggio 5:abilitare il port forwarding e configurare il routing in Firewalld

In questo passaggio, abiliteremo il modulo del kernel di port forwarding e configureremo il routing "Firewalld" per OpenVPN.

Abilita il modulo del kernel di port forwarding eseguendo i seguenti comandi.

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

Quindi, configura il routing utilizzando Firewalld per OpenVPN.

Aggiungi il servizio OpenVPN alla zona firewall "pubblica" e "fidabile".

firewall-cmd --permanent --add-service=openvpn
firewall-cmd --permanent --zone=trusted --add-service=openvpn

Successivamente, aggiungi "tun0" alla zona "fidabile".

firewall-cmd --permanent --zone=trusted --add-interface=tun0

Ora abilita "MASQUERADE" sul firewalld di zona "pubblico" predefinito.

firewall-cmd --permanent --add-masquerade

Abilita NAT per l'indirizzo IP interno OpenVPN '10.5.0.0/24' all'indirizzo IP esterno 'SERVERIP'.

SERVERIP=$(ip route get 1.1.1.1 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s  10.5.0.0/24 -o $SERVERIP -j MASQUERADE

E ricarica firewalld.

firewall-cmd --reload

La configurazione del port forwarding e del routing Firewalld è stata completata, avvia il servizio OpenVPN e abilitalo all'avvio automatico ogni volta all'avvio del sistema.

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

Successivamente, controlla il servizio OpenVPN utilizzando i comandi seguenti.

netstat -plntu
systemctl status [email protected]

E otterrai il risultato come di seguito.

Di conseguenza, il servizio OpenVPN è attivo e funzionante sul protocollo UDP con la porta predefinita "1194".

Passaggio 6 - Configurazione del client OpenVPN

Vai alla directory '/etc/openvpn/client' e crea un nuovo file di configurazione del client openvpn 'client01.ovpn' usando vim.

cd /etc/openvpn/client
vim client01.ovpn

Incolla lì la seguente configurazione del client OpenVPN.

client
dev tun
proto udp

remote xxx.xxx.xxx.xxx 1194

ca ca.crt
cert client01.crt
key client01.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 ed esci.

Ora comprimi la directory '/etc/openvpn/client' nel file 'zip' o 'tar.gz' e scarica il file compresso usando SCP dal tuo computer locale.

Comprimi la directory '/etc/openvpn/client' nel file 'client01.tar.gz'.

cd /etc/openvpn/
tar -czvf client01.tar.gz client/*

Ora puoi scaricare il file compresso OpenVPN utilizzando il server FTP o il comando scp come di seguito.

scp [email protected]:/etc/openvpn/client01.tar.gz .

Passaggio 7:connessione a OpenVPN

Test sui Clienti.

- Su Linux

Installa il pacchetto OpenVPN e, se desideri una configurazione della GUI, installa il gestore di rete OpenVPN.

sudo apt install openvpn network-manager-openvpn network-manager-openvpn-gnome -y

Se desideri connetterti utilizzando una shell di terminale, esegui il comando OpenVPN di seguito.

openvpn --config client01.ovpn

Quando sei connesso a OpenVPN, apri una nuova scheda del terminale e controlla la connessione usando il comando curl.

curl ifconfig.io

E otterrai l'indirizzo IP del server OpenVPN.

- Su Mac OS

Scarica Tunnelblick e installalo.

Estrarre il file 'client01.tar.gz' e rinominare la directory 'client' in 'client01.tblk'.

tar -xzvf client01.tar.gz
mv client client01.tblk

Fare doppio clic su 'client01.tblk' e Tunnelblick rileverà automaticamente la configurazione di OpenVPN e quindi importerà.

Ora connettiti tramite Tunnelblick sulla barra in alto.

- Su Windows

Scarica il client openvpn per Windows e importa la configurazione.


Cent OS
  1. Come installare e utilizzare TeamSpeak Server su CentOS 7

  2. Come installare OpenVPN su CentOS/RHEL 8

  3. Come installare e configurare Gitlab su CentOS 8

  4. Come installare e ospitare il server OpenVPN con Docker

  5. Come installare e configurare il server OpenVPN su Ubuntu 20.04

Come installare e configurare il server VNC su CentOS 7

Installa il server PXE e configura il client PXE su CentOS 7

Come installare e configurare Memcached su CentOS 8

Come installare CentOS 7 Server e Desktop

Come installare e configurare il server DHCP su Centos 8

Come installare e configurare il server OpenVPN in CentOS 8/7