1 Openswan Réseaux Privés Virtuels (VPN) Fabrice Theoleyre Durée : 2 heures theoleyre@unistra.fr Nous utiliserons dans ce TP la solution Openswan (http://www.openswan.org) pour établir des VPN IPsec. Openswan permet de créer des tunnels chiffrés à l aide d un secret partagé ou des certificats x509. 2 Tunnels avec secret partagé Dans le cas de VPN tunnels, nous avons la topologie décrite en figure 1. Question 1 : Attribuez les adresses IP à chaque interface. Question 2 : Configurez vos routeurs afin d établir une liaison sécurisée entre les routeurs A & B Question 3 : Analysez le trafic entre les routeurs A & B (avec wireshark, tcpdump, etc.) et vérifiez que le trafic est bien crypté. Analysez notamment la phase de négociation de la connexion entre les 2 entités. Pouvez vous notamment intercepter le secret partagé? Question 4 : Lorsque vous capturez le trafic d un ping, vous pouvez voir 2 réponses : à votre avis, pour quelle raison? Question 5 : Quels algorithmes cryptographiques openswan a-t-il choisi pour établir la connexion sécurisée? 2.1 Routage à travers le tunnel VPN Dans un cas usuel, le tunnel VPN sert à relayer des flux cryptés entre une paire de routeurs. On émule une liaison dédiée sur un lien partagé. Question 6 : Mettez en place un tel routage et vérifier avec un analyseur réseau que tout fonctionne correctement (i.e. le LANa est accessible du LANb). Sécurité Réseau - TP Fabrice Theoleyre 1
Routeur A Routeur B interface 1 interface 2 interface 1 interface 2 LAN A LAN B Internet Figure 1 Topologie du réseau dans le cas du tunnel VPN 3 Tunnels avec clés asymétriques Question 7 : x509. Vous pouvez mettre en place les mêmes tunnels, mais avec des certificats Tous les certificats utilisés peuvent notamment être signés par une même CA. Question 8 : Selon vous, quels sont les avantages majeurs d une telle solution? Réponse : L authentification est forte, et les attaques par dictionnaire par exemple sont inefficaces. Par ailleurs, une autorité de certification permet une configuration semi-automatique. Ainsi, il suffit de générer de nouveaux certificats avec la même AC pour qu un routeur les accepte en plus. De même, un renouvellement de certificat ne demande pas de reconfigurer l autre routeur. Enfin, un secret partagé est configuré par connexion. Pour n routeurs entièrement maillés, il vous sera nécessaire n(n 1) secrets partagés, et seulement n certificats... Utilisez les certificats que vous aviez généré dans un des TP précédents pour créer vos tunnels IPsec. Vous devez notamment modifier vos fichiers : Sécurité Réseau - TP Fabrice Theoleyre 2
/etc/ipsec.conf /etc/ipsec.secrets Question 9 : Utilisez les DNs pour spécifier quels routeurs peuvent établir le VPN. Question 10 : Testez en filtrant plus ou moins les DNs. Attention, en sécurité, mieux vaut être le plus restrictif possible. Ainsi, il vaut mieux spécifier entièrement le DN s il est fixe (si l AC est compromise, il faudra au corrupteur trouver le DN autorisé à créer un VPN). 4 Tunnels roadwarriors Il est possible de ne pas spécifier l adresse IP d une des extrémités de la connexion. Les hôtes distants peuvent par exemple être autorisés selon le dn d un certificat signé par une CA connue. Quel est l intérêt d une telle configuration? Vous pouvez, si vous en avez le temps tenter de monter une connexion roadwarrior : right=%any 5 Aide à la Configuration Vous devriez utiliser man ipsec.conf pour obtenir une aide détaillée. Cependant, voici déjà quelques éléments de compréhension pour débuter. 5.1 Concept de côté droit et gauche Un de vos hôtes servira de côté droit, l autre de côté gauche. L ordre importe peu mais soyez cohérents : les deux cotés droits d une connexion IPsec doivent être identiques. Les directives left et right permettent de spécifier ces paramètres. leftnexthop permet de donner un prochain saut pour atteindre la passerelle IPsec lorsqu elle n est pas accessible directement. Par ailleurs, il est possible d annoncer un préfixe réseau accessible via une des extrémités de la connexion via la directive leftsubnet. 5.2 Authentification par clé partagée Pour une authentification avec secret partagé, utiliser authby=secret. Il vous faut également renseigner le fichier /etc/ipsec.secrets en ajoutant une ligne telle que : 192.168.0.1 192.168.0.2 : PSK "cledesecretpartage" Sécurité Réseau - TP Fabrice Theoleyre 3
5.3 Debug Nous vous conseillons d activer le mode debug dans le fichier de configuration (première partie du fichier pour ce qui correspond aux directives du démon) : plutodebug="all" klipsdebug="all" plutostderrlog=/var/log/secure 5.4 Routage Si vous avez besoin de spécifier l interface de sortie pour atteindre l autre routeur VPN : left=192.168.0.2 leftnexthop=192.168.0.1 Je dois passer par l interface avec l adresse 192.168.0.1 pour atteindre le routeur 192.168.0.2. Il se peut sinon selon votre configuration qu openswan ne trouve pas tout seul comment l atteindre. Pour activer le mode tunnel, et router tous les paquets à destination d un sous-réseau à travers le tunnel VPN : leftsubnet=192.168.2.0/24 5.5 Activation d une connexion Un routeur peut avoir une multitude de connexions, qu il charge quand besoin est. Pour ajouter une connexion ipsec dans la liste des connexions connues, ipsec auto --add name, et l activer ipsec auto --up name. Pour débuguer, vous devez relancer le démon de logs /etc/init.d/sysklogd restart. Si vous changez la configuration de ipsec, vous devez le redémarrer /etc/init.d/ipsec restart. Visualisez le fichier /var/log/syslog pour débuguer le démon, et /var/log/auth.log pour débuguer la phase d authentification. Vous pouvez jeter un coup d oeil aux exemples contenus dans /etc/ipsec.d/examples 5.6 Authentification avec certificats Un exemple de configuration pourrait être : conn sample [...] left=192.168.0.1 leftrsasigkey=%cert leftcert=servercert.pem Sécurité Réseau - TP Fabrice Theoleyre 4
right=192.168.0.2 rightrsasigkey=%cert rightid="c=fr, O=CNRS, OU=UMR7005, CN=ticket.u-strasbg.fr, E=theoleyre@unistra.fr" authby=rsasig La directive leftid= est notamment très utile pour filtrer la liste des serveurs qui auront le droit d ouvrir une connexion VPN (un serveur particulier, n importe quel serveur de telle OU, etc.). Vous pouvez aussi être moins strict sur l hôte de droite : rightid="c=*, ST=*, O=*, OU=*, CN=*, E=*" 5.6.1 Stockage des certificats Par ailleurs, utilisez la gestion des certificats de openswan : /etc/ipsec.d/certs : votre certificat /etc/ipsec.d/cacerts : les autorités de certifications auxquelles vous faites confiance (i.e. leur certificat est suffisant) /etc/ipsec.d/private : votre clé privée (attention, ce répertoire ne devrait être accessible qu au superutilisateur!) Sécurité Réseau - TP Fabrice Theoleyre 5