Lea-Linux & Friends:   LinuxFR   GCU-Squad   Zarb.Org   StandBlog
Point d'accès sécurisé par OpenVPN


Sommaire

Introduction

Ceci est la suite de Créer un point d'accès sécurisé avec hostAPd. Pourquoi me direz-vous ? Et bien, d'abord, pour la beauté de la chose. Ensuite, parce que certains clients font tout simplement planter mon point d'accès, qui tourne avec le module Madwifi. Donc j'ai voulu essayer autre chose.

Présentation

Le but recherché, et c'est très important de le souligner, est de créer un point d'accès sécurisé sans WEP ni WPA, ni WPA2. Le point d'accès apparaît comme non-sécurisé, mais si tout le monde peut s'y associer, ce n'est pas pour autant qu'il va être ouvert.

Je dispose toujours du même matériel :

  • Une freebox basique (sans fonctions routeur ni wifi).
  • Un PC (passerelle pour le reste du document) connecté directement à la freebox sous Debian/testing. Elle dispose de deux cartes réseau Ethernet RJ45 (filaire) qui sont identifiées par l'OS en tant que eth_adsl et eth_local. La freebox est reliée sur eth_adsl. Un firewall tourne entre eth_adsl et eth_local à l'aide d'iptables.
  • Un switch branché sur eth_local, et sur lequel sont reliés deux clients de manière on ne peut plus classique.
  • Une carte Wi-Fi D-Link DWL-G520 PCI avec chipset Atheros (le chipset importe beaucoup plus que la carte, croyez moi !!).
  • Un ordinateur portable qui a un chipset Wifi Atheros fonctionnant avec ath9k.

Image:Topologie_Wifi_OpenVPN.png


Inconvénient par rapport au WPA / WPA2

  • C'est plus compliqué à installer
  • Les clients doivent pouvoir installer OpenVPN

Pré-requis

Malheureusement, je ne peux pas considérer que vous partez avec zéro connaissance. Mais voici la liste de ce qui doit déjà marcher sur votre installation :

  • Le chipset Wifi doit être reconnu sur le serveur
  • Le réseau doit être fonctionnel sur le serveur
  • Le serveur dispose d'un serveur DHCP fonctionnel pour le réseau local.
  • iptables doit être installé sur le serveur
  • Le client doit avoir une carte Wifi qui marche
  • Des notions de VPN sont conseillées.

Préparation du point d'accès

Toutes les commandes de cette partie sont à exécuter avec les droits du super utilisateur.

Création de l'interface réseau

Disposant d'une carte géré par le pilote madwifi, il me faut tout d'abord créer l'interface à l'aide de . Cela permet de créer plusieurs interfaces virtuelles qui fonctionnent toutes sur la même carte réseau physique, mais dans des modes différents. Allons-y :

Cela crée une interface virtuelle nommée ath0 à partir de la carte wifi0 en mode "ap", c'est-à-dire "Access Point" soit "Point d'accès".

Ensuite, il faut fixer le SSID, c'est à dire le nom du réseau Wifi qui sera identifié par le client :


Vous pouvez changer d'autres paramètres sur cette interface, comme le canal utilisé. Reportez-vous à la documentation de pour en savoir plus.

Et enfin, il faut démarrer l'interface nouvellement créée.


Pour rendre cette configuration persistante, il suffit de modifier le fichier sous Debian et d'y rajouter ces lignes :


Installation de OpenVPN

Je suis sous Debian, donc si ça vous vexe pas, je vais décrire la procédure d'installation à la mode Debian :) Et c'est plutôt simple :

Pouf pouf, c'est fait. Pour les autres distributions, je doute que ce soit plus compliqué, OpenVPN étant un logiciel couramment utilisé.

Configuration de OpenVPN

Génération des certificats

Alors je ne vais pas réinventer la roue. Je vous renvoie au tutoriel d'Ubuntu pour la génération des fichiers du VPN

Création d'un VPN

J'ai donc un fichier monvpn.conf dans qui ressemble à ça :


J'ai mis des commentaires là où c'est important de comprendre. Les autres paramètres sont nécessaires, mais les garder intacts est une super bonne idée :)

Et après, il n'y a plus qu'à démarrer le VPN :


Normalement, cette commande est exécutée automatiquement lors du démarrage de la machine. Allez faire un tour dans pour faire du démarrage sélectif de VPN.

Modification du pare-feu

C'est la partie la plus délicate. C'est celle qui m'a motivé à faire ce tutoriel :) Pour comprendre la suite, il faut comprendre le trajet d'un paquet arrivant par le VPN sur la passerelle :

  • ath0 : un paquet arrive encapsulé et chiffré par le port 1194 en UDP
  • Le processus OpenVPN, qui écoute sur le port et l'adresse lié à l'interface, reçoit ce paquet, le déchiffre et le renvoi au bon endroit. Comme le client envoie tous les paquets via l'adresse de l'interface créée par OpenVPN soit 192.168.254.1
  • tun0 : reçoit donc le paquet en clair, et doit le transmettre à la bonne interface de sortie (car à part le ping, il n'y a rien à destination de cette interface).
  • eth_adsl, eth_lan : selon la destination du paquet.

Sécurisation de l'interface ath0

Le but est déjà de verrouiller l'interface sans-fil pour ne laisser passer que deux flux :

  • Le DHCP. Bah oui, on pourrait configurer les clients à la main, mais c'est quand même plus pratique d'avoir le DHCP qui s'occupe de ça. Et ce n'est pas bien dangereux d'avoir une IP si on ne peut rien faire avec. Pour les paranoïaques, j'imagine que cela pose un problème de sécurité, si jamais il y a des failles dans le serveur DHCP. Il faut savoir qu'en WPA, le chiffrement de la connexion se fait AVANT le DHCP, ce qui est mieux. C'est un inconvénient de cette solution. À vous de voir.
  • Le tunnel OpenVPN. Normal.

Donc avec iptables, ça donne ça :


Et comme moi, j'utilise ferm pour me simplifier la vie, voici le résumé dans une syntaxe lisible par ce logiciel :

Bon à partir de là, vous pouvez respirer, il est normalement impossible de se connecter via l'interface ath0 sur votre réseau.

Préparation du client

Je ne dispose que d'un client sous Ubuntu, donc je ne détaillerai l'installation que pour ce système. Sachez que le client OpenVPN existe sous Windows, mais que la configuration se fait en éditant un fichier de configuration.

Ubuntu 8.10 avec NetworkManager

Il faut préalablement installer les deux paquets suivants :


Ensuite, il suffit suivre les étapes suivantes :

  • Cliquer sur l'icône du réseau, et sur "Connexions VPN" puis "Configurer le VPN"
  • Cliquer sur "Ajouter"
  • Paramètres
    • Nom de la connexion : "Mon VPN"
    • Passerelle : 192.168.1.254
    • Authentification, Type : Certificat "TLS"
    • Certificat de l'utilisateur : client.crt
    • Certificat du CA : ca.crt
    • Clé privée : client.key
    • Private Key Password : le mot de passe utilisé pour la génération de la clé client
  • Onglet Paramètres IPv4, cliquer sur le bouton "Routes..."
  • Cocher la case "Ignorer les routes automatiquement obtenues", pour ignorer les routes obtenues avant la connexion VPN. Je sais, c'est pas clair du tout...
  • Valider le tout

Ensuite, il suffit de se connecter au Wifi, et de lancer le VPN. C'est fait :)

Conclusion

Cette alternative à WPA n'est pas ultime. Normalement, WPA s'occupe de tout. Cependant, cela permet de fournir une solution lorsque le chipset ne supporte pas le WPA (ce qui se fait rare), ou bien que le pilote n'est pas assez mature pour être stable en production.

Copyright

© 2009 Glandos

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike icon
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique 2.0 :
http://creativecommons.org/licenses/by-sa/2.0/
Affichages

Serveur hébergé par Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons CC-BY-SA