Avec freeRADIUS, implémentation libre d'un serveur RADIUS, on peut tester la configuration banale en simulant des requêtes avec l'outil radtest
livré de base. Mais cet outil ne prend pas en charge les protocoles EAP (utilisés, entre autres, dans 802.1X donc dans le WiFi WPA2-Enterprise, nom commercial de WPA2-EAP). Le logiciel fourni par freeRADIUS, radeapclient
, est compliqué à utiliser : il faut saisir les paquets RADIUS qui seront envoyés au serveur RADIUS… On ne va quand même pas faire clignoter le Wi-Fi de production ? :-
Heureusement, le projet hostapd
, logiciel libre permettant de transformer son ordinateur en un point d'accès Wi-Fi, a créé un outil de test EAP adapté nommé eapol_test
.
L'ennui, c'est qu'il n'est pas livré dans le paquet Debian de freeRADIUS ni dans celui d'hostapd… ÉDIT DU 09/10/2022 : depuis Debian Bullseye (Debian 11), eapol_test est livré par le paquet eapoltest des dépôts officiels. FIN DE L'ÉDIT.
Un guide existe déjà pour compiler eapol_test depuis ses sources. Je copie :
sudo apt-get install git libssl-dev devscripts pkg-config libnl-3-dev libnl-genl-3-dev
;git clone --depth 1 --no-single-branch https://github.com/FreeRADIUS/freeradius-server.git
;cd freeradius-server/scripts/ci
;./eapol_test-build.sh
;sudo cp ./eapol_test/eapol_test /usr/local/bin/
.Ensuite, il faut un fichier de config' pour eapol_test. Je recopie ici celui qui m'intéresse le plus, celui qui permet de tester EAP-TTLS-PAP :
network={
key_mgmt=WPA-EAP
eap=TTLS
identity="a_user@<your-instiutions-domain>"
anonymous_identity="anonymous@<your-instiutions-domain>"
# Uncomment to validate the server's certificate by checking
# it was signed by this CA.
#ca_cert="raddb/certs/ca.pem"
password="changeme"
phase2="auth=PAP"
}
Ensuite, il faut s'assurer que l'IP de la machine qui exécutera eapol_test est bien un client RADIUS autorisé dans le fichier clients.conf
de freeRADIUS.
Il y a plus qu'à tester : eapol_test -c <nom_fichier_conf_récupéré_précédemment> -a <IP_serveur_RADIUS> -s <secret_partage_avec_le_serveur_RADIUS_voir_clients.conf>
. Ça débite bien, mais nous, tout ce qui nous intéresse, c'est le « SUCCESS » ou le « FAILURE » final.