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