Come configurare una VPN basata su IPsec con Strongswan su CentOS/RHEL 8
strongSwan è una soluzione VPN open source, multipiattaforma, moderna e completa basata su IPsec per Linux che fornisce supporto completo per Internet Key Exchange (sia IKEv1 che IKEv2) per stabilire associazioni di sicurezza (SA) tra due peer. È completo, modulare nel design e offre dozzine di plugin che migliorano le funzionalità principali.
Articolo correlato: Come configurare una VPN basata su IPsec con Strongswan su Debian e Ubuntu
In questo articolo imparerai come configurare gateway VPN IPsec da sito a sito utilizzando strongSwan su server CentOS/RHEL 8. Ciò consente ai peer di autenticarsi a vicenda utilizzando una chiave precondivisa avanzata (PSK). Una configurazione da sito a sito significa che ogni gateway di sicurezza ha una sottorete dietro di sé.
Ambiente di test
Non dimenticare di utilizzare i tuoi indirizzi IP reali durante le configurazioni mentre segui la guida.
Portale del sito 1
Public IP: 192.168.56.7
Private IP: 10.10.1.1/24
Private Subnet: 10.10.1.0/24
Portale del sito 2
Public IP: 192.168.56.6
Private IP: 10.20.1.1/24
Private Subnet: 10.20.1.0/24
Passaggio 1: abilitare l'inoltro IP del kernel in CentOS 8
1. Inizia abilitando la funzionalità di inoltro IP del kernel nel file di configurazione /etc/sysctl.conf su entrambi i gateway VPN.
vi /etc/sysctl.conf
Aggiungi queste righe nel file.
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
2. Dopo aver salvato le modifiche nel file, esegui il comando seguente per caricare i nuovi parametri del kernel in runtime.
sysctl -p
3. Successivamente, crea un percorso statico permanente nel file /etc/sysconfig/network-scripts/route-eth0 su entrambi i gateway di sicurezza.
vi /etc/sysconfig/network-scripts/route-eth0
Aggiungi la seguente riga nel file.
#Site 1 Gateway
10.20.1.0/24 via 192.168.56.7
#Site 2 Gateway
10.10.1.0/24 via 192.168.56.6
4. Quindi riavvia il gestore di rete per applicare le nuove modifiche.
systemctl restart NetworkManager
Passaggio 2: installazione di strongSwan in CentOS 8
5. Il pacchetto strongswan è fornito nel repository EPEL. Per installarlo è necessario abilitare il repository EPEL, quindi installare strongwan su entrambi i gateway di sicurezza.
dnf install epel-release
dnf install strongswan
6. Per verificare la versione di strongswan installata su entrambi i gateway, esegui il comando seguente.
strongswan version
7. Successivamente, avvia il servizio strongswan e abilitalo all'avvio automatico all'avvio del sistema. Quindi verifica lo stato su entrambi i gateway di sicurezza.
systemctl start strongswan
systemctl enable strongswan
systemctl status strongswan
Nota: l'ultima versione di strongswan in CentOS/REHL 8 include il supporto sia per swanctl (una nuova utility da riga di comando portatile introdotta con strongSwan 5.2.0, utilizzata per configurare, controllare e monitorare il demone IKE Charon utilizzando il plugin vici) e starter (o ipsec) utilizzando il plug-in ictus deprecato.
8. La directory di configurazione principale è /etc/strongswan/ che contiene i file di configurazione per entrambi i plugin:
ls /etc/strongswan/
Per questa guida utilizzeremo l'utilità IPsec che viene richiamata utilizzando il comando strongswan e l'interfaccia ictus. Quindi utilizzeremo i seguenti file di configurazione:
- /etc/strongswan/ipsec.conf – file di configurazione per il sottosistema IPsec strongSwan.
- /etc/strongswan/ipsec.secrets – file dei segreti.
Passaggio 3: configurazione dei gateway di sicurezza
9. In questo passaggio, è necessario configurare i profili di connessione su ciascun gateway di sicurezza per ciascun sito utilizzando il file di configurazione strongswan /etc/strongswan/ipsec.conf.
Configurazione del profilo di connessione del sito 1
cp /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.orig
vi /etc/strongswan/ipsec.conf
Copia e incolla la seguente configurazione nel file.
config setup
charondebug="all"
uniqueids=yes
conn ateway1-to-gateway2
type=tunnel
auto=start
keyexchange=ikev2
authby=secret
left=192.168.56.7
leftsubnet=10.10.1.1/24
right=192.168.56.6
rightsubnet=10.20.1.1/24
ike=aes256-sha1-modp1024!
esp=aes256-sha1!
aggressive=no
keyingtries=%forever
ikelifetime=28800s
lifetime=3600s
dpddelay=30s
dpdtimeout=120s
dpdaction=restart
Configurazione del profilo di connessione del sito 2
cp /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.orig
vi /etc/strongswan/ipsec.conf
Copia e incolla la seguente configurazione nel file:
config setup
charondebug="all"
uniqueids=yes
conn 2gateway-to-gateway1
type=tunnel
auto=start
keyexchange=ikev2
authby=secret
left=192.168.56.6
leftsubnet=10.20.1.1/24
right=192.168.56.7
rightsubnet=10.10.1.1/24
ike=aes256-sha1-modp1024!
esp=aes256-sha1!
aggressive=no
keyingtries=%forever
ikelifetime=28800s
lifetime=3600s
dpddelay=30s
dpdtimeout=120s
dpdaction=restart
Descriviamo brevemente ciascuno dei parametri di configurazione sopra:
- configurazione: definisce le informazioni generali di configurazione per IPSec che si applicano a tutte le connessioni.
- charondebug – specifica quanto output di debug di Charon dovrebbe essere registrato.
- uniqueids: definisce se un particolare ID partecipante deve essere mantenuto univoco.
- conn gateway1-to-gateway2: utilizzato per impostare il nome della connessione.
- tipo: definisce il tipo di connessione.
- Auto: utilizzato per dichiarare come gestire la connessione quando IPSec viene avviato o riavviato.
- keyexchange: dichiara la versione del protocollo IKE da utilizzare.
- authby: specifica come i peer devono autenticarsi a vicenda.
- sinistra: dichiara l'indirizzo IP dell'interfaccia di rete pubblica del partecipante sinistro.
- leftsubnet: dichiara la sottorete privata dietro il partecipante sinistro.
- right: dichiara l'indirizzo IP dell'interfaccia di rete pubblica del partecipante destro.
- rightsubnet: dichiara la sottorete privata dietro il partecipante sinistro.
- ike: utilizzato per dichiarare un elenco di algoritmi di crittografia/autenticazione IKE/ISAKMP SA da utilizzare. Tieni presente che questo può essere un elenco separato da virgole.
- esp: specifica un elenco di algoritmi di crittografia/autenticazione ESP da utilizzare per la connessione.
- aggressivo: dichiara se utilizzare la modalità Aggressiva o Principale.
- keyingtries: dichiara il numero di tentativi da effettuare per negoziare una connessione.
- ikelifetime: specifica quanto tempo deve durare il canale di codifica di una connessione prima di essere rinegoziato.
- durata: specifica quanto tempo dovrebbe durare una particolare istanza di una connessione, dalla negoziazione riuscita alla scadenza.
- dpddelay – dichiara l'intervallo di tempo con cui i messaggi/scambi INFORMATIVI R_U_THERE vengono inviati al peer.
- dpdtimeout – utilizzato per dichiarare l'intervallo di timeout, trascorso il quale tutte le connessioni a un peer vengono eliminate in caso di inattività.
- dpdaction: specifica come utilizzare il protocollo Dead Peer Detection (DPD) per gestire la connessione.
Puoi trovare una descrizione di tutti i parametri di configurazione per il sottosistema IPsec strongSwan leggendo la pagina man ipsec.conf.
man ipsec.conf
Passaggio 4: configurazione PSK per l'autenticazione peer-to-peer
10. Successivamente, devi generare un PSK potente che possa essere utilizzato dai peer per l'autenticazione come segue.
head -c 24 /dev/urandom | base64
11. Aggiungi PSK nel file /etc/strongswan/ipsec.conf su entrambi i gateway di sicurezza.
vi /etc/strongswan/ipsec.secrets
Immettere la riga seguente nel file.
#Site 1 Gateway
192.168.56.7 192.168.56.6 : PSK "0GE0dIEA0IOSYS2o22wYdicj/lN4WoCL"
#Site 1 Gateway
192.168.56.6 192.168.56.7 : PSK "0GE0dIEA0IOSYS2o22wYdicj/lN4WoCL"
12. Avvia quindi il servizio strongsan e verifica lo stato delle connessioni.
systemctl restart strongswan
strongswan status
13. Verifica se puoi accedere alle sottoreti private da entrambi i gateway di sicurezza eseguendo un comando ping.
ping 10.20.1.1
ping 10.10.1.1
14. Ultimo ma non meno importante, per ulteriori informazioni sui comandi strongswan per attivare/disattivare manualmente le connessioni e altro ancora, consultare la pagina di aiuto di strongswan.
strongswan --help
È tutto per ora! Per condividere i tuoi pensieri con noi o porre domande, raggiungici tramite il modulo di feedback sottostante. E per saperne di più sulla nuova utility swanctl e sulla nuova struttura di configurazione più flessibile, consultare la documentazione utente strongSwan.