GNU/Linux >> Tutoriels Linux >  >> Panels >> OpenVPN

Comment configurer un serveur VPN IKEv2 avec StrongSwan sur Ubuntu 22.04

Introduction

Un réseau privé virtuel, ou VPN, vous permet de crypter en toute sécurité le trafic lorsqu'il transite par des réseaux non fiables, tels que ceux d'un café, d'une conférence ou d'un aéroport.

Internet Key Exchange v2, ou IKEv2, est un protocole qui permet un tunnel IPSec direct entre le serveur et le client. Dans les implémentations VPN IKEv2, IPSec assure le chiffrement du trafic réseau. IKEv2 est pris en charge de manière native sur certaines plates-formes (OS X 10.11+, iOS 9.1+ et Windows 10) sans aucune application supplémentaire nécessaire, et il gère les problèmes du client assez facilement.

Dans ce didacticiel, vous allez configurer un serveur VPN IKEv2 à l'aide de StrongSwan sur un serveur Ubuntu 22.04. Vous apprendrez ensuite à vous y connecter avec les clients Windows, macOS, Ubuntu, iOS et Android.

Prérequis

Pour terminer ce tutoriel, vous aurez besoin de :

  • Un serveur Ubuntu 22.04 configuré en suivant le guide de configuration initiale du serveur Ubuntu 22.04, y compris un sudo utilisateur non root et un pare-feu.

Étape 1 - Installation de StrongSwan

Tout d'abord, vous installerez StrongSwan, un démon IPSec open-source que vous configurerez comme votre 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 pour votre infrastructure.

Commencez par mettre à jour le cache de packages local :

  1. sudo apt update

Installez ensuite le logiciel en tapant :

  1. sudo apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins

Les libcharon-extauth-plugins supplémentaires package est utilisé pour s'assurer que divers clients peuvent s'authentifier auprès de votre serveur à l'aide d'un nom d'utilisateur et d'une phrase de passe partagés. Les libstrongswan-extra-plugins Le package est inclus afin que Strongswan prenne en charge les suites de chiffrement à courbe elliptique qui utilisent le Curve25519 suite de cryptographie.

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 strongswan-pki le paquet 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 allez travailler. 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 :

  1. mkdir -p ~/pki/{cacerts,certs,private}

Ensuite, verrouillez les autorisations afin que nos fichiers privés ne puissent pas être vus par d'autres utilisateurs :

  1. chmod 700 ~/pki

Maintenant que vous avez une structure de répertoires pour tout stocker, vous pouvez générer une clé racine. Il s'agira d'une clé RSA de 4 096 bits qui sera utilisée pour signer votre certificat d'autorité de certification racine.

Exécutez ces commandes pour générer la clé :

  1. pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem

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 :

  1. pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \
  2. --type rsa --dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pem

Le --lifetime 3650 flag est utilisé pour s'assurer 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épend, donc 10 ans est une valeur d'expiration par défaut sûre.

Vous pouvez modifier le nom distinctif (DN) à autre chose si vous le souhaitez. Le nom commun (champ CN) n'est ici qu'un indicateur, il n'a donc pas à 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.

Commencez par créer une clé privée pour le serveur VPN avec la commande suivante :

  1. pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem

Maintenant, 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 remplacez les champs Common Name (CN) et Subject Alternate Name (SAN) par le nom DNS ou l'adresse IP de votre serveur VPN :

  1. pki --pub --in ~/pki/private/server-key.pem --type rsa \
  2. | pki --issue --lifetime 1825 \
  3. --cacert ~/pki/cacerts/ca-cert.pem \
  4. --cakey ~/pki/private/ca-key.pem \
  5. --dn "CN=server_domain_or_IP" --san server_domain_or_IP \
  6. --flag serverAuth --flag ikeIntermediate --outform pem \
  7. > ~/pki/certs/server-cert.pem

Remarque :Si vous utilisez une adresse IP au lieu d'un nom DNS, vous devrez spécifier plusieurs --san entrées. La ligne dans le bloc de commande précédent où vous spécifiez le nom distinctif (--dn ... ) devra être modifié avec l'entrée supplémentaire comme la ligne extraite suivante :

--dn "CN=IP address" --san @IP_address --san IP_address \

La raison de ce --san @IP_address est que certains clients vérifieront si le certificat TLS a à la fois une entrée DNS et une entrée d'adresse IP pour un serveur lorsqu'ils vérifieront son identité.

Le --flag serverAuth L'option est utilisée pour indiquer que le certificat sera utilisé explicitement pour l'authentification du serveur, avant que le tunnel chiffré ne soit établi. Le --flag ikeIntermediate L'option 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 en place dans /etc/ipsec.d répertoire en tapant :

  1. sudo cp -r ~/pki/* /etc/ipsec.d/

Dans cette étape, vous avez créé une paire de certificats qui sera utilisée pour sécuriser les communications entre le client et le serveur. Vous avez également signé les certificats avec la clé CA, afin que le client puisse 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 SrongSwan.

Étape 4 - Configuration de StrongSwan

StrongSwan a un fichier de configuration par défaut avec quelques exemples, mais nous devrons faire la plupart de la configuration nous-mêmes. Sauvegardez le fichier pour référence avant de repartir de zéro :

  1. sudo mv /etc/ipsec.conf{,.original}

Créez et ouvrez un nouveau fichier de configuration vierge à l'aide de votre éditeur de texte préféré. Ici, vous utiliserez nano :

  1. sudo nano /etc/ipsec.conf

Remarque  :Au fur et à mesure que vous parcourez cette section pour configurer la partie serveur de votre VPN, vous rencontrerez des paramètres faisant référence à gauche et juste côtés d'une connexion. Lorsque vous travaillez avec des VPN IPSec, le gauche side par convention fait référence au système local que vous configurez, dans ce cas le serveur. Les directives de droite 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 didacticiel, les fichiers de configuration du client se référeront à eux-mêmes en utilisant divers gauche directives, et le serveur sera référencé en utilisant right terminologie annexe.

Tout d'abord, nous dirons à StrongSwan de consigner les statuts des démons pour le débogage et d'autoriser les connexions en double. Ajoutez ces lignes au fichier :

/etc/ipsec.conf
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 au démarrage. Ajoutez les lignes suivantes au fichier :

/etc/ipsec.conf
. . .
conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes

Nous configurerons également la détection des pairs morts pour effacer toutes les connexions « pendantes » au cas où le client se déconnecterait de manière inattendue. Ajoutez ces lignes :

/etc/ipsec.conf
. . .
conn ikev2-vpn
    . . .
    dpdaction=clear
    dpddelay=300s
    rekey=no

Ensuite, nous allons configurer 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 pour s'identifier correctement. Vous ajouterez chacun de ces paramètres au /etc/ipsec.conf fichier une fois que vous savez ce qu'ils sont et pourquoi ils sont utilisés :

  • left=%any Le %any garantit que le serveur utilisera l'interface réseau où il reçoit les connexions entrantes pour une communication ultérieure 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. Lorsqu'il est combiné avec l'option suivante leftcert , le leftid 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 d'accès au certificat public pour le serveur que vous avez configuré à l'étape 3. Sans elle, le serveur ne pourra pas s'authentifier auprès des clients ni terminer la négociation de la configuration IKEv2.
  • leftsendcert=always Le 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 du côté "gauche" 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 complet des adresses IPv4, ce qui signifie que le serveur demandera 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é "gauche", ajoutez-les toutes au fichier comme ceci :

/etc/ipsec.conf
. . .
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 ), n'incluez que le @ caractère si votre serveur VPN sera identifié par un nom de domaine :

/etc/ipsec.conf
    . . .    leftid=@vpn.example.com
    . . .

Si le serveur sera identifié par son adresse IP, mettez simplement l'adresse IP dans :

/etc/ipsec.conf
    . . .
    leftid=your_server_ip
    . . .

Ensuite, nous pouvons configurer les paramètres IPSec du côté "droit" 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, ainsi que les plages d'adresses IP privées et les serveurs DNS que les clients utiliseront. Ajoutez chacun de ces paramètres au /etc/ipsec.conf fichier une fois que vous savez ce qu'ils sont et pourquoi ils sont utilisés :

  • right=%any Le %any option pour le right côté 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 chiffré.
  • 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 les appareils Windows, macOS et Android.
  • rightsourceip=10.10.10.0/24 Cette option demande au serveur d'attribuer des adresses IP privées aux clients à partir du 10.10.10.0/24 spécifié pool d'adresses IP.
  • 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 que les clients peuvent atteindre.
  • rightsendcert=never Cette option indique au serveur que les clients n'ont pas besoin d'envoyer un certificat pour s'authentifier.

Maintenant que vous êtes familiarisé avec les options du côté "droit" requises pour le VPN, ajoutez les lignes suivantes à /etc/ipsec.conf :

/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 dire à StrongSwan de demander au client les informations d'identification de l'utilisateur lorsqu'il se connecte :

/etc/ipsec.conf
. . .
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 :

/etc/ipsec.conf
. . .
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 gamme de compatibilité entre les clients Windows, macOS, iOS, Android et Linux.

Le fichier de configuration complet devrait ressembler à ceci :

/etc/ipsec.conf
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 correctement ajouté chaque ligne. Si vous avez utilisé nano , faites-le en appuyant sur CTRL + X , Y , puis ENTER .

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 client, mais il n'y a pas encore d'informations d'identification configurées. Vous devrez configurer quelques éléments 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 qui seront autorisés à se connecter au VPN.

Ouvrons le fichier des secrets pour le modifier :

  1. sudo nano /etc/ipsec.secrets

Tout d'abord, indiquez à StrongSwan où trouver la clé privée et comment l'analyser.

/etc/ipsec.secrets
: RSA "server-key.pem"

Assurez-vous que la ligne commence par le : caractère et qu'il y a un espace après celui-ci pour que la ligne entière lise : RSA "server-key.pem" .

Ensuite, vous définirez les informations d'identification de l'utilisateur. Vous pouvez créer n'importe quelle combinaison de nom d'utilisateur ou de mot de passe que vous aimez :

/etc/ipsec.secrets
your_username : EAP "your_password"

Enregistrez et fermez le fichier. Maintenant que vous avez fini de travailler avec les paramètres VPN, redémarrez le service VPN pour que notre configuration soit appliquée :

  1. sudo systemctl restart strongswan-starter

Maintenant que le serveur VPN a été entièrement configuré avec les options de serveur et les informations d'identification de l'utilisateur, il est temps de passer à la configuration de la partie la plus importante :le pare-feu.

Étape 6 - Configuration du pare-feu et du transfert IP du noyau

Une fois 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éalable, vous devez avoir activé un pare-feu UFW. Si vous n'avez pas encore configuré UFW, vous devez commencer par ajouter une règle pour autoriser les connexions SSH via le pare-feu afin que votre session actuelle ne se ferme pas lorsque vous activez UFW :

  1. sudo ufw allow OpenSSH

Activez ensuite le pare-feu en tapant :

  1. sudo ufw enable

Ensuite, ajoutez une règle pour autoriser le trafic UDP vers les ports IPSec standard, 500 et 4500 :

  1. sudo ufw allow 500,4500/udp

Ensuite, vous ouvrirez l'un des fichiers de configuration d'UFW pour ajouter quelques politiques de bas niveau pour le routage et le transfert de 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. Retrouvez cette interface en recherchant l'appareil associé à la route par défaut :

  1. 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 mis 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 /etc/ufw/before.rules fichier dans votre éditeur de texte. Les règles de ce fichier sont ajoutées au pare-feu avant le reste des règles d'entrée et de sortie habituelles. Ils sont utilisés pour configurer la traduction d'adresses réseau (NAT) afin que le serveur puisse acheminer correctement les connexions vers et depuis les clients et Internet.

  1. sudo nano /etc/ufw/before.rules

Près du haut du fichier (avant le *filter line), ajoutez le bloc de configuration suivant. Modifiez chaque instance de eth0 dans la configuration ci-dessus pour correspondre au nom de l'interface que vous avez trouvé avec ip route . Le *nat créent des règles permettant au pare-feu d'acheminer et de manipuler correctement le trafic entre les clients VPN et Internet. Le *mangle ajuste la taille maximale du segment de paquet pour éviter les problèmes potentiels avec certains clients VPN :

/etc/ufw/before.rules
*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 le *filter et les lignes de définition de la chaîne, ajoutez un bloc de configuration supplémentaire :

/etc/ufw/before.rules
. . .
*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 fournit 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 correctement ajouté chaque ligne. Si vous avez utilisé nano , faites-le en appuyant sur CTRL + X , Y , puis 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.

Le premier transfert de paquets IPv4 doit être activé afin que le trafic puisse se déplacer entre le VPN et les interfaces réseau publiques sur le serveur. Ensuite, vous désactiverez la découverte Path MTU pour éviter les problèmes de fragmentation des paquets. Enfin, nous n'accepterons pas les redirections ICMP ni n'enverrons de redirections ICMP pour empêcher les attaques de type "man-in-the-middle".

Ouvrez le fichier de configuration des paramètres du noyau d'UFW à l'aide de nano ou votre éditeur de texte préféré :

  1. sudo nano /etc/ufw/sysctl.conf

Ajoutez maintenant le net/ipv4/ip_forward=1 suivant paramètre à la fin du fichier pour activer le transfert de paquets entre les interfaces :

/etc/ufw/sysctl.conf
. . .
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 :

/etc/ufw/sysctl.conf
. . .
net/ipv4/conf/all/accept_redirects=0
net/ipv4/conf/all/send_redirects=0

Enfin, désactivez la découverte Path MTU en ajoutant cette ligne à la fin du fichier :

/etc/ufw/sysctl.conf
. . .
net/ipv4/ip_no_pmtu_disc=1

Enregistrez le fichier lorsque vous avez terminé. Vous pouvez désormais activer toutes vos modifications en désactivant et en réactivant le pare-feu, car UFW applique ces paramètres à chaque redémarrage :

  1. sudo ufw disable
  2. sudo ufw enable

Vous serez invité à confirmer le processus. Tapez Y pour réactiver UFW avec les nouveaux paramètres.

Étape 7 — Test de la connexion VPN sous Windows, macOS, Ubuntu, iOS et Android

Maintenant que vous avez tout 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 ou vos appareils clients qui se connecteront au VPN. Pour ce faire, le moyen le plus simple consiste à vous connecter à votre serveur et à afficher le contenu du fichier de certificat :

  1. 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 le -----BEGIN CERTIFICATE----- et -----END CERTIFICATE----- lignes et enregistrez-le dans un fichier avec un nom reconnaissable, tel que ca-cert.pem . Assurez-vous que le fichier que vous créez a le .pem extension.

Vous pouvez également utiliser SFTP pour transférer le fichier sur votre ordinateur.

Une fois que vous avez le ca-cert.pem fichier téléchargé 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 s'adapter à votre configuration VPN.

Remarque : Ces instructions ont été testées sur des installations 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 :

  1. Appuyez sur WINDOWS+R pour afficher le Exécuter boîte de dialogue et entrez mmc.exe pour lancer la console de gestion Windows.

  2. À partir du fichier menu, accédez à Ajouter ou supprimer un composant logiciel enfichable , sélectionnez Certificats dans la liste des composants logiciels enfichables disponibles, puis cliquez sur Ajouter .

  3. Nous voulons que le VPN fonctionne avec n'importe quel utilisateur, alors sélectionnez Compte d'ordinateur et cliquez sur Suivant .

  4. Nous configurons les choses sur l'ordinateur local, alors sélectionnez Ordinateur local , puis cliquez sur Terminer .

  5. Sous la racine de la console nœud, développez le Certificats (Ordinateur local) entrée, développez Autorités de certification racines de confiance , puis sélectionnez les Certificats entrée:

  6. De l'Action menu, sélectionnez Toutes les tâches et cliquez sur Importer pour afficher l'assistant d'importation de certificat. Cliquez sur Suivant pour aller au-delà de l'introduction.

  7. Sur le Fichier à importer l'écran, appuyez sur Parcourir , assurez-vous de changer le type de fichier de "Certificat X.509 (.cer; .crt) » à « Tous les fichiers (. ) », et sélectionnez le ca-cert.pem fichier que vous avez enregistré. Cliquez ensuite sur Suivant .

  8. Assurez-vous que le magasin de certificats est défini sur Autorités de certification racines de confiance , puis cliquez sur Suivant .

  9. Cliquez sur Terminer pour importer le certificat.

Configurez ensuite le VPN en suivant ces étapes :

  1. Lancez le Panneau de configuration , puis accédez au Centre Réseau et partage .
  2. Cliquez sur Configurer une nouvelle connexion ou un nouveau réseau , puis sélectionnez Se connecter à un espace de travail .
  3. Sélectionnez Utiliser ma connexion Internet (VPN) .
  4. Entrez les détails du serveur VPN. Entrez le nom de domaine ou l'adresse IP du serveur dans l'adresse Internet champ, puis remplissez Nom de la destination avec quelque chose qui décrit votre connexion VPN. Cliquez ensuite sur Terminé .

Configuration de Windows à l'aide de PowerShell

Pour importer le certificat de l'autorité de certification racine à 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 Import-Certificate Applet de commande PowerShell. Dans la commande suivante, le premier -CertStoreLocation l'argument garantira que le certificat est importé dans les autorités de certification racines de confiance de l'ordinateur stocker afin que tous les programmes et utilisateurs puissent vérifier le certificat du serveur VPN. Le -FilePath L'argument doit 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 qu'elle corresponde à l'emplacement que vous avez utilisé.

  1. Import-Certificate `
  2. -CertStoreLocation cert:\LocalMachine\Root\ `
  3. -FilePath C:\users\sammy\Documents\ca-cert.pem

La commande affichera quelque chose comme ceci :

Output   PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root

Thumbprint                                Subject
----------                                -------
DB00813B4087E9367861E8463A60CEA0ADC5F002  CN=VPN root CA

Maintenant, pour configurer le VPN à l'aide de PowerShell, exécutez la commande suivante. Remplacez le nom DNS ou l'adresse IP de votre serveur sur -ServerAddress doubler. Les différents drapeaux 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 .

  1. Add-VpnConnection -Name "VPN Connection" `
  2. -ServerAddress "server_domain_or_IP" `
  3. -TunnelType "IKEv2" `
  4. -AuthenticationMethod "EAP" `
  5. -EncryptionLevel "Maximum" `
  6. -RememberCredential `

Si la commande réussit, il n'y aura pas de sortie. Pour confirmer que le VPN est correctement configuré, utilisez le Get-VPNConnection applet de commande :

  1. Get-VpnConnection -Name "VPN Connection"

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

By default Windows chooses older and slower algorithms. Run the Set-VpnConnectionIPsecConfiguration cmdlet to upgrade the encryption parameters that Windows will use for the IKEv2 key exchange, and to encrypt packets:

  1. Set-VpnConnectionIPsecConfiguration -Name "VPN Connection" `
  2. -AuthenticationTransformConstants GCMAES256 `
  3. -CipherTransformConstants GCMAES256 `
  4. -DHGroup ECP384 `
  5. -IntegrityCheckMethod SHA384 `
  6. -PfsGroup ECP384 `
  7. -EncryptionMethod GCMAES256

Remarque :If you would like to delete the VPN connection and reconfigure it with different options, you can run the Remove-VpnConnection cmdlet.

  1. Remove-VpnConnection -Name "VPN Connection" -Force

The -Force flag will skip prompting you to confirm the removal. You must be disconnected from the VPN if you attempt to remove it using this command.

Connecting to the VPN

Once you have the certificate imported and the VPN configured using either method, your new VPN connection will be visible under the list of networks. Select the VPN and click Connect . You’ll be prompted for your username and password. Type them in, click OK , and you’ll be connected.

Connecting from macOS

Follow these steps to import the certificate:

  1. Double-click the certificate file. Keychain Access will pop up with a dialog that says “Keychain Access is trying to modify the system keychain. Enter your password to allow this.”
  2. Enter your password, then click on Modify Keychain
  3. Double-click the newly imported VPN certificate. This brings up a small properties window where you can specify the trust levels. Set IP Security (IPSec) to Always Trust and you’ll be prompted for your password again. This setting saves automatically after entering the password.

Now that the certificate is imported and trusted, configure the VPN connection with these steps:

  1. Go to System Preferences and choose Network .
  2. Click on the small “plus” button on the lower-left of the list of networks.
  3. In the popup that appears, set Interface to VPN , set the VPN Type to IKEv2 , and give the connection a name.
  4. In the Server and Remote ID field, enter the server’s domain name or IP address. Leave the Local ID blank.
  5. Click on Authentication Settings , select Username , and enter your username and password you configured for your VPN user. Cliquez ensuite sur OK .

Finally, click on Connect to connect to the VPN. You should now be connected to the VPN.

Connecting from Ubuntu

To connect from an Ubuntu machine, you can set up and manage StrongSwan as a service or use a one-off command every time you wish to connect. Instructions are provided for both.

Managing StrongSwan as a Service

To manage StrongSwan as a service, you will need to perform the following configuration steps.

First, update your local package cache using apt

  1. sudo apt update

Next, install StrongSwan and the required plugins for authentication:

  1. sudo apt install strongswan libcharon-extra-plugins

Now you’ll need a copy of the CA certificate in the /etc/ipsec.d/cacerts directory so that your client can verify the server’s identity. Run the following command to copy the ca-cert.pem file into place:

  1. sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts

To ensure the VPN only runs on demand, use systemctl to disable StrongSwan from running automatically:

  1. sudo systemctl disable --now strongswan-starter

Next configure the username and password that you will use to authenticate to the VPN server. Edit /etc/ipsec.secrets using nano or your preferred editor:

  1. sudo nano /etc/ipsec.secrets

Add the following line, editing the highlighted username and password values to match the ones that you configured on the server:

/etc/ipsec.secrets
your_username : EAP "your_password"

Finally, edit the /etc/ipsec.conf file to configure your client to match the server’s configuration:

/etc/ipsec.conf
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

To connect to the VPN, type:

  1. sudo systemctl start strongswan-starter

To disconnect again, type:

  1. sudo systemctl stop strongswan-starter

Using the charon-cmd Client for One-Off Connections

To manage StrongSwan as a service, you will need to perform the following configuration steps.

First, update your local package cache using apt

  1. sudo apt update

Next, install StrongSwan and the required plugins for authentication:

  1. sudo apt install strongswan libcharon-extra-plugins

Now you’ll need a copy of the CA certificate in the /etc/ipsec.d/cacerts directory so that your client can verify the server’s identity. Run the following command to copy the ca-cert.pem file into place:

  1. sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts

At this point you can connect to the VPN server with charon-cmd using the server’s CA certificate, the VPN server’s IP address, and the username you configured.

Run the following command whenever you want to connect to the VPN:

  1. sudo charon-cmd --cert ca-cert.pem --host vpn_domain_or_IP --identity your_username

When prompted, provide the VPN user’s password and you will be connected to the VPN. To disconnect, press CTRL+C in the terminal and wait for the connection to close.

Connecting from iOS

To configure the VPN connection on an iOS device, follow these steps:

  1. Send yourself an email with the root certificate attached.
  2. Open the email on your iOS device and tap on the attached certificate file, then tap Install and enter your passcode. Once it installs, tap Done .
  3. Go to Settings , General , VPN and tap Add VPN Configuration . This will bring up the VPN connection configuration screen.
  4. Tap on Type and select IKEv2 .
  5. In the Description field, enter a short name for the VPN connection. This could be anything you like.
  6. In the Server and Remote ID field, enter the server’s domain name or IP address. The Local ID field can be left blank.
  7. Enter your username and password in the Authentication section, then tap Done .
  8. Select the VPN connection that you just created, tap the switch on the top of the page, and you’ll be connected.

Connecting from Android

Follow these steps to import the certificate:

  1. Send yourself an email with the CA certificate attached. Save the CA certificate to your downloads folder.
  2. Download the StrongSwan VPN client from the Play Store.
  3. Open the app. Tap the “more” icon (. . . ) in the upper-right corner and select CA certificates .
  4. Tap the “more” icon (. . . ) in the upper-right corner again. Select Import certificate .
  5. Browse to the CA certificate file in your downloads folder and select it to import it into the app.

Now that the certificate is imported into the StrongSwan app, you can configure the VPN connection with these steps:

  1. In the app, tap ADD VPN PROFILE at the top.
  2. Fill out the Server with your VPN server’s domain name or public IP address.
  3. Make sure IKEv2 EAP (Username/Password) is selected as the VPN Type.
  4. Fill out the Username and Password with the credentials you defined on the server.
  5. Deselect Select automatically in the CA certificate section and click Select CA certificate .
  6. Tap the IMPORTED tab at the top of the screen and choose the CA you imported (it will be named “VPN root CA” if you didn’t change the “DN” earlier).
  7. If you’d like, fill out Profile name (optional) with a more descriptive name.

When you wish to connect to the VPN, click on the profile you just created in the StrongSwan application.

Troubleshooting Connections

If you are unable to import the certificate, ensure the file has the .pem extension, and not .pem.txt .

If you’re unable to connect to the VPN, check the server name or IP address you used. The server’s domain name or IP address must match what you’ve configured as the common name (CN) while creating the certificate. If they don’t match, the VPN connection won’t work. For example, if you set up a certificate with the CN of vpn.example.com , you must use vpn.example.com when you enter the VPN server details. Double-check the command you used to generate the certificate, and the values you used when creating your VPN connection.

Finally, double-check the VPN configuration to ensure the leftid value is configured with the @ symbol if you’re using a domain name:

/etc/ipsec.conf
    leftid=@vpn.example.com

If you’re using an IP address, ensure that the @ symbol is omitted. Also make sure that when you generated the server-cert.pem file that you included both --san @IP_address and --san IP_address flags.

Conclusion

In this tutorial, you’ve built a VPN server that uses the IKEv2 protocol. You learned about the directives that control the left and right sides of a connection on both server and clients. You also configured a Windows, macOS, iOS, Android, or Linux client to connect to the VPN.

To add or remove users, skip to Step 5 again. Each line in /etc/ipsec.secrets is for one user, so adding or removing users, or changing passwords just requires editing the file.

Now you can be assured that your online activities will remain secure wherever you go and with any device that you use to access the internet.


OpenVPN
  1. Comment configurer un serveur OpenVPN sur Ubuntu 18.04

  2. Comment configurer WireGuard VPN sur Ubuntu (un guide étape par étape)

  3. Comment configurer et configurer une autorité de certification sur Ubuntu 22.04

  4. Comment configurer WireGuard sur Ubuntu 22.04

  5. Comment configurer un serveur TeamSpeak sur Ubuntu 16.04

Comment configurer un Vpn Pptp sur le propre serveur Ubuntu ?

Comment configurer la synchronisation de l'heure avec NTP sur Ubuntu 18.04

Comment configurer un serveur Seafile avec Nginx sur Ubuntu 18.04

Comment configurer un serveur FTP avec ProFTPD dans Ubuntu 18.04

Comment configurer un serveur de messagerie avec Modoboa sur Ubuntu 20.04

Comment installer et configurer un VPN avec OpenVPN sur Ubuntu 18.04