Etudes des différents modes et algorithmes d IPSEC Projet individuel : master e-secure deuxième année. Encadré par M. Jean Saquet. Année Universitaire 2012-2013. Quentin Mariette 04/03/2012 1
Sommaire 1) Qu est-ce qu IPSec? a. Les attaques possibles. b. Fonctionnement d IPsec. c. Le déni de service avec IPSec. 2) Mise en place des tests. a. Mise en place d un réseau IPv6. b. Choix des outils de mesure. c. Tests de références. d. Tests en mode Transport. i. Authentification. ii. Chiffrement. iii. Authentification et chiffrement. e. Tests en mode Tunnel. 3) Résultats des tests. a. Résultats de l authentification. b. Résultats su chiffrement. c. Résultats sur l authentification et le chiffrement. 2
Introduction Internet est devenu la technologie incontournable dans la vie courante. Depuis son arrivée en France au milieu des années 90 jusqu à nos jours, il a connu un immense succès et ne cesse d évoluer. Victime de son succès, les limites de son utilisation sont rapidement apparues : nombre de machines connectables (épuisement des adresses IPv4) et l absence de sécurité. Pour remédier au problème des adresses, une nouvelle version du protocole IP (Internet Protocol) a été créée : IPv6. Avec cette nouvelle version, un mécanisme de sécurité est apparu lui aussi : IPSec (Internet Protocol Security). Il a pour but de sécuriser le transfert de données sur les réseaux IP tel qu Internet. Ce mécanisme permet de relier plusieurs sites ou ordinateurs distants de manière sécurisée. Le but de notre travail est de tester les différents modes et algorithmes utilisés par IPSec afin d étudier leurs impacts sur le réseau. 3
1) Qu est-ce qu IPSec? IPSec est souvent utilisé pour la création de VPN (Virtual Private Network). Il répond à deux grands principes de la sécurité informatique qui sont l intégrité et la confidentialité des données. La particularité d IPSec est le niveau sur lequel agit celui-ci : la majeure partie des autres protocoles de sécurité se placent au niveau application du modèle OSI. IPSec se place au niveau réseau ce qui le rend totalement indépendant des applications. a. Les attaques possibles. Sur un réseau IP, il existe 3 attaques différentes possibles qui sont bien connues : L homme du milieu. Le déni de service. L écoute du réseau. La première, l homme du milieu, consiste à faire croire à 2 machines qu elles communiquent ensemble alors que dans la réalité, une machine s est positionnée entre elles. Celle-ci reçoit les messages des deux machines, et peut donc récupérer et/ou modifier les informations qu elle reçoit avant de transmettre le message au destinataire final. Dans l exemple ci-dessus, les machines A et B croient communiquer directement entre elles alors qu une machine pirate s est infiltrée et intercepte tous les messages venant de A et B. La deuxième attaque, le déni de service, a pour but de rendre inaccessible une machine voire une partie d un réseau. Pour réussir cela, un pirate va généralement utiliser plusieurs machines (cela peut aller jusqu à plusieurs milliers de machines) pour inonder la machine visée. Le but est d envoyer un très grand nombre de requête vers la machine visée afin que celle-ci soit submergée de messages et qu elle n arrive plus à répondre aux requêtes d autres machines. Si la même chose est effectuée vers un routeur par exemple, il serait possible de rendre inaccessible l ensemble du réseau se trouvant derrière ce routeur. 4
La troisième attaque, l écoute du réseau, permet de récupérer les informations qui transitent sur un réseau. Un pirate se trouvant dans un réseau «écoute» ce qui se passe sur le réseau. Plus précisément, il regarde le contenu des messages qu il récupère. Si une machine du réseau envoie un mot de passe en clair, le pirate pourra récupérer le mot de passe et l utiliser plus tard pour s introduire sur la machine. b. Fonctionnement d IPSec. La sécurisation d une connexion par IPSec permet de contrer deux des trois attaques précédemment citées : l homme du milieu et l écoute du réseau. En effet, IPSec contient un système d authentification ainsi qu un mécanisme de chiffrement. Authentification et chiffrement IPSec définit deux extensions : AH (Authentification Header) et ESP (Encapsulation Security Payload). AH fournit l authentification et l intégrité. L authentification permet de vérifier et de s assurer que les données reçues ont bien été envoyées par la personne avec qui on pense parler. L intégrité permet de vérifier que les données reçues n ont pas été modifiées pendant le trajet. Ces deux mécanismes permettent de contrer la première attaque de l homme du milieu en vérifiant que l émetteur du paquet reçu est bien celui que l on croit et que le paquet n a pas été modifié. 5
Voilà donc la première attaque contrée, mais il reste maintenant à protéger nos données d un pirate à l écoute sur le réseau. C est ici que la seconde extension intervient en fournissant la confidentialité. ESP va se charger de chiffrer les données. Ainsi, un pirate qui écoute le réseau pourra toujours voir les paquets du réseau, mais il ne sera pas capable de lire les données que contiennent les paquets (voir exemple ci-dessous). En plus de fournir la confidentialité, ESP fournit les mêmes services qu AH. IPSec peut être utilisé dans deux modes différents : le mode transport ou tunnel. Le mode transport : Ce mode d IPSec ne peut être utilisé que dans le cas d une communication entre deux hôtes. Le trajet utilisé pour aller d un hôte à un autre n est pas important. Seules les données sont chiffrées et/ou authentifiées, le reste du paquet demeurant inchangé. Le mode tunnel : Dans ce mode, la totalité du paquet est chiffré et/ou authentifié. Le paquet est ensuite encapsulé dans un nouveau paquet IP. Ce mode est utilisé pour la création de VPN qui permet de faire communiquer deux réseaux entre eux au travers d Internet. Association de sécurité (SA) Lors d une communication sécurisée par IPSec, il faut définir certains paramètres essentiels au bon fonctionnement de la communication. Ces différents paramètres sont l extension (AH ou ESP), les algorithmes ainsi que les modes utilisés (transport ou tunnel). Toutes ces informations sont stockées dans les SA. 6
SAD et SPD La SAD et la SPD sont deux bases de données qui permettent de gérer les politiques de sécurité. La SAD (Security Association Database) contient l ensemble des SAs. La SPD (Security Police Database) contient les règles à suivre pour un paquet. Avant d envoyer un paquet, cette base est consultée pour savoir si le paquet doit respecter une règle de sécurité. Si oui, on regarde dans la SAD la SA qui correspond et on l applique. Si aucune SA ne correspond, le protocole IKE est utilisé. Echange de clés Le protocole IKE (Internet Key Exchange) va négocier la connexion. Dans un premier temps, il va permettre d authentifier les deux extrémités du tunnel, puis dans un second temps, de négocier les algorithmes de chiffrement et d authentification qui seront utilisés par IPSec. L implémentation d IKE que nous utiliserons s appelle Racoon. c. Le déni de service avec IPSec. IPSec permet donc d authentifier une communication et de préserver la confidentialité de celle-ci. Cependant, IPSec ne permet pas de prévoir le déni de service. Il pourrait presque faciliter cette attaque. En effet, si un pirate sait que le routeur d une entreprise fonctionne avec IPSec, il peut faire exprès d envoyer de très nombreux paquets vers celui-ci en se faisant passer pour la machine étant à l autre extrémité du tunnel. Ceci n est pas un problème pour IPSec qui grâce à son mécanisme d authentification se rendra compte de la tromperie. Cependant, si le pirate inonde le routeur de paquets, celui-ci devra faire le test d authentification pour chaque paquet ce qui pourrait saturer l utilisation du routeur et donc créer un déni de service. 7
2) Mise en place des tests. Afin de pouvoir tester le protocole IPSec, il fallait mettre en place un réseau qui nous servirait de support pour les différents tests. Une fois le réseau fonctionnel, nous pouvons mettre en place une série de tests afin de mesurer les performances de celui-ci au travers d IPSec. a. Construction d un réseau IPv6. Afin de modéliser un réseau IPv6, nous avons mis en place un réseau comprenant 2 Alix ainsi qu un ordinateur classique sous Ubuntu. Comme on peut le voir ci-dessus, chaque ordinateur se trouve dans un sous-réseau IPv6 différent. L Alix positionné en tant que routeur permet donc la transition d un réseau à un autre. C est ce réseau qui servira de support pour l ensemble des tests. b. Choix des outils de mesure. Afin de mesurer les performances du réseau, nous avons choisi deux outils différents. Le premier est très connu car il s agit d utiliser la commande «ping6» du protocole ICMP. Ce premier outil va nous permettre de mesurer le temps mis par une requête pour effectuer un aller-retour entre nos deux machines. 8
Le second outil que l on utilisera sera la commande «scp». Cette commande permet de transférer un fichier entre deux machines distantes en utilisant ssh. Celle-ci va nous donner le temps mis pour transférer l intégralité d un fichier ainsi que le débit moyen du transfert. Pour nos tests avec la commande «scp», nous utilisons un fichier d environ 100 Mégas qui sera envoyé depuis l ordinateur 1 vers l ordinateur 2. c. Tests de références. Avant de partir dans une série de tests qui utiliseront IPSec, il faut tout d abord tester notre réseau pour savoir les performances de celui-ci. Ceci nous permettra d avoir une référence que nous pourrons comparer avec nos futurs résultats. d. Tests en mode transport. i. Authentification. Afin de tester IPSec en mode transport, il faut configurer les deux ordinateurs. Comme cela est expliqué précédemment, avant d envoyer un paquet il faut vérifier la SPD pour savoir si le paquet doit utiliser ou non IPSec. La première chose à faire est donc d ajouter des règles dans la SPD. Pour cela nous utilisons l outil «setkey» qui ne fonctionne qu en super-utilisateur (=root). Pour ajouter vos règles dans la SPD, il est possible de les ajouter une par une ou bien de créer un fichier qui contient toutes vos règles. C est la seconde méthode que nous avons retenue. Comme nous voulons utiliser IPSec en mode transport, voici à quoi doivent ressembler les règles : spdadd 2001:660:7101:cafe::10 2001:660:7101:aaaa::10 any -P out ipsec esp/transport//require; spdadd 2001:660:7101:aaaa::10 2001:660:7101:cafe::10 any -P in ipsec esp/transport//require; Comme on peut le voir, lorsque vous voulez établir une liaison IPSec, vous devez dupliquer vos règles car chaque règle est unidirectionnelle. Dans l exemple ci-dessus, nous nous trouvons sur la machine possédant l adresse «2001:660:7101:cafe::10». On précise donc dans la première règle que pour joindre la machine en «2001:660:7101:aaaa::10» on utilisera IPSec en mode transport avec l extension ESP. La seconde règle répète les mêmes informations mais pour les requêtes entrantes venant de la machine en «2001:660:7101:aaaa::10». 9
L ajout de ces règles dans la SPD indique à la première machine qu elle devra utiliser IPSec en mode transport lorsqu elle voudra communiquer avec l autre machine. Pour que les deux machines puissent communiquer ensemble, il faut faire la même chose sur la seconde machine en inversant les adresses IP. Pour insérer ces nouvelles règles dans la SPD, nous utilisons l utilitaire setkey de la manière suivante : setkey f monfichier Setkey va parcourir le fichier et enregistrer les règles se trouvant à l intérieur. Pour vérifier que les règles ont bien été prises en compte, vous pouvez consulter la SPD en utilisant la commande suivante : setkey DP Si vous voyez vos règles, alors tout va bien. Si vous vous apercevez qu il y a une erreur, par exemple une erreur dans une adresse IP, vous pouvez vider la SPD avec la commande suivante : setkey FP Une fois la SPD mis à jour, il reste à mettre à jour la SAD. C est ici que l utilitaire Racoon va nous servir. Celui-ci va se charger d établir la première connexion entre les deux machines distantes, puis de négocier la SA qui sera utilisée par la suite par IPSec. Pour faire fonctionner Racoon, il faut modifier le fichier «racoon.conf». Voici à quoi ressemble notre fichier «racoon.conf» : path pre_shared_key /etc/racoon/psk.txt remote 2001:660:7101:cafe::10 { exchange_mode main,aggressive; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group modp1024; } generate_policy off; } 10
sainfo anonymous { pfs_group modp768; encryption_algorithm null_enc; authentication_algorithm hmac_md5; compression_algorithm deflate; } La première partie du fichier avec le mot clé «remote» sera utilisée lors de la première phase pour que les deux machines puissent s authentifier mutuellement. Dans notre cas, nous utilisons l authentification par clés partagées. Pour cela nous utilisons le fichier «psk.txt» dans lequel nous entrons le même mot de passe sur les deux ordinateurs. Une fois la première phase passée, Racoon va se charger de négocier les algorithmes qui seront utilisés par IPSec pour le chiffrement et l authentification. Voici les algorithmes d authentification qui sont proposés par racoon : des, 3des, des_iv32, des_iv64, hmac_md5, hmac_sha1. Comme nous avons choisi d utiliser l extension ESP, il faut lui préciser que nous ne voulons pas utiliser le chiffrement des données dans cette partie. Pour cela il suffit d utiliser le mot clé «null_enc». Nous allons donc tester chacun de ces algorithmes afin de savoir s ils fonctionnent tous et lequel de ces algorithmes est le plus efficace. ii. Chiffrement. En ce qui concerne l utilisation des algorithmes de chiffrement avec l extension ESP, il n y a beaucoup de chose à modifier. Comme nous sommes toujours en mode transport entre les deux même machines, il n y a pas besoin de modifier la SPD. La seule chose à modifier se trouve dans le fichier de configuration de Racoon. Il faut indiquer que nous ne voulons pas utiliser d algorithmes d authentification en utilisant le mot clé «non_auth». Pour vérifier que racoon a bien pris en compte cette instruction, il faut consulter la SAD. On peut ainsi consulter les SA présentes et voir quel algorithme est utilisé pour le chiffrement et l authentification. Voici la liste des algorithmes de chiffrement proposée par Racoon : des, 3des, des_iv32, des_iv64, rc5, rc4, idea, 3idea, cast128, blowfish, twofish, rijndael. 11
iii. Authentification et chiffrement. Afin de tester l authentification et le chiffrement en même temps, il suffit d enlever les mots clés «null_enc» et «non_auth» et de les remplacer par chaque algorithme proposé par Racoon. e. Tests en mode tunnel. Pour pouvoir lancer nos tests en mode tunnel, nous devons modifier les règles présentes dans la SPD pour indiquer qu il faut maintenant utiliser le mode tunnel. Ce mode demande quelques informations supplémentaires par rapport au mode transport. Voici les règles à utiliser pour ce mode : spdadd 2001:660:7101:cafe::/64 2001:660:7101:aaaa::/64 any -P out ipsec esp/tunnel/2001:660:7101:cafe::10-2001:660:7101:aaaa::10/require; spdadd 2001:660:7101:aaaa::/64 2001:660:7101:cafe::/64 any -P in ipsec esp/tunnel/2001:660:7101:aaaa::10-2001:660:7101:cafe::10/require; Pour commencer, la première ligne n indique plus l adresse d une seule machine mais celle d un réseau entier. Cela veut dire qu un paquet qui aura pour adresse source une adresse comprise dans le réseau indiqué et une adresse destination comprise dans le second réseau, devra utiliser la liaison IPSec. La seconde ligne indique les deux machines se trouvant aux extrémités du tunnel. Dans notre cas, le tunnel ira d une machine à une autre. Comme on peut le voir ci-dessous représenté par les lignes rouges, le tunnel relie directement les deux machines en empruntant le même chemin qu avec le mode transport. 12
En ce qui concerne l authentification et le chiffrement, il n y a rien de plus à faire que pour le mode transport. Il suffit de tester toutes les combinaisons possibles proposées par Racoon. 13
3) Résultats des tests. Les premiers tests qui ont été faits sont les 2 tests références afin de pouvoir visualiser les impacts d IPSec sur le réseau. Le temps de réponse moyen d un ping sur le réseau est de 0,278 ms. Le temps de transfert de notre fichier est de 27 secondes avec un débit moyen de 3,7 MB/s. a. Résultats de l authentification. En ce qui concerne l authentification, les tests ont été relativement cours car la plupart des algorithmes proposés par racoon ne fonctionnent pas dans notre configuration. Les seuls algorithmes d authentification qui ont fonctionnés sont MD5 et SHA1. Nous allons donc comparer ces deux algorithmes à notre test référence. 0,6 0,5 Temps de réponse au ping (en ms) 0,504 0,522 0,467 0,483 0,4 0,3 0,2 0,278 MD5 SHA1 0,1 0 référence transport tunnel Avec ces premiers résultats, nous pouvons voir que l utilisation de l authentification sous IPSec ralentie déjà un peu le temps de réponse des machines. Ceci n est pas étonnant car il faut que la machine ait le temps de vérifier le paquet entrant, de créer la réponse et de la signer. Nous pouvons constater que la différence entre les deux algorithmes MD5 et SHA1 est quasi nulle. Mais même si celle-ci est minime, on peut voir que dans le mode transport, comme dans le mode tunnel l algorithme SHA1 est légèrement plus lent que MD5. La dernière remarque que l on peut faire est que les temps de réponse du mode tunnel sont un 14
peu plus longs que ceux du mode transport. Regardons maintenant si lors d un transfert de fichier la différence est aussi faible que pour la réponse au ping. 00:50 00:43 00:36 00:28 00:21 00:14 00:07 00:27 Temps de transfert 00:42 00:42 00:32 00:32 MD5 SHA1 00:00 référence transport tunnel Alors qu avec la réponse au ping il n y avait presque pas de différences entre MD5 et SHA1, on peut voir ici qu il faut 10 secondes de plus pour SHA1 par rapport à MD5 pour transférer le fichier de 100 Mégas. Si on compare les débits, le test référence indique un débit de 3,7 MB/s et il est suivi de près par MD5 avec 3,1 MB/s. On peut donc voir que l utilisation de l algorithme MD5 diminue légèrement le débit mais cela reste raisonnable. Contrairement à SHA1 qui diminue le débit jusqu à 2,4 MB/s. Ce qui est plus étonnant, c est que la différence que l on pouvait constater entre le mode transport et le mode tunnel n apparait plus du tout lors du transfert d un fichier. Que ce soit avec MD5 ou SHA1, les temps de transfert sont strictement identiques. On peut donc voir que l usage de l authentification avec l algorithme MD5 permet de garder un débit proche du débit de référence contrairement à l algorithme SHA1. En effet, l algorithme SHA1 entraine une perte de temps d environ 30% par rapport à MD5. L algorithme MD5 est considéré plus faible que SHA1 mais des faiblesses dans SHA1 ont également été trouvées. On peut donc dire que si on veut surtout préserver les performances du réseau, on va préférer MD5 à SHA1. 15
b. Résultats du chiffrement. Pour les algorithmes de chiffrement, les tests ont été plus longs à réaliser car par rapport à l authentification, il y avait plus d algorithmes proposés même si certains ne fonctionnaient pas. En effet sur les 12 algorithmes qui sont proposés par Racoon, seulement 5 d entre eux ont réussi à être testés. En ce qui concerne les algorithmes que nous n avons pas réussi à tester, après avoir lancé l outil «tcpdump» sur une des machines, on pouvait voir que la première phase fonctionnait correctement mais que c était au moment de la négociation des algorithmes que racoon tournait en boucle. Donc sur tous les algorithmes possibles, voici ceux qui ont réussi à être testés : 3DES, DES, Blowfish, Twofish et Rijndael. Comme pour les algorithmes de chiffrement, nous allons commencer par comparer le temps de réponse au ping avec notre test référence. Temps de réponse (en ms) 0,7 0,626 0,6 0,5 0,56 0,495 0,471 0,482 0,468 0,535 0,512 0,516 0,489 3des 0,4 0,3 0,278 des blowfish twofish 0,2 rijndael 0,1 0 référence transport tunnel Lorsque l on regarde les résultats obtenus avec la commande ping, on ne voit pas de grandes différences entre les différents algorithmes. Que ce soit dans le mode transport ou tunnel, les différences sont trop minimes pour permettre de dire lequel de ces algorithmes est le plus efficace sur le réseau. Il y a quand même un algorithme qui se démarque, c est 3DES. Que ce soit en mode tunnel ou transport, il reste le plus lent de tous en ce qui concerne la réponse au ping. 16
Mise à part 3DES, on peut noter que la réponse au ping ne prend pas plus de temps avec le chiffrement qu avec l authentification. Il reste à voir si cela reste vrai avec le transfert d un fichier. Temps de transfert 01:40 01:31 01:32 01:26 01:12 00:57 00:43 00:28 00:27 00:53 00:40 00:41 00:31 00:54 00:41 00:42 00:32 3des des blowfish twofish rijndael 00:14 00:00 référence transport tunnel Voici les résultats obtenus pour le transfert d un fichier de 100 Mégas entre les 2 machines. La première chose que l on remarque en regardant ce graphique, c est le temps mis par 3DES pour réaliser ce transfert. Alors que le test référence avait mis moins de 30 secondes, il faut plus d une minute et trente secondes à 3DES pour réussir à envoyer le fichier. Cela veut dire que le débit moyen avec l utilisation est d environ 1,1 MB/s. On divise donc le débit du réseau par 3 par rapport au test de référence. Plus performant, on retrouve ensuite DES. Il fait mieux que 3DES, mais si on le compare avec les autres algorithmes, on ne peut pas dire qu il soit le mieux placé. Par rapport au test de référence, il double le temps mis pour transférer le fichier. Il divise donc par 2 le débit du réseau. Sur les 3 algorithmes qu il reste, il y en a un qui donne des résultats plutôt très satisfaisants par rapport aux autres. Il s agit de Rijndael mieux connu sous le nom d AES. Les résultats obtenus par cet algorithme sont assez impressionnants. Alors que le test de référence à transférer le fichier en 27 secondes, il n a fallu qu un peu plus de 30 secondes à Rijndael pour effectuer le même transfert. On peut aussi noter qu il n y a quasiment pas de différences entre le mode transport et le mode tunnel. Il y a juste une seconde en plus pour le mode tunnel. On peut penser que 17
ce léger temps supplémentaire correspond au temps qu il faut pour encapsuler la trame chiffrée dans une nouvelle trame. Si l on fait une synthèse sur les algorithmes de chiffrement, on peut noter que finalement, on ne trouve pas de grandes différences sur leur utilisation entre le mode transport et le mode tunnel. S il y avait un algorithme à retenir parmi tous ceux que propose racoon, ce serait Rijndael (ou AES) qui dépasse de loin l ensemble des autres algorithmes. c. Résultats sur l authentification et le chiffrement. Nous avons effectué les tests avec toutes les combinaisons possibles et cela n a rien apporté de plus par rapport aux précédents tests. En effet, le fait de combiner l authentification avec le chiffrement ralentit encore un peu plus le réseau comme on pouvait s y attendre, mais aucune combinaison d algorithmes n inverse la tendance par rapport aux précédents tests. La solution qui se trouve être la plus rapide en ce qui concerne le transfert de fichier est, sans surprise, la combinaison de Rijndael pour le chiffrement avec MD5 pour l authentification. Voici les résultats obtenus avec cette combinaison : Algorithme temps de transfert en mode transport Rijndael (seul) 00:31 MD5 00:45 SHA1 00:54 SHA1. Comme nous l avons vu précédemment, l algorithme MD5 est un peu plus rapide que 18
Conclusion L ensemble des tests qui ont été mis en place nous ont permis d étudier l impact d IPSec sur un réseau IPv6. Les résultats nous indiquent que l utilisation d IPSec sur un réseau varie essentiellement selon l algorithme choisi pour la communication. En effet, le fait d utiliser IPSec en mode transport ou en mode tunnel ne change pas radicalement l impact sur le réseau. En ce qui concerne l authentification et le chiffrement, il faut faire attention à l algorithme que l on veut utiliser car comme nous avons pu le voir, certains algorithmes comme DES et 3DES ralentissent fortement les performances du réseau. Le choix des algorithmes est donc important selon la qualité et l utilisation du réseau. Grâce à ce projet j ai pu approfondir mes connaissances sur les mécanismes de VPN et plus précisément sur IPSec. Cela m a permis de comprendre que les paramètres qui sont fournis par défaut ne sont pas forcément les mieux adaptés à la situation. Voilà pourquoi il est nécessaire d étudier toutes les fonctionnalités possibles afin d obtenir la meilleure des configurations 19
Annexe Manuel de Racoon : http://www.kame.net/racoon/racoon.conf.5 Configuration d IPSec Racoon : http://www.infond.fr/2010/03/basics-9-tutoriel-ipsec.html 20