Tunnel ipsec

Ce qui suit est extrait de http://www.pintaric.net/index.php?post/2009/05/22/OVH%3A-MIse-en-place-d-un-cluster-Haute-Disponibilit%C3%A9, mais chez moi (debian lenny, le aes-ctr marche pas en 224 bits)

Pour comprendre les modes ah et esp (authentification et transport), voir http://www.frameip.com/ipsec/#2.2%C2%A0-_Les_protocoles_%C3%A0_la_base_dIPsec

En gros, ah sert à authentifier les paquets (ils viennent bien de la bonne machine et n'ont pas été modifiés depuis l'émission) et esp sert à chiffre le contenu. En combinant les deux on a du vpn.

Dans l'exemple qui suit, on va utiliser les mêmes clés sur les 2 serveurs, 160 bits avec hmac-sha1 pour ah et 192 bits avec 3des-cbc pour esp (man setkey pour voir la liste des algo de chiffrement possibles et la longueurs des clés nécessaires).

# on installe le paquet qui va bien
aptitude install ipsec-tools 
# On prépare une clé 160 bits (40 caractères hexa soit 20 octets) avec
hexdump -e '8/2 "%04x"' /dev/urandom -n 20
# et une autre 192 bits (ie 48 car hexa et 24 octets)
hexdump -e '8/2 "%04x"' /dev/urandom -n 24

Ensuite, sur le serveur d'ip aaaa on peut mettre dans /etc/ipsec-tools.conf

#!/usr/sbin/setkey -f
 
flush;
spdflush;
 
# AH
add bbbb aaaa ah 24500 -A hmac-sha1 0x<cle160>;
add aaaa bbbb ah 15700 -A hmac-sha1 0x<cle160>;
 
# ESP
add bbbb aaaa esp 24501 -E 3des-cbc 0x<cle192>;
add aaaa bbbb esp 15701 -E 3des-cbc 0x<cle192>;
 
# Transport
spdadd aaaa bbbb any -P out ipsec
           esp/transport//require
           ah/transport//require;
spdadd bbbb aaaa any -P in ipsec
           esp/transport//require
           ah/transport//require;

Et sur le serveur d'ip bbbb

#!/usr/sbin/setkey -f
 
flush;
spdflush;
 
# AH
add bbbb aaaa ah 24500 -A hmac-sha1 0x<cle160>;
add aaaa bbbb ah 15700 -A hmac-sha1 0x<cle160>;
 
# ESP
add bbbb aaaa esp 24501 -E 3des-cbc 0x<cle192>;
add aaaa bbbb esp 15701 -E 3des-cbc 0x<cle192>;
 
# Transport
spdadd bbbb aaaa any -P out ipsec
           esp/transport//require
           ah/transport//require;
spdadd aaaa bbbb any -P in ipsec
           esp/transport//require
           ah/transport//require;

Après un /etc/init.d/setkey restart ça devrait être bon, tester avec un ping et tcpdump pour voir si on utilise bien ah et esp lors de la causette.

 
linux/howto/ipsec.txt · Dernière modification: 28/07/2009 01:12 par daniel