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