Le protocole IPSec

et

Les Réseaux Virtuels Privés

Yves Legrandgérard email : ylg@pps.jussieu.fr

Principales caractéristiques du protocole IPSec
application TCP/UDP IPv4/v6 IPSec
● ● ●

application TCP/UDP IPv4/v6 IPSec

Sécurité des échanges au niveau de la couche réseau Transparent pour les applications RFC 2401 : Security Architecture for the Internet Protocol

2 modes : mode tunnel et mode transport (1/2)
Mode transport en­tête IP d'origine en­tête IPSec en­tête IP d'origine en­tête IP d'origine données

Datagramme d'origine

données

nouvel en­tête IP

en­tête IPSec

données

Mode tunnel

2 modes : mode tunnel et mode transport (2/2)

En mode transport, seules les données des protocoles de niveau supérieur sont protégées.Le mode transport ne devrait être utilisé qu'entre des équipements connectés par une liaison point à point En mode tunnel, l'en-tête IP d'origine est protégé et est remplacé par un nouvel en-tête. En particulier, les adresses source et destination du datagramme original sont masquées. C'est le mode utilisé pour mettre en œuvre des VPN

Les services offerts par IPSec ● Authentification Intégrité Confidentialité Protection contre le rejeu Compression ● ● ● ● .

ainsi un échange bidirectionnel necéssite 2 SA Les attributs d'une SA sont : – – – – – – ● adresses IP source et destination algorithmes d'authentification et de chiffrement clés utilisées type de protection (AH ou ESP) index SPI (Security Parameter Index) durée de vie .Les associations de securité (SA) ● Les paramètres de chaque connexion sont décrits par une SA. La connection est unidirectionnelle.

La base donneés des associations de securité (SAD) ● L'ensemble des SA est géré à l'aide d'une base de données : SAD (Security Association Database) Au sein de cette base. reçues) . destination) de choisir la SA adéquate afin de traiter les données transmises (resp. chaque SA est identifiée par 3 paramètres : – – – ● adresse destination type de protection (AH ou ESP) index SPI Le SPI (32bits) permet à la source (resp.

Il existe plusieurs implantations de ce protocole. l'une d'entre elles étant IKE (Internet Key Exchange) .Gestion des SA ● 2 possibilités : – – gestion manuelle gestion automatique à l'aide du protocole ISAKMP (Internet Security Association and Key Management Protocol) ● ISAKMP est un protocole générique et ne peut être utilisé en tant que tel.

Ces règles portent sur les en-tête des paquets : – – – adresse source ou destination port source ou destination etc.Politique de securité (SPD) ● Une politique de sécurité est un ensemble de règles à appliquer aux paquets entrant et sortant... ● Cet ensemble de règles est stocké dans une base de données appelée SPD (Security Policy Database) .

SPD/SAD : schéma général (1/2) application TCP/UDP IPv4/v6 IPSec SPD SAD Traffic sortant .

 AH/ESP. SPI) SPD SAD Traffic entrant .SPD/SAD : schéma général (2/2) application TCP/UDP IPv4/v6 IPSec (@IP dest.

Authentificication Header (1/4) ● Les services offerts par AH sont : – – – l'authentification l'intégrité la protection anti-rejeu (optionnelle) ● ● AH ne garantit pas la confidentialité des données AH protège contre le vol de session et l'IP “spoofing” Inutilisable en présence de NAT (IPv4) ● .

Authentificication Header (2/4) Datagramme d'origine en­tête IP d'origine en­tête IP d'origine en­tête AH données données L'authentification porte également sur l'en­tête IP d'origine (mode transport) .

Authentificication Header (3/4) en­tête suivant longueur réservé index du paramètre de sécurité (SPI) numéro de séquence données d'authentification (longueur variable) L'en­tête AH (RFC 2402) .

Authentificication Header (4/4) ● en-tête suivant : identifie le type des données qui suivent l'en-tête AH longueur : longueur de l'en-tête AH en mots de 32 bits moins 2 (le “moins 2” vient des en-têtes optionnelles du protocole IPv6) numéro de séquence : obligatoire même si la protection anti-rejeu n'est pas activée données d'authentification : contient l'ICV (Integrity Check Value) du paquet ● ● ● .

ESP peut être interdit d'utilisation (vérifiez que la législation autorise le chiffrement) Spécifié par le RFC 2406 ● ● .Encapsulation Security Payload (1/4) ● ESP offre les mêmes services que AH et en outre garantit la confidentialité grâce à un mécanisme de chiffrement Contrairement à AH.

Encapsulation Security Payload (2/4) en­tête IP d'origine données Datagramme d'origine en­tête IP d'origine en­tête ESP données chiffré authentifié remorque ESP données d'authen. (mode transport) .

Encapsulation Security Payload (3/4) index du paramètre de sécurité (SPI) numéro de séquence authentifié données chiffré remplissage longueur en­tête suivant données d'authentification (longueur variable) L'en­tête ESP (RFC 2406) .

Encapsulation Security Payload (4/4) ● index SPI : identifie la SA pour ce datagramme numéro de séquence : obligatoire même si la protection antirejeu n'est pas activée données : données chiffrées remplissage : remplissage éventuellement imposé par l'algorithme de chiffrement longueur : longueur du remplissage (0 si aucun remplissage) en-tête suivant : identifie le type des données chiffrées données d'authentification : contient l'ICV (Integrity Check Value) du paquet ● ● ● ● ● ● .

encapsulation dans le champ données d'ESP : • en mode transport. ajout du remplissage éventuellement nécessaire 4. recherche de la SA associée au paquet à traiter 2. de la totalité du datagramme IP d'origine • 3. des données du protocole de niveau supérieur en mode tunnel.Fonctionnement d'ESP 1. calcul des valeurs d'authentification (ICV) . chiffrement des données (algorithme indiqué dans la SA associée) 5.

faire “man setkey” pour avoir la liste complète) . 160 bits (RFC 2857) AES-XCBC-MAC. 160 bits (RFC 2404) HMAC-RIPEMD160.Quelques algorithmes (1/2) Algorithmes calculant un condensé à partir de données et d'un secret partagé : ● ● ● ● ● HMAC-MD5. 128 bits (RFC 2403) HMAC-SHA1.. 128 bits (RFC 3566) etc. (sous UNIX..

.. 40 – 128 (RFC 2451) RIJNDAEL-CBC.Quelques algorithmes (2/2) Algorithmes de chiffrement symétriques : ● ● ● ● ● ● NULL. 128/192/256 bits (RFC 3602) etc. (RFC 2451) BLOWFISH-CBC. faire “man setkey” pour avoir la liste complète) . 40 – 448 (RFC 2451) CAST128-CBC. 192 bits. 0 – 2048 bits (RFC 2410) 3DES-CBC. (sous UNIX.

Internet Key Exchange (IKE) IKE repose sur les 3 protocoles suivants : ● le protocole cadre ISAKMP (RFC 2408) pour la définition et l'administration des SA le protocole Oakley (RFC 2412) pour la création des clés le protocole SKEME pour l'échange de ces clés ● ● IKE s'appuie sur UDP (port 500) .

ISAKMP ISAKMP procède selon 2 phases de négociation : ● Durant la première phase. 2 entités (serveurs ISAKMP par exemple) vont établir une association de sécurité ISAKMP afin de protéger le traffic ultérieur La deuxième phase est consacrée à la création de SA pour d'autres protocoles de sécurité La SA ISAKMP créée durant la première phase permet de protéger les échanges de la deuxième phase ● ● .

OAKLEY / SKEME ● Mécanisme générique de création et de diffusion sécurisée de clés S'appuie sur l'algorithme d'échange de clés de Diffie-Hellman Nécessite un “bon” générateur de nombres aléatoires (c'est un point crucial !) Compatible avec le protocole ISAKMP Les noms des clés générées servent à engendrer les SA des protocoles AH et ESP ● ● ● ● .

Compression de données: IPcomp (IP Payload Compression Protocol) ● IPcomp (RFC 2393) est un protocole destiné à réduire la taille des datagrammes IP. IPcomp doit être appliqué avant le chiffrement du datagramme IPcomp est un protocole cadre indépendant de l'algorithme de compression Un exemple d'algorithme de compression : DEFLATE (RFC 2394) ● ● ● . Pour être efficace. IPcomp est particulièrement utile lorsque le datagramme a été chiffré.

Placement de l'en-tête IPComp en­tête IP d'origine en­tête AH en­tête IPComp données AH mode transport en­tête IP d'origine en­tête ESP en­tête IPComp données remorque ESP données d'authen. ESP mode transport .

1.0/24 passerelle IPSec tunnel c h iffré passerelle IPSec Internet public .0/24 10.168.Réseaux virtuels privés (VPN) réseau privé réseau privé 192.0.1.

openswan.org) Openswan. (www.net) FreeS/Wan n'évolue plus guère et devrait être délaissé au profit d'Openswan qui intègre FreeS/Wan et Racoon .kame. [Linux]. (www.freeswan.6]. [Linux]. OpenBSD.Les implantations “libres” d'IPSec ● ● ● Linux FreeS/Wan.org) Racoon [FreeBSD. (www. NetBSD. Linux 2.

168.0.1 ah 12345 -A hmac-sha1 0x1e162b828f8d619df24d5439679c4fd0505c764e.Mise en œuvre d'IPSec : Création des SA (1/3) # dd if=/dev/random count=20 bs=1 | xxd -ps 1e162b828f8d619df24d5439679c4fd0505c764e # setkey -c add 192.0. ^D ● ● /dev/random -> générateur de nombre aléatoires 12345 -> SPI (Security Parameter Index) .1 10.0.

0.1 10.Mise en œuvre d'IPSec : Création des SA (2/3) # dd if=/dev/random count=24 bs=1 | xxd -ps 9f6eaf09afb4a27f1462f93af7e37ca59f0ad739355d38e1 #setkey -c add 10.2 esp 9999 -m tunnel -E rijndael-cbc 0x9f6eaf09afb4a27f1462f93af7e37ca59f0ad739355d38e1.0. ^D ● -m tunnel -> précise le mode du protocole de sécurité (autres modes : transport ou any.0.0. any valeur par défaut) .

0.0.0.1 10.0.Mise en œuvre d'IPSec : Création des SA (3/3) # setkey -D 10.2 esp mode=tunnel spi=9999(0x0000270f) reqid=0(0x00000000) E: aes-cbc 9f6eaf09 afb4a27f 1462f93a f7e37ca5 9f0ad739 355d38e1 seq=0x00000000 replay=0 flags=0x00000000 state=mature created: Oct 19 11:49:56 2005 current: Oct 19 11:50:01 2005 diff: 5(s) last: current: 0(bytes) allocated: 0 hard: 0(s) soft: 0(s) soft: 0(s) hard: 0(s) hard: 0(bytes) soft: 0(bytes) hard: 0 soft: 0 sadb_seq=0 pid=15107 refcnt=0 .

0.0.0.2[any] any out ipsec ah/transport//require created: Oct 19 12:31:34 2005 lastused: lifetime: 0(s) validtime: 0(s) spid=73 seq=8 pid=15205 refcnt=1 .1[any] 10.1 10.0.0.0.0.Mise en œuvre d'IPSec : Politique de sécurité SPD (1/3) # setkey -c spdadd 10. # setkey -D -P 10.2 any -P out ipsec ah/transport//require.0.

2[any] any out ipsec esp/tunnel/192.1[any] 10.0.0.0.Mise en œuvre d'IPSec : Politique de sécurité SPD (2/3) # setkey -c spdadd 10.68.2 any -P out ipsec esp/tunnel/192.0.3.1/require.0.0.0.0.0.1-10.3.1/require created: Oct 19 12:55:45 2005 lastused: lifetime: 0(s) validtime: 0(s) spid=81 seq=8 pid=15254 refcnt=1 .68. # setkey -D -P 10.1 10.0.1-10.0.0.

0.2# setkey -c spdadd 10.1 10.0.Mise en œuvre d'IPSec : Politique de sécurité SPD (3/3) 10.0.2 10.0. spdadd 10.1 any -P out ipsec esp/transport//require.0.2 any -P in ipsec esp/transport//require.0.0.0.1 10.0.2 any -P out ipsec esp/transport//require. .0.0.0. spdadd 10.0.0.1# setkey -c spdadd 10.2 10.1 any -P in ipsec esp/transport//require.0. 10.0.0.0.0.0.

Mise en œuvre d'un VPN (Racoon) 10.168.1.0.2.1 passerelle IPSec tunnel c h iffré 192.2.0.0/24 192.0/24 réseau privé réseau privé 10.1 passerelle IPSec Internet public .168.1.

1. spdadd 10.Configuration des SPD (des 2 côtés) ● Sur la passerelle 192.1.2.168.168.1.0/24 any -P out ipsec esp/tunnel/192.1/require.1-192. spdflush.2.0.1-192.2.1 .1.2.1/require.168. créer le script : #!/usr/sbin/setkey -f # Flush the SAD and SPD flush.0.168.0.0/24 10.2.0.168.1.0/24 10. ● Procéder de manière analogue sur 192. # Security policies spdadd 10.168.1.0/24 any -P in ipsec esp/tunnel/192.

168.1 ● .168.txt Procéder de manière analogue sur 192.1er cas : clés partagées (Preshared Keys) ● Editer le fichier /etc/racoon/psk.1.168.168.2 0x52a149926ba4e5c94f28 ou 192.2.2 ceci est le mot de passe ● Ne pas oublier de protéger ce fichier : # chmod 400 /etc/racoon/psk.1.1.1 et ajouter la ligne : 192.txt sur la passerelle 192.

remote 192.2.1.168.1 .168. proposal { encryption_algorithm 3des.txt". } ● Procéder de manière analogue sur 192. dh_group modp1024.1 { exchange_mode main.conf sur la passerelle 192.168. } generate_policy off.2.1: path pre_shared_key "/etc/racoon/psk. hash_algorithm md5. authentication_method pre_shared_key.Configuration Racoon (phase 1) ● Editer le fichier /etc/racoon/racoon.

168.2.1.0/24[any] any address 10.Configuration Racoon (phase 2) ● Toujours dans le fichier /etc/racoon/racoon. compression_algorithm deflate.1. Attention aux temps de calcul importants si on choisit un “modulo” élevé .1: sainfo address 10.conf sur la passerelle 192. encryption_algorithm 3des.168. authentication_algorithm hmac_md5.1.0/24[any] any { pfs_group modp768.1 pfs_group -> Perfect Forward Secrecy (optionnel).2. } ● ● Procéder de manière analogue sur 192.1.

pem -out my_private_key.pem est la clé privée .pem`.pem `openssl x509 -noout -hash < CAfile.pem est le certificat de l'autorité de certification et CRLfile. exécuter : openssl rsa -in my_private_key.r0 où CAfile.2ème cas : certificats X509 ● Peu de différences concernant la configuration avec le cas précédent Dans le catalogue où se trouvent les certificats (par exemple /etc/racoon/certs). exécuter : ln -s CAfile.pem est le fichier des certificats révoqués ● ● Dans ce même catalogue.pem`.pem `openssl x509 -noout -hash < CAfile.0 ln -s CRLfile.pem où my_private_key.

dh_group modp1024.conf sur la passerelle 192. } } .1 { exchange_mode main.Configuration Racoon (phase 1) ● Editer le fichier /etc/racoon/racoon.1: path certificate "/etc/racoon/certs". hash_algorithm md5. authentication_method rsasig.2. my_identifier asn1dn. verify_cert on.pem". certificate_type x509 "my_certificate.pem" "my_private_key. peers_identifier asn1dn.168.1.168. remote 192. proposal { encryption_algorithm 3des.

conf sur la passerelle 192. compression_algorithm deflate.1.168. } ● On remarquera que la phase 2 est identique à la phase 2 du cas précédent .0/24[any] any address 10.1.1.2. authentication_algorithm hmac_md5.1. encryption_algorithm 3des.1: sainfo address 10.0/24[any] any { pfs_group modp768.Configuration Racoon (phase 2) ● Toujours dans le fichier /etc/racoon/racoon.

ethereal..Lancement de racoon ● Il suffit pour cela d'exécuter la commande (sur les 2 passerelles) : # racoon ou # racoon -f <fichier_de_conf_racoon> ● On peut observer les négociations dans les logs : # tail -f /var/sys/syslog ● On peut également vérifier que les SA sont créées correctement : # setkey -D ● Traces réseau : tcpdump.. ..

Authentification ICMPv6 entre 2 nœuds sur un lien local (1/2) FE80::1# setkey -c add FE80::1 FE80::2 ah 12345 -A hmac-md5 0xdd82f73cce4d4f64ce621016f66e9e1f. add FE80::2 FE80::1 ah 67890 -A hmac-md5 0x11220f3b324453a6f80853657db32b18. FE80::2# setkey -c add FE80::2 FE80::1 ah 12345 -A hmac-md5 0x11220f3b324453a6f80853657db32b18. add FE80::1 FE80::2 ah 67890 -A hmac-md5 0xdd82f73cce4d4f64ce621016f66e9e1f. .

Authentification ICMPv6 entre 2 nœuds sur un lien local (2/2) FE80::1# setkey -c spdadd FE80::1 FE80::2 icmp6 -P out ipsec ah/transport//require. FE80::2# setkey -c spdadd FE80::2 FE80::1 icmp6 -P out ipsec ah/transport//require. . spdadd FE80::2 FE80::1 icmp6 -P in ipsec ah/transport//require. spdadd FE80::1 FE80::2 icmp6 -P in ipsec ah/transport//require.

Sign up to vote on this title
UsefulNot useful