Une version précédente de ce tutoriel a été rédigée par Justin Ellingwood et Namo
Un réseau privé virtuel, ou VPN, vous permet de crypter en toute sécurité le trafic qui transite par des réseaux non fiables, comme ceux d’un coffee shop, d’une conférence ou d’un aéroport.
Internet Key Exchange v2, ou IKEv2, est un protocole qui permet de créer un tunnel IPSec direct entre le serveur et le client. Dans les implémentations VPN IKEv2, IPSec assure le cryptage du trafic réseau. IKEv2 est pris en charge en natif sur certaines plateformes (OS X 10.11+, iOS 9.1+ et Windows 10) sans aucune application supplémentaire, et il gère les problèmes clients de manière assez fluide.
Dans ce tutoriel, vous allez configurer un serveur VPN IKEv2 en utilisant StrongSwan sur un serveur Ubuntu 20.04. Vous apprendrez ensuite comment vous y connecter avec les clients Windows, macOS, Ubuntu, iOS et Android.
Pour suivre ce tutoriel, vous aurez besoin de :
sudo
et un pare-feu.Tout d’abord, nous allons installer StrongSwan, un démon iPSec open source que nous allons configurer en tant que serveur VPN. Nous allons également installer le composant infrastructure de clé publique (ICP) afin que nous puissions créer une autorité de certification (AC) pour fournir des identifiants pour notre infrastructure.
Commencez par mettre à jour le cache local du paquets :
- sudo apt update
Ensuite, installez le logiciel en tapant :
- sudo apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins
Le paquet supplémentaire libcharon-extauth-plugins
est utilisé pour vous assurer que divers clients puissent s’authentifier sur votre serveur à l’aide d’un nom d’utilisateur et d’une phrase de passe partagés.
Maintenant que tout est installé, passons à la création de nos certificats.
Un serveur IKEv2 requiert un certificat pour s’identifier auprès de ses clients. Pour vous 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 serveurs.
Pour commencer, créons quelques répertoires pour stocker tous les actifs sur lesquels nous allons travailler. La structure du répertoire correspond à certains des répertoires dans /etc/ipsec.d
, où nous allons déplacer tous les éléments que nous créons :
- mkdir -p ~/pki/{cacerts,certs,private}
Ensuite, nous verrouillerons les autorisations afin que nos fichiers privés ne puissent pas être vus par d’autres utilisateurs :
- chmod 700 ~/pki
Maintenant que nous avons une structure de répertoire pour tout stocker, nous pouvons générer une clé racine. Il s’agira d’une clé RSA 4096-bit qui sera utilisée pour signer notre autorité de certification racine.
Exécutez ces commandes pour générer la clé :
- pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem
Ensuite, nous pouvons passer à la création de notre autorité de certification racine, en utilisant la clé que nous venons de générer pour signer le certificat racine :
- pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \
- --type rsa --dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pem
Le drapeau --lifetime 3650
est utilisé pour garantir que le certificat racine de l’autorité de certification sera valable pour 10 ans. Le certificat root pour une autorité ne change généralement pas, puisqu’il doit être redistribué à chaque serveur et chaque client qui en dépend, de sorte que 10 ans est une valeur de d’expiration par défaut sûre.
Vous pouvez changer la valeur du nom distinctif (DN) par autre chose si vous le souhaitez. Le nom commun (champ CN) n’est que l’indicateur, il n’a donc pas à correspondre à quoi que ce soit dans votre infrastructure.
Maintenant que nous disposons d’une autorité de certification racine opérationnelle, nous pouvons créer un certificat que le serveur VPN utilisera.
Nous allons 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 AC que nous venons de produire.
Tout d’abord, créez une clé privée pour le serveur VPN avec la commande suivante :
- pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem
Maintenant, créez et signez le certificat 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 changez le nom commun (CN) et le champ Subject Alternate Name (SAN) par le nom DNS ou à l’adresse IP de votre serveur VPN :
- pki --pub --in ~/pki/private/server-key.pem --type rsa \
- | pki --issue --lifetime 1825 \
- --cacert ~/pki/cacerts/ca-cert.pem \
- --cakey ~/pki/private/ca-key.pem \
- --dn "CN=server_domain_or_IP" --san server_domain_or_IP \
- --flag serverAuth --flag ikeIntermediate --outform pem \
- > ~/pki/certs/server-cert.pem
Remarque : 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 distinct (--dn ...
) devra être modifiée avec l’entrée supplémentaire comme la ligne extraite suivante :
--dn "CN=IP address --san @IP_address --san IP_address \
La raison de cette entrée supplémentaire --san @IP_address
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érifieront son identité.
L’option server -flag Auth
est utilisée pour indiquer que le certificat sera utilisé explicitement pour l’authentification du serveur, avant que le tunnel crypté ne soit établi. L’option --flag ikeIntermediate
est utilisée pour soutenir les clients plus anciens de macOS.
Maintenant que nous avons généré tous les fichiers TLS/SSL dont StrongSwan a besoin, nous pouvons déplacer les fichiers a leur place dans le répertoire /etc/ipsec.d
en tapant :
- sudo cp -r ~/pki/* /etc/ipsec.d/
Au cours de cette étape, nous avons créé une paire de certificats qui sera utilisée pour sécuriser les communications entre le client et le serveur. Nous avons également signé les certificats avec la clé AC, afin que le client puisse vérifier l’authenticité du serveur VPN à l’aide du certificat AC. Une fois tous ces certificats prêts, nous allons passer à la configuration du logiciel.
StrongSwan dipose d’un fichier de configuration par défaut avec quelques exemples, mais nous allons devoir faire la plupart de la configuration nous-mêmes. Sauvegardons le fichier pour référence avant de repartir de zéro :
- sudo mv /etc/ipsec.conf{,.original}
Créez et ouvrez un nouveau fichier de configuration vide à l’aide de votre éditeur de texte préféré. Ici, nous utiliserons nano
:
- sudo nano /etc/ipsec.conf
Remarque : en parcourant cette section pour configurer la partie server de votre VPN, vous rencontrerez des paramètres qui font référence aux côtés gauche (left) et droit (right) d’une connexion. Lorsque vous travaillez avec les VPN d’IPSec, le côté left par convention fait référence au système local que vous configurez, dans ce cas le serveur. Les directives du côté droit de ces paramètres renverra à des clients distants comme des téléphones et autres ordinateurs.
Lorsque vous passerez à la configuration des clients plus loin dans ce tutoriel, les fichiers de configuration du client se référeront à eux-mêmes en utilisant diverses directives left, et le serveur sera mentionné en utilisant la terminologie right.
Tout d’abord, nous allons demander à StrongSwan d’enregistrer les états des démons pour le débogage et d’autoriser les connexions en double. Ajoutez ces lignes au fichier :
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
Ensuite, nous allons créer une section de configuration pour notre VPN. Nous allons également indiquer à StrongSwan de créer des tunnels VPN IKEv2 et de charger automatiquement cette section de configuration au démarrage. Ajoutez les lignes suivantes au fichier :
. . .
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
Nous allons également configurer la détection de dead-peer pour effacer les connexions “en suspens” au cas où le client se déconnecte de manière inattendue. Ajoutez ces lignes :
. . .
conn ikev2-vpn
. . .
dpdaction=clear
dpddelay=300s
rekey=no
Ensuite, nous allons configurer les paramètres iPSec côté “left” du serveur. Chacun des paramètres suivants garantit que le serveur est configuré pour accepter les connexions des clients et pour s’identifier correctement. Vous ajouterez chacun de ces paramètres au fichier /etc/ipsec.conf
une fois que vous serez familiarisé avec 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 les communications ultérieures avec les clients. Par exemple, si vous connectez un client sur 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. Combiné à l’option suivante leftcert
, l’option leftid
garantit que le nom configuré du serveur et le nom distinctif (DN) contenus dans le certificat public correspondent.leftcert=server-cert.pem
Cette option est le chemin d’accès au certificat public pour le serveur que vous avez configuré à l’Étape 3. Sans celui-ci, le serveur ne pourra pas s’authentifier lui-même aupr1es des clients, ou terminer de négocier la configuration d’IKEv2.leftsendcert=always
La valeur always
garantit que tout client qui se connecte au serveur recevra toujours une copie du certificat public du serveur dans le cadre de la configuration initiale de la connexion.leftsubnet=0.0.0.0/0
La dernière option de côté “left” que vous ajouterez indique aux clients les sous réseaux qui sont 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 sur le VPN par défaut.Maintenant que vous êtes familiarisé avec chacune des options du côté “left”, ajoutez-les toutes dans le fichier, comme ceci :
. . .
conn ikev2-vpn
. . .
left=%any
leftid=@server_domain_or_IP
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
Remarque : Lorsque vous configurez l’ID du serveur (leftid
), n’incluez le caractère @
que si votre serveur VPN sera identifié par un nom de domaine :
. . . leftid=@vpn.example.com
. . .
Si le serveur doit être identifié par son adresse IP, ajoutez simplement l’adresse IP :
. . .
leftid=your_server_ip
. . .
Ensuite, nous pouvons configurer les paramètres iPSec du côté “right” du client. Chacun des paramètres suivants indique au serveur comment accepter les connexions des clients, comment les clients devraient s’authentifier auprès du serveur, et les plages d’adresse 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 permet au serveur d’accepter les connexions entrantes d’un client distant.rightid=%any
Cette option garantit que le serveur ne rejettera pas les connexions des clients qui fournissent une identité avant que le tunnel crypté ne soit établi.rightauth=eap-mschapv2
Cette option configure la méthode d’authentification que les clients utiliseront pour s’authentifier sur le serveur. eap
-mschapv2 est utilisé ici pour une large compatibilité pour prendre en charge des clients comme Windows, macOS et Android.rightsourceip=10.10.10.0/24
Cette option permet au serveur d’attribuer des adresses IP privées aux clients du pool d’IP 1
0.10.10.0/24 spécifié.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 paramètres publics, les résolveurs du serveur VPN ou tout autre résolveur que les clients peuvent atteindre.rightsendcert=never
Cette option indique au serveur que les clients n’ont pas à envoyer de certificat pour s’authentifier.Maintenant que vous êtes familiarisé avec les options du côté “right” nécessaires pour le VPN, ajoutez les lignes suivantes dans /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
Nous allons maintenant indiquer à StrongSwan de demander au client ses identifiants d’utilisateur lorsqu’ils se connectent :
. . .
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 cryptage (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
est une autre. Les suites de chiffrement qui sont énumérées ici sont sélectionnées pour garantir la plus large compatibilité entre les clients Windows, macOS, iOS, Android et Linux.
La configuration complète 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!
Sauvegardez et fermez le fichier une fois que vous avez vérifié que vous avez correctement ajouté chaque ligne. Si vous avez utilisé nano
, faites-le en appuyant sur CTRL+X
, Y
, puis ENTER
.
Maintenant que nous avons configuré les paramètres VPN, passons à la création d’un compte afin que nos utilisateurs puissent se connecter au serveur.
Notre serveur VPN est maintenant configuré pour accepter les connexions client, mais nous n’avons pas encore configuré d’identifiants. Nous allons devoir configurer quelques éléments dans un fichier de configuration spécial appelé ipsec.secrets
:
Ouvrons le fichier secrets pour le modifier :
- sudo nano /etc/ipsec.secrets
Tout d’abord, nous allons indiquer à StrongSwan où trouver notre clé privée :
: RSA "server-key.pem"
Ensuite, nous définirons les identifiants de l’utilisateur. Vous pouvez choisir toute combinaison de nom d’utilisateur ou de mot de passe que vous souhaitez :
your_username : EAP "your_password"
Enregistrez et fermez le fichier. Maintenant que nous avons fini de travailler avec les paramètres du VPN, nous allons redémarrer le service VPN afin que notre configuration soit appliquée :
- sudo systemctl restart strongswan-starter
Maintenant que le serveur VPN a été entièrement configuré avec les options du serveur et les identifiants de l’utilisateur, il est temps de passer à la configuration de la partie la plus importante : le pare-feu.
Une fois la configuration de StrongSwan terminée, nous devons configurer le pare-feu pour autoriser le passage et la redirection du trafic VPN au travers de celui-ci.
Si vous avez suivi le guide de configuration initiale du serveur, vous devriez disposer d’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 au travers du pare-feu afin que votre session actuelle ne se ferme pas lorsque vous activez UFW :
- sudo ufw allow OpenSSH
Ensuite, activez le pare-feu en tapant :
- sudo ufw enable
Ensuite, ajoutez une règle pour autoriser le trafic UDP aux ports IPSec standard, 500 et
4500
:
- sudo ufw allow 500,4500/udp
Ensuite, nous allons ouvrir l’un des fichiers de configuration d’UFW pour ajouter quelques politiques de bas niveau pour le routage et la transmission de paquets IPSec. Mais avant cela, nous devons trouver quelle interface réseau sur notre serveur est utilisée pour l’accès à Internet. Trouvez cette interface en recherchant le périphérique associé à la route par défaut :
- ip route show default
Votre interface publique doit suivre le mot “dev”. Par exemple, ce résultat montre l’interface nommée eth0
, qui est mise en évidence dans l’exemple qui suit :
Outputdefault via your_server_ip dev eth0 proto static
Lorsque vous disposez de votre interface de réseau public, 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 habituelles d’entrée et de sortie. Elles sont utilisées pour configurer la traduction d’adresse du réseau (NAT) afin que le serveur puisse correctement acheminer les connexions vers et depuis les clients et l’Internet.
- sudo nano /etc/ufw/before.rules
En haut du fichier (avant la ligne *filtre
), ajoutez le bloc de configuration suivant. Modifiez chaque instance de eth0
dans la configuration ci-dessus pour qu’elle corresponde 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 acheminer et manipuler le trafic entre les clients VPN et Internet. La ligne *mangle
ajuste la taille maximale du segment de paquets pour prévenir les problèmes potentiels 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 *filter
et de définition de chaîne, ajoutez un autre bloc de configuration :
. . .
*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 qu’il doit acheminer le trafic ESP (Encapsulating Security Payload) afin que les clients VPN puissent se connecter. ESP fournit une sécurité supplémentaire pour nos paquets VPN lorsqu’ils traversent les réseaux non fiables.
Lorsque vous avez terminé, sauvegardez et fermez le fichier après avoir vérifié que vous avez correctement ajouté chaque ligne. Si vous avez utilisé nano
, faites-le en appuyant sur CTRL+X
, Y
, puis ENTER
.
Avant de redémarrer, nous allons 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 est appelé /etc/ufw/sysctl.conf
. Nous allons devoir configurer quelques éléments dans le fichier, et notamment :
Le premier transfert de paquets IPv4 doit être activé afin que le trafic puisse circuler entre le VPN et les interfaces réseau publiques sur le serveur. Ensuite, nous allons désactiver la découverte de Path MTU pour prévenir les problèmes de fragmentation des paquets. Enfin, nous n’accepterons pas les redirections ICMP ni n’enverrons de redirections ICMP pour prévenir les attaques man-in-the-middle.
Ouvrez le fichier de configuration des paramètres du noyau d’UFW en utilisant nano
ou votre éditeur de texte préféré :
- sudo nano /etc/ufw/sysctl.conf
Ajoutez maintenant le paramètre net/ipv4/ip_forward=1
suivant à la fin du fichier pour activer la transmission de paquets entre les interfaces :
. . .
net/ipv4/ip_forward=1
Ensuite, bloquez 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 de Path MTU en ajoutant cette ligne à la fin du fichier :
. . .
net/ipv4/ip_no_pmtu_disc=1
Enregistrez le fichier lorsque vous avez terminé. Nous pouvons maintenant activer toutes nos modifications en désactivant et en réactivant le pare-feu, car UFW applique ces paramètres à chaque fois qu’il redémarre :
- sudo ufw disable
- sudo ufw enable
Vous serez invité à confirmer le processus. Tapez Y
pour réactiver UFW avec les nouveaux paramètres.
Maintenant que vous avez tout configuré, il est temps essayerd’. Tout d’abord, vous devrez copier le certificat AC que vous avez créé et l’installer sur votre ou vos dispositif(s) client(s) qui se connecteront au VPN. La manière la plus simple de le faire consiste à vous connecter à votre serveur et à générer le contenu du fichier de certificat :
- cat /etc/ipsec.d/cacerts/ca-cert.pem
Vous verrez une sortie semblable à celle-ci :
Output-----BEGIN CERTIFICATE-----
MIIFNDCCAxygAwIBAgIIHCsidG5mXzgwDQYJKoZIhvcNAQEMBQAwODELMAkGA1UE
. . .
H2YUdz8XNHrJHvMQKWFpi0rlEcMs+MSXPFWE3Q7UbaZJ/h8wpSldSUbQRUlphExJ
dJ4PX+MUJO/vjG1/ie6Kh25xbBAc3qNq8siiJZDwrg6vjEK7eiZ1rA==
-----END CERTIFICATE-----
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 porte bien l’extension .pem
.
Vous pouvez également utiliser le protocole SFTP pour transférer le fichier à votre ordinateur.
Une fois le fichier ca-cert.pem
téléchargé sur votre ordinateur, vous pouvez configurer la connexion au VPN.
Il existe de multiples façons d’importer le certificat racine et configurer Windows pour qu’il se connecte à un VPN. La première méthode utilise des outils graphiques pour chaque étape. La deuxième méthode utilise les commandes PowerShell, qui peuvent être scriptées et modifiées en fonction de votre configuration VPN.
Remarque : ces instructions ont été testées sur les installations Windows 10 exécutant les versions 1903 et 1909.
Tout d’abord, importez le certificat racine en suivant ces étapes :
Appuyez sur WINDOWS+R
pour faire apparaître la boîte de dialogue Run, et entrez mmc.exe
pour lancer la console de gestion de Windows.
Dans le menu File, naviguez jusqu’à Add or Remove Snap-in, sélectionnez Certificates dans la liste des instantanés disponibles, et cliquez sur Add.
Nous voulons que le VPN fonctionne avec n’importe quel utilisateur, donc sélectionnez Computer Account et cliquez sur Next.
Nous configurons les choses sur l’ordinateur local, donc sélectionnez Local Computer, puis cliquez sur Finish.
Sous le nœud Console Root, développez l’entrée Certificates (Local Computer), développez Trusted Root Certification Authorities, puis sélectionnez l’entrée Certificates:
Dans le menu Action, sélectionnez All tasks et cliquez sur Import pour afficher l’Assistant d’importation de certificat. Cliquez sur Next pour passer l’introduction.
Dans l’écran de File to Import, cliquez sur le bouton Browse, veillez à changer le type de fichier de “X.509 Certificate (.cer;.crt)” à “All Files (. )”, et sélectionnez le fichier ca-cert.pem
que vous avez enregistré. Ensuite, cliquez sur Next.
Assurez-vous que le Certificate Store est configuré à Trusted Root Certification Authorities, et cliquez sur Next.
Cliquez sur Finish pour importer le certificat.
Ensuite, configurez le VPN avec ces étapes :
Pour importer le certificat racine AC à l’aide de PowerShell, ouvrez d’abord une invite PowerShell avec des privilèges d’administrateur. Pour ce faire, cliquez avec le bouton droit sur l’icône du menu Démarrer et sélectionnez Windows PowerShell (Admin)
. Vous pouvez également ouvrir une invite de commande en tant qu’administrateur et taper powershell
.
Ensuite, nous allons importer le certificat en utilisant le cmdlet PowerShellImport-Certificate
. Dans la commande suivante, le premier argument -CertStoreLocation
garantira que le certificat est importé dans le magasin Trusted Root Certification Authorities de l’ordinateur afin que tous les programmes et utilisateurs puissent vérifier le certificat du serveur VPN. L’argument -FilePath
doit indiquer 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 qu’elle corresponde à l’emplacement que vous avez utilisé.
- Import-Certificate `
- -CertStoreLocation cert:\LocalMachine\Root\ `
- -FilePath C:\users\sammy\Documents\ca-cert.pem
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 drapeaux veilleront à ce que Windows soit correctement configuré avec les paramètres de sécurité appropriés qui correspondent aux options que vous avez définies dans /etc/ipsec.conf
.
- Add-VpnConnection -Name "VPN Connection" `
- -ServerAddress "server_domain_or_IP" `
- -TunnelType "IKEv2" `
- -AuthenticationMethod "EAP" `
- -EncryptionLevel "Maximum" `
- -RememberCredential `
Si la commande est réussie, il n’y aura pas de sortie. Pour confirmer que le VPN est correctement configuré, utilisez l’applet de commande Get-VPNConnection
:
- Get-VpnConnection -Name "VPN Connection"
Vous allez recevoir une sortie comme suit :
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 les algorithmes plus anciens et plus lents. Exécutez l’applet de commande Set-VpnConnectionIPsecConfiguration
pour mettre à niveau les paramètres de cryptage que Windows utilisera pour l’échange de clés IKEv2 et pour crypter les paquets :
- Set-VpnConnectionIPsecConfiguration -Name "VPN Connection" `
- -AuthenticationTransformConstants GCMAES256 `
- -CipherTransformConstants GCMAES256 `
- -DHGroup ECP384 `
- -IntegrityCheckMethod SHA384 `
- -PfsGroup ECP384 `
- -EncryptionMethod GCMAES256
Remarque : si vous souhaitez supprimer la connexion VPN et la reconfigurer avec différentes options, vous pouvez exécuter l’applet de commande Remove-VpnConnection
.
- Remove-VpnConnection -Name "VPN Connection" -Force
Le drapeau -Force
sautera l’invitation à confirmer la suppression. Vous devez être déconnecté du VPN si vous essayez de le supprimer à l’aide de cette commande.
Une fois le certificat importé et le VPN configuré en utilisant l’une ou l’autre méthode, votre nouvelle connexion VPN sera visible sous la liste des réseaux. Sélectionnez le VPN et cliquez sur Connect. Vous serez invité à indiquer votre nom d’utilisateur et votre mot de passe. Entrez ces éléments, cliquez sur OK, et vous serez connecté.
Suivez ces étapes pour importer le certificat :
Maintenant que le certificat est importé et fiable, configurez la connexion VPN en suivant ces étapes :
Enfin, cliquez sur Connect pour vous connecter au VPN. Vous devriez maintenant être connecté au VPN.
Pour vous connecter à partir d’une machine Ubuntu, vous pouvez configurer et gérer StrongSwan comme service ou utiliser une commande unique chaque fois que vous souhaitez vous connecter. Des instructions sont fournies pour les deux.
Pour gérer StrongSwan en tant que service, vous devrez effectuer les étapes de configuration suivantes.
Tout d’abord, mettez à jour votre cache local de paquets en utilisant apt
- sudo apt update
Ensuite, installez StrongSwan et les plugins nécessaires à l’authentification :
- sudo apt install strongswan libcharon-extra-plugins
Vous aurez maintenant besoin d’une copie du certificat AC 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
en place :
- sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts
Pour vous assurer que le VPN fonctionne uniquement sur demande, utilisez systemctl
pour désactiver l’exécution automatique de StrongSwan :
- sudo systemctl disable --now strongswan-starter
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é :
- sudo nano /etc/ipsec.conf
Ajoutez la ligne suivante, en modifiant les valeurs du nom d’utilisateur et du mot de passe mis en évidence pour qu’ils correspondent à 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
# This should match the `leftid` value on your server's configuration
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 :
- sudo systemctl start strongswan-starter
Pour vous déconnecter à nouveau, tapez :
- sudo systemctl stop strongswan-starter
charon-cmd
pour les connexions uniques.Pour gérer StrongSwan en tant que service, vous devrez effectuer les étapes de configuration suivantes.
Tout d’abord, mettez à jour votre cache local de paquets en utilisant apt
- sudo apt update
Ensuite, installez StrongSwan et les plugins nécessaires à l’authentification :
- sudo apt install strongswan libcharon-extra-plugins
Vous aurez maintenant besoin d’une copie du certificat AC 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
en place :
- sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts
À ce stade, vous pouvez vous connecter au serveur VPN avec charon-cmd
en utilisant le certificat AC 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 :
- sudo charon-cmd --cert ca-cert.pem --host vpn_domain_or_IP --identity your_username
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.
Pour configurer la connexion VPN sur un appareil iOS, procédez comme suit :
Suivez ces étapes pour importer le certificat :
Maintenant que le certificat est importé dans l’application StrongSwan, vous pouvez configurer la connexion VPN en suivant ces étapes :
Lorsque vous souhaitez vous connecter au VPN, cliquez sur le profil que vous venez de créer dans l’application StrongSwan.
Si vous n’êtes pas en mesure d’importer le certificat, vérifiez que le fichier a l’extension .pem
, et non pas .pem.txt
.
Si vous n’êtes pas en mesure de vous connecter au VPN, vérifiez le nom du serveur ou l’adresse IP que vous avez utilisée. Le nom de domaine ou l’adresse IP du serveur doit correspondre à ce que vous avez configuré en tant que nom commun (CN) en créant le certificat. S’ils ne correspondent pas, la connexion VPN ne fonctionnera pas. Par exemple, si vous configurez un certificat avec le CN de vpn.example.com, vous
devez utiliser vpn.example.com
lorsque vous entrez les détails du serveur VPN. Vérifiez scrupuleusement 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 bien 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, veillez à ce que le symbole @
soit absent. Assurez-vous également que lorsque vous avez généré le fichier server-cert.pem
, vous avez inclus à la fois les drapeaux --san @IP_address
et --san IP_address
.
Dans ce tutoriel, vous avez construit 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, tant sur le serveur et que sur les clients. Vous avez également configuré un client Windows, macOS, iOS, Android ou Linux pour vous connecter au VPN.
Pour ajouter ou supprimer des utilisateurs, passez à nouveau à l’Étape 5. Chaque ligne dans /etc/ipsec.secrets
est pour un utilisateur, donc ajouter ou supprimer les utilisateurs, ou modifier les mots de passe requiert simplement d’éditer le fichier.
Vous pouvez désormais êtres vous assuré que vos activités en ligne resteront sécurisées où que vous alliez et avec tout appareil que vous utilisez pour accéder à Internet.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!