TP IPSEC Linux
Transcription
TP IPSEC Linux
TP VPN But : Monter un tunnel VPN entre les deux sites. A et B Routeur TP 192.168.1. 0 1A 2A E0 :192.168.1.1 3A E1 :192.168.2.1 4A 1B 192.168.2. 0 2B 3B 4B Les tunnels VPN se feront entre le les PC de même nom en utilisant le protocole IPSEC avec le protocole d’échange de clef dynamique ISAKMP. Etapes à suivre : 1) Recompiler le noyau linux pour supporter IPSEC si besoin 2) Installation des logiciels pour utiliser l’utilitaire Racoon qui permettra de gérer le protocole ISAKMP 3) Configurer Racoon 4) Tester le tunnel IPSEC tunnel cryptographie. 1) Recompilation du noyau Avant de recompiler le noyau, il faut s’assurer que le support n’est pas déjà présent dans le noyau (ou en module). Pour cela on tape les commandes suivantes : # modprobe esp4 # modeprobe ah4 # modeprobe ipcomp Si une erreur est présente, il est nécessaire de compiler le noyau. Pour cela, il faut activer les bonnes options lors de la création du noyau : il faut activer l’API Crypto et les options relatives de l’utilisation de l’IPSEC (Device Driver -> Networking support ->Networking options) : - PF_key socket : interface de comunication permettant de définir les politiques de sécurité et les associations de sécurité propres à IPSEC 1/8 - AH transformation : implémentation du protocole AH de IPSec - ESP transformation : implémentation du protocole ESP de IPSec - IPCOMP transformation : implémentation du protocole IPComp (compression) de IPSec - IPSec user configuration interface : interface avec les outils de configuration en mode utilisateur Pour vérifier que ces modules sont compilés, essayer de les charger : # modprobe esp4 # modeprobe ah4 # modeprobe ipcomp 2) Utilisation de Racoon Pour utiliser, le protocole IKE (ISAKMP) sous linux, il faut installer les utilitaires IPSec-tools (http://ipsec-tools.sourceforge.net) et racoon. Ubuntu le upporte dans ses paquets. (apt-cache search ipsec-tools racoon) Ipsec-tools va contenir les outils permettant de manipuler les associations de sécurité via la commande setkey et le fichier de configuration ipsec-tools.conf Racoon possède deux fichiers de configuration : a) racoon.conf qui définit le comportement du processus Isakmp b) psk.txt qui contient les secrets partagés. c) Setkey.conf qui définit les politiques de sécurité d’IPsec Sous Linux, pour utiliser ipsec, le noyau a besoin de deux bases de données : - la Security Policy Database(SPD) qui spécifie à quel paquet on applique Ipsec. Une entrée de la SPD décrit qui et comment une association de sécurité (SA) est appliquée. - La Security Association Database(SAD) contient les clefs de chaque SA. 2/8 a) racoon.conf Le fichier racoon.conf est décomposé en plusieurs parties. Seules les parties « remote » et « sainfo » sont intéressantes, les autres étant plus statiques. La partie « remote » précise le comportement de racoon pour la phase I d'authentification pour une machine distante donnée. La partie « sainfo » définit le comportement de racoon pour la phase II(négociation des algorithmes et des clés et création des SA correspondantes). Dans le fichier de configuration suivant (sur la machine 192.168.2.18), on veut monter un tunnel entre l’adresse destination 192.168.2.25 et l’adresse locale 192.168.2.18 (cela peut être des réseaux différents des passerelles si on est en mode tunnel !) Pour vérifier, la syntaxe, vous pouvez taper man racoon.conf 3/8 log debug; # Fichier contient les secrets partagés. # pour IKE entre la machine 192.168.1.25 et 192.168.2.18 # avec une clef partagée définit par ip dans le fichier psk.txt path pre_shared_key "/etc/racoon/psk.txt"; remote 192.168.1.25 { proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group modp1024; } exchange_mode main; } sainfo address 192.168.2.18 any address 192.168.1.25 any { pfs_group modp1024; lifetime time 20 min; encryption_algorithm 3des; authentication_algorithm hmac_sha1; compression_algorithm deflate; } path pre_shared_key specifie le chemin ou se trouve le fichier des secrets partagés. C’est utilisé pour authenytifier dans la phase 1 d’IKE. Dans ce fichier on doit trouver une ligne avec 192.168.2.18 toto my_identifier spécifie le login utilisé pendant la phase 1 (déclaré dans le psk.txt), on n’est pas obligé de l’utiliser. : spécifie les algorithmes utilise pendant la phase 1. anonymous signifie que l’on peut dialoguer avec n’importe qui. On peut limiter par adresse IP remote décrit le mode d’échange de la phase 1 aggressive -> mode aggressif. On peut utiliser aussi main et base as base. Si un destinataire essaye un échange avec un mode non expliqué ici la connexion est refusée. exchange_mode identifier définit le login utilisé and lifetime byte définit la durée de vie de l’association de sécurité. Elle est définit en unité de temps et d’octet. On peut utiliser sec, min and hour comme durée de vie en temps. Et on peut utiliser B, KB, MB and comme durée de vie d’octet. lifetime time proposal décrit les algorithmes utilisés décrit l’algo d’encryptions de la phase 1, racoon peut utiliser des, 3des, rc5, idea, cast, blowfish comme algorithme d’encryption encryption_algorithm 4/8 hash_algorithm décrit l’algo de « hachage », racoon peut utiliser md5 et sha1. décrit l’algio d’authentification de la phase 1. dans l’exemple, on utilise une clef partagée (Pre-shared Key) authentication_method décrit l’algo d’échange de clefs Diffie-Hellman utilisé, racoon peut utiliser les groupes 1, 2 et 5 dh_group : spécifie les algorithmes utilise pendant la phase 2. anonymous signifie que l’on peut dialoguer avec n’importe qui. On peut limiter par adresse IP sainfo décrit l’algo d’échange de clefs Diffie-Hellman utilisé pendant la phase 2, racoon peut utiliser les groupes 1, 2 et 5 pfs_group and lifetime byte définit la durée de vie de l’association de sécurité. Elle est définit en unité de temps et d’octet. On peut utiliser sec, min and hour comme durée de vie en temps. Et on peut utiliser B, KB, MB and comme durée de vie d’octet. lifetime time décrit l’algo d’encryptions pour ESP, racoon peut utiliser 3des, cast, blowfish, twofish, rijndael et null_enc comme algorithme d’encryption encryption_algorithm décrit l’algo d’authentification pour ESP et AH, racoon peut utiliser hmac_sha1, hmac_md5 et kpdk. authentication_algorithm Pour lancer racoon : racoon -F -d -f /etc/racoon/racoon.conf. Les options : -F permet d'afficher à l'écran les messages de racoon. -d affiche les messages de debug de racoon : permet de détecter plus facilement les erreurs. -f : permet de passer un fichier en paramètre. ou /etc/init.d/racoon start /etc/init.d/racoon stop b) ipsec-tools.conf Ce fichier de configuration (/etc/ipsec-tools.conf) permet de définir la configuration d’IPsec proprement dit (AH, Esp, tunnel ou transport). 5/8 La syntaxe de ce fichier est : spdadd src_range dst_range proto policy src_range et dst_range : adresses réseaux que l'on souhaite sécuriser proto : protocoles à encapsuler : ip, tcp, icmp,esp... policy : politique de sécurité à utiliser Par exemple : spdadd 192.168.2.0/24 192.168.1.0/24 any -P in ipsec esp/tunnel/10.100.28.210.100.27.2/require; spdadd : ajout d'une politique de sécurité dans la base de données (Security Policy Database) : 192.168.2.0/24 192.168.1.0/24 correspond aux 2 réseaux auxquels s'appliquent la SP. Il s'agit d'une SP pour un flux entrant donc le premier réseau à spécifier est le réseau distant. any : indique que tous les protocoles seront encapsulés par IPSec -P in ipsec esp/tunnel/10.100.28.2-10.100.27.2/require : correspond à la politique de sécurité. Cela veut dire que tout paquet en provenance du réseau 192.168.2.0 à destination du réseau 192.168.1.0 devra utiliser IPSec en mode ESP en créant un tunnel entre les 2 passerelles d'adresse 10.100.28.2 et 10.100.27.2. Le « require » signifie que c'est obligatoire. L’option –P in définit les flux entrants pour définir les flux transitants , on utilisera l’option –P fwd et pour les flux sortants –P out. On le lance en utilisant la commande setkey –f /etc/ipsec-tools.conf. Voici quelques options utiles : - D : affiche toutes les SA de la BDD. -DP : affiche les SA et les SP -F : efface les SA -FP : efface les SA et les SPOn visualise les SPD avec la commande setkey –PD 1) Ipsec transport ESP entre deux machines #!/usr/sbin/setkey -f # # Flush SAD and SPD flush; spdflush; # Create policies for racoon spdadd IP_source Ip_destinataire any-P out ipsec esp/transport//require; spdadd IP_destinataire IP_source any -P in ipsec esp/transport//require; 6/8 dans notre cas de figure cela donne : #!/usr/sbin/setkey -f # # Flush SAD and SPD flush; spdflush; spdadd 192.168.2.18 192.168.1.25 any -P out ipsec esp/transport//require; spdadd 192.168.1.25 192.168.2.18 any -P in ipsec esp/transport//require; 2) Ipsec tunnel entre deux réseaux ======= ESP ========== | | Réseau-A Passerelle-A Passerelle-B Réseau-B 10.0.1.0/24 ---- 172.16.0.1 -------- 172.16.0.2 ---- 10.0.2.0/24 Pour la passerelle A #!/usr/sbin/setkey -f # # Flush SAD and SPD flush; spdflush; spdadd 10.0.1.0/24 10.0.2.0/24 any -P out ipsec esp/tunnel/172.16.0.1-172.16.0.2/require ; spdadd 10.0.2.0/24 10.0.1.0/24 any -P in ipsec esp/tunnel/172.16.0.2-172.16.0.1/require ; Pour la passerelle B spdadd 10.0.2.0/24 10.0.1.0/24 any -P out ipsec esp/tunnel/172.16.0.2-172.16.0.1/require ; spdadd 10.0.1.0/24 10.0.2.0/24 any -P in ipsec esp/tunnel/172.16.0.1-172.16.0.2/require ; c) psk.txt # IPv4 Adressen IP_destinataire 5.0.0.1 192.168.2.18 simple psk 0xe10bd52b0529b54aac97db63462850f3 toto # USER_FQDN [email protected] motdepasse [email protected] This is a psk for an email address # FQDN www.spenneberg.net This is a psk 7/8 3) Modifier le fichier racoon.conf, setkey.conf pour avoir cette configuration entre deux PC A et B. Vérifier que le fichier partagé psk.txt est en mode 600 4) Tester le tunnel en utilisant la commande traceroute et Ethereal. Liens : http://www.ipsec-howto.org/x247.html http://www.netbsd.org/fr/Documentation/network/ipsec/ http://www.kame.net/racoon/ http://www.daemonnews.org/200101/ipsec-howto.html http://www.linux-france.org/prj/inetdoc/guides/lartc/lartc.ipsec.automatic.keying.html 8/8