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 pre condivise 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 7.
Prerequisiti
- Server CentOS 7
- Privilegi di root
Cosa faremo?
- Installa Strongswan su CentOS 7
- Genera SSL Letsencrypt
- Configura Strongswan
- Abilita NAT Firewall
- Abilita il port forwarding
- Test
Passaggio 1:installa Strongswan su CentOS 7
In questo primo passaggio, installeremo il software di implementazione IPsec di strongswan e tutti i pacchetti necessari dal repository EPEL.
Installa il repository EPEL e installa il pacchetto strongswan usando i comandi yum di seguito.
yum -y install epel-release
yum -y install strongswan
Attendi l'installazione del pacchetto strongswan.
Passaggio 2 - Genera certificato SSL con Let's encrypt
Creeremo il server VPN IKEv2 utilizzando un nome di dominio 'ikev2.hakase-labs.io' e utilizzeremo i certificati generati daletsencrypt.
In questo passaggio, installeremo lo strumento letencrypt 'certbot' e genereremo certificati per il nome di dominio del server 'ikev2.hakase-labs.io'.
Installa lo strumento di crittografia 'certbot'.
yum -y install certbot
Dopo l'installazione di certbot, dobbiamo aprire la porta 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.
Esegui il comando certbot di seguito.
certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email [email protected] -d ikev2.hakase-labs.io
I certificati Letsencrypt per il nome di dominio VPN 'ikev2.hakase-labs.io' sono stati generati e si trovano nella directory '/etc/letsencrypt/live'.
Successivamente, dobbiamo copiare i file del certificato 'fullchain.pem', 'privkey.pem' e 'chain.pem' nella directory '/etc/strongswan/ipsec.d/'.
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/
Tutti i certificati Letencrypt per la VPN Strongswan denominata 'ikev2.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 vim editor.
vim ipsec.conf
E incolla la seguente configurazione.
#global configuration IPsec #chron logger config setup charondebug="ike 1, knl 1, cfg 0" uniqueids=no #define new ipsec connection conn hakase-vpn auto=add compress=no type=tunnel keyexchange=ikev2 ike=aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,aes256-sha1-modp1024,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024! esp=aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1,aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128gcm16,aes128gcm16-ecp256,aes256-sha1,aes256-sha256,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16,aes256gcm16-ecp384,3des-sha1! fragmentation=yes forceencaps=yes dpdaction=clear dpddelay=300s rekey=no 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
Salva ed esci.
Dettagli di configurazione:
- Crea una nuova connessione tunnel VPN IPSec denominata 'hakase-vpn'.
- Specificare le suite di crittografia IKEv2 ed ESP per l'autenticazione.
- La configurazione del server 'sinistra' utilizzando un nome di dominio 'ikev2.hakase-labs.io' e utilizzando il certificato letencrypt 'fullchain.pem' che si trova nella directory '/etc/strongswan/ipsec.d/certs'.
- I client "corretti"/configurazione remota con il metodo di autenticazione EAP "eap-mschapv2", assegnare l'intervallo di indirizzi IP virtuali "10.15.1.0/24" a tutti i client connessi e utilizzare il DNS pubblico Cloudflare e google.
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.
Dettagli di configurazione:
- Specificare la chiave privata del server RSA utilizzando il certificatoletsencrypt 'privkey.pem' che si trova nella directory '/etc/strongswan/ipsec.d/private'.
- Definisci le credenziali dell'utente EAP con il formato 'utente:EAP "password"'.
La configurazione IPSec di strongswan è stata completata. Avvia il servizio strongswan e abilitalo per l'avvio ogni volta all'avvio del sistema.
systemctl start strongswan
systemctl enable strongswan
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 tramite 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 7.