Config d’un VPN de type GRE over IPSEC Tunnel entre deux Sites à travers Internet
Notions Techniques Importantes
IPSEC :
L’IPSec est un protocole réseau qui permet de fournir plusieurs services de sécurité pour les paquets IP tels que le cryptage des données, l’authentification, l’intégrité et la confidentialité.
Cela a comme objectif la fourniture d’une communication cryptée et sécurisée entre deux nœuds dans un réseau. Il est utilisé souvent dans les réseaux privés virtuels (VPN).
IKE : Internet Key Exchange (IKEv1, IKEv2)
C’est un Protocole IPSEC utilisé pour configurer une Security Association (SA). IKE s'appuie sur ISAKMP, ainsi que des certificats pour l'authentification et les échanges de clés. De plus, une Security Policy est configurée manuellement pour chaque paire de nœuds communicante.
ISAKMP : Internet Security Association and Key Management Protocol
C’est le protocole qui livre aux deux nœuds communicants les manières et les paramètres de sécurité à configurer afin d’établir entre eux un Canal complètement sécurisé (Authentification, Cryptage, échange des clés, …).
ISAKMP utilise souvent IKE pour l'échange de clés et fonctionne sur le port UDP 500.
SA : Security association
Une SA (ISAKMP SA ou IKE SA) est une politique unidirectionnelle (dans un seul sens) qui définit la manière de chiffrement des Flux (Algorithmes et Clés de Cryptage). Donc, chaque Tunnel fonctionnant avec IPSEC aura 2 SAs, une pour chaque direction.
Il y a plusieurs étapes dans la Politique de SA : Choisir l'algorithme de chiffrement à utiliser (Exp : 3DES), choisir l’algorithme de Cryptage/Intégrité (Exp : MD5), choisir le mode d’authentification des sessions (Exp : Certificat de clé publique), Utilisation de Protocole AH (Authentication Header) ou ESP (Encapsulated Security Payload) avec leurs paramètres correspondants…
Phase 1 et Phase 2 :
Il existe deux phases de négociation pour un Tunnel IPSEC : Phase 1 et Phase 2.
Au cours de la phase 1, les deux extrémités d'un tunnel établissent un canal sécurisé et procèdent à la négociation des paramètres SA (Authentification, Intégrité, …) et échangent les clés / certificats (IKE).
Une fois la phase 1 terminée, les deux extrémités pourront échanger les données (Data) en toute sécurité, elles doivent donc décider quel trafic traversera le tunnel avec quel cryptage à appliquer. C’est la Phase 2.
Au cours de la phase 2, les deux extrémités de Tunnel négocient la manière de chiffrement et d’envoie des données en fonction des politiques de sécurité implémentées. Si les politiques de deux côtés sont d’accord, le tunnel sera opérationnel et prêt à être utilisé : Les données sont alors envoyées à travers le canal sécurisé - établi lors de la Phase 1.
AH (Authentication Header) vs ESP (Encapsulating Security Payload)
AH et ESP sont deux protocoles différents utilisés dans la suite IPSec. L'en-tête d'authentification (AH) assure l'intégrité ainsi que l’authentification des origines de données.
L’entête ESP est plus développé et assure la confidentialité, l'intégrité des données, l'authentification de l'origine des données ainsi qu’un service anti-relecture.
En ce qui concerne AH, les informations d'en-tête d'authentification sont ajoutées au paquet généré par l'expéditeur, juste entre la couche 3 Network et la couche 4 Transport.
AH permet de signer numériquement l'intégralité du contenu de chaque paquet envoyé par l’expéditeur. Les algorithmes de chiffrement et de hachage souvent utilisés sont DES, MD5, SHA-1, …Cela permet de lutter efficacement contre la fraude et la modification de données. Mais n’empêchera personne de les consulter et voir. Pour cela, IPSec utilise alors un cryptage avancé que fournit l'ESP. Ce dernier est utilisé pour chiffrer l'intégralité des données de la couche applicative supérieure. Il y parvient en ajoutant 3 composants différents : un en-tête ESP, une bande-annonce ESP et un bloc d'authentification ESP.
Il est à noter que dans un Paquet, l’ID du protocole IP de AH est 51 et de ESP est 50.
IPSec Modes : Tunnel Mode & Transport Mode
IPSec peut être configuré pour fonctionner selon deux modes différents : Tunnel et Transport.
Le mode tunnel est le mode par défaut. Avec ce mode, l'intégralité de paquet IP d'origine est protégée par IPSec : IPSec encapsule donc tout le paquet d'origine dans un nouveau paquet IP avec un nouveau Header (en-tête AH ou ESP), le crypte en totalité et l'envoie de l'autre côté du tunnel VPN.
Le mode transport assure la protection de données, et se compose d'un Header Classique TCP/UDP (Inchangé, celui du Paquet initial) + Données. Ces dernières sont encapsulées avec une en-tête AH ou ESP. Le mode de transport IPSec est généralement utilisé lorsqu'un autre protocole de tunneling (comme GRE) est configuré, cela permet d’encapsuler tout d'abord le paquet de données IP, puis IPSec est utilisé pour protéger les paquets du tunnel GRE.
GRE : Generic Routing Encapsulation
GRE est un protocole Cisco de création de Tunnel qui permet l'encapsulation (l’enveloppe) d'un Paquet IP classique dans un nouveau Paquet contentant son propre Header GRE.
Il est à noter que GRE ne fait pas de cryptage, il encapsule juste la Data dans un Paquet avec un Header GRE. Si la protection des données est requise, IPSec doit être ajouté pour assurer la confidentialité et l’Intégrité des données.
Le tunnel GRE est souvent utilisé quand les Données doivent être envoyés d'un réseau Local à un autre via Internet ou un réseau non sécurisé. Contrairement aux implémentations des Site-to-Site VPN qui n’acceptent pas les flux Multicast, GRE le fait. Du coup, il est adapté au Routage Dynamique OSPF ou autres, et il est plus utilisé !
Présentation du Lab
L'Infra dans ce schéma permet de simuler deux sites distants qui veulent communiquer à travers un nuage Internet.
Le premier Site – à gauche - contient deux Vlans : Vlan 10 (10.10.10.0/24) et Vlan 20 (10.10.20.0/24). Le Routage InterVlan s'effectue au Niveau du Routeur R1 en utilisant les sous-interfaces (Voir Confs dans la suite).
Le deuxième Site – à droite - est un réseau natif par défaut (Vlan 1) : 10.10.30.0/24.
On note que l’adressage utilisé pour le nuage Internet est Publique. Celui des LANs est Privé.
L'Objectif de ce Lab est de permettre tout d'abord aux Laptops de différents Vlans d'accéder à Internet (Nuage jaune sur le schéma entre R1, R2, R3 et R4). Cela se fait à travers le NAT à implémenter au niveau de R1 et R2.
Puis, de permettre aussi aux deux Sites Distants à droite et à gauche de communiquer entre eux à travers Internet en implémentant un Tunnel GRE avec IPSEC entre R1 et R2.
Le Lab peut être réalisé d’une manière simple sur Gns3 :
Aux Confs :)
Confs à Implémenter
Routage Inter-Vlans entre les Networks 10 et 20 :
Pour que le PC1 (Vlan 10) communique avec le PC2 (Vlan 20), il suffit d’implémenter au niveau de l’interface physique LAN du R1 (Gi1/0) les sous interfaces et les encapsulations dot1q nécessaires. La conf est la suivante :
int Gi1/0 no shut int Gi1/0.10 encapsulation dot1q 10 ip adress 10.10.10.254 255.255.255.0 int Gi1/0.20 encapsulation dot1q 20 ip adress 10.10.20.254 255.255.255.0
Conf du Routage et du NAT pour accéder à Internet :
Le Routage à implémenter au niveau R1 et R2 est tout simplement la route par défaut vers Internet.
(Le Nuage Internet est déjà préconfiguré, pour plus de simplicité dans un Lab, il peut être préparé en Statique).
Le type de NAT à utiliser par suite est le PAT (Port Address Translation) : Tout - à part les flux VPN à voir ultérieurement - sera Natté sur l’interface WAN Publique de sortie.
Les confs sont alors les suivantes :
R1 :
ip route 0.0.0.0 0.0.0.0 1.1.1.3
int Gi1/0.10
ip nat inside
int Gi1/0.20
ip nat inside
int Gi2/0
ip nat outside
access-list 120 deny ip 10.10.10.0 0.0.0.255 10.10.30.0 0.0.0.255
access-list 120 deny ip 10.10.20.0 0.0.0.255 10.10.30.0 0.0.0.255
access-list 120 permit ip 10.10.10.0 0.0.0.255 any
access-list 120 permit ip 10.10.20.0 0.0.0.255 any
ip nat inside source list 120 interface Gi2/0 overload
R2 :
ip route 0.0.0.0 0.0.0.0 3.3.3.4
int Gi1/0
ip nat inside
int Gi2/0
ip nat outside
access-list 120 deny ip 10.10.30.0 0.0.0.255 10.10.10.0 0.0.0.255
access-list 120 deny ip 10.10.30.0 0.0.0.255 10.10.20.0 0.0.0.255
access-list 120 permit ip 10.10.30.0 0.0.0.255 any
ip nat inside source list 120 interface Gi2/0 overload
Les résultats des Tests sont les suivants (Access Internet OK, Access Privé entre les Sites Distants KO) :
Conf d’un Tunnel GRE entre R1 et R2 :
Dans ce qui suit, on va détailler étape par étape les Confs GRE (avec IPSec) à Implémenter.
Tout d’abord, on commence par configurer l’interface logique du Tunnel à créer avec un plan d’adressage privé et unique qui n’existe pas. On a juste besoin de l’IP Publique WAN de sortie de Routeur Local ainsi que l’IP Publique (WAN) du Site distant. La conf est la suivante :
R1 :
interface Tunnel0 ip address 172.16.100.1 255.255.255.252 ip mtu 1400 ip tcp adjust-mss 1360 tunnel source 1.1.1.1 tunnel destination 3.3.3.2
R2 :
interface Tunnel0 ip address 172.16.100.2 255.255.255.252 ip mtu 1400 ip tcp adjust-mss 1360 tunnel source 3.3.3.2 tunnel destination 1.1.1.1
Les deux extrémités créés du Tunnel se voient, comme si on possède une ligne virtuelle logique continue :
La deuxième étape est de Router les LANs des Vlans 10 et 20 ainsi que le LAN 30 et les forcer à circuler à travers le Tunnel0, pas en utilisant la route par défaut de l’interface WAN Publique comme les flux Internet :
R1 :
ip route 10.10.30.0 255.255.255.0 172.16.100.2
R2 :
ip route 10.10.10.0 255.255.255.0 172.16.100.1 ip route 10.10.20.0 255.255.255.0 172.16.100.1
Voilà, c’est simple, et largement suffisant pour faire communiquer les deux sites distants : )
Le PC1 arrive maintenant à pinger le PC3 du site distant (tout en gardant son accès Internet).
A ce niveau-là, le routage est OK mais les flux ne sont pas cryptés et circulent en clair encapsulés dans des trames GRE. Il faut ajouter la couche Sécurité (cryptage) : L’IPSec.
Les étapes de Conf sont divisées deux : Phase 1 (ISAKMP) et Phase 2 (IPSec).
Concernant la Phase1, les paramètres choisis de ISAKMP SA sont :
3DES pour le Cryptage, MD5 comme algorithme de Hachage, Pre-shared key comme méthode d’authentification et Group 2 est le Diffie-Hellman groupe à utiliser pour l’échange de clés.
Les confs sont les suivantes :
R1 :
crypto isakmp policy 1 encryption 3des hash md5 authentication pre-share group 2 lifetime 86400 crypto isakmp key Cisco address 3.3.3.2
R2 :
crypto isakmp policy 1 encryption 3des hash md5 authentication pre-share group 2 lifetime 86400 crypto isakmp key Cisco address 1.1.1.1
On passe par suite à la Phase 2 (IPSec de la Data) :
On crée le Transform Set avec les paramètres choisis suivants : ESP-3DES (méthode de cryptage), MD5 (Algorithme de hachage) et le mode utilisé “Transport mode”.
R1 :
crypto ipsec transform-set SET esp-3des esp-md5-hmac mode transport
R2 :
crypto ipsec transform-set SET esp-3des esp-md5-hmac mode transport
Ensuite, on crée le IPSec Profile afin de collecter et appliquer les deux Phase 1 (ISAKMP) et 2 (Transform SET) ensemble :
R1 :
crypto ipsec profile GRE set security-association lifetime seconds 86400 set transform-set SET
R2 :
crypto ipsec profile GRE set security-association lifetime seconds 86400 set transform-set SET
Finalement, la Conf de « IPSec Profile » est appliquée sous l’Interface Tunnel crée ! Voilà !
R1 :
interface Tunnel 0 tunnel protection ipsec profile GRE
R2 :
interface Tunnel 0 tunnel protection ipsec profile GRE
La vérification finale de Cryptage des Flux s’effectue avec les deux commandes suivantes :
“show crypto isakmp sa” et “show crypto session detail”
Ce contenu t’a plu ? T'as trouvé utile ?
Tu peux m’offrir alors un Super Café ☕☕:)
Ton soutien me permet de continuer à créer des ressources gratuites et utiles :)
✔ Soutien volontaire
✔ Aucun abonnement
✔ Paiement 100% sécurisé
🔒 Paiement sécurisé via Stripe
Ajouter un commentaire
Commentaires