In questo tutorial, LibreSwan verrà installato sulla piattaforma Ubuntu. LibreSwan è un'implementazione open source del protocollo IPsec, si basa sul progetto FreeSwan ed è disponibile come pacchetto pronto per l'uso su distribuzioni Linux basate su RedHat. Tuttavia, nel codice sorgente del progetto sono fornite istruzioni dettagliate per compilarlo su altre piattaforme Linux. Dopo il processo di installazione, verrà configurato un gateway IPsec VPN basato su gateway per proteggere i dati dal mittente ai peer riceventi.
Una VPN basata su IPsec è costituita da Internet Keying Exchange protocollo e il Encapsulating Security Payload (ESP).
--> IKE
Come indica il nome, lo scopo del protocollo IKE è autenticare (usando una chiave precondivisa, crittografia a chiave pubblica, freeradius) peer di una VPN, generare dinamicamente chiavi e condividere le chiavi con i peer VPN. Anche le chiavi di crittografia per la seconda fase di IPsec dipendono da IKE. Libreswan implementa il protocollo IKE utilizzando il programma pluto del progetto.
--> ESP
Il protocollo ESP è la specifica effettiva della politica concordata tra i peer implementata nello stack IPsec del kernel Linux (NETEY/XFRM).
Caratteristiche di Libreswan
- Supporto per l'autenticazione basata su chiave precondivisa.
- Supporto per l'autenticazione basata su chiave pubblica.
- Supporta entrambe le versioni IKE v1/v2 dello scambio di chiavi.
- Libraria crittografica NSS supportata.
- Sono supportati anche Xauth e DNSSec.
Pacchetti richiesti per Ubuntu 16.04
È necessario installare i seguenti pacchetti su Ubuntu per una corretta compilazione di LibreSwan. Nel codice sorgente sono inoltre fornite brevi informazioni su come abilitare o disabilitare plug-in/funzioni e comandi durante l'installazione di LibreSwan.
apt-get -y update
apt-get install libunbound-dev libevent-dev libsystemd-dev libnss3-dev libnspr4-dev pkg-config \ libpam0g-dev libcap-ng-dev libcap-ng-utils libselinux1-dev libcurl4-nss-dev flex bison gcc make libnss3-tools
L'installazione dei pacchetti richiesti è mostrata di seguito.
L'ultimo codice sorgente dello strumento IPsec viene scaricato utilizzando il comando wget ed estratto utilizzando il seguente comando tar.
wget https://download.libreswan.org/libreswan-3.20.tar.gz
tar -xzf libreswan-3.20.tar.gz
cd libreswan-3.20
Non è necessario eseguire il comando configure, basta eseguire make comando che mostrerà due modi per costruire LibreSwan come mostrato di seguito.
Infine, esegui make all comando per costruire LibreSwan sulla piattaforma.
make all
Ora esegui make install comando per installare il programma IPsec.
Avvio del servizio IPsec
Come mostrato nella schermata sopra, è necessario abilitare il servizio IPSec sulla piattaforma Ubuntu utilizzando il comando seguente.
systemctl enable ipsec.service
È necessario inizializzare la libreria di crittografia NSS prima di avviare il servizio IPsec. Viene utilizzato da LibreSwan per l'utilizzo dell'algoritmo crittografico in IPsec VPN.
IPsec initnss
Infine, avvia il servizio IPSec utilizzando il comando seguente.
ipsec setup start
Esegui stato ipsec comando per visualizzare le impostazioni di LibreSwan sulla piattaforma Ubuntu.
ipsec status
Configurazione di LibreSwan
In questo tutorial, verrà configurata una VPN IPsec tra peer utilizzando una chiave precondivisa e chiavi RSA (coppia di chiavi pubblica/privata). Di seguito è riportata la configurazione di entrambi i peer (sinistra/destra).
VPN basata su chiave precondivisa
ipsec.conf (configuration file of left VM) ipsec.secrets (configuration file of left VM)
versione 2 192.168.15.145 192.168.15.245:PSK "vpn"
configurazione
protostack=netkey
conn vpn_psk
ike=aes256-sha256;modp4096
phase2alg=aes256-sha256;modp4096
left=192.168.15.145
leftsubnet=172.16.10.0/24
right=192.168.15.245
rightsubnet=192.169.50.0/24
authby=secret
type=tunnel
auto=start
ipsec.conf (configuration file of right VM) ipsec.secrets (configuration file of right VM)
versione 2 192.168.15.245 192.168.15.145:PSK "vpn_psk123"
configurazione
protostack=netkey
conn vpn_psk
ike=aes256-sha256;modp4096
phase2alg=aes256-sha256;modp4096
left=192.168.15.245
leftsubnet=192.169.50.0/24
right=192.168.15.145
rightsubnet=172.16.10.0/24
authby=secret
type=tunnel
auto=start
Dopo aver impostato la configurazione precedente nei file ipsec.conf e ipsec.secrets, esegui il comando seguente su entrambi i lati per avviare il processo di negoziazione IPSec.
ipsec restart
Stato della VPN con chiave precondivisa
L'output di stato ipsec e setkey -D i comandi sono mostrati di seguito.
ipsec status
setkey -D
VPN basata su chiave RSA (pubblica/privata)
È necessario generare chiavi RSA per entrambe le macchine e includerle nel file di configurazione. La versione ridotta di una chiave RSA è mostrata in questo tutorial. Assicurati inoltre che la chiave pubblica inclusa sia su una riga singola.
Generazione di chiavi RSA
Come mostrato di seguito, i seguenti comandi vengono utilizzati per generare chiavi per entrambi i peer.
ipsec newhostkey --output /etc/ipsec.secrets
La chiave pubblica generata viene aggiunta nel file ipsec.secrets come mostrato di seguito.
Allo stesso modo, le chiavi RSA vengono generate utilizzando lo stesso comando per la macchina sul lato destro, come mostrato nell'istantanea seguente.
Come mostrato sopra, i comandi di generazione delle chiavi includono automaticamente la chiave pubblica RSA in /etc/ipsec.secrets su entrambe le macchine peer. La chiave privata di RSA è archiviata nel database di NSS in /etc/ipsec.d/*.db file.
Dopo aver generato le chiavi RSA, il passaggio successivo modifica la configurazione di entrambe le macchine nel file ipsec.conf.
ipsec.conf (configuration file of left VM)
versione 2
configurazione
protostack=netkey
conn vpn_rsa
ike=aes256-sha256;modp4096
phase2alg=aes256-sha256;modp4096
left=192.168.15.145
leftsubnet=172.16.10.0/24
right=192.168.15.245
rightsubnet=192.169.50.0/24
authby=rsasig
leftrsasigkey=0sAQPgMUjAb8QOQaJ1FTkIQf3f[........]ALQNXUf$
rightrsasigkey=0sAQOs7aPh6LppUGgC454+W[........]fem>
type=tunnel
auto=start
ipsec.conf (configuration file of right VM)
versione 2
configurazione
protostack=netkey
conn vpn_rsa
ike=aes256-sha256;modp4096
phase2alg=aes256-sha256;modp4096
left=192.168.15.245
leftsubnet=192.169.50.0/24
right=192.168.15.145
rightsubnet=172.16.10.0/24
authby=rsasig
rightrsasigkey=0sAQPgMUjAb8QOQaJ1FTkIQf3f[........]ALQNXUf$
leftrsasigkey=0sAQOs7aPh6LppUGgC454+W[........]fSd2zQE
type=tunnel
auto=start
Dopo aver modificato i file di configurazione di LibreSwan, il passaggio successivo consiste nel riavviare il servizio IPsec su entrambe le macchine utilizzando il comando seguente.
ipsec restart
Lo stato della VPN IPsec sul dispositivo sinistro è mostrato nella schermata seguente. Mostra che RSASIG viene utilizzato nella policy per autenticare i peer del tunnel IPsec.
Lo scopo di questo tutorial è esplorare "LibreSwan" che fornisce l'implementazione del protocollo IPsec. È disponibile nelle distribuzioni RedHat, tuttavia può essere compilato facilmente per un'altra piattaforma come Ubuntu/Debian. In questo articolo, il primo strumento LibreSwan è creato dal sorgente e poi due VPN configurate utilizzando chiavi precondivise e RSA tra i dispositivi gateway.