Les VPNs (Virtual Private Networks) sont une solution sécurisée et économique aux lignes louées dédiées et de ce fait très couteuses. Le principe de cette technologie est simple et consiste en la création d'un tunnel chiffré entre 2 points d'accès utilisant le réseau publique pour support.
Plusieurs topologies existent et sont supportées par FreeS/WAN :
- Lan to Lan
- Client to Lan (config Road Warrior)
- Client to Server (pour utiliser les services d'un serveur par exemple)
Téléchargez le tarball de la version que vous aurez choisi sur le FTP de freeswan.org
En tant que root executer les commandes suivante pour dépacker les sources :
su
mv freeswan-2.03.tar.gz /usr/src
cd /usr/src
tar -xvf freeswan-2.03.tar.gz
Il faut savoir qu'il existe des patchs pour le support de différentes technologies commes le NAT transversal ou le chiffrement X.509, ces patchs doivent être appliqués à ce moment de l'installation par les sources et uniquement par cette méthode.
...Make
Userland - uniquement pour des kernels 2.6
cd /usr/src/freeswan-2.03
make programs
make install
KLIPS - kernels 2.2 2.4 et 2.6
Pour effectuer une installation modulaire de KLIPS :
cd /usr/src/freeswan-2.03
make oldmod
make minstall
Pour effectuer lier statiquement KLIPS à votre noyau :
cd /usr/src/freeswan-2.03
make oldmod
make minstall
L'installation est terminée
Installation à partir des RPM
Ces instructions s'appliquent à des version récentes de RedHat. Mandrake et Suse produisent aussi des RPMs destinés à leurs distributions.
Pour les kernels 2.6 n'oubliez pas les rpm Userland comme :
freeswan-userland-2.03.9-0.i386.rpm
Pour les kernels 2.4 :
- Vous pouvez verifier la version de votre kernel par : uname -r
- Téléchargez la version qui vous correspond comme :
freeswan-module-2.03_2.4.20_20.9-0.i386.rpm
- Téléchargez la version de userland qui correspond :
freeswan-userland-2.03_2.4.20_20.9-0.i386.rpm
note : ces utilitaires ne fonctionneront correctement qu'avec RedHat car très sensibles aux variations du kernel
Pour l'installation executer les commandes suivantes :
su
rpm -ivh freeswan*.rpm
Génération des clés de chiffrement
La commande ipsec newhostkey permet la génération de nouvelles clés d'identification des hôtes.
Plusieurs options permettent de spécifier le mode de génération :
--output : spécifie le chemin et le nom du fichier qui contiendra les cles
--bits : spécifie le nombre de bits utilisés pour les cles (2192 bits par défaut)
--hostname : intègre le nom d'hôte dans les cles
Pour de plus amples informations se reporter au man d'IPSEC NEWHOSTKEY.
Configuration Lan to Lan
Nous utiliserons la topologie suivante :
LAN A ]----[gwA]----[routeur]---------[routeur]----[gwB]----[ LAN B
Rassembler les informations suivantes :
IPs des gateways
Les adresses des réseaux d'extrémité
déterminer des noms FQDN pour l'identification des gateways
Récupérez les clés publiques IPSec par les commandes :
sur la première gateway :
ipsec showhostkey --left
sur la seconde (par une connexion SSH ou en direct sur la machine par exemple)
ipsec showhostkey --right
Editez le fichier /etc/ipsec.conf
# configuration générale
config setup
interfaces="ipsec0=eth0 ipsec1=eth1"
klipsdebug=none
plutodebug=none
# eth0 etant l'interface reliée au LAN x et eth1 etant l'interface reliée
à l'inter-réseau
conn %default
keyingtries=0
authby=rsasig
# configuration de la connexion
conn gauche-droite
left=172.16.0.2 # @ gwB interface sortante
leftsubnet=192.168.0.0/24 # @ réseau LAN A exp : 192.x.x.x/24
leftnexthop=172.16.0.1 # @ passerelle par défaut de gwA
leftid=@gauche.projet.net # FQDN gwA
leftrsasigkey=0sAQNyoS+bzNsiLhqm65ZZ... # clé de gwA
right=172.17.0.2 # @ gwB interface sortante
rightsubnet=192.168.1.0/24 # @ réseau LAN B
rightnexthop=172.17.0.1 # @ passerelle par défaut de gwB
rightid=@right.projet.net # FQDN gwB
rightrsasigkey=0sAQN++TysjAizAn29jKP... # clé de gwB
auto=add # Autorise mais n'effectue pas le
# lancement de la connexion lancement
Remarque :
Les fichiers ipsec.conf doivent être identiques sur les 2 gateways
Remplacer auto=add par auto=start pour monter la connexion au demarrage
Tests de connectivité
Démarrer la connexion
ipsec auto --up gauche-droite
Vous aurez les messages suivants :
104 "gauche-droite" #1: STATE_MAIN_I1: initiate
106 "gauche-droite" #1: STATE_MAIN_I2: sent MI2, expecting MR2
108 "gauche-droite" #1: STATE_MAIN_I3: sent MI3, expecting MR3
004 "gauche-droite" #1: STATE_MAIN_I4: ISAKMP SA established
112 "gauche-droite" #2: STATE_QUICK_I1: initiate
004 "gauche-droite" #2: STATE_QUICK_I2: sent QI2, IPsec SA established
{ESP=>0xd5631de5 <0xcfcffb92}
Testez la connexion
ipsec verify
Vous aurez les messages suivants :
Version check and ipsec on-path [OK]
Checking for KLIPS support in kernel [OK]
Checking for RSA private key (/etc/ipsec.secrets) [OK]
Checking that pluto is running [OK]
Testez la connectivité
Un simple ping d'une machine du LAN A vers le LAN B suffit, pour celà :
D:\>ping 192.168.1.2
Envoi d'une requête 'ping' sur 192.168.1.2 avec 32 octets de données :
Réponse de 192.168.1.2 : octets=32 temps=47 ms TTL=126
Réponse de 192.168.1.2 : octets=32 temps=31 ms TTL=126
Réponse de 192.168.1.2 : octets=32 temps=31 ms TTL=126
Réponse de 192.168.1.2 : octets=32 temps=32 ms TTL=126
Statistiques Ping pour 192.168.1.2:
Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%),
Durée approximative des boucles en millisecondes :
minimum = 31ms, maximum = 47ms, moyenne = 35ms
Pour vérifier que le chiffrement des données qui transitent s'effectue correctement on peut effectuer un dump sur l'une des gateway à l'aide de la commande suivante :
tcpdump -i eth0
Cette méthode vous permet d'installer un VPN en un minimum de temps. Il s'agit d'une configuration de base étant donné que la gestion de polices d'accès sont possibles mais ne sont pas abordées dans cet article.
Une dernière remarque : si le routage vers le tunnel ne s'effectue pas correctement assurez vous que l'ip forward est bien activé sur les gateways.