IPSec : setKey

Mise en place du protocole IPSEC

Schéma de baase

Installation des outils « ipsec-tools » et « racoon » via les paquets ubuntu :

sudo -s
apt-get install ipsec-tools
apt-get install racoon

Il faut ensuite charger manuellement les modules noyau nécessaires :

modprobe esp4
modprobe ah4
modprobe ipcomp

Vous faut aussi configurer le chargement permanent, en modifiant le fichier « /etc/module » :

vim /etc/modules
# Ajout des modules
esp4
ah4
ipcomp

Configuration du PC1 pour une authentification par clé partagée

Il faut modifier le fichier « /etc/racoon/setkey.conf » du PC1 comme il suit :

Attention : Les retours à la ligne doivent être respectés !

#!/usr/sbin/setkey -f
# On efface les politiques de sécurité
# Flush the Security Association Database (SAD)
# And the Security Policy Database (SPD)
flush;
spdflush;

# Attention: Utiliser vos propres clés celle-ci n’est qu’un exemple !
# AH SAs using 128 bit long keys
add 192.168.238.130 192.168.238.131 ah 0×200 -m transport -A hmac-md5
0xc0291ff014dccdd03874d9e8e4cdf3e6;
add 192.168.238.131 192.168.238.130 ah 0×300 -m transport -A hmac-md5
0×96358c90783bbfa3d7b196ceabe0536b;

# ESP SAs using 192 bit long keys (168 + 24 parity)
add 192.168.238.130 192.168.238.131 esp 0×201 -m transport -E 3des-cbc
0×7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831;
add 192.168.238.131 192.168.238.130 esp 0×301 -m transport -E 3des-cbc
0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df;

# Politiques de sécurité
spdadd 192.168.238.130 192.168.238.131 any -P out ipsec

esp/transport//require
ah/transport//require;

spdadd 192.168.238.131 192.168.238.130 any -P in ipsec

esp/transport//require
ah/transport//require;

Mettre à jour les droits :

chmod 600 /etc/racoon/setkey.conf

Lancer la mise à jour :

setkey -f /etc/racoon/setkey.conf

Vérifier les modifications :

setkey -D
setkey -DP

On sauvegarde les paramètres pour chaque redémarrage dans le fichier « /etc/rc.local » :

#!/bin/sh -e
# rc.local
# Force IPSEC dès le démarrage
setkey -f /etc/racoon/setkey.conf
exit 0

Configuration du PC2 pour une authentification par clé partagée

Il faut suivre la même méthode que pour le PC1, mais le fichier de configuration « /etc/racoon/setkey.conf » devient :

#!/usr/sbin/setkey -f
# On efface les politiques de sécurité
# Flush the Security Association Database (SAD)
# And the Security Policy Database (SPD)
flush;
spdflush;

# Attention: Utiliser vos propres clés celle-ci n’est qu’un exemple !
# AH SAs using 128 bit long keys
add 192.168.238.130 192.168.238.131 ah 0×200 -m transport -A hmac-md5
0xc0291ff014dccdd03874d9e8e4cdf3e6;
add 192.168.238.131 192.168.238.130 ah 0×300 -m transport -A hmac-md5
0×96358c90783bbfa3d7b196ceabe0536b;

# ESP SAs using 192 bit long keys (168 + 24 parity)
add 192.168.238.130 192.168.238.131 esp 0×201 -m transport -E 3des-cbc
0×7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831;
add 192.168.238.131 192.168.238.130 esp 0×301 -m transport -E 3des-cbc
0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df;

# Security policies
spdadd 192.168.238.130 192.168.238.131 any -P in ipsec

esp/transport//require
ah/transport//require;

spdadd 192.168.238.131 192.168.238.130 any -P out ipsec

esp/transport//require
ah/transport//require;

Mettre à jour les droits :

chmod 600 /etc/racoon/setkey.conf

Lancer la mise à jour :

setkey -f /etc/racoon/setkey.conf

Vérifier les modifications :

setkey -D
setkey -DP

On sauvegarde les paramètres pour chaque redémarrage dans le fichier « /etc/rc.local » :

#!/bin/sh -e
# rc.local
# Force IPSEC dès le démarrage
setkey -f /etc/racoon/setkey.conf
exit 0

Maintenant on peut tester :

Sur PC2

tcpdump -i eth1 host 192.168.238.131 and 192.168.238.130 > /dev/pts/0
ping 192.168.238.130

Sur PC1

tcpdump -i eth1 host 192.168.238.130 and 192.168.238.131 > /dev/pts/0
ping 192.168.238.131

Résultats

PC1:~# ping 192.168.238.131
PING 192.168.238.131 (192.168.238.131) 56(84) bytes of data.
19:38:13.422427 IP 192.168.238.130 > 192.168.238.131: AH(spi=0×0582a70f,seq=0×35): ESP(spi=0×0635e817,seq=0×35), length 100
64 bytes from 192.168.238.131: icmp_seq=1 ttl=64 time=2.23 ms
19:38:13.424239 IP 192.168.238.131 > 192.168.238.130: AH(spi=0×06ba7da2,seq=0×35): ESP(spi=0×04669426,seq=0×35), length 100
19:38:14.425512 IP 192.168.238.130 > 192.168.238.131: AH(spi=0×0582a70f,seq=0×36): ESP(spi=0×0635e817,seq=0×36), length 100

PC2:~# ping 192.168.238.130
PING 192.168.238.130 (192.168.238.130) 56(84) bytes of data.
19:37:21.561815 IP 192.168.238.131 > 192.168.238.130: AH(spi=0×06ba7da2,seq=0×30): ESP(spi=0×04669426,seq=0×30), length 100
64 bytes from 192.168.238.130: icmp_seq=1 ttl=64 time=3.89 ms
19:37:21.565499 IP 192.168.238.130 > 192.168.238.131: AH(spi=0×0582a70f,seq=0×30): ESP(spi=0×0635e817,seq=0×30), length 100
19:37:22.562545 IP 192.168.238.131 > 192.168.238.130: AH(spi=0×06ba7da2,seq=0×31): ESP(spi=0×04669426,seq=0×31), length 100