6.5. Configuration de réseau à réseau via IPsec

IPsec peut également être configuré de manière à connecter un réseau entier (comme un LAN ou un WAN) à un réseau distant grâce à une connexion de réseau à réseau. Une connexion de réseau à réseau nécessite la configuration de routeurs IPsec sur chaque extrémité des réseaux connectés afin de manipuler et transférer les informations d'un noeud sur un LAN à un noeud sur un LAN distant. La Figure 6-1 illustre une connexion tunnelée de réseau à réseau avec IPsec.

Figure 6-1. Une connexion tunnelée de réseau à réseau avec IPsec

Le diagramme représente deux LAN différents séparés par l'internet. Ces LAN utilisent des routeurs IPsec pour l'authentification et mettent en oeuvre une connexion à l'aide d'un tunnel sécurisé à travers l'internet. Les paquets qui sont interceptés en transit, nécessiteront un décryptage force brute afin de briser le chiffre qui protège les paquets entre ces LAN. Le processus de communication depuis un noeud sur la plage d'IP 192.168.1.0/24 à un autre noeud sur 192.168.2.0/24 est complètement transparent aux noeuds car le traitement, cryptage/décryptage et routage de ces paquets IPsec sont complètement effectués par le routeur IPsec.

Parmi les informations nécessaires à une connexion de réseau à réseau figurent :

Par exemple, imaginons que le LAN A (lana.example.com) et le LAN B (lanb.example.com) souhaitent se connecter à l'un et l'autre à travers un tunnel IPsec. L'adresse réseau du LAN A est présente dans la gamme 192.168.1.0/24, alors que le LAN B utilise la gamme 192.168.2.0/24. L'adresse IP de la passerelle est 192.168.1.254 pour le LAN A et 192.168.2.254 pour le LAN B. Les routeurs IPsec sont séparés de chaque passerelle du LAN et utilisent deux périphériques réseau : eth0 est attribué une adresse IP statique accessible de l'extérieur qui permet d'accéder à l'internet, alors que eth1 agit en tant que point de routage pour traiter et transmettre les paquets du LAN d'un noeud de réseau aux noeuds de réseau distant.

La connexion IPsec entre chaque réseau utilise une clé pré-partagée ayant la valeur r3dh4tl1nux et les administrateurs de A et B acceptent de laisser racoon générer et partager automatiquement une clé d'authentification entre chaque routeur IPsec. L'administrateur du LAN A décide de nommer la connexion IPsec ipsec0, alors que l'administrateur du LAN B nomme la connexion IPsec ipsec1.

L'extrait ci-dessous est un exemple de fichier ifcfg pour une connexion IPsec de réseau à réseau pour le LAN A. Le nom unique pour l'identification de la connexion étant ipsec1, le fichier créé se nomme logiquement /etc/sysconfig/network-scripts/ifcfg-ipsec1.

TYPE=IPSEC
ONBOOT=yes
IKE_METHOD=PSK
SRCGW=192.168.1.254
DSTGW=192.168.2.254
SRCNET=192.168.1.0/24
DSTNET=192.168.2.0/24
DST=X.X.X.X

La connexion est configurée de manière à être lancée au démarrage (ONBOOT=yes) et utilise la méthode de clés pré-partagées d'authentification (IKE_METHOD=PSK). L'administrateur du LAN A saisit la passerelle de destination qui est la passerelle du LAN B (DSTGW=192.168.2.254) ainsi que la passerelle source qui est l'adresse IP de la passerelle du LAN A (SRCGW=192.168.1.254). L'administrateur saisit ensuite le réseau de destination qui est la gamme de réseau du LAN B (DSTNET=192.168.2.0/24) ainsi que le réseau source (SRCNET=192.168.1.0/24). L'administrateur saisit finalement l'adresse IP de destination qui est l'adresse IP accessible de l'extérieur du LAN B (X.X.X.X).

L'extrait suivant représente un fichier de clés pré-partagées nommé /etc/sysconfig/network-scripts/keys-ipsecX (où X a la valeur 0 pour le LAN A et la valeur 1 pour le LAN B) que les deux réseaux utilisent pour s'authentifier l'un auprès de l'autre. Le contenu de ce fichier devrait être identique et ne devrait pouvoir être lu et écrit que par le super-utilisateur.

IKE_PSK=r3dh4tl1nux

ImportantImportant
 

Pour changer le fichier keys-ipsecX de manière à ce que seul le super-utilisateur puisse lire et modifier ce fichier, exécutez la commande suivante après avoir créé le fichier en question :

chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1

Pour changer la clé d'authentification, éditez le fichier keys-ipsecX sur les deux routeurs IPsec. Les deux clés doivent être identiques pour une meilleure connectivité.

L'extrait suivant représente le fichier de configuration /etc/racoon/racoon.conf pour la connexion IPsec. Notez que la ligne include en bas du fichier est automatiquement générée et apparaît seulement si le tunnel IPsec est en cours d'exécution.

# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.

path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

sainfo anonymous
{
	pfs_group 2;
	lifetime time 1 hour ;
	encryption_algorithm 3des, blowfish 448, rijndael ;
	authentication_algorithm hmac_sha1, hmac_md5 ;
	compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf"

L'extrait ci-dessous correspond au fichier de configuration pour la connexion à un réseau distant. Le fichier porte le nom X.X.X.X.conf (remplacez l'élément X.X.X.X par l'adresse IP du routeur IPsec distant). Notez que ce fichier est automatiquement généré une fois que le tunnel IPsec est activé et ne devrait pas être directement édité.

;
remote X.X.X.X
{
        exchange_mode aggressive, main;
        my_identifier address;
        proposal {
                encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2 ;
        }
}

Avant de lancer la connexion IPsec, la redirection d'IP devrait être activée dans le noyau. En tant que super-utilisateur, dans une invite de shell, activez la redirection d'IP :

  1. Éditez /etc/sysctl.conf et réglez net.ipv4.ip_forward sur 1.

  2. Exécutez la commande suivante afin d'activer le changement :

    sysctl -p /etc/sysctl.conf

Pour lancer la connexion IPsec, redémarrez les routeurs IPsec ou exécutez la commande suivante en tant que super-utilisateur sur chaque routeur :

/sbin/ifup ipsec0

Les connexions sont activées et les deux LAN A et B peuvent communiquer entre eux. Les routes sont créées automatiquement via le script d'initialisation appelé en exécutant ifup sur la connexion IPsec. Pour afficher une liste de routes pour le réseau, exécutez la commande suivante :

/sbin/ip route list

Pour tester la connexion IPsec, exécutez l'utilitaire tcpdump sur le périphérique routable de l'extérieur (eth0 dans cet exemple) afin d'afficher les paquets du réseau étant transférés entre les hôtes (ou réseaux) et vérifiez qu'ils sont bien cryptés via IPsec. Par exemple, pour vérifier la connectivité IPsec du LAN A, saisissez la commande suivante :

tcpdump -n -i eth0 host lana.example.com

Le paquet doit inclure un en-tête AH et devrait être affiché en tant que paquet ESP. ESP signifie qu'il est crypté. Par exemple (les obliques inverses représentent la continuité d'une ligne) :

12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \
	  lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \
	  (ipip-proto-4)