Réaliser une connexion sécurisée WPA pour les réseaux Wifi sous Linux
Pour les tests, j'utilise une Debian GNU/Linux woody, une carte SMC2835W géré par ndiswrapper et un AP Linksys WRT54GS.
WPA
Pour gérer le WPA avec ndiswrapper, il faut ajouter un petit logiciel
qui va prendre en charge ce cryptage : il s'agit de wpa_supplicant.
On trouve ce logiciel ici
Il suffit de télécharger les sources et de les décompacter (au moment de
l'écriture de cet article, c'est la version 0.2.5 qui est disponible).
Avant de les compiler, il faut indiquer quel type de driver Wifi on va
utiliser.
Dans mon cas, j'utilise ndiswrapper (qui va utiliser les drivers
Windows) car les drivers prism54 n'arrivent pas à gérer la carte
SMC2835W qui pourtant est basée sur un chip Prism...
Il faut donc aller dans le répertoire où wpa_supplicant a été
décompacté et ajouter un fichier .config avec la ligne :
CONFIG_DRIVER_NDISWRAPPER=y
Ne reste plus qu'à compiler avec :
make
Et copier les binaires dans un répertoire présent dans le $PATH, comme
/usr/local/bin :
cp wpa_supplicant wpa_passphrase wpa_cli /usr/local/bin
Configuration WPA
On va maintenant configurer wpa_supplicant avec les paramètres du réseau
Wifi sur lequel on souhaite se connecter.
Pour cela, on va créer le fichier /etc/wpa_supplicant et ajouter les
lignes suivantes :
ctrl_interface=/var/run/wpa_supplicant
Dans cette exemple, le réseau Wifi se nomme mon_reseau_wifi et la
clef partagée est ma_clef_partagee.
network={
ssid="mon_reseau_wifi"
psk="ma_clef_partagee"
key_mgmt=WPA-PSK
proto=WPA
}
Configuration réseau
On va maintenant configurer la partie réseau pour utiliser le programme
wpa_supplicant lors de la mise en route de l'interface réseau.
Dans le cas des drivers ndiswrapper, l'interface se nomme wlan0.
Pour la distribution Debian, La configuration se passe dans le fichier
/etc/network/interfaces.
Grâce à la Debian, on va pouvoir utiliser les commandes pre-up et
post-down qui vont nous permettre de lancer et d'arrêter des programmes
avant et après la mise en route de l'interface.
On va ajouter les lignes suivantes pour notre interface :
iface wlan0 inet static
En voici les explications :
address 192.168.1.6
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.42
pre-up modprobe ndiswrapper
pre-up sleep 10
pre-up iwconfig wlan0 essid tdjwifilan
up wpa_supplicant -Dndiswrapper -iwlan0 -c/etc/wpa_supplicant.conf &
post-down pkill -TERM wpa_supplicant
post-down rmmod ndiswrapper
- iface wlan inet static : je n'utilise pas de DHCP sur la partie Wifi, si c'est votre cas, il faut utiliser remplacer cette ligne par : iface wlan0 inet dhcp et ne pas mettre les lignes address, netmask, network, broadcast et gateway,
- address, netmask, network, broadcast et gateway : permet de définir les paramètres de l'interface car je ne n'utilise pas DHCP
- pre-up modprobe ndiswrapper : permet de charger le module ndiswrapper
- pre-up sleep 10 : attends 10 secondes (cela permet au module ndiswrapper d'avoir le temps de charger tout ce qu'il a besoin)
- up wpa_supplicant -Dndiswrapper -iwlan0 -c/etc/wpa_supplicant.conf & : dès que l'interface wlan0 est mise en route (avec ifup wlan0 par exemple) on lance en même temps wpa_supplicant qui va gérer la crypto
- post-down pkill -TERM wpa_supplicant : lors de l'extinction de l'interface on arrête wpa_supplicant
- post-down rmmod ndiswrapper : et on enlève aussi le module ndiswrapper
Configuration du WRT54GS
Se connecter sur l'interface d'administration du WRT.
Puis se rendre dans l'onglet "Sans fil" puis "Sécurité sans fil".
Choisir Clé partagée WPA comme mode de sécurité, TKIP comme algorithmes
WPA, saisir votre clé partagée WPA et donner en nombre de secondes
l'intervalle de renouvellement automatique de la clé et enregistrer les
paramètres.
C'est parti
On est prêt maintenant à lancer l'interface wlan0. Il suffit d'utiliser
la commande :
ifup wlan0
A partir de cette instant, wpa_supplicant ca afficher la négociation
avec l'AP :
Trying to associate with xx:xx:xx:xx:xx:xx (SSID='mon_reseau_wifi' freq=2462 MHz)
WPA: Key negotiation completed with xx:xx:xx:xx:xx:xx
Conclusion
Et voila, Linux et l'AP ont négociés les clefs et on est connecté au réseau Wifi
Commentaires
Afficher les commentaires en Vue non groupée | Vue groupée
JJK sur :
Comme quoi sobriété et pédagogie font bon ménage en cette époque de tape à l'oeil technologique.
Je reviendrai sur votre site pour l'imiter.
David sur :
Merci beaucoup pour ces compliments. Ca donne envie de continuer
A bientôt,
David.
Adon Stéphane sur :
Avec ta permission je te recontacterai pour des préoccupations.
Bien à toi
Stéphane