
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é. Le 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 connus 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 d'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.
Commencez par créer 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
Créez ensuite 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
Créez ensuite 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 le VPN StrongSwan
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
Créez ensuite 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
Enregistrez et fermez 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 modifiant 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
Enregistrez et fermez 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 le résultat suivant :
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 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 le résultat suivant :
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.