GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment configurer un VPN IKEv2 avec Strongswan et Lets Encrypt sur CentOS 8

Strongswan est une implémentation IPSec multiplateforme open source. Il s'agit d'une solution VPN basée sur IPSec qui se concentre sur des mécanismes d'authentification forts. Strongswan prend en charge les protocoles d'échange de clés IKEv1 et IKEv2, l'authentification basée sur des certificats X.509 ou des clés pré-partagées, et l'authentification utilisateur sécurisée IKEv2 EAP.

Dans ce tutoriel, je vais vous montrer comment installer un serveur VPN IPSec en utilisant Strongswan. Nous allons créer un serveur VPN IKEv2 avec l'authentification "EAP-MSCHAPv2" et utiliser des certificats Letsencrypt sur le serveur CentOS 8.

Prérequis

  • Serveur CentOS 8
  • Privilèges root

Qu'allons-nous faire ?

  • Installer Strongswan sur CentOS 8
  • Générer SSL Letsencrypt
  • Configurer Strongswan
  • Activer le pare-feu NAT
  • Activer le transfert de port
  • Test

Étape 1 - Installer Strongswan sur CentOS 8

Dans cette première étape, nous allons installer le logiciel d'implémentation strongswan IPsec et tous les packages nécessaires à partir du référentiel EPEL.

Avant d'installer le package strongswan, vous devez ajouter le référentiel EPEL au système CentOS 8.

Ajoutez le référentiel EPEL pour le serveur CentOS 8.

sudo dnf install epel-release

Après cela, installez le package strongswan à partir du référentiel EPEL à l'aide de la commande dnf ci-dessous.

sudo dnf install strongswan

Attendez que le package strongswan soit installé.

Étape 2 - Générer un certificat SSL avec Let's encrypt

Pour ce guide, nous allons créer le serveur VPN IKEv2 en utilisant un nom de domaine "vpn.hakase-labs.io" et utiliser des certificats générés à partir de letsencrypt.

Dans cette étape, nous allons installer manuellement l'outil letencrypt "certbot" et générer des certificats pour le nom de domaine du serveur "vpn.hakase-labs.io".

Téléchargez le fichier binaire certbot depuis GitHub à l'aide de la commande wget ci-dessous.

wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto

Après cela, faites-en un exécutable en modifiant l'autorisation du fichier.

chmod +x /usr/local/bin/certbot-auto

Et l'outil certbot pour générer des certificats Letsencrypt a été installé.

Avant de générer les certificats Letsencrypt, nous devons ouvrir les ports HTTP et HTTPS du serveur à l'aide de firewall-cmd.

Ajoutez les services HTTP et HTTPS à la liste des services firewalld en exécutant les commandes firewall-cmd ci-dessous.

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

Nous pouvons maintenant générer de nouveaux fichiers de certificat SSL à l'aide de l'outil Letsencrypt certbot-auto.

Remplacez l'adresse e-mail et le nom de domaine par les vôtres et exécutez la commande "certbot-auto" ci-dessous.

certbot-auto certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email [email protected] -d vpn.hakase-labs.io

Une fois terminé, vous obtiendrez le résultat ci-dessous.

Tous les certificats de votre nom de domaine sont générés dans le répertoire '/etc/letsencrypt/live/domain.com'.

Ensuite, nous devons copier les fichiers de certificat 'fullchain.pem', 'privkey.pem' et 'chain.pem' dans le répertoire '/etc/strongswan/ipsec.d/'.

cp /etc/letsencrypt/live/vpn.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/

Tous les certificats Letsencrypt pour le VPN Strongswan nommés 'vpn.hakase-labs.io' ont été générés et copiés dans le répertoire '/etc/strongswan/ipsec.d'.

tree /etc/strongswan/ipsec.d/

Étape 3 - Configurer Strongswan

Allez dans le répertoire '/etc/strongswan' et sauvegardez le fichier de configuration par défaut 'ipsec.conf'.

cd /etc/strongswan/
mv ipsec.conf ipsec.conf.asli

Créez-en un nouveau 'ipsec.conf' à l'aide de l'éditeur vim.

vim ipsec.conf

Et collez la configuration suivante.

config setup
    uniqueids=never # allow multiple connections per user
    charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"

conn %default
    fragmentation=yes
    closeaction=restart
    rekey=no
    dpdaction=clear
    keyexchange=ikev2
    compress=yes
    dpddelay=35s
    lifetime=3h
    ikelifetime=12h

    ike=aes256gcm16-prfsha512-ecp384!
    esp=aes256gcm16-ecp384!

    left=%any
    [email protected]
    leftcert=fullchain.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0

    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.15.1.0/24
    rightdns=1.1.1.1,8.8.8.8
    rightsendcert=never
    eap_identity=%identity

conn ikev2-pubkey
    auto=add

Enregistrez et quittez.

Ensuite, nous devons modifier le fichier 'ipsec.secrets' pour définir la clé privée du serveur RSA et les informations d'identification du mot de passe de l'utilisateur EAP.

Modifiez le fichier 'ipsec.secrets'.

vim ipsec.secrets

Collez la configuration ci-dessous.

: RSA "privkey.pem"
hakase : EAP "[email protected]"
tensai : EAP "[email protected]"

Enregistrez et quittez.

Et la configuration Strongswan IPSec est terminée. Ajoutez le service strongswan au démarrage du démarrage, puis démarrez le service.

systemctl enable strongswan
systemctl start strongswan

Le service strongswan est opérationnel sur le serveur CentOS 8, vérifiez-le à l'aide de la commande suivante.

systemctl status strongswan
netstat -plntu

Et vous verrez le résultat comme ci-dessous.

Étape 4 - Activer NAT dans Firewalld

Dans cette étape, nous allons activer le masquage NAT et ajouter les protocoles IPSec Authentication Header (AH) et Encapsulating Security Payload (ESP) sur Firewalld en utilisant la configuration 'rich-rule'.

Ajoutez 'AH' et 'ESP' pour les protocoles d'authentification et de chiffrement au pare-feu.

firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="esp" accept'
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="ah" accept'

Ajoutez les ports et le service UDP ipsec.

firewall-cmd --zone=public --permanent --add-port=500/udp
firewall-cmd --zone=public --permanent --add-port=4500/udp
firewall-cmd --zone=public --permanent --add-service="ipsec"

Activez maintenant le masquage du mode NAT et rechargez les règles de configuration du pare-feu.

firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload

Le mode NAT sur firewalld a été activé, vérifiez à l'aide de la commande ci-dessous.

firewall-cmd --list-all

Voici le résultat.

Étape 5 - Activer le transfert de port

Pour activer la redirection de port, nous devons modifier le fichier 'sysctl.conf'.

Modifiez le fichier '/etc/sysctl.conf' à l'aide de l'éditeur vim.

vim /etc/sysctl.conf

Collez-y la configuration suivante.

net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

Enregistrez et quittez, rechargez maintenant à l'aide de la commande sysctl ci-dessous.

sysctl -p

La redirection de port a été activée. Redémarrez maintenant le service strongswan.

systemctl restart strongswan

Étape 6 - Tester le VPN IPSec Strongswan

Dans ce cas, nous ferons le test sur le téléphone MacOS X et Android.

Sur MacOS

- Ouvrez les "Préférences système" et cliquez sur le menu "Réseau".

Cliquez sur le bouton "+" pour créer une nouvelle connexion VPN.

    • Interface :"VPN"
    • Type de VPN :'IKEv2'
    • Nom du service :'IKEv2-vpn

- Dans 'Adresse du serveur' et 'ID distant', saisissez le nom de domaine VPN 'ikev2.hakase-labs.io'.
- Cliquez sur 'Paramètres d'authentification'.
- Authentification à l'aide d'un 'Nom d'utilisateur' .
- Tapez le nom d'utilisateur 'tensai' avec le mot de passe '[email protected]'
- Cliquez sur 'OK' et cliquez sur 'Appliquer'.


Une nouvelle connexion VPN IKEv2 a été créée sur le client. Cliquez maintenant sur le bouton de connexion.


Et le client a été connecté au serveur VPN strongswan et a une adresse IP interne/privée 10.15.1.1.

Sur Android

- Téléchargez et installez l'application android native strongswan depuis Google-Play.
- Ajoutez un nouveau profil VPN
- Tapez le nom de domaine du serveur 'ikev2.hakase-labs.io' et utilisez le nom d'utilisateur et le mot de passe IKEv2 EAP authentification.

Voici le résultat lorsque nous nous connectons au serveur VPN.

Le serveur VPN basé sur IPSec IKEv2 a été créé à l'aide de Strongswan et Letsencrypt sur le serveur CentOS 8.


Cent OS
  1. Comment configurer un VPN IKEv2 avec Strongswan et Lets encrypt sur CentOS 7

  2. Comment configurer Puppet Master et Agent sur CentOS 8

  3. Comment configurer Puppet Master et Agent sur CentOS 7

  4. Comment installer et configurer DRBD sur CentOS

  5. Comment configurer le pare-feu à l'aide de FirewallD sur CentOS 8

Comment installer Askbot avec Nginx et sécuriser avec Lets Encrypt sur CentOS 8

Comment installer Shopware 6 avec NGINX et Lets Encrypt sur CentOS 8

Comment installer PrestaShop avec Apache et Lets Encrypt SSL sur CentOS 8

Comment installer et configurer Asterisk 13 (PBX) sur Centos 7

Comment installer et configurer le serveur FTP sur CentOS

Comment configurer le serveur et le client VPN Linux à l'aide d'OpenVPN