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

Comment configurer un VPN IKEv2 avec Strongswan et Lets encrypt sur CentOS 7

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 à l'aide de Strongswan. Nous allons créer un serveur VPN IKEv2 avec l'authentification 'EAP-MSCHAPv2' et utiliser des certificats Letsencrypt sur le serveur CentOS 7.

Prérequis

  • Serveur CentOS 7
  • Privilèges root

Qu'allons-nous faire ?

  1. Installer Strongswan sur CentOS 7
  2. Générer SSL Letsencrypt
  3. Configurer Strongswan
  4. Activer le pare-feu NAT
  5. Activer le transfert de port
  6. Test

Étape 1 - Installer Strongswan sur CentOS 7

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.

Installez le référentiel EPEL et installez le package strongswan à l'aide des commandes yum ci-dessous.

yum -y install epel-release
yum -y install strongswan

Attendez que le package strongswan soit installé.

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

Nous allons créer le serveur VPN IKEv2 en utilisant un nom de domaine "ikev2.hakase-labs.io" et utiliser des certificats générés à partir de letsencrypt.

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

Installez l'outil 'certbot' letencrypt.

yum -y install certbot

Après l'installation du certbot, 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 certbot letencrypt.

Exécutez la commande certbot ci-dessous.

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

Les certificats Letsencrypt pour le nom de domaine vpn 'ikev2.hakase-labs.io' ont été générés et se trouvent dans le répertoire '/etc/letsencrypt/live'.

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/ikev2.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/

Tous les certificats Letsencrypt pour le VPN Strongswan nommés "ikev2.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.

#global configuration IPsec
#chron logger
config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

#define new ipsec connection
conn hakase-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    ike=aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,aes256-sha1-modp1024,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024!
    esp=aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1,aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128gcm16,aes128gcm16-ecp256,aes256-sha1,aes256-sha256,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16,aes256gcm16-ecp384,3des-sha1!
    fragmentation=yes
    forceencaps=yes
    dpdaction=clear
    dpddelay=300s
    rekey=no
    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

Enregistrez et quittez.

Détails de la configuration :

  • Créez une nouvelle connexion de tunnel VPN IPSec nommée "hakase-vpn".
  • Spécifiez les suites de chiffrement IKEv2 et ESP pour l'authentification.
  • La configuration de serveur "gauche" utilisant un nom de domaine "ikev2.hakase-labs.io" et utilisant le certificat letencrypt "fullchain.pem" situé dans le répertoire "/etc/strongswan/ipsec.d/certs".
  • La "bonne" configuration des clients/à distance avec la méthode d'authentification EAP "eap-mschapv2", attribue la plage d'adresses IP virtuelles "10.15.1.0/24" à tous les clients connectés et utilise le DNS public Cloudflare et google.

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.

Détails de la configuration :

  • Spécifiez la clé privée du serveur RSA à l'aide du certificat letencrypt "privkey.pem" situé dans le répertoire "/etc/strongswan/ipsec.d/private".
  • Définissez les informations d'identification de l'utilisateur EAP au format 'user :EAP "password"'.

La configuration Strongswan IPSec est terminée. Démarrez le service strongswan et activez-le pour qu'il se lance à chaque démarrage du système.

systemctl start strongswan
systemctl enable strongswan

É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 7.


Cent OS
  1. Comment configurer un VPN IKEv2 avec Strongswan et Lets Encrypt sur CentOS 8

  2. Comment installer et configurer DRBD sur CentOS

  3. Comment configurer et installer Oracle Weblogic dans CentOS 7

  4. Comment installer Shopware avec NGINX et Lets Encrypt sur CentOS 7

  5. Comment installer WonderCMS avec Nginx et Lets Encrypt SSL sur CentOS 7

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 gérer des packages sur CentOS à l'aide de RPM

Comment installer Webmin sur CentOS 8 et Rocky Linux 8

Comment installer un VPN PPTP sur CentOS 6