Installa e configura StrongSwan VPN su Ubuntu 20.04
Una rete privata virtuale viene utilizzata per creare una rete privata da una connessione Internet pubblica per proteggere la tua identità. La VPN utilizza un tunnel crittografato per inviare e ricevere dati in modo sicuro.
strongSwan è uno dei software VPN più famosi che supporta vari sistemi operativi tra cui Linux, OS X, FreeBSD, Windows, Android e iOS. Utilizza il protocollo IKEv1 e IKEv2 per stabilire la connessione sicura. Puoi estendere la sua funzionalità con plugin integrati.
In questo tutorial, spiegheremo le istruzioni dettagliate su come configurare un server VPN KEv2 con StrongSwan su Ubuntu 20.04.
Prerequisito
• Due sistemi che eseguono Ubuntu Server 20.04
• Una password root è configurata su entrambi i server
Installa StrongSwan
Per impostazione predefinita, StrongSwan è disponibile nel repository predefinito di Ubuntu 20.04. Puoi installarlo con altri componenti richiesti usando il seguente comando:
apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins libtss2-tcti-tabrmd0 -y
Dopo aver installato tutti i pacchetti, puoi procedere alla generazione di un certificato CA.
Genera un certificato per il server VPN
Successivamente, dovrai generare un certificato e una chiave per il server VPN per verificare l’autenticità del server dal lato client.
Innanzitutto, crea una chiave privata per la CA radice con il seguente comando:
ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/ca.key.pem
Successivamente, crea una CA radice e firmala utilizzando la chiave sopra:
ipsec pki --self --in /etc/ipsec.d/private/ca.key.pem --type rsa --dn "CN=My VPN Server CA" --ca --lifetime 3650 --outform pem > /etc/ipsec.d/cacerts/ca.cert.pem
Successivamente, crea una chiave privata per il server VPN utilizzando il seguente comando:
ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/server.key.pem
Infine, genera il certificato del server utilizzando il seguente comando:
ipsec pki --pub --in /etc/ipsec.d/private/server.key.pem --type rsa | ipsec pki --issue --lifetime 2750 --cacert /etc/ipsec.d/cacerts/ca.cert.pem --cakey /etc/ipsec.d/private/ca.key.pem --dn "CN=vpn.domain.com" --san="vpn.domain.com" --flag serverAuth --flag ikeIntermediate --outform pem > /etc/ipsec.d/certs/server.cert.pem
A questo punto, tutti i certificati sono pronti per il server VPN.
Configura la VPN StrongSwan
Il file di configurazione predefinito di strongswan è /etc/ipsec.conf. Possiamo eseguire il backup del file di configurazione principale e creare un nuovo file:
mv /etc/ipsec.conf /etc/ipsec.conf-bak
Successivamente, crea un nuovo file di configurazione:
nano /etc/ipsec.conf
Aggiungi le seguenti impostazioni di configurazione e connessione:
config setup
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
strictcrlpolicy=no
uniqueids=yes
cachecrls=no
conn ipsec-ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
[email protected]
leftcert=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
rightsendcert=never
eap_identity=%identity
- left=%any – %any indica che il server utilizzerà l’indirizzo privato a cui riceve il traffico per il resto della connessione.
- [email protected]_domain – controlla il nome di dominio che il server presenterà ai client e conserva la @ quando si utilizza il nome di dominio. Se il tuo server sarà raggiungibile tramite indirizzo IP, dovresti utilizzare l’IP.
- leftcert=server.cert.pem – è il percorso del certificato pubblico per il server configurato in precedenza. Il server deve essere in grado di autenticarsi con i client.
- leftsendcert=always – per garantire che qualsiasi client che si connette al server riceva una copia del certificato pubblico durante l’impostazione della connessione iniziale.
- leftsubnet=0.0.0.0/0 – dice che tutti i client dietro il server saranno raggiungibili.
Dopo il lato server, possiamo vedere la configurazione lato client:
- right=%any in modo che il server accetti tutte le connessioni in entrata da qualsiasi client remoto.
- rightid=%any per garantire che il server non rifiuterà le connessioni dai client che forniscono un’identità prima che venga stabilito il tunnel crittografato.
- rightauth=eap-mschapv2 per configurare il metodo di autenticazione che i client utilizzeranno per autenticarsi sul server.
- rightsourceip=10.10.10.0/24 all’indirizzo di rete che verrà utilizzato per assegnare indirizzi IP privati ai client
- rightdns=8.8.8.8,8.8.4.4 I resolver DNS pubblici di Google, ma puoi cambiarli se vuoi
- rightsendcert=never per comunicare al server che i client non devono inviare un certificato per l’autenticazione.
Successivamente, dovrai definire le tue credenziali utente EAP e le chiavi private RSA per l’autenticazione.
Puoi configurarlo modificando il file /etc/ipsec.secrets:
nano /etc/ipsec.secrets
Aggiungi la seguente riga:
: RSA "server.key.pem"
vpnsecure : EAP "password"
Quindi riavviare il servizio StrongSwan come segue:
systemctl restart strongswan-starter
Per abilitare l’avvio di StrongSwan all’avvio del sistema, digitare:
systemctl enable strongswan-starter
Controlla lo stato del server VPN, digita:
systemctl status strongswan-starter
Abilita il reindirizzamento dei pacchetti del kernel
Successivamente, dovrai configurare il kernel per abilitare l’inoltro dei pacchetti modificando il file /etc/sysctl.conf:
nano /etc/sysctl.conf
Rimuovere il commento dalle seguenti righe:
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
Salva e chiudi il file, quindi ricarica le nuove impostazioni utilizzando il seguente comando:
sysctl -p
Installa e configura il client StrongSwan
In questa sezione, installeremo il client StrongSwan sulla macchina remota e ci connetteremo al server VPN.
Innanzitutto, installa tutti i pacchetti richiesti con il seguente comando:
apt install strongswan libcharon-extra-plugins -y
Una volta installati tutti i pacchetti, arrestare il servizio StrongSwan con il seguente comando:
systemctl stop strongswan-starter
Successivamente, sarà necessario copiare il file ca.cert.pem dal server VPN nella directory /etc/ipsec.d/cacerts/. Puoi copiarlo usando il comando SCP come mostrato di seguito:
scp [email protected]:/etc/ipsec.d/cacerts/ca.cert.pem /etc/ipsec.d/cacerts/
Per configurare l’autenticazione del client VPN, utilizzare il file /etc/ipsec.secrets:
nano /etc/ipsec.secrets
Aggiungi la seguente riga:
vpnsecure : EAP "password"
Quindi modifica il file di configurazione principale di strongSwan:
nano /etc/ipsec.conf
Aggiungi le seguenti righe che corrispondono al tuo dominio, la password che hai specificato nel file /etc/ipsec.secrets.
conn ipsec-ikev2-vpn-client
auto=start
right=vpn.domain.com
rightid=vpn.domain.com
rightsubnet=0.0.0.0/0
rightauth=pubkey
leftsourceip=%config
leftid=vpnsecure
leftauth=eap-mschapv2
eap_identity=%identity
Ora avvia il servizio VPN StrongSwan usando il seguente comando:
systemctl start strongswan-starter
Successivamente, controlla lo stato della connessione VPN utilizzando il seguente comando:
ipsec status
Dovresti ottenere il seguente risultato:
Security Associations (1 up, 0 connecting):
ipsec-ikev2-vpn-client[1]: ESTABLISHED 28 seconds ago, 104.245.32.158[vpnsecure]...104.245.33.84[vpn.domain.com]
ipsec-ikev2-vpn-client{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: ca6f451c_i ca9f9ff7_o
ipsec-ikev2-vpn-client{1}: 10.10.10.1/32 === 0.0.0.0/0
L’output precedente indica che viene stabilita una connessione VPN tra il client e il server e che l’indirizzo IP 10.10.10.1 viene assegnato al computer client.
Puoi anche verificare il nuovo indirizzo IP con il seguente comando:
ip a
Dovresti ottenere il seguente risultato:
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:68:f5:20:9e brd ff:ff:ff:ff:ff:ff
inet 104.245.32.158/25 brd 104.245.32.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.10.10.1/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::200:68ff:fef5:209e/64 scope link
valid_lft forever preferred_lft forever
Conclusione
In questa guida, abbiamo imparato come configurare un server e un client VPN StrongSwan su Ubuntu 20.04. Ora puoi proteggere la tua identità e proteggere le tue attività online.