GNU/Linux >> Linux Esercitazione >  >> Panels >> OpenVPN

Configura il server OpenVPN su CentOS 8

In questa guida impareremo come installare e configurare facilmente OpenVPN Server su CentOS 8. OpenVPN è un software VPN open source robusto e altamente flessibile che utilizza tutte le funzionalità di crittografia, autenticazione e certificazione della libreria OpenSSL per tunnel in modo sicuro le reti IP su una singola porta UDP o TCP. Facilita l'estensione della rete privata attraverso una rete pubblica mantenendo la sicurezza che sarebbe raggiunta in una rete privata.

Configura il server OpenVPN su CentOS 8

Installa il repository EPEL

Gli ultimi pacchetti OpenVPN sono forniti dai repository EPEL su CentOS 8 e altri derivati ​​simili. EPEL può essere installato su CentOS 8 eseguendo il comando seguente;

dnf install epel-release -y

Installa OpenVPN su CentOS 8

Una volta che i repository EPEL sono a posto, ora puoi installare il pacchetto OpenVPN su CentOS 8 eseguendo il comando seguente;

dnf install openvpn

Installa Easy-RSA CA Utility su CentOS 8

Il pacchetto Easy-RSA è un'utilità CA basata su shell utilizzata per generare coppie di chiavi SSL utilizzate per proteggere le connessioni VPN.

dnf install easy-rsa

Crea un'infrastruttura a chiave pubblica OpenVPN

Il primo passaggio nella configurazione di un server OpenVPN consiste nel creare una PKI che consiste in chiavi pubbliche e private per il server OpenVPN e i client di connessione e un certificato dell'autorità di certificazione principale e una chiave privata per la firma del server OpenVPN e dei certificati client. Se possibile, dovresti creare la PKI su un server separato che esegue OpenVPN per motivi di sicurezza.

Inizializza la PKI

Easy-RSA viene utilizzato per la gestione delle PKI. Gli script Easy-RSA sono installati in /usr/share/easy-rsa directory.

Per garantire che Easy-RSA qualsiasi configurazione effettuata non venga sovrascritta in caso di aggiornamento, copiare gli script in una directory diversa, preferibilmente in /etc directory.

mkdir /etc/easy-rsa
cp -air /usr/share/easy-rsa/3/* /etc/easy-rsa/

Una volta che gli script sono a posto, vai alla directory e inizializza la PKI.

cd /etc/easy-rsa/
./easyrsa init-pki

Genera il certificato e la chiave dell'autorità di certificazione (CA)

Quindi, genera il certificato CA e la chiave che verranno utilizzati per firmare i certificati eseguendo i comandi seguenti all'interno della directory Easy-RSA sopra.

./easyrsa build-ca

Verrà richiesta la passphrase della chiave CA e il nome comune del server.

Using SSL: openssl OpenSSL 1.1.1c FIPS  28 May 2019

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
140160794502976: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-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 è archiviato in /etc/easy-rsa/pki/ca.crt .

Genera parametri Diffie Hellman

Nella stessa directory Easy-RSA di cui sopra, eseguire il comando seguente per generare il file chiave Diffie-Hellman che può essere utilizzato per lo scambio di chiavi durante l'handshake TLS con i client di connessione.

./easyrsa gen-dh

Il completamento del comando richiederà del tempo. Quindi memorizza i parametri DH su /etc/easy-rsa/pki/dh.pem file.

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

Quando il comando viene eseguito, ti verrà chiesto di inserire la passphrase della chiave CA creata sopra.

nopass disabilita l'uso della passphrase.

Genera chiave HMAC (Message Authentication Code) basata su hash

Per generare una chiave di autenticazione precondivisa TLS/SSL che verrà utilizzata per aggiungere una firma HMAC aggiuntiva a tutti i pacchetti di handshake SSL/TLS, per evitare attacchi DoS e inondazioni di porte UDP, eseguire il comando seguente;

openvpn --genkey --secret /etc/easy-rsa/pki/ta.key

Genera un certificato di revoca

Per invalidare un certificato firmato in precedenza, devi generare un certificato di revoca.

./easyrsa gen-crl

Il certificato di revoca è archiviato come /etc/easy-rsa/pki/crl.pem .

Copia certificati e chiavi del server nella directory del server

Quindi, copia tutti i certificati/le chiavi 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 certificato e chiave client OpenVPN

Per generare il certificato dei client OpenVPN e la chiave privata, esegui il comando seguente;

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. Usa sempre un nome comune univoco per ogni client per il quale stai generando il certificato e le chiavi.

Per generare per il secondo client,

./easyrsa build-client-full johndoe nopass

Copia certificati e chiavi client nella directory client

Crea una directory per ogni client nella directory del client OpenVPN

mkdir /etc/openvpn/client/{koromicha,johndoe}

Quindi, copia tutti i certificati/chiavi generati dal client e il certificato CA 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/johndoe.crt,private/johndoe.key} /etc/openvpn/client/johndoe/

Configura il server OpenVPN su CentOS 8

OpenVPN viene fornito con un file di configurazione di esempio all'interno della sua directory della documentazione. Copia il file in /etc/openvpn/server/ e modificalo in base alle tue esigenze.

cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/

Apri la configurazione per la modifica.

vim /etc/openvpn/server/server.conf

Il file è molto commentato. Leggi i commenti per ogni opzione di configurazione.

Nella forma più semplice, di seguito sono riportate le nostre opzioni di configurazione, senza commenti.

port 1194
proto udp4
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 ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 192.168.10.3"
client-to-client
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
comp-lzo
user nobody
group nobody
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.

Vuoi assegnare indirizzi IP fissi/statici ai tuoi client OpenVPN? Segui la guida qui sotto;

Assegna indirizzi IP statici ai client OpenVPN

Crea directory di registro;

mkdir /var/log/openvpn/

Esplora la configurazione ed esegui ulteriori perfezionamenti in base alle tue esigenze.

Configura il routing del server OpenVPN

Per garantire che il traffico dal client venga instradato attraverso l'indirizzo IP del server (aiuta a mascherare l'indirizzo IP del client), è necessario abilitare l'inoltro IP sul server OpenVPN;

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

Esegui il comando seguente per apportare le modifiche senza riavviare il server.

sysctl --system

Consenti la porta del servizio OpenVPN attraverso il firewall

firewall-cmd --add-port=1194/udp --permanent

Attiva IP Masquerading

firewall-cmd --add-masquerade --permanent

Inoltra il traffico ricevuto sulla sottorete OpenVPN specificata, ad esempio 10.8.0.0/24 nel nostro caso, a un'interfaccia tramite la quale verranno inviati i pacchetti.

Per trovare l'interfaccia attraverso la quale vengono inviati i pacchetti eseguendo il comando seguente;

ip route get 8.8.8.8
8.8.8.8 via 192.168.43.1 dev enp0s3 src 192.168.43.73 uid 0

Il nome dell'interfaccia e la sottorete definiti potrebbero essere diversi per il tuo caso. Sostituiscili di conseguenza.

firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o enp0s3 -j MASQUERADE

Ricarica firewalld per rendere effettive le modifiche.

firewall-cmd --reload

Avvia e imposta OpenVPN eseguito all'avvio del sistema.

systemctl enable --now [email protected]

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::2ed5:8f74:c456:96b7/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

Controllo dei log;

tail /var/log/openvpn/openvpn.log
/sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255
Socket Buffers: R=[212992->212992] S=[212992->212992]
UDPv4 link local (bound): [AF_INET][undef]:1194
UDPv4 link remote: [AF_UNSPEC]
GID set to nobody
UID set to nobody
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

Il tuo server OpenVPN è ora attivo e funzionante. Questo ci porta alla fine della nostra guida su come installare e configurare OpenVPN Server su CentOS 8.

Ora puoi procedere con la configurazione dei client OpenVPN;

Installa e configura il client OpenVPN su CentOS 8/Ubuntu 18.04

Configura l'autenticazione basata su LDAP OpenVPN.

Configura l'autenticazione basata su LDAP OpenVPN

Esercitazione correlata

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

OpenVPN
  1. Configurazione iniziale del server con Ubuntu 14.04

  2. Come configurare un server SFTP su CentOS

  3. Configura il server SysLog su CentOS 6 / RHEL 6

  4. Come configurare il server SysLog su CentOS 7 / RHEL 7

  5. Installa e configura OpenVPN Server su Fedora 29/CentOS 7

Come installare server e client OpenVPN su CentOS 7

Come configurare un server SVN su CentOS

Come configurare OpenVPN su Ubuntu Server

CentOS 8 – Configurazione iniziale del server

Configurazione di un server OpenVPN con CentOS e Viscosity

Come configurare HAProxy su CentOS 8