6.11. Configuration d'hôte à hôte via IPsec

Le protocole IPsec peut être configuré de sorte à connecter un bureau ou un poste de travail à un autre au moyen d'une connexion d'hôte à hôte. Ce type de connexion utilise le réseau auquel chaque hôte est connecté pour créer un tunnel sécurisé entre eux. Les pré-requis d'une connexion d'hôte à hôte sont minimaux, tout comme la configuration d'IPsec sur chaque hôte. Pour créer une connexion IPsec, tout ce dont les hôtes ont besoin est une connexion dédiée à un réseau porteur (comme l'internet) et Red Hat Enterprise Linux.

La première étape dans la création d'une connexion consiste à recueillir des informations sur le système et sur le réseau s'appliquant à chaque poste de travail. Pour une connexion d'hôte à hôte, les informations suivantes sont nécessaires :

Par exemple, imaginez que le poste de travail A et le poste de travail B souhaitent se connecter à l'un et l'autre grâce à un tunnel IPsec. Ils souhaitent utiliser une clé pré-partagée avec la valeur foobarbaz et les utilisateurs acceptent de laisser racoon générer automatiquement et partager une clé d'authentification entre chaque hôte. Les deux utilisateurs hôtes décident de nommer leurs connexions ipsec0.

L'extrait ci-dessous est un exemple de fichier ifcfg pour une connexion IPsec d'hôte à hôte sur un poste de travail. Le nom unique pour l'identification de la connexion étant ipsec0, le fichier créé se nomme logiquement /etc/sysconfig/network-scripts/ifcfg-ipsec0.

DST=X.X.X.X
TYPE=IPsec
ONBOOT=yes
IKE_METHOD=PSK

Le poste de travail A devrait remplacer X.X.X.X par l'adresse IP du poste de travail B, alors que ce dernier devrait remplacer X.X.X.X par l'adresse IP du poste de travail A. La connexion est définie de manière à être lancée au démarrage (ONBOOT=yes) et utilise la méthode de clé pré-partagée d'authentification (IKE_METHOD=PSK).

L'extrait suivant représente un fichier de clés pré-partagées (nommé /etc/sysconfig/network-scripts/keys-ipsec0) que les postes de travail utilisent pour s'authentifier l'un auprès de l'autre. Le contenu de ce fichier devrait être identique sur les deux postes et ne devrait pouvoir être lu et écrit que par le super-utilisateur (root).

IKE_PSK=foobarbaz

ImportantImportant
 

Pour changer le fichier keys-ipsec0 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-ipsec0

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

Le fichier /etc/racoon/racoon.conf devrait être identique à part l'instruction include "/etc/racoon/X.X.X.X.conf". Cette dernière (et le fichier auquel elle fait référence) est générée lorsque le tunnel IPsec est activé. Pour le poste de travail A, X.X.X.X dans l'instruction include représente l'adresse IP du poste de travail B. Le cas contraire n'est pas vrai pour le poste de travail B. L'exemple suivant représente un fichier racoon.conf typique lorsque la connexion IPsec est activée.

# 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"

Pour lancer la connexion, redémarrez le poste de travail ou exécutez la commande suivante en tant que super-utilisateur sur chaque hôte :

/sbin/ifup ipsec0

Pour tester la connexion IPsec, exécutez l'utilitaire tcpdump afin d'afficher les paquets réseau transférés entre les hôtes (ou les réseaux) et vérifiez qu'ils sont bien cryptés via IPsec. Le paquet devrait inclure un en-tête AH et devrait apparaître comme paquet ESP. ESP signifie qu'il est crypté. Par exemple :

17:13:20.617872 pinky.example.com > ijin.example.com: \
	    AH(spi=0x0aaa749f,seq=0x335): ESP(spi=0x0ec0441e,seq=0x335) (DF)