Strongswan è un'implementazione IPSec multipiattaforma open source. È una soluzione VPN basata su IPSec che si concentra su meccanismi di autenticazione avanzati. Strongswan offre supporto per i protocolli di scambio di chiavi IKEv1 e IKEv2, autenticazione basata su certificati X.509 o chiavi precondivise e autenticazione utente EAP IKEv2 sicura.
In questo tutorial, ti mostrerò come installare un server VPN IPSec utilizzando Strongswan. Creeremo un server VPN IKEv2 con l'autenticazione "EAP-MSCHAPv2" e utilizzeremo i certificati Letsencrypt sul server CentOS 8.
Prerequisiti
- Server CentOS 8
- Privilegi di root
Cosa faremo?
- Installa Strongswan su CentOS 8
- Genera SSL Letsencrypt
- Configura Strongswan
- Abilita NAT Firewall
- Abilita il port forwarding
- Test
Passaggio 1:installa Strongswan su CentOS 8
In questo primo passaggio, installeremo il software di implementazione IPsec di strongswan e tutti i pacchetti necessari dal repository EPEL.
Prima di installare il pacchetto strongswan, devi aggiungere il repository EPEL al sistema CentOS 8.
Aggiungi il repository EPEL per il server CentOS 8.
sudo dnf install epel-release
Successivamente, installa il pacchetto strongswan dal repository EPEL utilizzando il comando dnf di seguito.
sudo dnf install strongswan
Attendi l'installazione del pacchetto strongswan.
Passaggio 2 - Genera certificato SSL con Let's encrypt
Per questa guida, creeremo il server VPN IKEv2 utilizzando un nome di dominio "vpn.hakase-labs.io" e utilizzeremo i certificati generati daletsencrypt.
In questo passaggio, installeremo manualmente lo strumento letencrypt 'certbot' e genereremo certificati per il nome di dominio del server 'vpn.hakase-labs.io'.
Scarica il file binario di certbot da GitHub usando il comando wget di seguito.
wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto
Successivamente, rendilo eseguibile modificando i permessi del file.
chmod +x /usr/local/bin/certbot-auto
E lo strumento certbot per la generazione di certificati Letsencrypt è stato installato.
Prima di generare i certificati Letsencrypt, dobbiamo aprire le porte HTTP e HTTPS del server utilizzando firewall-cmd.
Aggiungi i servizi HTTP e HTTPS all'elenco dei servizi firewalld eseguendo i comandi firewall-cmd di seguito.
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
Ora possiamo generare nuovi file di certificati SSL utilizzando lo strumento letencrypt certbot-auto.
Modifica l'indirizzo email e il nome di dominio con il tuo ed esegui il comando 'certbot-auto' di seguito.
certbot-auto certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email [email protected] -d vpn.hakase-labs.io
Una volta completato, otterrai il risultato come di seguito.
Tutti i certificati del tuo nome di dominio vengono generati nella directory '/etc/letsencrypt/live/domain.com'.
Successivamente, dobbiamo copiare i file del certificato 'fullchain.pem', 'privkey.pem' e 'chain.pem' nella directory '/etc/strongswan/ipsec.d/'.
cp /etc/letsencrypt/live/vpn.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/
Tutti i certificati Letencrypt per la VPN Strongswan denominata 'vpn.hakase-labs.io' sono stati generati e copiati nella directory '/etc/strongswan/ipsec.d'.
tree /etc/strongswan/ipsec.d/
Fase 3 - Configura Strongswan
Vai alla directory '/etc/strongswan' ed esegui il backup del file di configurazione predefinito 'ipsec.conf'.
cd /etc/strongswan/
mv ipsec.conf ipsec.conf.asli
Creane uno nuovo 'ipsec.conf' usando l'editor vim.
vim ipsec.conf
E incolla la seguente configurazione.
config setup
uniqueids=never # allow multiple connections per user
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
conn %default
fragmentation=yes
closeaction=restart
rekey=no
dpdaction=clear
keyexchange=ikev2
compress=yes
dpddelay=35s
lifetime=3h
ikelifetime=12h
ike=aes256gcm16-prfsha512-ecp384!
esp=aes256gcm16-ecp384!
left=%any
[email protected]
leftcert=fullchain.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.15.1.0/24
rightdns=1.1.1.1,8.8.8.8
rightsendcert=never
eap_identity=%identity
conn ikev2-pubkey
auto=add
Salva ed esci.
Successivamente, dobbiamo modificare il file "ipsec.secrets" per definire la chiave privata del server RSA e le credenziali della password dell'utente EAP.
Modifica il file 'ipsec.secrets'.
vim ipsec.secrets
Incolla la configurazione qui sotto.
: RSA "privkey.pem"
hakase : EAP "[email protected]"
tensai : EAP "[email protected]"
Salva ed esci.
E la configurazione IPSec di Strongswan è stata completata. Aggiungi il servizio strongswan all'avvio dell'avvio e quindi avvia il servizio.
systemctl enable strongswan
systemctl start strongswan
Il servizio strongswan è attivo e funzionante sul server CentOS 8, verificalo utilizzando il comando seguente.
systemctl status strongswan
netstat -plntu
E ti verrà mostrato il risultato come di seguito.
Passaggio 4 - Abilita NAT in Firewalld
In questo passaggio, abiliteremo il masquerading NAT e aggiungeremo i protocolli IPSec Authentication Header (AH) e Encapsulating Security Payload (ESP) su Firewalld utilizzando la configurazione 'rich-rule'.
Aggiungi 'AH' e 'ESP' per i protocolli di autenticazione e crittografia al firewalld.
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="esp" accept'
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="ah" accept'
Aggiungi le porte e il servizio UDP ipsec.
firewall-cmd --zone=public --permanent --add-port=500/udp
firewall-cmd --zone=public --permanent --add-port=4500/udp
firewall-cmd --zone=public --permanent --add-service="ipsec"
Ora abilita la modalità NAT masquerade e ricarica le regole di configurazione del firewalld.
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload
La modalità NAT su firewalld è stata abilitata, verifica utilizzando il comando seguente.
firewall-cmd --list-all
Di seguito il risultato.
Passaggio 5:abilitare il port forwarding
Per abilitare il port forwarding, dobbiamo modificare il file 'sysctl.conf'.
Modifica il file '/etc/sysctl.conf' usando l'editor vim.
vim /etc/sysctl.conf
Incolla lì la seguente configurazione.
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
Salva ed esci, ora ricarica usando il comando sysctl qui sotto.
sysctl -p
Il port forwarding è stato abilitato. Ora riavvia il servizio Strongswan.
systemctl restart strongswan
Passaggio 6:test della VPN IPSec Strongswan
In questo caso, faremo il test su MacOS X e telefono Android.
Su MacOS
- Apri le "Preferenze di Sistema" e fai clic sul menu "Rete".
Fai clic sul pulsante "+" per creare una nuova connessione VPN.
- Interfaccia:'VPN'
- Tipo VPN:'IKEv2'
- Nome servizio:'IKEv2-vpn
- In 'Indirizzo server' e 'ID remoto', digita il nome di dominio VPN 'ikev2.hakase-labs.io'.
- Fai clic su 'Impostazioni di autenticazione'.
- Autenticazione utilizzando un 'Nome utente' .
- Digita il nome utente 'tensai' con la password '[email protected]'
- Fai clic su 'OK' e fai clic su 'Applica'.
Nel client è stata creata una nuova connessione VPN IKEv2. Ora fai clic sul pulsante Connetti.
E il client è stato connesso al server VPN strongswan e ha un indirizzo IP interno/privato 10.15.1.1.
Su Android
- Scarica e installa l'applicazione Android nativa di strongswan da Google-Play.
- Aggiungi un nuovo profilo VPN
- Digita il nome di dominio del server "ikev2.hakase-labs.io" e utilizza il nome utente e la password EAP IKEv2 autenticazione.
Di seguito è il risultato quando ci connettiamo al server VPN.
Il server VPN basato su IPSec IKEv2 è stato creato utilizzando Strongswan e Letsencrypt sul server CentOS 8.