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

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

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 7.6. E implementeremo l'autenticazione OpenVPN basata su certificato.

Prerequisiti

  • CentOS 7.6
  • Privilegi di root

Cosa faremo?

  1. Installa OpenVPN e Easy-RSA
  2. Configura Easy-RSA 3 Vars
  3. Crea chiavi OpenVPN
  4. Configura il server OpenVPN
  5. Configura Firewalld e abilita Port Forwarding
  6. Configurazione client
  7. Test

Passaggio 1:installa OpenVPN e Easy-RSA

In questo tutorial, utilizzeremo l'ultima versione di centos server (7.5) e useremo OpenVPN 2.4 con easy-rsa 3. Prima di installare i pacchetti OpenVPN e easy-rsa, assicurati che il repository 'epel' è installato sul sistema. Se non ce l'hai, installa il repository epel usando il comando yum qui sotto.

yum install epel-release -y

Ora installa OpenVPN 2.4 con easy-rsa 3 sul sistema.

yum install openvpn easy-rsa -y

Al termine dell'installazione, controlla la versione openvpn e easy-rsa.

openvpn --version
ls -lah /usr/share/easy-rsa/

È stato installato OpenVPN 2.4 con easy-rsa 3.

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/' e copia lo script 'easy-rsa'.

cd /etc/openvpn/
cp -r /usr/share/easy-rsa /etc/openvpn/

Ora vai nella directory 'easy-rsa/3/' e crea un nuovo file vars usando vim.

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

Incolla la configurazione 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-1.0.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

Il file vars per l'impostazione Easy-RSA 3 è stato creato.

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/3'.

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

Inizializzazione e build CA

Prima di creare qualsiasi chiave, è necessario inizializzare la directory PKI 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:

  • nessun passaggio =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

Costruisci la chiave Diffie-Hellman

Questa azione richiederà molto tempo, a seconda della lunghezza della chiave che abbiamo scelto e dell'entropia disponibile sul server. Useremo la chiave di lunghezza che definiamo nel file 'vars'.

Genera la chiave Diffie-Hellman usando il comando seguente.

./easyrsa gen-dh

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 sul tuo server VPN e desideri revocare una chiave, devi solo revocare utilizzando il comando easy-rsa.

Se vuoi revocare una chiave, esegui il comando come di seguito.

./easyrsa revoke someone

E quindi genera la chiave CRL.

./easyrsa gen-crl

Il file CRL PEM è stato generato nella directory 'pki' - di seguito è riportato un esempio sul mio server.

Copia file certificati

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/

Passaggio 4 - Configura OpenVPN

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

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

cd /etc/openvpn/
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.10.1.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 client to connect with 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
comp-lzo yes
daemon
user nobody
group nobody

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

Salva ed esci.

La configurazione per OpenVPN è stata creata.

Passaggio 5:abilitare il port forwarding e configurare il firewall di routing

In questo passaggio, abiliteremo il modulo 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' al servizio elenco firewalld e aggiungi l'interfaccia 'tun0' alla zona attendibile firewalld.

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

Abilita 'MASQUERADE' sul firewalld di zona 'fidato'.

firewall-cmd --permanent --zone=trusted --add-masquerade

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

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

E ricarica firewalld.

firewall-cmd --reload

Il port forwarding e il routing Firewalld sono stati completati, ora avvia il servizio openvpn e abilitalo all'avvio automatico ogni volta all'avvio del sistema.

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

Controllalo usando i comandi seguenti.

netstat -plntu
systemctl status [email protected]

Il server OpenVPN è attivo e funzionante sulla porta del protocollo udp '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 139.xx.xx.xx 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 lzo
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/*

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

Passaggio 7:test di 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 la 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