Installer et configurer StrongSwan VPN sur Ubuntu 20.04

Un réseau privé virtuel est utilisé pour créer un réseau privé à partir d’une connexion Internet publique afin de protéger votre identité. VPN utilise un tunnel crypté pour envoyer et recevoir les données en toute sécurité.

strongSwan est l’un des logiciels VPN les plus célèbres qui prend en charge différents systèmes d’exploitation, notamment Linux, OS X, FreeBSD, Windows, Android et iOS. Il utilise les protocoles IKEv1 et IKEv2 pour l’établissement d’une connexion sécurisée. Vous pouvez étendre ses fonctionnalités avec des plugins intégrés.

Dans ce didacticiel, nous expliquerons étape par étape comment configurer un serveur VPN KEv2 avec StrongSwan sur Ubuntu 20.04.

Prérequis

• Deux systèmes exécutant le serveur Ubuntu 20.04
• Un mot de passe root est configuré sur les deux serveurs

Installer StrongSwan

Par défaut, StrongSwan est disponible dans le référentiel par défaut Ubuntu 20.04. Vous pouvez l’installer avec les autres composants requis à l’aide de la commande suivante :

apt-get install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins -y

Après avoir installé tous les packages, vous pouvez procéder à la génération d’un certificat CA.

Générer un certificat pour le serveur VPN

Ensuite, vous devrez générer un certificat et une clé pour le serveur VPN afin de vérifier l’authenticité du serveur côté client.

Tout d’abord, créez une clé privée pour l’autorité de certification racine avec la commande suivante :

ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/ca.key.pem

Ensuite, créez une autorité de certification racine et signez-la à l’aide de la clé ci-dessus :

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

Ensuite, créez une clé privée pour le serveur VPN à l’aide de la commande suivante :

ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/server.key.pem

Enfin, générez le certificat du serveur à l’aide de la commande suivante :

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

À ce stade, tous les certificats sont prêts pour le serveur VPN.

Configurer StrongSwan VPN

Le fichier de configuration par défaut de strongswan est /etc/ipsec.conf. Nous pouvons sauvegarder le fichier de configuration principal et créer un nouveau fichier :

mv /etc/ipsec.conf /etc/ipsec.conf-bak

Ensuite, créez un nouveau fichier de configuration :

nano /etc/ipsec.conf

Ajoutez les paramètres de configuration et de connexion suivants :

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

Save et close le fichier /etc/ipsec.conf.

Ensuite, vous devrez définir les informations d’identification de l’utilisateur EAP et les clés privées RSA pour l’authentification.

Vous pouvez le configurer en éditant le fichier /etc/ipsec.secrets :

nano /etc/ipsec.secrets

Ajoutez la ligne suivante :

: RSA "server.key.pem"
vpnsecure : EAP "password"

Redémarrez ensuite le service StrongSwan comme suit :

systemctl restart strongswan-starter

Pour permettre à StrongSwan de démarrer au démarrage du système, tapez :

systemctl enable strongswan-starter

Vérifiez l’état du serveur VPN, tapez :

systemctl status strongswan-starter

Activer le transfert de paquets du noyau

Ensuite, vous devrez configurer le noyau pour activer le transfert de paquets en éditant le fichier /etc/sysctl.conf :

nano /etc/sysctl.conf

Décommentez les lignes suivantes :

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

Save et close le fichier puis rechargez les nouveaux paramètres à l’aide de la commande suivante :

sysctl -p

Installer et configurer le client StrongSwan

Dans cette section, nous allons installer le client StrongSwan sur la machine distante et nous connecter au serveur VPN.

Tout d’abord, installez tous les packages requis avec la commande suivante :

apt-get install strongswan libcharon-extra-plugins -y

Une fois tous les packages installés, arrêtez le service StrongSwan avec la commande suivante :

systemctl stop strongswan-starter

Ensuite, vous devrez copier le fichier ca.cert.pem du serveur VPN dans le répertoire /etc/ipsec.d/cacerts/. Vous pouvez le copier à l’aide de la commande SCP comme indiqué ci-dessous :

scp [email protected]:/etc/ipsec.d/cacerts/ca.cert.pem /etc/ipsec.d/cacerts/

Pour configurer l’authentification du client VPN, utilisez le fichier /etc/ipsec.secrets :

nano /etc/ipsec.secrets

Ajoutez la ligne suivante :

vpnsecure : EAP "password"

Modifiez ensuite le fichier de configuration principal de strongSwan :

nano /etc/ipsec.conf

Ajoutez les lignes suivantes qui correspondent à votre domaine, mot de passe que vous avez spécifié dans le fichier /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

Démarrez maintenant le service VPN StrongSwan à l’aide de la commande suivante :

systemctl start strongswan-starter

Ensuite, vérifiez l’état de la connexion VPN à l’aide de la commande suivante :

ipsec status

Vous devriez obtenir la sortie suivante :

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

La sortie ci-dessus indique qu’une connexion VPN est établie entre le client et le serveur et que l’adresse IP 10.10.10.1 est attribuée à la machine cliente.

Vous pouvez également vérifier votre nouvelle adresse IP avec la commande suivante :

ip a

Vous devriez obtenir la sortie suivante :

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

Conclusion

Dans le guide ci-dessus, nous avons appris à configurer un serveur et un client VPN StrongSwan sur Ubuntu 20.04. Vous pouvez désormais protéger votre identité et sécuriser vos activités en ligne.