Par Glandos.
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.
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 :
Attention ! Ce tutoriel décrit les opérations dans le sens logique d'une installation. Cependant, si vous le suivez dans l'ordre, il se peut que votre réseau se retrouve sans défense, et complètement accessible pendant un certain temps. Si vous voulez prendre le moins de risques possible, il est préférable de commencer par les règles IPTables.
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 :
Toutes les commandes de cette partie sont à exécuter avec les droits du super utilisateur.
wlanconfig ath0 create wlandev wifi0 wlanmode ap
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 :
iwconfig ath0 essid "Mon OpenVPN"
Vous pouvez changer d'autres paramètres sur cette interface, comme le canal utilisé. Reportez-vous à la documentation de iwconfig pour en savoir plus.
Et enfin, il faut démarrer l'interface nouvellement créée.
ifconfig ath0 192.168.1.254 netmask 255.255.255.0
Pour rendre cette configuration persistante, il suffit de modifier le fichier /etc/network/interfaces sous Debian et d'y rajouter ces lignes :
# Interface pour le VPN auto ath0 iface ath0 inet manual madwifi-base wifi0 madwifi-mode ap wireless-channel 9 address 192.168.1.254 netmask 255.255.255.0 broadcast 192.168.0.255
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 :
apt-get install openvpn
Pouf pouf, c'est fait. Pour les autres distributions, je doute que ce soit plus compliqué, OpenVPN étant un logiciel couramment utilisé.
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
J'ai donc un fichier monvpn.conf dans /etc/openvpn qui ressemble à ça :
## Pour ne répondre au VPN que sur l'interface ath0 local 192.168.1.254
port 1194
proto udp
## Utilisation du mode routé dev tun
## Fichiers générés à la section précédente ca ca.crt cert monvpn.crt key monvpn.key # This file should be kept secret
dh dh1024.pem
## Adresse de l'interface de sortie du VPN server 192.168.254.0 255.255.255.0
ifconfig-pool-persist ipp.txt
## Permet de faire passer tout le trafic du client à travers le VPN push "redirect-gateway local"
keepalive 10 120
comp-lzo
user nobody group nogroup
persist-key persist-tun
status openvpn-status.log
log-append /var/log/openvpn.log
verb 3
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 :
/etc/init.d/openvpn start
Normalement, cette commande est exécutée automatiquement lors du démarrage de la machine. Allez faire un tour dans /etc/default/openvpn pour faire du démarrage sélectif de VPN.
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 :
Le but est déjà de verrouiller l'interface sans-fil pour ne laisser passer que deux flux :
Donc avec iptables, ça donne ça :
## ath0 : On accepte les paquets en UDP sur le port du VPN iptables -t filter -A INPUT -i ath0 -p udp -m udp --dport 1194 -j ACCEPT
## ath0 : On accepte les paquets en UDP sur le port DHCP iptables -t filter -A INPUT -i ath0 -p udp -m udp --dport 67 -j ACCEPT
## tun0 : Il faut bien que le VPN envoie et reçoive des paquets iptables -t filter -A INPUT -i tun0 ACCEPT
## Ne tapez cette commande QUE si vous N'avez PAS d'autres règles déjà en place ! iptables -t filter -A INPUT -i "!ath0" ACCEPT
## Par défaut, on jette tous les paquets en entrée. La règle précédente vous permettra d'avoir encore accès ## à votre machine par le réseau câblé. Sinon, tout sera bloqué... iptables -t filter -P INPUT DROP
## Les paquets ne doivent pas passer à travers une autre interface directement, ## mais doivent tous être délivré à OpenVPN. ## C'est très important ! iptables -t filter -A FORWARD -i ath0 DROP
## Maintenant, on fait la règle de NAT pour faire sortir les paquets déchiffré par OpenVPN sur Internet. ## Si on ne fait pas ça, seul les paquets à destination du réseau local arriveront à destination. iptables -t nat -A POSTROUTING -s 192.168.254.1 -j MASQUERADE
Et comme moi, j'utilise ferm pour me simplifier la vie, voici le résumé dans une syntaxe lisible par ce logiciel :
# Activation du NAT (juste pour le VPN dans ce cas) table nat { chain POSTROUTING saddr 192.168.254.1 MASQUERADE; } table filter {
#Tout le trafic en sortie est autorisé chain OUTPUT { policy ACCEPT; }
# On filtre tout ce qui arrive chain INPUT { policy DROP; interface ath0 { proto udp dport openvpn ACCEPT; proto udp dport bootps ACCEPT; } interface tun0 ACCEPT;
# D'autres règles sont nécessaire pour que Internet marche. interface eth_adsl { # On accepte seulement les paquets qui reviennent mod state state INVALID DROP; mod state state (ESTABLISHED RELATED) ACCEPT; }
}
# Interdiction de forwarder des paquets ! chain FORWARD interface ath0 { DROP; }
}
Bon à partir de là, vous pouvez respirer, il est normalement impossible de se connecter via l'interface ath0 sur votre réseau.
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.
Il faut préalablement installer les deux paquets suivants :
apt-get install network-manager-openvpn openvpn
Ensuite, il suffit suivre les étapes suivantes :
Ensuite, il suffit de se connecter au Wifi, et de lancer le VPN. C'est fait :)
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.
© 2009 Glandos
![]() ![]() ![]() |
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique 3.0 : http://creativecommons.org/licenses/by-sa/3.0/ |