Ricerca nel sito web

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.