Introduction
A virtual private network, or VPN, allows you to securely encrypt traffic as it travels through untrusted networks, such as those at the coffee shop, a conference, or an airport.
Internet Key Exchange v2, ou IKEv2, est un protocole qui permet un tunneling IPSec direct entre le serveur et le client. Dans les implémentations VPN IKEv2, IPSec fournit le chiffrement du trafic réseau. IKEv2 est pris en charge nativement sur certaines plates-formes (OS X 10.11+, iOS 9.1+ et Windows 10) sans nécessiter d’applications supplémentaires, et il gère assez facilement les hoquets des clients.
Dans ce tutoriel, vous configurerez un serveur VPN IKEv2 en utilisant StrongSwan sur un serveur Ubuntu 22.04. Vous apprendrez ensuite comment vous y connecter avec des clients Windows, macOS, Ubuntu, iOS et Android.
Prérequis
Pour réaliser ce tutoriel, vous aurez besoin de :
- Un serveur Ubuntu 22.04 configuré en suivant le guide de configuration initiale du serveur Ubuntu 22.04, comprenant un utilisateur non root avec sudo et un pare-feu.
Étape 1 — Installation de StrongSwan
Tout d’abord, vous installerez StrongSwan, un démon IPSec open source que vous configurerez en tant que serveur VPN. Vous installerez également le composant d’infrastructure à clé publique (PKI) afin de pouvoir créer une autorité de certification (CA) pour fournir des informations d’identification à votre infrastructure.
Commencez par mettre à jour le cache des paquets locaux :
Ensuite, installez le logiciel en tapant :
Le paquet supplémentaire libcharon-extauth-plugins
est utilisé pour garantir que différents clients peuvent s’authentifier sur votre serveur en utilisant un nom d’utilisateur et un mot de passe partagés. Le paquet libstrongswan-extra-plugins
est inclus pour que Strongswan prenne en charge les suites de chiffrement à courbe elliptique qui utilisent la suite cryptographique Curve25519
.
Maintenant que tout est installé, passez à la création de vos certificats.
Étape 2 — Création d’une autorité de certification
Un serveur IKEv2 nécessite un certificat pour s’identifier auprès des clients. Pour aider à créer le certificat requis, le paquet strongswan-pki
est livré avec un utilitaire appelé pki
pour générer une autorité de certification et des certificats de serveur.
Pour commencer, créez quelques répertoires pour stocker tous les éléments sur lesquels vous travaillerez. La structure des répertoires correspond à certains des répertoires dans /etc/ipsec.d
, où vous déplacerez éventuellement tous les éléments que vous créez:
Ensuite, verrouillez les autorisations pour que nos fichiers privés ne puissent pas être consultés par d’autres utilisateurs:
Maintenant que vous avez une structure de répertoires pour stocker tout, vous pouvez générer une clé racine. Il s’agira d’une clé RSA de 4096 bits qui sera utilisée pour signer votre certificat d’autorité de certification racine:
Exécutez ces commandes pour générer la clé:
Ensuite, vous pouvez passer à la création de votre autorité de certification racine, en utilisant la clé que vous venez de générer pour signer le certificat racine:
Le drapeau --lifetime 3650
est utilisé pour garantir que le certificat racine de l’autorité de certification sera valide pendant 10 ans. Le certificat racine d’une autorité ne change généralement pas, car il devrait être redistribué à chaque serveur et client qui en dépendent, donc 10 ans est une valeur d’expiration par défaut sûre.
Vous pouvez changer la valeur du nom distingué (DN) pour autre chose si vous le souhaitez. Le nom commun (champ CN) ici est juste un indicateur, il n’a donc pas besoin de correspondre à quoi que ce soit dans votre infrastructure.
Maintenant que votre autorité de certification racine est opérationnelle, vous pouvez créer un certificat que le serveur VPN utilisera.
Étape 3 — Génération d’un certificat pour le serveur VPN
Vous allez maintenant créer un certificat et une clé pour le serveur VPN. Ce certificat permettra au client de vérifier l’authenticité du serveur à l’aide du certificat CA que nous venons de générer.
Tout d’abord, créez une clé privée pour le serveur VPN avec la commande suivante :
Ensuite, créez et signez le certificat du serveur VPN avec la clé de l’autorité de certification que vous avez créée à l’étape précédente. Exécutez la commande suivante, mais modifiez le Nom commun (CN) et le champ de Nom alternatif du sujet (SAN) avec le nom DNS ou l’adresse IP de votre serveur VPN :
Note : Si vous utilisez une adresse IP au lieu d’un nom DNS, vous devrez spécifier plusieurs entrées --san
. La ligne dans le bloc de commande précédent où vous spécifiez le nom distingué (--dn ...
) devra être modifiée avec l’entrée supplémentaire comme dans l’extrait suivant :
--dn "CN=adresse IP" --san @adresse_IP --san adresse_IP \
La raison de cette entrée supplémentaire --san @adresse_IP
est que certains clients vérifieront si le certificat TLS comporte à la fois une entrée DNS et une entrée d’adresse IP pour un serveur lorsqu’ils vérifient son identité.
L’option --flag serverAuth
est utilisée pour indiquer que le certificat sera utilisé explicitement pour l’authentification du serveur, avant l’établissement du tunnel chiffré. L’option --flag ikeIntermediate
est utilisée pour prendre en charge les anciens clients macOS.
Maintenant que vous avez généré tous les fichiers TLS/SSL dont StrongSwan a besoin, vous pouvez déplacer les fichiers à leur emplacement dans le répertoire /etc/ipsec.d
en tapant :
Dans cette étape, vous avez créé une paire de certificats qui seront utilisés pour sécuriser les communications entre le client et le serveur. Vous avez également signé les certificats avec la clé CA, de sorte que le client pourra vérifier l’authenticité du serveur VPN à l’aide du certificat CA. Avec tous ces certificats prêts, vous êtes prêt à passer à la configuration de StrongSwan.
Étape 4 — Configuration de StrongSwan
StrongSwan dispose d’un fichier de configuration par défaut avec quelques exemples, mais nous devrons faire la plupart de la configuration nous-mêmes. Sauvegardons le fichier pour référence avant de commencer à partir de zéro :
Créez et ouvrez un nouveau fichier de configuration vierge à l’aide de votre éditeur de texte préféré. Ici, vous utiliserez nano
:
Remarque : En travaillant à travers cette section pour configurer la partie serveur de votre VPN, vous rencontrerez des paramètres qui font référence aux côtés gauche et droit d’une connexion. Lorsque vous travaillez avec des VPN IPSec, le côté gauche par convention fait référence au système local que vous configurez, dans ce cas le serveur. Les directives du côté droit dans ces paramètres feront référence aux clients distants, comme les téléphones et autres ordinateurs.
Lorsque vous passerez à la configuration des clients plus tard dans ce tutoriel, les fichiers de configuration des clients se référeront à eux-mêmes en utilisant diverses directives gauche, et le serveur sera désigné en utilisant la terminologie du côté droit.
Tout d’abord, nous indiquerons à StrongSwan de journaliser les statuts des démons pour le débogage et d’autoriser les connexions dupliquées. Ajoutez ces lignes au fichier :
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
Ensuite, nous créerons une section de configuration pour notre VPN. Nous dirons également à StrongSwan de créer des tunnels VPN IKEv2 et de charger automatiquement cette section de configuration lorsqu’il démarre. Ajoutez les lignes suivantes au fichier :
. . .
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
Nous configurerons également la détection de pairs morts pour effacer toute connexion « pendante » en cas de déconnexion inattendue du client. Ajoutez ces lignes :
. . .
conn ikev2-vpn
. . .
dpdaction=clear
dpddelay=300s
rekey=no
Ensuite, nous configurerons les paramètres IPSec du côté « gauche » du serveur. Chacun des paramètres suivants garantit que le serveur est configuré pour accepter les connexions des clients et s’identifier correctement. Vous ajouterez chacun de ces réglages au fichier /etc/ipsec.conf
une fois que vous aurez compris ce qu’ils sont et pourquoi ils sont utilisés :
left=%any
La valeur%any
garantit que le serveur utilisera l’interface réseau où il reçoit les connexions entrantes pour la communication ultérieure avec les clients. Par exemple, si vous connectez un client via un réseau privé, le serveur utilisera l’adresse IP privée où il reçoit le trafic pour le reste de la connexion.leftid=@server_domain_or_IP
Cette option contrôle le nom que le serveur présente aux clients. Lorsqu’elle est combinée avec l’option suivanteleftcert
, l’optionleftid
garantit que le nom configuré du serveur et le nom distinctif (DN) contenu dans le certificat public correspondent.leftcert=server-cert.pem
Cette option est le chemin vers le certificat public du serveur que vous avez configuré à l’étape 3. Sans cela, le serveur ne pourra pas s’authentifier auprès des clients, ni terminer la négociation de la configuration IKEv2.leftsendcert=always
La valeuralways
garantit qu’un client se connectant au serveur recevra toujours une copie du certificat public du serveur lors de la configuration initiale de la connexion.leftsubnet=0.0.0.0/0
La dernière option du côté « left » que vous ajouterez indique aux clients les sous-réseaux accessibles derrière le serveur. Dans ce cas,0.0.0.0/0
est utilisé pour représenter l’ensemble des adresses IPv4, ce qui signifie que le serveur indiquera aux clients d’envoyer tout leur trafic via le VPN par défaut.
Maintenant que vous êtes familiarisé avec chacune des options pertinentes du côté « left », ajoutez-les toutes au fichier de cette manière:
. . .
conn ikev2-vpn
. . .
left=%any
leftid=@server_domain_or_IP
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
Remarque: Lors de la configuration de l’ID du serveur (leftid
), incluez uniquement le caractère @
si votre serveur VPN sera identifié par un nom de domaine:
. . . leftid=@vpn.example.com
. . .
Si le serveur est identifié par son adresse IP, mettez simplement l’adresse IP:
. . .
leftid=your_server_ip
. . .
Ensuite, nous pouvons configurer les paramètres IPSec « droits » du client. Chacun des paramètres suivants indique au serveur comment accepter les connexions des clients, comment les clients doivent s’authentifier auprès du serveur, et les plages d’adresses IP privées et les serveurs DNS que les clients utiliseront. Ajoutez chacun de ces paramètres au fichier /etc/ipsec.conf
une fois que vous êtes familiarisé avec ce qu’ils sont et pourquoi ils sont utilisés:
right=%any
L’option%any
pour le côtéright
de la connexion indique au serveur d’accepter les connexions entrantes de n’importe quel client distant.rightid=%any
Cette option garantit que le serveur ne rejettera pas les connexions des clients qui fournissent une identité avant l’établissement du tunnel crypté.rightauth=eap-mschapv2
Cette option configure la méthode d’authentification que les clients utiliseront pour s’authentifier auprès du serveur.eap-mschapv2
est utilisé ici pour une compatibilité étendue afin de prendre en charge des clients tels que Windows, macOS et les appareils Android.rightsourceip=10.10.10.0/24
Cette option indique au serveur d’attribuer des adresses IP privées aux clients à partir de la plage d’adresses10.10.10.0/24
spécifiée.rightdns=8.8.8.8,8.8.4.4
Ces adresses IP sont les résolveurs DNS publics de Google. Ils peuvent être modifiés pour utiliser d’autres résolveurs publics, les résolveurs du serveur VPN ou tout autre résolveur accessible par les clients.rightsendcert=never
Cette option indique au serveur que les clients n’ont pas besoin d’envoyer un certificat pour s’authentifier eux-mêmes.
Maintenant que vous êtes familier avec les options requises du côté « right » pour le VPN, ajoutez les lignes suivantes à /etc/ipsec.conf
:
. . .
conn ikev2-vpn
. . .
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
Maintenant, nous allons dire à StrongSwan de demander les informations d’identification de l’utilisateur lorsque celui-ci se connecte:
. . .
conn ikev2-vpn
. . .
eap_identity=%identity
Enfin, ajoutez les lignes suivantes pour prendre en charge les clients Linux, Windows, macOS, iOS et Android. Ces lignes spécifient les différents algorithmes d’échange de clés, de hachage, d’authentification et de chiffrement (communément appelés Suites de chiffrement) que StrongSwan permettra à différents clients d’utiliser:
. . .
conn ikev2-vpn
. . .
ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!
Chaque suite de chiffrement prise en charge est délimitée des autres par une virgule. Par exemple, chacha20poly1305-sha512-curve25519-prfsha512
est une suite, et aes256gcm16-sha384-prfsha384-ecp384
en est une autre. Les suites de chiffrement répertoriées ici sont sélectionnées pour garantir la plus large compatibilité possible avec les clients Windows, macOS, iOS, Android et Linux.
Le fichier de configuration complet devrait ressembler à ceci:
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=@server_domain_or_IP
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,8.8.4.4
rightsendcert=never
eap_identity=%identity
ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!
Enregistrez et fermez le fichier une fois que vous avez vérifié que vous avez ajouté chaque ligne correctement. Si vous avez utilisé nano
, faites-le en appuyant sur CTRL + X
, puis sur Y
, et enfin sur ENTRÉE
.
Maintenant que vous avez configuré les paramètres VPN, vous pouvez passer à la création d’un compte afin que les utilisateurs puissent se connecter au serveur.
Étape 5 — Configuration de l’authentification VPN
Votre serveur VPN est maintenant configuré pour accepter les connexions des clients, mais il n’y a pas encore de crédentials configurés. Vous devrez configurer quelques choses dans un fichier de configuration spécial appelé ipsec.secrets
:
- Vous devez indiquer à StrongSwan où trouver la clé privée de notre certificat de serveur, afin que le serveur puisse s’authentifier auprès des clients.
- Vous devez également configurer une liste d’utilisateurs autorisés à se connecter au VPN.
Ouvrons le fichier des secrets pour le modifier:
Tout d’abord, indiquez à StrongSwan où trouver la clé privée et comment la parser.
: RSA "server-key.pem"
Assurez-vous que la ligne commence par le caractère :
et qu’il y a un espace après pour que toute la ligne soit : RSA "server-key.pem"
.
Ensuite, vous définirez les identifiants de l’utilisateur. Vous pouvez inventer n’importe quelle combinaison de nom d’utilisateur et de mot de passe que vous souhaitez:
your_username : EAP "your_password"
Enregistrez et fermez le fichier. Maintenant que vous avez terminé de travailler avec les paramètres VPN, redémarrez le service VPN afin que notre configuration soit appliquée:
Maintenant que le serveur VPN a été entièrement configuré avec les options du serveur et les informations d’identification des utilisateurs, il est temps de passer à la configuration de la partie la plus importante : le pare-feu.
Étape 6 — Configuration du pare-feu & du transfert IP du noyau
Avec la configuration de StrongSwan terminée, vous devez configurer le pare-feu pour autoriser le trafic VPN et le transférer.
Si vous avez suivi le didacticiel de configuration initiale du serveur prérequis, vous devriez avoir un pare-feu UFW activé. Si vous n’avez pas encore configuré UFW, vous devriez commencer par ajouter une règle pour autoriser les connexions SSH à travers le pare-feu afin que votre session actuelle ne se ferme pas lorsque vous activez UFW:
Ensuite, activez le pare-feu en tapant :
Ensuite, ajoutez une règle pour autoriser le trafic UDP sur les ports IPSec standard, 500
et 4500
:
Ensuite, vous ouvrirez l’un des fichiers de configuration d’UFW pour ajouter quelques politiques de bas niveau pour le routage et le transfert des paquets IPSec. Cependant, avant de faire cela, vous devez trouver quelle interface réseau sur notre serveur est utilisée pour l’accès à Internet. Trouvez cette interface en interrogeant le périphérique associé à la route par défaut:
Votre interface publique devrait suivre le mot « dev ». Par exemple, ce résultat montre l’interface nommée eth0
, qui est mise en évidence dans l’exemple suivant:
Outputdefault via your_server_ip dev eth0 proto static
Lorsque vous avez votre interface réseau publique, ouvrez le fichier /etc/ufw/before.rules
dans votre éditeur de texte. Les règles dans ce fichier sont ajoutées au pare-feu avant le reste des règles d’entrée et de sortie habituelles. Elles sont utilisées pour configurer la translation d’adresse réseau (NAT) afin que le serveur puisse correctement router les connexions vers et depuis les clients et l’Internet.
Près du début du fichier (avant la ligne *filter
), ajoutez le bloc de configuration suivant. Changez chaque instance de eth0
dans la configuration ci-dessus pour correspondre au nom de l’interface que vous avez trouvé avec ip route
. Les lignes *nat
créent des règles afin que le pare-feu puisse correctement router et manipuler le trafic entre les clients VPN et l’Internet. La ligne *mangle
ajuste la taille maximale des segments de paquets pour éviter d’éventuels problèmes avec certains clients VPN:
*nat
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
COMMIT
*mangle
-A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
. . .
Ensuite, après les lignes de définition de la chaîne et de *filter
, ajoutez un bloc de configuration supplémentaire:
. . .
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
-A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT
Ces lignes indiquent au pare-feu de transférer le trafic ESP (Encapsulating Security Payload) afin que les clients VPN puissent se connecter. ESP offre une sécurité supplémentaire pour nos paquets VPN lorsqu’ils traversent des réseaux non fiables.
Lorsque vous avez terminé, enregistrez et fermez le fichier une fois que vous avez vérifié que vous avez ajouté chaque ligne correctement. Si vous avez utilisé nano
, faites-le en appuyant sur CTRL + X
, puis Y
, et enfin ENTER
.
Avant de redémarrer le pare-feu, vous devez également modifier certains paramètres du noyau réseau pour permettre le routage d’une interface à une autre. Le fichier qui contrôle ces paramètres s’appelle /etc/ufw/sysctl.conf
. Vous devrez configurer quelques éléments dans le fichier.
Tout d’abord, le transfert de paquets IPv4 doit être activé afin que le trafic puisse circuler entre les interfaces VPN et les interfaces réseau publiques sur le serveur. Ensuite, vous désactiverez la découverte du MTU du chemin pour éviter les problèmes de fragmentation de paquets. Enfin, nous ne accepterons pas les redirections ICMP ni n’enverrons de redirections ICMP pour prévenir les attaques de l’homme du milieu.
Ouvrez le fichier de configuration des paramètres du noyau UFW en utilisant nano
ou votre éditeur de texte préféré:
Ajoutez maintenant le paramètre suivant net/ipv4/ip_forward=1
à la fin du fichier pour activer le transfert de paquets entre les interfaces:
. . .
net/ipv4/ip_forward=1
Bloquez ensuite l’envoi et la réception de paquets de redirection ICMP en ajoutant les lignes suivantes à la fin du fichier:
. . .
net/ipv4/conf/all/accept_redirects=0
net/ipv4/conf/all/send_redirects=0
Enfin, désactivez la découverte du MTU du chemin en ajoutant cette ligne à la fin du fichier:
. . .
net/ipv4/ip_no_pmtu_disc=1
Enregistrez le fichier lorsque vous avez terminé. Maintenant, vous pouvez activer toutes vos modifications en désactivant et en réactivant le pare-feu, car UFW applique ces paramètres chaque fois qu’il redémarre:
Vous serez invité à confirmer le processus. Tapez Y
pour réactiver UFW avec les nouveaux paramètres.
Étape 7 — Tester la connexion VPN sur Windows, macOS, Ubuntu, iOS et Android
Maintenant que tout est configuré, il est temps de l’essayer. Tout d’abord, vous devrez copier le certificat CA que vous avez créé et l’installer sur votre/vos appareil(s) client(s) qui se connecteront au VPN. La manière la plus simple de le faire est de vous connecter à votre serveur et de générer le contenu du fichier de certificat :
Vous verrez une sortie similaire à ceci :
Output-----BEGIN CERTIFICATE-----
MIIFNDCCAxygAwIBAgIIHCsidG5mXzgwDQYJKoZIhvcNAQEMBQAwODELMAkGA1UE
. . .
H2YUdz8XNHrJHvMQKWFpi0rlEcMs+MSXPFWE3Q7UbaZJ/h8wpSldSUbQRUlphExJ
dJ4PX+MUJO/vjG1/ie6Kh25xbBAc3qNq8siiJZDwrg6vjEK7eiZ1rA==
-----FIN DU CERTIFICAT-----
Copiez cette sortie sur votre ordinateur, y compris les lignes -----BEGIN CERTIFICATE-----
et -----END CERTIFICATE-----
, et enregistrez-la dans un fichier avec un nom reconnaissable, tel que ca-cert.pem
. Assurez-vous que le fichier que vous créez a l’extension .pem
.
Alternativement, utilisez SFTP pour transférer le fichier vers votre ordinateur.
Une fois que vous avez téléchargé le fichier ca-cert.pem
sur votre ordinateur, vous pouvez configurer la connexion au VPN.
Connexion depuis Windows
Il existe plusieurs façons d’importer le certificat racine et de configurer Windows pour se connecter à un VPN. La première méthode utilise des outils graphiques pour chaque étape. La deuxième méthode utilise des commandes PowerShell, qui peuvent être scriptées et modifiées pour correspondre à votre configuration VPN.
Remarque : Ces instructions ont été testées sur des installations de Windows 10 exécutant les versions 1903 et 1909.
Configuration de Windows avec des outils graphiques
Tout d’abord, importez le certificat racine en suivant ces étapes :
-
Appuyez sur
WINDOWS+R
pour ouvrir la boîte de dialogue Exécuter, puis saisissezmmc.exe
pour lancer la Console de gestion Windows. -
Dans le menu Fichier, accédez à Ajouter ou supprimer un composant logiciel enfichable, sélectionnez Certificats dans la liste des composants logiciels enfichables disponibles, puis cliquez sur Ajouter.
-
Nous voulons que le VPN fonctionne avec n’importe quel utilisateur, donc sélectionnez Compte de l’ordinateur et cliquez sur Suivant.
-
Nous configurons les choses sur l’ordinateur local, donc sélectionnez Ordinateur local, puis cliquez sur Terminer.
-
Sous le nœud Racine de la console, développez l’entrée Certificats (Ordinateur local), développez Autorités de certification racine de confiance, puis sélectionnez l’entrée Certificats:
-
Dans le menu Action, sélectionnez Toutes les tâches et cliquez sur Importer pour afficher l’Assistant Importation de certificat. Cliquez sur Suivant pour passer l’introduction.
-
Sur l’écran Fichier à importer, appuyez sur le bouton Parcourir, assurez-vous de changer le type de fichier de « Certificat X.509 (.cer;.crt) » à « Tous les fichiers (.) », et sélectionnez le fichier
ca-cert.pem
que vous avez enregistré. Ensuite, cliquez sur Suivant. -
Assurez-vous que le Magasin de certificats est défini sur Autorités de certification racine de confiance, et cliquez sur Suivant.
-
Cliquez sur Terminer pour importer le certificat.
Ensuite, configurez le VPN avec ces étapes :
- Ouvrez Panneau de configuration, puis accédez au Centre Réseau et partage.
- Cliquez sur Configurer une nouvelle connexion ou un nouveau réseau, puis sélectionnez Se connecter à un lieu de travail.
- Sélectionnez Utiliser ma connexion Internet (VPN).
- Entrez les détails du serveur VPN. Entrez le nom de domaine ou l’adresse IP du serveur dans le champ Adresse Internet, puis remplissez Nom de destination avec quelque chose qui décrit votre connexion VPN. Ensuite, cliquez sur Terminé.
Configuration de Windows à l’aide de PowerShell
Pour importer le certificat CA racine en utilisant PowerShell, ouvrez d’abord une invite de commandes PowerShell avec des privilèges d’administrateur. Pour ce faire, faites un clic droit sur l’icône du menu Démarrer et sélectionnez Windows PowerShell (Admin)
. Vous pouvez également ouvrir une invite de commandes en tant qu’administrateur et taper powershell
.
Ensuite, nous importerons le certificat en utilisant la commande Import-Certificate
de PowerShell. Dans la commande suivante, le premier argument -CertStoreLocation
garantira que le certificat est importé dans le magasin Autorités de certification racines de confiance de l’ordinateur afin que tous les programmes et utilisateurs puissent vérifier le certificat du serveur VPN. L’argument -FilePath
devrait pointer vers l’emplacement où vous avez copié le certificat. Dans l’exemple suivant, le chemin est C:\Users\sammy\Documents\ca-cert.pem
. Assurez-vous de modifier la commande pour correspondre à l’emplacement que vous avez utilisé.
La commande produira quelque chose comme ce qui suit:
Output PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root
Thumbprint Subject
---------- -------
DB00813B4087E9367861E8463A60CEA0ADC5F002 CN=VPN root CA
Maintenant, pour configurer le VPN en utilisant PowerShell, exécutez la commande suivante. Remplacez le nom DNS ou l’adresse IP de votre serveur sur la ligne -ServerAddress
. Les différents indicateurs garantiront que Windows est correctement configuré avec les paramètres de sécurité appropriés qui correspondent aux options que vous avez définies dans /etc/ipsec.conf
.
Si la commande réussit, il n’y aura aucune sortie. Pour confirmer que le VPN est correctement configuré, utilisez la cmdlet Get-VPNConnection
:
Vous recevrez une sortie comme celle-ci:
OutputName : VPN Connection
ServerAddress : your_server_ip
AllUserConnection : False
Guid : {B055A1AB-175C-4028-B4A8-D34309A2B20E}
TunnelType : Ikev2
AuthenticationMethod : {Eap}
EncryptionLevel : Maximum
L2tpIPsecAuth :
UseWinlogonCredential : False
EapConfigXmlStream : #document
ConnectionStatus : Disconnected
RememberCredential : True
SplitTunneling : False
DnsSuffix :
IdleDisconnectSeconds : 0
Par défaut, Windows choisit des algorithmes plus anciens et plus lents. Exécutez la cmdlet Set-VpnConnectionIPsecConfiguration
pour mettre à niveau les paramètres de chiffrement que Windows utilisera pour l’échange de clés IKEv2, et pour chiffrer les paquets :
Remarque : Si vous souhaitez supprimer la connexion VPN et la reconfigurer avec différentes options, vous pouvez exécuter la cmdlet Remove-VpnConnection
.
Le drapeau -Force
ignorera la demande de confirmation de suppression. Vous devez être déconnecté du VPN si vous tentez de le supprimer en utilisant cette commande.
Connexion au VPN
Une fois que vous avez importé le certificat et configuré le VPN en utilisant l’une ou l’autre méthode, votre nouvelle connexion VPN sera visible dans la liste des réseaux. Sélectionnez le VPN et cliquez sur Connecter. Vous serez invité à saisir votre nom d’utilisateur et votre mot de passe. Saisissez-les, cliquez sur OK, et vous serez connecté.
Connexion depuis macOS
Suivez ces étapes pour importer le certificat :
- Double-cliquez sur le fichier de certificat. Accès aux trousseaux s’ouvrira avec une boîte de dialogue indiquant : « Accès aux trousseaux essaie de modifier le trousseau système. Entrez votre mot de passe pour autoriser cela. »
- Entrez votre mot de passe, puis cliquez sur Modifier le trousseau.
- Double-cliquez sur le certificat VPN nouvellement importé. Cela ouvre une petite fenêtre de propriétés où vous pouvez spécifier les niveaux de confiance. Définissez la sécurité IP (IPSec) sur Toujours faire confiance et vous serez invité à saisir à nouveau votre mot de passe. Ce paramètre est enregistré automatiquement après avoir saisi le mot de passe.
Maintenant que le certificat est importé et approuvé, configurez la connexion VPN avec ces étapes :
- Allez dans Préférences Système et choisissez Réseau.
- Cliquez sur le petit bouton « + » en bas à gauche de la liste des réseaux.
- Dans la fenêtre contextuelle qui apparaît, définissez Interface sur VPN, définissez le Type de VPN sur IKEv2, et donnez un nom à la connexion.
- Dans les champs Serveur et ID distant, entrez le nom de domaine ou l’adresse IP du serveur. Laissez le champ ID local vide.
- Cliquez sur Paramètres d’authentification, sélectionnez Nom d’utilisateur, et saisissez votre nom d’utilisateur et votre mot de passe configurés pour votre utilisateur VPN. Ensuite, cliquez sur OK.
Enfin, cliquez sur Connecter pour vous connecter au VPN. Vous devriez maintenant être connecté au VPN.
Connexion depuis Ubuntu
Pour vous connecter depuis une machine Ubuntu, vous pouvez configurer et gérer StrongSwan en tant que service ou utiliser une commande ponctuelle à chaque fois que vous souhaitez vous connecter. Des instructions sont fournies pour les deux.
Gestion de StrongSwan en tant que service
Pour gérer StrongSwan en tant que service, vous devrez effectuer les étapes de configuration suivantes.
Tout d’abord, mettez à jour le cache de vos paquets locaux en utilisant apt
Ensuite, installez StrongSwan et les plugins requis pour l’authentification:
Maintenant, vous aurez besoin d’une copie du certificat CA dans le répertoire /etc/ipsec.d/cacerts
afin que votre client puisse vérifier l’identité du serveur. Exécutez la commande suivante pour copier le fichier ca-cert.pem
à sa place:
Pour vous assurer que le VPN ne s’exécute que sur demande, utilisez systemctl
pour désactiver StrongSwan de l’exécution automatique:
Ensuite, configurez le nom d’utilisateur et le mot de passe que vous utiliserez pour vous authentifier auprès du serveur VPN. Modifiez /etc/ipsec.secrets
en utilisant nano ou votre éditeur préféré:
Ajoutez la ligne suivante, en modifiant les valeurs de nom d’utilisateur et de mot de passe surlignées pour correspondre à celles que vous avez configurées sur le serveur:
your_username : EAP "your_password"
Enfin, modifiez le fichier /etc/ipsec.conf
pour configurer votre client afin qu’il corresponde à la configuration du serveur:
config setup
conn ikev2-rw
right=server_domain_or_IP
# Cela doit correspondre à la valeur `leftid` de la configuration de votre serveur
rightid=server_domain_or_IP
rightsubnet=0.0.0.0/0
rightauth=pubkey
leftsourceip=%config
leftid=username
leftauth=eap-mschapv2
eap_identity=%identity
auto=start
Pour vous connecter au VPN, tapez:
Pour vous déconnecter, tapez à nouveau:
Utilisation du client charon-cmd
pour des connexions ponctuelles
Pour gérer StrongSwan en tant que service, vous devrez effectuer les étapes de configuration suivantes.
Tout d’abord, mettez à jour votre cache de paquets local en utilisant apt
.
Ensuite, installez StrongSwan et les plugins requis pour l’authentification :
Maintenant, vous aurez besoin d’une copie du certificat CA dans le répertoire /etc/ipsec.d/cacerts
afin que votre client puisse vérifier l’identité du serveur. Exécutez la commande suivante pour copier le fichier ca-cert.pem
à sa place :
À ce stade, vous pouvez vous connecter au serveur VPN avec charon-cmd
en utilisant le certificat CA du serveur, l’adresse IP du serveur VPN et le nom d’utilisateur que vous avez configuré.
Exécutez la commande suivante chaque fois que vous souhaitez vous connecter au VPN :
Lorsque vous y êtes invité, fournissez le mot de passe de l’utilisateur VPN et vous serez connecté au VPN. Pour vous déconnecter, appuyez sur CTRL+C
dans le terminal et attendez que la connexion se ferme.
Connexion depuis iOS
Pour configurer la connexion VPN sur un appareil iOS, suivez ces étapes :
- Envoyez-vous un e-mail avec le certificat racine en pièce jointe.
- Ouvrez l’e-mail sur votre appareil iOS et appuyez sur le fichier de certificat joint, puis appuyez sur Installer et entrez votre code secret. Une fois qu’il est installé, appuyez sur Terminé.
- Allez dans Paramètres, Général, VPN et appuyez sur Ajouter une configuration VPN. Cela affichera l’écran de configuration de la connexion VPN.
- Appuyez sur Type et sélectionnez IKEv2.
- Dans le champ Description, saisissez un nom court pour la connexion VPN. Cela pourrait être n’importe quoi que vous aimez.
- Dans les champs Serveur et ID distant, saisissez le nom de domaine ou l’adresse IP du serveur. Le champ ID local peut être laissé vide.
- Saisissez votre nom d’utilisateur et votre mot de passe dans la section Authentification, puis appuyez sur Terminé.
- Sélectionnez la connexion VPN que vous venez de créer, appuyez sur l’interrupteur en haut de la page et vous serez connecté.
Connexion depuis Android
Suivez ces étapes pour importer le certificat :
- Envoyez-vous un e-mail avec le certificat CA en pièce jointe. Enregistrez le certificat CA dans votre dossier de téléchargement.
- Téléchargez le client VPN StrongSwan depuis le Play Store.
- Ouvrez l’application. Appuyez sur l’icône « plus » (. . .) dans le coin supérieur droit et sélectionnez Certificats CA.
- Appuyez à nouveau sur l’icône « plus » (. . .) dans le coin supérieur droit. Sélectionnez Importer un certificat.
- Parcourez le fichier de certificat CA dans votre dossier de téléchargement et sélectionnez-le pour l’importer dans l’application.
Maintenant que le certificat est importé dans l’application StrongSwan, vous pouvez configurer la connexion VPN avec ces étapes :
- Dans l’application, appuyez sur AJOUTER UN PROFIL VPN en haut.
- Remplissez le champ Serveur avec le nom de domaine de votre serveur VPN ou son adresse IP publique.
- Assurez-vous que IKEv2 EAP (Nom d’utilisateur/Mot de passe) est sélectionné comme type de VPN.
- Remplissez les champs Nom d’utilisateur et Mot de passe avec les informations d’identification que vous avez définies sur le serveur.
- Désélectionnez Sélectionner automatiquement dans la section Certificat CA et cliquez sur Sélectionner le certificat CA.
- Appuyez sur l’onglet IMPORTÉ en haut de l’écran et choisissez le certificat CA que vous avez importé (il sera nommé « VPN root CA » si vous n’avez pas modifié le « DN » plus tôt).
- Si vous le souhaitez, remplissez le champ Nom du profil (optionnel) avec un nom plus descriptif.
Quand vous souhaitez vous connecter au VPN, cliquez sur le profil que vous venez de créer dans l’application StrongSwan.
Résolution des problèmes de connexion
Si vous ne parvenez pas à importer le certificat, assurez-vous que le fichier a l’extension .pem
et non .pem.txt
.
Si vous ne parvenez pas à vous connecter au VPN, vérifiez le nom du serveur ou l’adresse IP que vous avez utilisé. Le nom de domaine ou l’adresse IP du serveur doit correspondre à ce que vous avez configuré comme nom commun (CN) lors de la création du certificat. S’ils ne correspondent pas, la connexion VPN ne fonctionnera pas. Par exemple, si vous avez configuré un certificat avec le CN vpn.example.com
, vous devez utiliser vpn.example.com
lorsque vous saisissez les détails du serveur VPN. Vérifiez également la commande que vous avez utilisée pour générer le certificat et les valeurs que vous avez utilisées lors de la création de votre connexion VPN.
Enfin, vérifiez la configuration VPN pour vous assurer que la valeur leftid
est configurée avec le symbole @
si vous utilisez un nom de domaine :
leftid=@vpn.example.com
Si vous utilisez une adresse IP, assurez-vous que le symbole @
est omis. Assurez-vous également que lorsque vous avez généré le fichier server-cert.pem
, vous avez inclus à la fois les indicateurs --san @adresse_IP
et --san adresse_IP
.
Conclusion
Dans ce tutoriel, vous avez configuré un serveur VPN qui utilise le protocole IKEv2. Vous avez appris les directives qui contrôlent les côtés left
et right
d’une connexion à la fois sur le serveur et les clients. Vous avez également configuré un client Windows, macOS, iOS, Android ou Linux pour se connecter au VPN.
Pour ajouter ou supprimer des utilisateurs, passez à nouveau à l’étape 5. Chaque ligne dans /etc/ipsec.secrets
est destinée à un utilisateur, donc ajouter ou supprimer des utilisateurs, ou changer les mots de passe nécessite simplement de modifier le fichier.
Maintenant, vous pouvez être assuré que vos activités en ligne resteront sécurisées où que vous alliez et avec n’importe quel appareil que vous utilisez pour accéder à Internet.