Recherche de site Web

Comment configurer un VPN basé sur IPsec avec Strongswan sur Debian et Ubuntu


strongSwan est une implémentation VPN (Virtual Private Network) open source, multiplateforme, complète et largement utilisée, basée sur IPsec, qui fonctionne sous Linux, FreeBSD, OS X, Windows, Android et iOS. Il s'agit principalement d'un démon de chiffrement qui prend en charge les protocoles Internet Key Exchange (IKEv1 et IKEv2) pour établir des associations de sécurité (SA) entre deux pairs.

Cet article décrit comment configurer des passerelles VPN IPSec de site à site à l'aide de strongSwan sur des serveurs Ubuntu et Debian. . Par site à site, nous entendons que chaque passerelle de sécurité possède un sous-réseau derrière elle. De plus, les pairs s'authentifieront mutuellement à l'aide d'une clé pré-partagée (PSK).

Environnement de test

N'oubliez pas de remplacer les adresses IP suivantes par vos adresses IP réelles pour configurer votre environnement.

Passerelle du site 1 (tecmint-devgateway)

OS 1: Debian or Ubuntu
Public IP: 10.20.20.1
Private IP: 192.168.0.101/24
Private Subnet: 192.168.0.0/24

Passerelle du site 2 (tecmint-prodgateway)

OS 2: Debian or Ubuntu
Public IP:  10.20.20.3
Private IP: 10.0.2.15/24
Private Subnet: 10.0.2.0/24

Étape 1 : Activation du transfert de paquets du noyau

1. Tout d'abord, vous devez configurer le noyau pour activer le transfert de paquets en ajoutant les variables système appropriées dans le fichier de configuration /etc/sysctl.conf sur les deux passerelles de sécurité.

sudo vim /etc/sysctl.conf

Recherchez les lignes suivantes, décommentez-les et définissez leurs valeurs comme indiqué (lisez les commentaires dans le fichier pour plus d'informations).

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

2. Ensuite, chargez les nouveaux paramètres en exécutant la commande suivante.

sudo sysctl -p

3. Si un service de pare-feu UFW est activé, vous devez ajouter les règles suivantes au fichier de configuration /etc/ufw/before.rules juste avant les règles de filtrage dans soit des passerelles de sécurité.

Passerelle du site 1 (tecmint-devgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24  -d 192.168.0.0/24 -j MASQUERADE
COMMIT

Passerelle du site 2 (tecmint-prodgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING  -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE
COMMIT

4. Une fois les règles de pare-feu ajoutées, appliquez les nouvelles modifications en redémarrant UFW comme indiqué.

sudo ufw disable 
sudo ufw enable

Étape 2 : Installer strongSwan dans Debian et Ubuntu

5. Mettez à jour le cache de vos packages sur les deux passerelles de sécurité et installez le package strongswan à l'aide du gestionnaire de packages APT.

sudo apt update
sudo apt install strongswan 

6. Une fois l'installation terminée, le script d'installation démarrera le service strongswan et lui permettra de démarrer automatiquement au démarrage du système. Vous pouvez vérifier son état et s'il est activé à l'aide de la commande suivante.

sudo systemctl status strongswan.service
sudo systemctl is-enabled strongswan.service

Étape 3 : configuration des passerelles de sécurité

7. Ensuite, vous devez configurer les passerelles de sécurité à l'aide du fichier de configuration /etc/ipsec.conf.

Passerelle du site 1 (tecmint-devgateway)

sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
sudo nano /etc/ipsec.conf 

Copiez et collez la configuration suivante dans le fichier.

config setup
        charondebug="all"
        uniqueids=yes
conn devgateway-to-prodgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.1
        leftsubnet=192.168.0.101/24
        right=10.20.20.3
        rightsubnet=10.0.2.15/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Passerelle du site 2 (tecmint-prodgateway)

sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
sudo nano /etc/ipsec.conf 

Copiez et collez la configuration suivante dans le fichier.

config setup
        charondebug="all"
        uniqueids=yes
conn prodgateway-to-devgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.3
        leftsubnet=10.0.2.15/24
        right=10.20.20.1
        rightsubnet=192.168.0.101/24 
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Voici la signification de chaque paramètre de configuration :

  • config setup : spécifie les informations de configuration générales pour IPSec qui s'appliquent à toutes les connexions.
  • charondebug – définit la quantité de sortie de débogage Charon qui doit être enregistrée.
  • uniqueids : spécifie si un identifiant de participant particulier doit rester unique.
  • conn prodgateway-to-devgateway – définit le nom de la connexion.
  • type – définit le type de connexion.
  • auto – comment gérer la connexion lorsque IPSec est démarré ou redémarré.
  • keyexchange – définit la version du protocole IKE à utiliser.
  • authby : définit la manière dont les pairs doivent s'authentifier mutuellement.
  • gauche : définit l'adresse IP de l'interface réseau publique du participant de gauche.
  • leftsubnet : indique le sous-réseau privé derrière le participant de gauche.
  • right : spécifie l'adresse IP de l'interface de réseau public du bon participant.
  • rightsubnet : indique le sous-réseau privé derrière le participant de gauche.
  • ike – définit une liste d’algorithmes de chiffrement/authentification IKE/ISAKMP SA à utiliser. Vous pouvez ajouter une liste séparée par des virgules.
  • esp – définit une liste d’algorithmes de cryptage/authentification ESP à utiliser pour la connexion. Vous pouvez ajouter une liste séparée par des virgules.
  • agressif – indique s'il faut utiliser le mode agressif ou principal.
  • keyingtries – indique le nombre de tentatives qui doivent être effectuées pour négocier une connexion.
  • ikelifetime – indique la durée pendant laquelle le canal de saisie d'une connexion doit durer avant d'être renégocié.
  • durée de vie : définit la durée pendant laquelle une instance particulière de connexion doit durer, depuis la négociation réussie jusqu'à l'expiration.
  • dpddelay – spécifie l'intervalle de temps avec lequel les messages R_U_THERE/échanges INFORMATIONNELS sont envoyés à l'homologue.
  • dpdtimeout – spécifie l'intervalle de délai d'attente, après lequel toutes les connexions à un homologue sont supprimées en cas d'inactivité.
  • dpdaction : définit comment utiliser le protocole Dead Peer Detection (DPD) pour gérer la connexion.

Pour plus d'informations sur les paramètres de configuration ci-dessus, lisez la page de manuel ipsec.conf en exécutant la commande.

man ipsec.conf

Étape 4 : Configuration de PSK pour l'authentification peer-to-peer

8. Après avoir configuré les deux passerelles de sécurité, générez un PSK sécurisé à utiliser par les pairs à l'aide de la commande suivante.

head -c 24 /dev/urandom | base64

9. Ensuite, ajoutez le PSK dans le fichier /etc/ipsec.secrets sur les deux passerelles.

sudo vim /etc/ipsec.secrets

Copiez et collez la ligne suivante.

------- Site 1 Gateway (tecmint-devgateway) ------- 

10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

------- Site 2 Gateway (tecmint-prodgateway) -------

10.20.20.3  10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

10. Redémarrez le programme IPSec et vérifiez son état pour afficher les connexions.

sudo ipsec restart
sudo ipsec status

11. Enfin, vérifiez que vous pouvez accéder aux sous-réseaux privés à partir de l'une ou l'autre des passerelles de sécurité en exécutant une commande ping.

ping 192.168.0.101
ping 10.0.2.15

12. De plus, vous pouvez arrêter et démarrer IPSec comme indiqué.

sudo ipsec stop
sudo ipsec start

13. Pour en savoir plus sur les commandes IPSec permettant d'établir manuellement des connexions et bien plus encore, consultez la page d'aide IPSec.

ipsec --help

C'est tout! Dans cet article, nous avons décrit comment configurer un VPN IPSec de site à site à l'aide de strongSwan sur des serveurs Ubuntu et Debian, où les deux les passerelles de sécurité ont été configurées pour s'authentifier mutuellement à l'aide d'un PSK. Si vous avez des questions ou des idées à partager, contactez-nous via le formulaire de commentaires ci-dessous.