mercredi 23 avril 2014

Configuration d'un tunnel GRE over IPSEC

Pré-requis: Vérifiez que l'IOS Cisco que vous allez utiliser supporte la commande "crypto" en mode de configuration globale pour pouvoir faire la Partie 2 du TP (c2600 ne supporte pas des fonctionnalités de cryptage par exemple). Vous pouvez choisir c7200.

I) Configuration du tunnel GRE


1) Créer la topologie suivante sous GNS 3 :

2) Configuration de base de RouterA

RouterA(config)#int fa0/0
RouterA(config-if)#ip address 10.0.10.1 255.255.255.0
RouterA(config-if)#ip nat inside
RouterA(config-if)#no shut

RouterA(config)#int s0/0
RouterA(config-if)#ip address 201.20.20.1  255.255.255.252
RouterA(config-if)#ip nat outside
RouterA(config-if)#no shut
RouterA(config-if)#clock rate 64000
RouterA(config)#ip route 0.0.0.0 0.0.0.0 201.20.20.2

Les interfaces NAT ont été définies selon les flux entrants et sortants. De plus, une règle de routage par défaut est mise en place afin de router le trafic vers l’interface 201.20.20.2 du routeur WAN.
Maintenant, nous allons mettre en place les ACLs pour s’assurer que le trafic ne passe pas par le routage classique mais bien par le tunnel.
 On exclut donc la source du LAN du site 1 à accéder au LAN du site 2 :
RouterA(config)#access-list 100 deny ip 10.0.10.0  0.0.0.255  10.0.20.0  0.0.0.255
RouterA(config)#access-list 100 permit ip 10.0.10.0 0.0.0.255 any
RouterA(config)#ip nat inside source list 100 interface s0/0 overload

Configuration de base du routeur WAN:

WAN(config)#int s0/0
WAN (config-if)#ip address 201.20.20.2  255.255.255.252
WAN (config-if)#no shut

WAN (config)#int s0/1
WAN (config-if)#ip address 204.20.20.1  255.255.255.252
WAN (config-if)#no shut

Configuration de base de RouterB :

RouterB(config)#int fa0/0
RouterB (config-if)#ip address 10.0.20.1 255.255.255.0
RouterB (config-if)#ip nat inside
RouterB (config-if)#no shut

RouterB (config)#int s0/0
RouterB (config-if)#ip address 204.20.20.2  255.255.255.252
RouterB (config-if)#ip nat outside
RouterB (config-if)#no shut
RouterB (config-if)#clock rate 64000
RouterB (config)#ip route 0.0.0.0 0.0.0.0 204.20.20.1

RouterB (config)#access-list 100 deny ip 10.0.20.0  0.0.0.255  10.0.10.0  0.0.0.255
RouterB (config)#access-list 100 permit ip 10.0.20.0  0.0.0.255  any
RouterB(config)#ip nat inside source list 100 interface s0/0 overload

3) Configuration du Tunnel GRE

Sur RouterA:
interface  Tunnel 0
ip address 172.16.1.1 255.255.255.0
ip mtu 1400
tunnel source S0/0
tunnel destination 204.20.20.2
 
Remarque : Il est recommandé de changer le MTU des paquets IP qui traversent le tunnel à 1400 octets. Voir explication en fin du document.
 
Sur RouterB:
interface  Tunnel 0
ip address 172.16.1.2 255.255.255.0
ip mtu 1400
tunnel source S0/0
tunnel destination 201.20.20.1

4) Test de connectivité:

Sur RouterA, faire "ping 172.16.1.2". Le ping doit réussir.
Sur RouterA, faire "ping 10.0.20.1". Est ce que le ping abouti? si non pourquoi?
5) On veut que la communication entre les 2 sites passe par le tunnel, pour cela ajouter les routes suivantes:
RouterA(config)# ip route 10.0.20.0 255.255.255.0 172.16.1.2 
 
RouterB(config)# ip route 10.0.10.0 255.255.255.0 172.16.1.1 
 
Sur RouterA, faire "ping 10.0.20.1". Le ping doit réussir.
 
6) Capturer le trafic sur S0/0 de RouterA et visualiser le sous wireshark.
Sur RouterA, faire "ping 10.0.20.1 repeat 1". Décrire les échanges de paquets ICMP (voir les entêtes IP) et reproduire sur papier comment les entêtes IP sont encapsulées.

II) Cryptage du tunnel GRE par IPSEC

IPsec et GRE sont combinés parce qu'IPsec ne supporte pas les paquets multicast IP, ce qui signifie que vous ne pouvez pas exécuter un protocole de routage dynamique sur le réseau du VPN d'IPsec. Les tunnels GRE supportent le multicast ; par conséquent, un tunnel GRE peut être utilisé d'abord pour encapsuler le paquet multicast du protocole de routage dans un paquet unicast IP GRE, qui peut ensuite être crypté par IPsec.
***********
Dans cette partie, on se propose de sécuriser le trafic qui passe par le tunnel GRE.

1) Activation de ISAKMP

L’activation d’ISAKMP (Internet Security Association and Key Management Protocol) est obligatoire puisque ce protocole est utilisé par le module IKE (Internet Key Exchange) lors de la sécurisation du trafic IP via IPSec.
RouterA(config)#crypto isakmp enable
Pareil pour RouterB.

2) Stratégie VPN

Après avoir activé ISAKMP, il est nécessaire de configurer une stratégie VPN sur les routeurs RouterA et RouterB, celle-ci permet de définir, le numéro de séquence, le type d’encryptage , l’algorithme de hachage ou encore la durée de vie. Il faut que les deux paires (RouterA et RouterB) aient une stratégie avec les même paramètres.
Les commandes ci-dessous seront exécutées sur RouterA (puis sur RouterB).

crypto isakmp policy 1
  authentication pre-share
 
crypto isakmp key 6 P@ssword address 204.20.20.2
crypto ipsec security-association lifetime seconds 4096
crypto ipsec transform-set strong esp-3des esp-md5-hmac
 
Explication:
crypto isakmp key 6 P@ssword address 204.20.20.2
 
: Configure une clé partagée et l'associe à l'interface du RouteurB à savoir 204.20.20.2 donc l'interface du bout du tunnel. 
 
-          "P@ssword" sera la clé. Elle sera utilisée pour la phase d'authentification de RouterA avec RouterB.
-          6 indique que la clé qui suit doit être chiffrée.
-          0 indique que la clé qui suit est ne doit pas être chiffrée. 

crypto ipsec security-association lifetime seconds 4096
: définit la durée de vie de la clé de cryptage.
crypto ipsec transform-set strong esp-3des esp-md5-hmac

: définit des options pour le cryptage des données (les données subiront des transformations) par l'intermédiaire d'un transform-set.
-          strong est le nom donné au transform-set
-          Esp-3des est la méthode de cryptage, esp-md5-hmac est la méthode d’authentification.
 

3) Création d'une ACL étendue pour définir la nature du trafic à crypter par ipsec

 
access-list 101 permit gre host 201.20.20.1 host 204.20.20.2
 
Tout le trafic qui entre par le tunnel gre sera crypté par IPSEC.
 

4) Création de la crypto map

A présent il faut créer une crypto map, on entend par crypto map un paramètre qui va faire le lien entre les différents paramètres configurés précédemment. Nous allons :
-          donner un nom significatif à la map, par exemple S2SVPN (qui signifie Site-to-Site VPN)
-          l’activer pour le trafic correspondant à l’access-list VPN créé dans 3)
-          spécifier l’adresse de destination  
-          et spécifier le type de cryptage
 
crypto map S2SVPN 10 ipsec-isakmp  
match address 101
set peer 204.20.20.2
set transform-set strong 
 
 5) Application de la crypto map sur l’interface de sortie S0/0 de RouterA (extrémité du tunnel) 
interface S0/0
  crypto map S2SVPN
 

6) Pour renforcer la sécurité sur le routeur RouterA (facultatif), on peut créer l'ACL suivante:

RouterA(config)#access-list 103 permit gre host 204.20.20.2 host 201.20.20.1
RouterA(config)#access-list 103 permit esp host 204.20.20.2 host 201.20.20.1
RouterA(config)#access-list 103 permit udp host 204.20.20.2 eq isakmp host 201.20.20.1
RouterA(config)#access-list 103 deny ip any any 
RouterA(config)#int s0/0
RouterA(config-if)#ip access-group 103 in
 
 7) Configurer RouterB de la même manière, vous devrez changer les ACL et l'adresse IP du routeur peer (ça devrait être 201.20.20.1).

8) Tests de connectivité entre sites via le tunnel GRE over IPSec

·         Faire une capture du trafic sur l'interface S0/0 de RouterA, puis RouterA# ping 10.0.20.1 
·         Faire 
o    RouterA# show crypto ?
et tester les différentes possibilités qui s'offrent à vous.
 ****************

GRE et IPsec ensemble

Des interactions plus complexes pour la fragmentation et le PMTUD se produisent quand IPsec est utilisé pour le cryptage des tunnels GRE. IPsec et GRE sont combinés de cette manière parce qu'IPsec ne supporte pas les paquets multicast IP, ce qui signifie que vous ne pouvez pas exécuter un protocole de routage dynamique sur le réseau du VPN d'IPsec. Les tunnels GRE supportent le multicast ; par conséquent, un tunnel GRE peut être utilisé d'abord pour encapsuler le paquet multicast du protocole de routage dans un paquet unicast IP GRE, qui peut ensuite être crypté par IPsec. Dans ce cas, IPsec est souvent déployé en mode transport en plus de GRE, car les homologues IPsec et les points d'extrémité du tunnel GRE (les routeurs) sont identiques, et le mode transport permettra de gagner 20 octets de temps système IPsec.
Un cas intéressant se présente lorsqu'un paquet IP a été divisé en deux fragments et encapsulé par GRE. Dans ce cas, IPsec verra deux GRE indépendants + paquets IP. Souvent, dans les configurations par défaut, l'un de ces paquets est suffisamment volumineux pour nécessiter une fragmentation une fois le cryptage effectué. L'homologue IPsec devra rassembler ce paquet avant déchiffrement. Cette « double fragmentation » (une fois avant GRE et de nouveau après IPsec) sur le routeur expéditeur augmente la latence et diminue le débit. En outre, le réassemblage est commuté par processus ; par conséquent, on assistera à un hit de CPU sur le routeur récepteur chaque fois que cela se produit.
Cette situation peut être évitée en plaçant « ip mtu » sur l'interface de tunnel GRE assez bas pour prendre en considération le temps système de GRE et d'IPsec (par défaut l'interface de tunnel GRE « ip mtu » est définie sur le MTU de l'interface sortante réelle - octets de temps système GRE).
Le tableau suivant présente les valeurs de MTU suggérées pour chaque combinaison tunnel/mode, en supposant que l'interface physique sortante a un MTU de 1500.

Combinaison de tunnel
MTU spécifique requis
MTU recommandé
GRE + IPsec (transport mode)
1440 bytes
1400 bytes
GRE + IPsec (tunnel mode)
1420 bytes
1400 bytes