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