Come Configurare VPN basata su IPsec con Strongswan su Debian e Ubuntu

strongSwan è un’implementazione di VPN (Virtual Private Network) basata su IPsec, open-source, multi-piattaforma, completa e ampiamente utilizzata che funziona su Linux, FreeBSD, OS X, Windows, Android e iOS. È principalmente un demone di negoziazione chiavi che supporta i protocolli di Internet Key Exchange (IKEv1 e IKEv2) per stabilire associazioni di sicurezza (SA) tra due peer.

Questo articolo descrive come configurare gateway IPSec VPN da sito a sito utilizzando strongSwan su server Ubuntu e Debian. Con da sito a sito intendiamo che ogni gateway di sicurezza ha una sotto-rete dietro di esso. Inoltre, i peer si autenticheranno reciprocamente utilizzando una chiave precondivisa (PSK).

Ambiente di Test

Ricorda di sostituire i seguenti IP con i tuoi IP reali per configurare il tuo ambiente.

Gateway del Sito 1 (tecmint-devgateway)

OS 1: Debian or Ubuntu
Public IP: 10.20.20.1
Private IP: 192.168.0.101/24
Private Subnet: 192.168.0.0/24

Gateway del Sito 2 (tecmint-prodgateway)

OS 2: Debian or Ubuntu
Public IP:  10.20.20.3
Private IP: 10.0.2.15/24
Private Subnet: 10.0.2.0/24

Passo 1: Abilitazione dell’Inoltro dei Pacchetti del Kernel

1. Prima di tutto, è necessario configurare il kernel per abilitare l’inoltro dei pacchetti aggiungendo le appropriate variabili di sistema nel file di configurazione /etc/sysctl.conf su entrambi i gateway di sicurezza.

$ sudo vim /etc/sysctl.conf

Cerca le seguenti righe, decommentale e imposta i loro valori come mostrato (leggi i commenti nel file per maggiori informazioni).

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. Successivamente, carica le nuove impostazioni eseguendo il seguente comando.

$ sudo sysctl -p
Load Sysctl Kernel Settings

3. Se hai un servizio di firewall UFW abilitato, devi aggiungere le seguenti regole al file di configurazione /etc/ufw/before.rules proprio prima delle regole del filtro in entrambi i gateway di sicurezza.

Gateway del Sito 1 (tecmint-devgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24  -d 192.168.0.0/24 -j MASQUERADE
COMMIT

Gateway del Sito 2 (tecmint-prodgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING  -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE
COMMIT

4. Una volta aggiunte le regole del firewall, applica le nuove modifiche riavviando UFW come mostrato.

$ sudo ufw disable 
$ sudo ufw enable

Passaggio 2: Installazione di strongSwan in Debian e Ubuntu

5. Aggiorna la cache dei pacchetti su entrambi i gateway di sicurezza e installa il pacchetto strongswan utilizzando il gestore di pacchetti APT.

$ sudo apt update
$ sudo apt install strongswan 

6. Una volta completata l’installazione, lo script di installazione avvierà il servizio strongswan e lo abiliterà a partire automaticamente all’avvio del sistema. Puoi controllare il suo stato e se è abilitato utilizzando il seguente comando.

$ sudo systemctl status strongswan.service
$ sudo systemctl is-enabled strongswan.service

Passaggio 3: Configurazione dei Gateway di Sicurezza

7. Successivamente, devi configurare i gateway di sicurezza utilizzando il file di configurazione /etc/ipsec.conf.

Gateway del Sito 1 (tecmint-devgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

Copia e incolla la seguente configurazione nel file.

config setup
        charondebug="all"
        uniqueids=yes
conn devgateway-to-prodgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.1
        leftsubnet=192.168.0.101/24
        right=10.20.20.3
        rightsubnet=10.0.2.15/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Gateway del sito 2 (tecmint-prodgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

Copia e incolla la seguente configurazione nel file.

config setup
        charondebug="all"
        uniqueids=yes
conn prodgateway-to-devgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.3
        leftsubnet=10.0.2.15/24
        right=10.20.20.1
        rightsubnet=192.168.0.101/24 
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Ecco il significato di ciascun parametro di configurazione:

  • config setup – specifica le informazioni di configurazione generale per IPSec che si applicano a tutte le connessioni.
  • charondebug – definisce quanto output di debug di Charon dovrebbe essere registrato.
  • uniqueids – specifica se un particolare ID partecipante deve essere mantenuto unico.
  • conn prodgateway-to-devgateway – definisce il nome della connessione.
  • type – definisce il tipo di connessione.
  • auto – come gestire la connessione quando IPSec viene avviato o riavviato.
  • keyexchange – definisce la versione del protocollo IKE da utilizzare.
  • authby – definisce come i peer dovrebbero autenticarsi a vicenda.
  • left – definisce l’indirizzo IP dell’interfaccia di rete pubblica del partecipante di sinistra.
  • leftsubnet – indica la subnet privata dietro al partecipante di sinistra.
  • right – specifica l’indirizzo IP dell’interfaccia di rete pubblica del partecipante di destra.
  • rightsubnet – indica la subnet privata dietro al partecipante di destra.
  • ike – definisce un elenco di algoritmi di crittografia/autenticazione IKE/ISAKMP SA da utilizzare. È possibile aggiungere un elenco separato da virgole.
  • esp – definisce un elenco di algoritmi di crittografia/autenticazione ESP da utilizzare per la connessione. È possibile aggiungere un elenco separato da virgole.
  • aggressive – indica se utilizzare la Modalità Aggressiva o la Modalità Principale.
  • keyingtries – indica il numero di tentativi che dovrebbero essere fatti per negoziare una connessione.
  • ikelifetime – indica quanto tempo il canale di cifratura di una connessione dovrebbe durare prima di essere rinegoziato.
  • lifetime – definisce quanto tempo una particolare istanza di una connessione dovrebbe durare, dalla negoziazione riuscita alla scadenza.
  • dpddelay – specifica l’intervallo di tempo con cui i messaggi R_U_THERE/scambi INFORMATIVI vengono inviati al peer.
  • dpdtimeout – specifica l’intervallo di timeout, dopo il quale tutte le connessioni a un peer vengono eliminate in caso di inattività.
  • dpdaction – definisce come utilizzare il protocollo Dead Peer Detection (DPD) per gestire la connessione.

Per ulteriori informazioni sui parametri di configurazione sopra menzionati, leggere la pagina del manuale ipsec.conf eseguendo il comando.

$ man ipsec.conf

Passaggio 4: Configurazione PSK per l’Autenticazione Peer-to-Peer

8. Dopo aver configurato entrambi i gateway di sicurezza, generare un PSK sicuro da utilizzare dai peer utilizzando il seguente comando.

$ head -c 24 /dev/urandom | base64
Generate PSK Key

9. Successivamente, aggiungi il PSK nel file /etc/ipsec.secrets su entrambi i gateway.

$ sudo vim /etc/ipsec.secrets

Copia e incolla la seguente riga.

------- Site 1 Gateway (tecmint-devgateway) ------- 

10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

------- Site 2 Gateway (tecmint-prodgateway) -------

10.20.20.3  10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

10. Riavvia il programma IPSec e controlla il suo stato per visualizzare le connessioni.

$ sudo ipsec restart
$ sudo ipsec status
View IPSec Connection Status

11. Infine, verifica di poter accedere alle sottoreti private da entrambi i gateway di sicurezza eseguendo un comando ping.

$ ping 192.168.0.101
$ ping 10.0.2.15
Verify Site-to-Site VPN Setup

12. Inoltre, puoi fermare e avviare IPSec come mostrato.

$ sudo ipsec stop
$ sudo ipsec start

13. Per saperne di più sui comandi IPSec per attivare manualmente le connessioni e altro, consulta la pagina di aiuto IPSec.

$ ipsec --help

Questo è tutto! In questo articolo, abbiamo descritto come configurare una VPN IPSec da sito a sito utilizzando strongSwan su server Ubuntu e Debian, dove entrambi i gateway di sicurezza sono stati configurati per autenticarsi reciprocamente utilizzando un PSK. Se hai domande o pensieri da condividere, contattaci tramite il modulo di feedback qui sotto.

Source:
https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/