You are on page 1of 46

Le protocole IPSec

et

Les Rseaux Virtuels Privs

Yves Legrandgrard email : ylg@pps.jussieu.fr

Principales caractristiques du protocole IPSec


application TCP/UDP IPv4/v6 IPSec

application TCP/UDP IPv4/v6 IPSec

Scurit des changes au niveau de la couche rseau Transparent pour les applications RFC 2401 : Security Architecture for the Internet Protocol

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


Modetransport entte IPd'origine entte IPSec entte IPd'origine entte IPd'origine donnes

Datagrammed'origine

donnes

nouvel entteIP

entte IPSec

donnes

Modetunnel

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

En mode transport, seules les donnes des protocoles de niveau suprieur sont protges.Le mode transport ne devrait tre utilis qu'entre des quipements connects par une liaison point point En mode tunnel, l'en-tte IP d'origine est protg et est remplac par un nouvel en-tte. En particulier, les adresses source et destination du datagramme original sont masques. C'est le mode utilis pour mettre en uvre des VPN

Les services offerts par IPSec

Authentification Intgrit Confidentialit Protection contre le rejeu Compression

Les associations de securit (SA)

Les paramtres de chaque connexion sont dcrits par une SA. La connection est unidirectionnelle, ainsi un change bidirectionnel necssite 2 SA Les attributs d'une SA sont :

adresses IP source et destination algorithmes d'authentification et de chiffrement cls utilises type de protection (AH ou ESP) index SPI (Security Parameter Index) dure de vie

La base donnes des associations de securit (SAD)

L'ensemble des SA est gr l'aide d'une base de donnes : SAD (Security Association Database) Au sein de cette base, chaque SA est identifie par 3 paramtres :

adresse destination type de protection (AH ou ESP) index SPI

Le SPI (32bits) permet la source (resp. destination) de choisir la SA adquate afin de traiter les donnes transmises (resp. reues)

Gestion des SA

2 possibilits :

gestion manuelle gestion automatique l'aide du protocole ISAKMP (Internet Security Association and Key Management Protocol)

ISAKMP est un protocole gnrique et ne peut tre utilis en tant que tel. Il existe plusieurs implantations de ce protocole, l'une d'entre elles tant IKE (Internet Key Exchange)

Politique de securit (SPD)

Une politique de scurit est un ensemble de rgles appliquer aux paquets entrant et sortant. Ces rgles portent sur les en-tte des paquets :

adresse source ou destination port source ou destination etc...

Cet ensemble de rgles est stock dans une base de donnes appele SPD (Security Policy Database)

SPD/SAD : schma gnral (1/2)


application TCP/UDP IPv4/v6 IPSec
SPD

SAD

Trafficsortant

SPD/SAD : schma gnral (2/2)

application TCP/UDP IPv4/v6 IPSec


(@IPdest,AH/ESP,SPI)
SPD

SAD

Trafficentrant

Authentificication Header (1/4)

Les services offerts par AH sont :


l'authentification l'intgrit la protection anti-rejeu (optionnelle)

AH ne garantit pas la confidentialit des donnes AH protge contre le vol de session et l'IP spoofing Inutilisable en prsence de NAT (IPv4)

Authentificication Header (2/4)

Datagrammed'origine entte IPd'origine

entte IPd'origine entte AH

donnes

donnes

L'authentificationportegalementsurl'entteIPd'origine (modetransport)

Authentificication Header (3/4)

entte suivant

longueur

rserv

indexduparamtredescurit(SPI) numrodesquence donnesd'authentification(longueurvariable)

L'entteAH(RFC2402)

Authentificication Header (4/4)

en-tte suivant : identifie le type des donnes qui suivent l'en-tte AH longueur : longueur de l'en-tte AH en mots de 32 bits moins 2 (le moins 2 vient des en-ttes optionnelles du protocole IPv6) numro de squence : obligatoire mme si la protection anti-rejeu n'est pas active donnes d'authentification : contient l'ICV (Integrity Check Value) du paquet

Encapsulation Security Payload (1/4)

ESP offre les mmes services que AH et en outre garantit la confidentialit grce un mcanisme de chiffrement Contrairement AH, ESP peut tre interdit d'utilisation (vrifiez que la lgislation autorise le chiffrement) Spcifi par le RFC 2406

Encapsulation Security Payload (2/4)

entte IPd'origine

donnes

Datagrammed'origine

entte IPd'origine

entte ESP

donnes
chiffr authentifi

remorque ESP

donnes d'authen.

(modetransport)

Encapsulation Security Payload (3/4)


indexduparamtredescurit(SPI) numrodesquence authentifi donnes chiffr remplissage longueur entte suivant

donnesd'authentification(longueurvariable)

L'entteESP(RFC2406)

Encapsulation Security Payload (4/4)

index SPI : identifie la SA pour ce datagramme numro de squence : obligatoire mme si la protection antirejeu n'est pas active donnes : donnes chiffres remplissage : remplissage ventuellement impos par l'algorithme de chiffrement longueur : longueur du remplissage (0 si aucun remplissage) en-tte suivant : identifie le type des donnes chiffres donnes d'authentification : contient l'ICV (Integrity Check Value) du paquet

Fonctionnement d'ESP
1. recherche de la SA associe au paquet traiter 2. encapsulation dans le champ donnes d'ESP :

en mode transport, des donnes du protocole de niveau suprieur en mode tunnel, de la totalit du datagramme IP d'origine

3. ajout du remplissage ventuellement ncessaire 4. chiffrement des donnes (algorithme indiqu dans la SA associe) 5. calcul des valeurs d'authentification (ICV)

Quelques algorithmes (1/2)


Algorithmes calculant un condens partir de donnes et d'un secret partag :

HMAC-MD5, 128 bits (RFC 2403) HMAC-SHA1, 160 bits (RFC 2404) HMAC-RIPEMD160, 160 bits (RFC 2857) AES-XCBC-MAC, 128 bits (RFC 3566) etc... (sous UNIX, faire man setkey pour avoir la liste complte)

Quelques algorithmes (2/2)


Algorithmes de chiffrement symtriques :

NULL, 0 2048 bits (RFC 2410) 3DES-CBC, 192 bits, (RFC 2451) BLOWFISH-CBC, 40 448 (RFC 2451) CAST128-CBC, 40 128 (RFC 2451) RIJNDAEL-CBC, 128/192/256 bits (RFC 3602) etc... (sous UNIX, faire man setkey pour avoir la liste complte)

Internet Key Exchange (IKE)


IKE repose sur les 3 protocoles suivants :

le protocole cadre ISAKMP (RFC 2408) pour la dfinition et l'administration des SA le protocole Oakley (RFC 2412) pour la cration des cls le protocole SKEME pour l'change de ces cls

IKE s'appuie sur UDP (port 500)

ISAKMP
ISAKMP procde selon 2 phases de ngociation :

Durant la premire phase, 2 entits (serveurs ISAKMP par exemple) vont tablir une association de scurit ISAKMP afin de protger le traffic ultrieur La deuxime phase est consacre la cration de SA pour d'autres protocoles de scurit La SA ISAKMP cre durant la premire phase permet de protger les changes de la deuxime phase

OAKLEY / SKEME

Mcanisme gnrique de cration et de diffusion scurise de cls S'appuie sur l'algorithme d'change de cls de Diffie-Hellman Ncessite un bon gnrateur de nombres alatoires (c'est un point crucial !) Compatible avec le protocole ISAKMP Les noms des cls gnres servent engendrer les SA des protocoles AH et ESP

Compression de donnes: IPcomp (IP Payload Compression Protocol)

IPcomp (RFC 2393) est un protocole destin rduire la taille des datagrammes IP. IPcomp est particulirement utile lorsque le datagramme a t chiffr. Pour tre efficace, IPcomp doit tre appliqu avant le chiffrement du datagramme IPcomp est un protocole cadre indpendant de l'algorithme de compression Un exemple d'algorithme de compression : DEFLATE (RFC 2394)

Placement de l'en-tte IPComp


entte IPd'origine entte AH entte IPComp

donnes

AHmodetransport

entte IPd'origine

entte ESP

entte IPComp

donnes

remorque ESP

donnes d'authen.

ESPmodetransport

Rseaux virtuels privs (VPN)

rseau priv

rseau priv
192.168.1.0/24 10.0.1.0/24

passerelle IPSec

tunnelc h

iffr

passerelle IPSec

Internetpublic

Les implantations libres d'IPSec


Linux FreeS/Wan, [Linux], (www.freeswan.org) Openswan, [Linux], (www.openswan.org) Racoon [FreeBSD, NetBSD, OpenBSD, Linux 2.6], (www.kame.net)

FreeS/Wan n'volue plus gure et devrait tre dlaiss au profit d'Openswan qui intgre FreeS/Wan et Racoon

Mise en uvre d'IPSec : Cration des SA (1/3)


# dd if=/dev/random count=20 bs=1 | xxd -ps 1e162b828f8d619df24d5439679c4fd0505c764e # setkey -c add 192.168.0.1 10.0.0.1 ah 12345 -A hmac-sha1 0x1e162b828f8d619df24d5439679c4fd0505c764e; ^D

/dev/random -> gnrateur de nombre alatoires 12345 -> SPI (Security Parameter Index)

Mise en uvre d'IPSec : Cration des SA (2/3)


# dd if=/dev/random count=24 bs=1 | xxd -ps 9f6eaf09afb4a27f1462f93af7e37ca59f0ad739355d38e1 #setkey -c add 10.0.0.1 10.0.0.2 esp 9999 -m tunnel -E rijndael-cbc 0x9f6eaf09afb4a27f1462f93af7e37ca59f0ad739355d38e1; ^D

-m tunnel -> prcise le mode du protocole de scurit (autres modes : transport ou any, any valeur par dfaut)

Mise en uvre d'IPSec : Cration des SA (3/3)


# setkey -D 10.0.0.1 10.0.0.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

Mise en uvre d'IPSec : Politique de scurit SPD (1/3)


# setkey -c spdadd 10.0.0.1 10.0.0.2 any -P out ipsec ah/transport//require; # setkey -D -P
10.0.0.1[any] 10.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

Mise en uvre d'IPSec : Politique de scurit SPD (2/3)


# setkey -c spdadd 10.0.0.1 10.0.0.2 any -P out ipsec esp/tunnel/192.68.0.1-10.0.3.1/require; # setkey -D -P
10.0.0.1[any] 10.0.0.2[any] any out ipsec esp/tunnel/192.68.0.1-10.0.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

Mise en uvre d'IPSec : Politique de scurit SPD (3/3)


10.0.0.1# setkey -c spdadd 10.0.0.1 10.0.0.2 any -P out ipsec esp/transport//require; spdadd 10.0.0.2 10.0.0.1 any -P in ipsec esp/transport//require; 10.0.0.2# setkey -c spdadd 10.0.0.2 10.0.0.1 any -P out ipsec esp/transport//require; spdadd 10.0.0.1 10.0.0.2 any -P in ipsec esp/transport//require;

Mise en uvre d'un VPN (Racoon)

10.0.1.0/24

rseau priv

rseau priv
10.0.2.0/24

192.168.1.1

passerelle IPSec

tunnelc h

iffr

192.168.2.1

passerelle IPSec

Internetpublic

Configuration des SPD (des 2 cts)

Sur la passerelle 192.168.1.1, crer le script :


#!/usr/sbin/setkey -f # Flush the SAD and SPD flush; spdflush; # Security policies spdadd 10.0.1.0/24 10.0.2.0/24 any -P out ipsec esp/tunnel/192.168.1.1-192.168.2.1/require; spdadd 10.0.2.0/24 10.0.1.0/24 any -P in ipsec esp/tunnel/192.168.2.1-192.168.1.1/require;

Procder de manire analogue sur 192.168.2.1

1er cas : cls partages (Preshared Keys)

Editer le fichier /etc/racoon/psk.txt sur la passerelle 192.168.1.1 et ajouter la ligne : 192.168.1.2 0x52a149926ba4e5c94f28 ou 192.168.1.2 ceci est le mot de passe

Ne pas oublier de protger ce fichier : # chmod 400 /etc/racoon/psk.txt Procder de manire analogue sur 192.168.2.1

Configuration Racoon (phase 1)

Editer le fichier /etc/racoon/racoon.conf sur la passerelle 192.168.1.1:


path pre_shared_key "/etc/racoon/psk.txt"; remote 192.168.2.1 { exchange_mode main; proposal { encryption_algorithm 3des; hash_algorithm md5; authentication_method pre_shared_key; dh_group modp1024; } generate_policy off; }

Procder de manire analogue sur 192.168.2.1

Configuration Racoon (phase 2)

Toujours dans le fichier /etc/racoon/racoon.conf sur la passerelle 192.168.1.1:


sainfo address 10.1.1.0/24[any] any address 10.1.2.0/24[any] any { pfs_group modp768; encryption_algorithm 3des; authentication_algorithm hmac_md5; compression_algorithm deflate; }

Procder de manire analogue sur 192.168.2.1 pfs_group -> Perfect Forward Secrecy (optionnel). Attention aux temps de calcul importants si on choisit un modulo lev

2me cas : certificats X509

Peu de diffrences concernant la configuration avec le cas prcdent Dans le catalogue o se trouvent les certificats (par exemple /etc/racoon/certs), excuter :
ln -s CAfile.pem `openssl x509 -noout -hash < CAfile.pem`.0 ln -s CRLfile.pem `openssl x509 -noout -hash < CAfile.pem`.r0 o CAfile.pem est le certificat de l'autorit de certification et CRLfile.pem est le fichier des certificats rvoqus

Dans ce mme catalogue, excuter :


openssl rsa -in my_private_key.pem -out my_private_key.pem o my_private_key.pem est la cl prive

Configuration Racoon (phase 1)

Editer le fichier /etc/racoon/racoon.conf sur la passerelle 192.168.1.1:


path certificate "/etc/racoon/certs"; remote 192.168.2.1 { exchange_mode main; certificate_type x509 "my_certificate.pem" "my_private_key.pem"; verify_cert on; my_identifier asn1dn; peers_identifier asn1dn; proposal { encryption_algorithm 3des; hash_algorithm md5; authentication_method rsasig; dh_group modp1024; } }

Configuration Racoon (phase 2)

Toujours dans le fichier /etc/racoon/racoon.conf sur la passerelle 192.168.1.1:


sainfo address 10.1.1.0/24[any] any address 10.1.2.0/24[any] any { pfs_group modp768; encryption_algorithm 3des; authentication_algorithm hmac_md5; compression_algorithm deflate; }

On remarquera que la phase 2 est identique la phase 2 du cas prcdent

Lancement de racoon

Il suffit pour cela d'excuter la commande (sur les 2 passerelles) :


# racoon ou # racoon -f <fichier_de_conf_racoon>

On peut observer les ngociations dans les logs :


# tail -f /var/sys/syslog

On peut galement vrifier que les SA sont cres correctement :


# setkey -D

Traces rseau : tcpdump, ethereal,...

Authentification ICMPv6 entre 2 nuds 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 nuds sur un lien local (2/2)


FE80::1# setkey -c spdadd FE80::1 FE80::2 icmp6 -P out ipsec ah/transport//require; spdadd FE80::2 FE80::1 icmp6 -P in ipsec ah/transport//require; FE80::2# setkey -c spdadd FE80::2 FE80::1 icmp6 -P out ipsec ah/transport//require; spdadd FE80::1 FE80::2 icmp6 -P in ipsec ah/transport//require;

You might also like