Ricerca nel sito web

Come configurare una VPN basata su IPsec con Strongswan su Debian e Ubuntu


strongSwan è un'implementazione VPN (Virtual Private Network) open source, multipiattaforma, completa e ampiamente utilizzata che funziona su Linux, FreeBSD, OS X, Windows, Android e iOS. Si tratta principalmente di un demone di chiavi che supporta i protocolli 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 . Per sito a sito intendiamo che ogni gateway di sicurezza ha una sottorete dietro di sé. Inoltre, i peer si autenticheranno a vicenda 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 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 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

Passaggio 1: abilitazione dell'inoltro dei pacchetti kernel

1. Innanzitutto, devi configurare il kernel per abilitare l'inoltro dei pacchetti aggiungendo le variabili di sistema appropriate 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 comando seguente.

sudo sysctl -p

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

Gateway 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 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 pacchetti APT.

sudo apt update
sudo apt install strongswan 

6. Una volta completata l'installazione, lo script di installazione avvierà il servizio strongswan e ne consentirà l'avvio automatico all'avvio del sistema. Puoi verificarne lo 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, è necessario configurare i gateway di sicurezza utilizzando il file di configurazione /etc/ipsec.conf.

Gateway 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 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:

  • configurazione: specifica le informazioni generali di configurazione per IPSec che si applicano a tutte le connessioni.
  • charondebug – definisce la quantità di output di debug di Charon che deve essere registrato.
  • uniqueids: specifica se un particolare ID partecipante deve essere mantenuto univoco.
  • conn prodgateway-to-devgateway: definisce il nome della connessione.
  • tipo: 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 il modo in cui i peer devono autenticarsi a vicenda.
  • sinistra: definisce l'indirizzo IP dell'interfaccia di rete pubblica del partecipante sinistro.
  • leftsubnet: indica la sottorete privata dietro il partecipante sinistro.
  • right: specifica l'indirizzo IP dell'interfaccia di rete pubblica del partecipante destro.
  • rightsubnet: indica la sottorete privata dietro il partecipante sinistro.
  • ike: definisce un elenco di algoritmi di crittografia/autenticazione IKE/ISAKMP SA da utilizzare. Puoi aggiungere un elenco separato da virgole.
  • esp – definisce un elenco di algoritmi di crittografia/autenticazione ESP da utilizzare per la connessione. Puoi aggiungere un elenco separato da virgole.
  • aggressivo: indica se utilizzare la modalità aggressiva o principale.
  • keyingtries: indica il numero di tentativi da effettuare per negoziare una connessione.
  • ikelifetime: indica quanto tempo dovrebbe durare il canale di codifica di una connessione prima di essere rinegoziato.
  • durata: definisce quanto tempo dovrebbe durare una particolare istanza di una connessione, 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 di cui sopra, leggi la pagina man 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, genera un PSK sicuro che verrà utilizzato dai peer utilizzando il comando seguente.

head -c 24 /dev/urandom | base64

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 controllane lo stato per visualizzare le connessioni.

sudo ipsec restart
sudo ipsec 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

12. Inoltre, puoi interrompere 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 ancora, consulta la pagina della guida IPSec.

ipsec --help

È 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 a vicenda utilizzando un PSK. Se hai domande o pensieri da condividere, contattaci tramite il modulo di feedback qui sotto.