La configurazione di una Virtual Private Network (VPN) su sistemi basati su Debian e Ubuntu utilizzando StrongSwan è un’ottima soluzione per garantire comunicazioni sicure e criptate tra dispositivi. StrongSwan è un’implementazione open-source di Internet Protocol Security (IPSec) che supporta diverse modalità di autenticazione. In questo articolo, vedremo come configurare una VPN IPSec con StrongSwan su Debian e Ubuntu.
Requisiti
- Due server Linux con Debian o Ubuntu installato. Uno agirà come server VPN (StrongSwan), mentre l’altro come client VPN.
- Accesso root o privilegi sudo su entrambi i server.
- Indirizzi IP pubblici per entrambi i server (per questo esempio, useremo IP fittizi:
192.0.2.1
per il server e 198.51.100.1
per il client).
Installazione di StrongSwan
- Sul Server VPN: Aggiorna l’elenco dei pacchetti e installa StrongSwan eseguendo i seguenti comandi:
sudo apt update
sudo apt install strongswan strongswan-pki libcharon-extra-plugins
- Sul Client VPN: Installa StrongSwan con lo stesso metodo descritto per il server.
Configurazione del Server VPN
- Generazione delle Chiavi e dei Certificati: Crea una struttura di directory per le chiavi e i certificati:
mkdir -p ~/pki/{cacerts,certs,private}
chmod 700 ~/pki
Genera la chiave privata della CA (Certification Authority):
ipsec pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem
Crea il certificato della CA:
ipsec pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem --type rsa --dn "CN=VPN CA" --outform pem > ~/pki/cacerts/ca-cert.pem
Genera la chiave privata del server VPN:
ipsec pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/vpn-server-key.pem
Crea il certificato del server VPN:
ipsec pki --pub --in ~/pki/private/vpn-server-key.pem --type rsa | ipsec pki --issue --lifetime 1825 --cacert ~/pki/cacerts/ca-cert.pem --cakey ~/pki/private/ca-key.pem --dn "CN=192.0.2.1" --san "192.0.2.1" --flag serverAuth --flag ikeIntermediate --outform pem > ~/pki/certs/vpn-server-cert.pem
- Configurazione di StrongSwan: Modifica il file
/etc/ipsec.conf
per configurare la VPN:
config setup
charondebug="ike 1, knl 1, cfg 0, net 1, esp 1, dmn 1, mgr 1"
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev2
authby=secret
left=%any
leftid=@server_domain_or_IP
leftcert=vpn-server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
eap_identity=%identity
conn IPSec-IKEv2
auto=add
Modifica il file /etc/ipsec.secrets
per includere la chiave privata del server e le credenziali degli utenti:
: RSA vpn-server-key.pem
your_username : EAP "your_password"
- Abilita il Routing IP e Configura il Firewall: Abilita il routing IP modificando
/etc/sysctl.conf
e aggiungi:
Applica le modifiche con sudo sysctl -p
.
Configura le regole del firewall (utilizzando iptables o ufw) per permettere il traffico IPSec e NAT attraverso la VPN.
Configurazione del Client VPN
- Configurazione di StrongSwan: Sul client, configura
/etc/ipsec.conf
e /etc/ipsec.secrets
in modo simile, adattandoli per il ruolo del client.
- Stabilire la Connessione: Sul client, avvia la connessione VPN con
ipsec up conn_name
.
Verifica e Troubleshooting
- Verifica lo stato della connessione con
ipsec status
.
- In caso di problemi, consulta i log di StrongSwan per individuare l’errore.
Conclusione
Configurare una VPN con StrongSwan su Debian e Ubuntu richiede diversi passaggi, ma offre una soluzione robusta e sicura per la comunicazione crittografata. Ricorda di sostituire gli indirizzi IP, i nomi utente e le password con i tuoi dati reali durante la configurazione. Con StrongSwan, puoi facilmente configurare una VPN affidabile e sicura per le tue esigenze di networking.