Présentation, configuration et
mise en exploitation
10/11/2007 TOPNET
1- Présentation générale
Les réseaux privés virtuels, plus connus avec l’abréviation VPN (Virtual Private Networks)
sont l’ensemble d’interconnexion de réseaux locaux privés via un réseau public (typiquement
Internet) en exploitant des connexions sécurisées entre les différents sites distants. Le concept de
base sur lequel repose les VPN est le protocole de TUNNELING ou encapsulation de paquets qui
sont préalablement chiffrés par des algorithmes de cryptographie, dans un nouveau paquet afin de
les transmettre via un réseau public.
Ainsi, lorsqu'un système extérieur à un réseau privé (client nomade, agence ou travailleur à domicile)
souhaite se connecter au réseau de son entreprise :
- les paquets (qui contiennent les données) sont chiffrés par le client VPN (selon l'algorithme
décidé par les deux interlocuteurs lors de l'établissement du tunnel VPN) puis ils seront
transmis par le biais du réseau transporteur (Internet en général), enfin ils seront reçus par le
serveur VPN qui les décrypte .
- Le concept de VPN fait abstraction de la technologie exploité par le réseau de transmission
de données on peut donc utiliser les VPN avec une liaison FR, MPLS, X.25 ADSL etc..
Le VPN Client-Serveur est utilisé pour permettre à des utilisateurs itinérants d'accéder au réseau
privé. L'utilisateur se sert d'une connexion Internet pour établir la connexion VPN. Il existe deux
cas:
1. L'utilisateur demande au fournisseur d'accès de lui établir une connexion cryptée vers le
serveur distant : il communique avec le NAS (Network Access Server) du fournisseur
d'accès et c'est le NAS qui établit la connexion cryptée.
2. L'utilisateur possède son propre logiciel client pour le VPN dans ce cas il établit
directement la communication de manière cryptée vers le réseau de l'entreprise.
Le VPN LAN à LAN est utilisé pour relier au moins deux intranets entre eux. Ce type de
réseau est particulièrement utile au sein d'une entreprise possédant plusieurs sites distants. Le
plus important dans ce type de réseau est de garantir la sécurité et l'intégrité des données.
Certaines données très sensibles peuvent être amenées à transiter sur le Vpn (base de données
clients, informations financières...). Des techniques de cryptographie sont mises en oeuvre pour
vérifier que les données n'ont pas été altérées.
La plupart des algorithmes utilisés font appel à des signatures numériques qui sont ajoutées
aux paquets. La confidentialité des données est, elle aussi, basée sur des algorithmes de
cryptographie.
• SSL/TLS offre une très bonne solution de Tunneling. L'avantage de cette solution est d'utiliser
un simple navigateur comme client VPN.
4- Le protocole IPSec
IPSec, définit par la Rfc 2401, est un protocole qui vise à sécuriser l'échange de données au
niveau de la couche réseau. IPSec se base sur deux mécanismes :
1. AH, pour Authentification Header vise à assurer l'intégrité et l'authenticité des
datagrammes IP. Il ne fournit par contre aucune confidentialité : les données fournies
et transmises par ce "protocole" ne sont pas cryptés.
2. ESP, pour Encapsulating Security Payload peut aussi permettre l'authentification des
données mais est principalement utilisé pour le cryptage des informations.
Bien qu'indépendants ces deux mécanismes sont toujours utilisés conjointement. Enfin, le protocole
Ike permet de gérer les échanges ou les associations entre protocoles de sécurité. Avant de décrire
ces différents protocoles, nous allons exposer les différents éléments utilisés dans IPSec.
Main Mode et Aggressive Mode sont utilisés durant la phase 1, Quick Mode est un échange de
phase 2. New Group Mode est un peu à part : Ce n'est ni un échange de phase 1, ni un échange
de phase 2, mais il ne peut avoir lieu qu'une fois qu'une SA Isakmp est établie ; il sert à se mettre
d'accord sur un nouveau groupe pour de futurs échanges Diffie-Hellman.
Il faut noter dans ce contexte, qu’on peut généraliser cette topologie qui ne présente que 2 vis-à-vis
(à savoir le réseau LAN du siège et celui de l’Agence) à une architecture plus généralisé qui
comporte n agences, donc n tunnel VPN.
L’acheminement des paquets entre les différentes agences ce fait par simple paramétrage de routes
dans le routeur du siège.
(config)#crypto isakmp identity address // Cette commande indique que l’hôte distant sera
identifié par son adresse.
(config)#crypto isakmp key topnet address 196.203.53.111 // Cette commande indique que la clé
partagé est « topnet » et elle sera utilisé avec le client distant 196.203.53.111. Si on veux utiliser
cette clé avec n’importe quel client distant on remplace cette @IP par 0.0.0.0
Remarque : Si on souhaite interconnecter ‘’n’’ sites on doit répéter ‘’n’’ fois la commande présentée
ci-dessus avec une clé différente (ou la même clé) et en précisant à chaque fois l’adresse IP public
du routeur distant.
Exemple :
Si on dispose d’un deuxième site distant possédant l’adresse IP publique 196.203.44.109 on ajoute la
commande crypto isakmp key topnet address 196.203.44.109.
Etape 3 : Configuration du tunnel IPSec (cela implique la création de l’access-list et d’une transform-
set).
a) Les access-list de contrôle de trafic
(config)# access-list 110 permit ip 192.168.1.0 0.0.0.255 192.168.231.0 0.0.0.255
(config)# access-list 110 permit ip 192.168.231.0 0.0.0.255 192.168.1.0 0.0.0.255
La première access-list donne le droit aux utilisateurs du réseau LAN distant d’accéder au réseau
local du siège.
La deuxième access-list donne le droit aux utilisateurs du réseau LAN du siège d’accéder au réseau
local de l’agence.
Remarque : Si on souhaite interconnecter ‘’n’’ sites on doit répéter ‘’n’’ fois les deux « access-list »
présentées ci-dessus pour permettre l’acheminement du trafic dans le sens entrant et le sens sortant
entre les deux réseaux reliés par le tunnel VPN.
Exemple : Si on dispose d’un deuxième site qu’on doit connecter par un tunnel VPN on ajoute les
« access-list » suivantes :
(config)# access-list 110 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
(config)# access-list 110 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
Ces deux access-list seront utilisées pour désactiver le natting entre les deux réseaux LAN et le
permettre ailleurs (vers le réseau Internet) . On applique l’access-list 101 avec le natting comme suit :
Rq : Si on souhaite interconnecter ‘’n’’ sites on doit répéter ‘’n’’ fois l’access-list qui désactive le NAT
(la première access-list : celle du deny) présentées ci-dessus pour désactiver le NAT entre le réseau
central et le nouveau site réseau distant.
Exemple : Si on dispose d’un deuxième site qu’on doit connecter par un tunnel VPN on ajoute
l’access-list suivante :
(config)# access-list 101 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
Etape 4 : La Transform-Set
La transform-set permet de définir quels algorithmes de sécurité et quel mode (mode tunnel ou
transport) le routeur doit utiliser pour initier le tunnel. Si aucun mode n’est spécifié‚ c’est le mode
tunnel qui est utilisé par défaut.
Au sein d’une transform-set ‚ il est possible d’utiliser plusieurs algorithmes que le routeur testera à
tour de rôle.
Remarques :
• ts1 est le nom de la Transform-Set
• AH (Authentification Header) : procédé qui garantit l'authenticité des trames IP par ajout
vérifier l'intégrité des données contenues dans le paquet.
Les crypto map permettent d’associer un certain type de trafic à une certaine destination ainsi qu’à
une ou des règles de sécurité IPSEC.
(config)# crypto map map_vpn 10 ipsec-isakmp //le nom de la crypto map est map_vpn
(cfg-ctypto-map)#match address 110 // l’access-list 110 sera appliqué au tunnel VPN.
(cfg-ctypto-map)#set peer 196.203.53.111 // spécifie l’adresse ip du routeur distant.
(cfg-ctypto-map)#set transform-set ts1 // on applique la transform-set ts1 sur cette crypto map.
(cfg-ctypto-map)#exit
Remarques :
Exemple :
Si on dispose d’un deuxième site distant possédant l’adresse IP publique 196.203.44.109 on ajoute la
commande set peer 196.203.44.109.
Finalement on choisit l’interface à travers laquelle on veut établir un tunnel VPN. Dans notre cas on
veut établir une connexion VPN via une connexion ADSL, donc on choisira L’interface Dialer0.
N.B : il ne faut pas oublier de configurer les routes statiques comme suit :
(config)# ip route 0.0.0.0 0.0.0.0 Dialer0 permanent
Remarque :
Si on dispose de plus qu’un site distant il est recommandé de définir les routes de la manière
suivantes :
‘’ Ip route réseau_LAN_distant masque_réseau_LAN_distant @IP_WAN_du_routeur_distant ‘’
Exemple :
Si on dispose de deux agences distantes possédant respectivement les adresse réseau LAN
192.168.231.0 /24 et 192.168.2.0/24 et les adresses IP publique 196.203.53.111 et 196.203.44.109
les routes seront définies comme suit :
La configuration du routeur Thomson ST-608 se fait à travers son interface graphique. Pour ce faire,
suivez les étapes suivantes :
Il faut préciser que pour un ST-608 il faut au premier lieu spécifier une « Remote Gateway »
(une passerelle distante), ensuite on crée une nouvelle connexion à cette passerelle.
Puisqu ‘on connaît déjà l’adresse IP du routeur distant on choisit l’onglet « Remote Gateway Address
Known » (qui apparaît déjà par défaut), sinon on choisi l’autre onglet.
Etape 4 : Puis qu’on ne dispose pas d’autorité de certification on clique sur le bouton «Use
Preshared Key Authentication», la fenêtre s’enrichira par de nouveaux champs et
apparaîtra comme suit ( voire figure 6).
• Dans le champ « Preshared Secret » on définie la clé partagé à utiliser avec la passerelle
distante, dans notre cas on mentionne la clé qu’on a déjà inscrite dans le routeur Cisco 837
qui est « topnet ».
• Dans le champ « Confirm Secret » on retape la même clé .
• Dans le champ « Local ID Type » on définie le type d’identification du routeur distant, pour
cela on choisi « addr » qui signifie : identification par adresse IP.
• Dans le champ « Local ID » on définie l’adresse WAN du ST-608.
• Dans le champ « Remote ID Type » on définie le type d’identification utilisé par le routeur
distant, pour cela on choisi « addr » qui signifie : identification par adresse IP.
• Dans le champ « Remote ID » on définie l’adresse WAN du Cisco 837.
• Dans le champ « Inactivity Timeout » on spécifie le temps de maintient du tunnel même s’il y
a aucun trafic véhiculé entre les deux réseaux.
• Le menu déroulant « IKE Security Descriptor » permet de choisir les algorithmes de
cryptographie et de hachage à utiliser, dans notre cas on va choisir « 3DES_MD5 »
• Dans le champ « Local Trusted Network Type » on définie si on veut autoriser à une seule
machine ou à un sous réseau ou à une plage d’adresse IP d’accéder au réseau distant. Ceci
est similaire au access-list pour un routeur Cisco.
Donc, comme précisé dans la figure 8, on va choisir un « subnet » (sous réseau).
• Dans le champ « Local Trusted Network IP » on mentionne l’adresse du sous réseau suivie
de son masque sous la forme x.x.x.x / 24.
• Dans le champ « Remote Trusted Network Type » on met la même valeur que pour le premier
champ.
• Dans le champ « Remote Trusted Network IP » on va mentionner l’adresse du réseau LAN
distant.
• Pour le descripteur du tunnel IPSec on choisit « 3DES_MD5_TUN ».
On valide la création de la nouvelle connexion par clique sur le bouton Add (voire figure 8). On aura
une interface similaire à celle de la figure 9 :
• On remarque bien que des nouveaux boutons sont ajoutés à l’interface d’administration et
une deuxième ligne relative à la nouvelle connexion s’ajoute en dessous de celle relative à la
passerelle.
Dans cette deuxième ligne apparaît l’état de la connexion : si l’état est « enabled » alors
l’interface est prête mais la connexion n’est pas encore établie.
• Les boutons « Start » et « Stop » permettent respectivement d’établir et de stopper une
connexion VPN à la passerelle distante.
Si on clique sur le bouton « Start » et que les paramètres de connexion sont symétriques de
part et d’autre du tunnel, alors le Label «enabled » passe à « running ». Si malgré tout l’état
de la connexion reste à «enabled » alors le tunnel ne s’est pas établi et on en déduit qu’il y a
une erreur de paramétrage dans l’un des routeurs.
• Le bouton « Status » donne un aperçu sur l’état des deux phases d’établissement de
connexion VPN.
Si la connexion s’est bien établie, le clique sur le bouton « Status » nous fournira un résultat
pareil :
STATUS:
session id [10]
local ID : ipv4/196.203.53.111
remote ID : ipv4/196.203.17.157
name : AUTOL_to_196.203.53.135_#1
last role : initiator
role changes : 0
lastseen : 1 seconds ago
nat status : port swapped, keepalive
sa count : 2
p1 exchanged : 1
p2 exchanged : 1
On remarque bien que les deux phases de connexion se sont bien déroulées.
• Le bouton « Statistics » fournit des informations sur le nombre de paquets reçus, le nombre
de paquets cryptés et décryptés etc..
Pour vérifier le bon établissement du tunnel VPN du côté routeur ST-608 on clique sur le bouton
« Status » on devrai avoir un output analogue à celui cité ci-dessus.
Du côté du routeur Cisco 837, la commande : show crypto isakmp sa et show crypto ipsec sa
fournissent respectivement un aperçu sur l’état de la connexion VPN.
Rq : Une fois le timeout de la connexion VPN est expiré le tunnel VPN est automatiquement
désactivé. Toute réutilisation ultérieure de la connexion réactivera automatiquement le tunnel VPN
sans intervention manuelle (ceci après un bref délai de négociation des associations de sécurité).
Parmi les erreurs usuelles pouvant empêcher un tunnel VPN de s’établir on peut citer :
• Configuration d’une clé pré-partagée différente de part et d’autre des routeurs.
• Choix d’un algorithme de cryptage ou de hachage différents de part et d’autre des routeurs.
• Mauvais paramétrage des access-list du routeur Cisco ou des Adresses IP locales et
distantes autorisées, pour le routeur ST-608.
Annexe
La configuration de l’accès Internet via ADSL sur le routeur Cisco 837 est définie comme suit :
Router#configure terminal
Router(config)#interface ethernet0
Router(config-if)#ip address @IP_choisie masque_sous_reseau
Router(config-if)#ip nat inside
Router(config-if)#ip virtual-reassembly
Router(config-if)#ip tcp adjust-mss 1412
Router(config-if)#hold-queue 100 out
Router(config-if)#exit
Router#configure terminal
Router(config)#interface ATM0
Router(config-if)#ip dhcp client client-id dialer0
Router(config-if)#pvc 0/35
Router(config-if-atm-vc)#pppoe-client dial-pool-number 1
Router(config-if-atm-vc)#exit
Router(config-if)#exit
Router#configure terminal
Router(config)#interface dialer0
Router(config-if)#ip address negotiated
Router(config-if)#ip mtu 1442
Router(config-if)#ip nat outside
Router(config-if)#encapsulation ppp
Router(config-if)#ip tcp adjust-mss 1452
Router(config-if)#dialer pool 1
Router(config-if)#dialer-group 1
Router(config-if)#ppp authentication chap callin
Router(config-if)#ppp chap hostname login_FAI
Router(config-if)#ppp chap password 0 password_FAI
Router(config-if)#ppp ipcp dns request
Router(config-if)#exit
Une fois que la configuration présentée dans ce volet est appliquée on peut tester l’état de la
connexion à Internet.