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

Configura il server OpenVPN su Rocky Linux 8

In questa guida impareremo come installare e configurare facilmente OpenVPN Server su Rocky Linux 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 incanalare 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 Rocky Linux 8

Installa il repository EPEL

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

dnf install epel-release -y

Installa OpenVPN su Rocky Linux 8

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

dnf install openvpn

Installa Easy-RSA CA Utility su Rocky Linux 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

Esempio di output del comando;

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/easy-rsa/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 della CA e il nome comune del server.

Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020

Enter New CA Key Passphrase: 
Re-Enter New CA Key Passphrase: 
Generating RSA private key, 2048 bit long modulus (2 primes)
........................................+++++
....................................................+++++
e is 65537 (0x010001)
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-demo 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 file CA è /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 in 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 nei certificati.

Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020
Generating a RSA private key
.....+++++
...............................+++++
writing new private key to '/etc/easy-rsa/pki/easy-rsa-10170.VLZsfK/tmp.4TRoOP'
-----
Using configuration from /etc/easy-rsa/pki/easy-rsa-10170.VLZsfK/tmp.jTJJ7f
Enter pass phrase for /etc/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'server'
Certificate is to be certified until Oct  3 18:03:20 2023 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

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 precedentemente firmato, devi generare un certificato di revoca.

./easyrsa gen-crl
Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020
Using configuration from /etc/easy-rsa/pki/easy-rsa-10284.mSzk9F/tmp.qdix0A
Enter pass phrase for /etc/easy-rsa/pki/private/ca.key:

An updated CRL has been created.
CRL file: /etc/easy-rsa/pki/crl.pe

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 gentoo nopass

Esempio di output;

Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020
Generating a RSA private key
........................+++++
.........................................................................................+++++
writing new private key to '/etc/easy-rsa/pki/easy-rsa-10316.rcXRdS/tmp.tauo7u'
-----
Using configuration from /etc/easy-rsa/pki/easy-rsa-10316.rcXRdS/tmp.RxlTaw
Enter pass phrase for /etc/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'gentoo'
Certificate is to be certified until Oct  3 18:05:23 2023 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

dove gento è 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/{gentoo,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/gentoo.crt,private/gentoo.key} /etc/openvpn/client/gentoo
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/johndoe.crt,private/johndoe.key} /etc/openvpn/client/johndoe/

Configura il server OpenVPN su Rocky Linux 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 tramite 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 la 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 10.0.2.2 dev enp0s3 src 10.0.2.15 uid 0 
    cache

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::afd7:17a6:57ee:7f3b/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 Rocky Linux 8.

Ora puoi procedere con la configurazione dei client OpenVPN e interconnetterli tramite il server VPN.

Installa e configura il client OpenVPN su Rocky Linux 8

Altri tutorial

Assegna indirizzi IP statici ai client OpenVPN

Configura l'autenticazione basata su LDAP OpenVPN


OpenVPN
  1. Configura il tuo server OpenVPN su Linux

  2. Configurazione del server WebDAV su Ubuntu Linux

  3. Installa e configura il client OpenVPN su Rocky Linux 8

  4. Configura il server OpenVPN su Rocky Linux 8

  5. Installa e configura il server OpenVPN su Ubuntu 20.04

Come installare Webmin su Rocky Linux 8

Come configurare la replica FreeIPA su Rocky Linux/Alma Linux/Centos 8

Installa LAMP Stack su Rocky Linux 8

Come installare Jenkins su Rocky Linux 8

Come configurare il server e il client VPN Linux utilizzando OpenVPN

Come installare Nginx su Rocky Linux 9