• Français
Accueil arrow Articles arrow routeurs arrow GRE over IPSEC
11-03-2010
 
 
Le Laboratoire
forum
Menu principal
Accueil
News
Tips
Articles
Liens
Letterman Subscribe




GRE over IPSEC
Écrit par COISNE Matthieu   
27-09-2009

De plus en plus d’entreprises sont obligées de mettre en place des solutions de tunneling pour permettre l’échange de données via internet. C’est le cas des entreprises qui possèdent plusieurs bâtiments géographiquement éloignés. Typiquement, un tunnel fournis un chemin dit sécurisé, à travers un réseau non sécurisé, entre 2 routeurs.

  gre_over_ipsec.jpg

 

Nous allons donc étudier comment il est possible de créer un tunnel GRE sur lequel nous allons rajouter la sécurité du protocole IPSec afin de crypter les données qui transitent à travers le tunnel.

1 – Le Tunneling GRE

Commençons par définir le tunneling GRE :

Generic Routing Encapsulation (GRE ou Encapsulation Générique de Routage) est un protocole de mise en tunnel qui permet d'encapsuler n'importe quel paquet de la couche réseau dans n'importe quel paquet de la couche réseau (ex : IP dans IP). Il utilise le protocole IP 47. Le paquet d'origine est le payload du paquet final. Par exemple, les serveurs de tunnel qui cryptent les données peuvent utiliser GRE à travers Internet pour sécuriser les Réseaux privés virtuels.

GRE a été développé par Cisco (RFC 1701) et peut encapsuler une large gamme de types de paquets de différents protocoles dans des paquets IP. Les tunnels GRE sont conçus pour ne pas avoir besoin de maintenir un état, ce qui signifie que chaque terminaison de tunnel ne conserve aucune information d'état ou de disponibilité de la terminaison distante.

Sa configuration reste assez simple et rapide à mettre place.

L’inconvénient majeur du tunneling GRE est que toutes les données transitant via ce tunnel ne sont pas cryptées.

Pour résoudre ce problème de sécurité, nous passerons par la technologie IPSec dans la 2eme partie de cet article.

 

Exemple de configuration pour un tunnel GRE :

//configuration de l’interface du tunnel

R1(config)#interface tunnel 0

//spécification de l’adresse IP et son masque

R1(config-if)#ip address 3.3.3.1 255.255.255.252

//On précise l’interface source et l’adresse ip de destination

R1(config-if)#tunnel source fa0/0

R1(config-if)#tunnel destination 80.0.0.2

 

//la même chose sur le 2eme routeur

R2(config)#interface tunnel 0

R2(config-if)#ip address 3.3.3.2 255.255.255.252

R2(config-if)#tunnel source fa0/0

R2(config-if)#tunnel destination 80.0.0.1



Votre tunnel GRE est maintenant opérationnel !

GRE vous permet aussi, si vous le souhaitez, de rajouter un protocole de routage comme le protocole OSPF par exemple.

 

Si l’on analyse les trames de notre réseau, nous nous apercevrons que ce qui est encapsulé grâce au tunneling GRE n’est pas crypté. Etant donnée que notre exemple se base sur des échanges de données dans une même entreprise, ces données sont donc sensibles et doivent être protégées.

 

Passons donc à la mise en place d’IPSec.


2 – Le Protocole IPSec

 

Tout d’abord, qu’est ce qu’IPSec ?

 

IPSec (Internet Protocol Security) est un ensemble de protocoles (couche 3 modèle OSI) utilisant des algorithmes permettant le transport de données sécurisées sur un réseau IP.

Son objectif est d'authentifier et de chiffrer les données : le flux ne pourra être compréhensible que par le destinataire final (chiffrement) et la modification des données par des intermédiaires ne pourra être possible (intégrité).

 

Lors de l'établissement d'une connexion IPsec, plusieurs opérations sont effectuées :

- Échange des clés

·         un canal d'échange de clés, sur une connexion UDP depuis et vers le port 500 (ISAKMP pour Internet Security Association and Key Management Protocol), défini dans la RFC 2408.

Le protocole IKE est en charge de négocier la connexion. Ce protocole permet deux types d'authentifications, PSK (Pre-Shared Key ou secret partagé) pour la génération de clefs de sessions ou à l'aide de certificats/signatures RSA.

- Transfert des données

·         un ou plusieurs canaux de données par lesquels le trafic du réseau privé est véhiculé, deux protocoles sont possibles :

o    le protocole n°50, ESP (Encapsulating Security Payload), défini dans la RFC 2406 qui fournit l'intégrité et la confidentialité

o    le protocole n°51, AH, (Authentication Header), défini dans la RFC 2402 et qui ne fournit que l'intégrité.

 

Maintenant que nous en savons plus sur l’IPSec, passons à la configuration !

 

 

Exemple de configuration d’IPSec  :

 

Pour la première étape de la configuration, nous utiliserons un mot de passé crypté (avec DES) et partagé entre les 2 routeurs (option pre-share).

 

// on active isakmp (Internet Security Association and Key Management Protocol).

R1(config)#crypto isakmp enable

// on precise le numero de la policy (à retenir car on le réutilisera après)

R1(config)#crypto isakmp policy 1337

// on active le cryptage des

R1(config-isakmp)#encryption des

// on indique que l’authentification est en « pre-share »

R1(config-isakmp)#authentication pre-share

/ /le groupe Diffie-Hellman qui nous interesse est le 2

R1(config-isakmp)#group 2

R1(config-isakmp)#exit

//on définit le mot de passe partagé entre les 2 routeurs  et on précise l’IP du routeur distant

R1(config)#crypto isakmp key 0 mot_de_passe address 80.0.0.2

 

 

Deuxième étape, on configure le Transform-set qui sera appliqué plus tard à la map avec son cryptage esp-3des une fois que la transaction est permise. Nous créerons une ACL pour permettre tout le trafic GRE entre les 2 routeurs.

 

//création du Transform-set.

R1(config)#crypto ipsec transform-set LABOCISCOSET esp-3des

// création de l’ACL

R1(config)#access-list 100 permit gre host 80.0.0.1 host 80.0.0.2

 

 

Enfin, il faut créer une map. Pour se faire, il faudra le numéro de l’ACL précédemment créée, le nom du Transform-set qu’on a définit plus tôt ainsi que l’adresse IP du routeur distant. Il faudra ensuite appliquer la map sur l’interface connecté a internet et non pas l’interface du tunnel.

 

//création de la map avec le numero de la policy

R1(config)#crypto map LABOCISCOMAP 1337 ipsec-isakmp

% NOTE: This new crypto map will remain disabled until a peer

     and a valid access list have been configured.

//on associe avec l’ACL

R1(config-crypto-map)#match address 100

//on assoscie avec le Transform-set

R1(config-crypto-map)#set transform-set LABOCISCOSET

//on precise l’adresse IP de l’autre routeur

R1(config-crypto-map)#set peer 80.0.0.2

R1(config-crypto-map)#exit

//on se place sur la config de l’interface qui nous intéresse

R1(config)#interface fa0/0

//on lie la map à cette interface

R1(config-if)#crypto map LABOCISCOMAP

*Mar  1 00:10:23.093: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

 

 

Maintenant que le routeur R1 est configuré, il faut faire de même avec le routeur R2 pour que tout soit fonctionnel.

 

 

Une fois que les 2 routeurs sont convenablement configurés, une simple analyse des trames du réseau vous permettra de constater que les données transitant dans le tunnel sont cryptées.

Au final, pour notre entreprise prise en exemple dans cet article, les données seront donc bien protégées.
Dernière mise à jour : ( 27-09-2009 )
 
Suivant >
CLTE - Moteur de tests en ligne
Le CLTE est le moteur de tests en ligne du Laboratoire SUPINFO des Technologies Cisco.
Connectez-vous ! Création d'un compte gratuit
 
Top! Top!