[TUTO] Borne d'accès wifi avec authentification Radius+LDAP
Forum Accès Internet & Réseaux : [TUTO] Borne d'accès wifi avec authentification Radius+LDAP
1. Attentes
Nous voulons avoir une borne wifi qui fasse du WPA2-Enterprise (WPA TKIP ou CCMP)
* C'est à dire que le client WIFI demande une adresse IP à la borne.
* La borne envoie au serveur Radius le login/mdp saisis par le client.
* Le serveur Radius regarde quelle «base de données» il doit interroger pour cette borne.
* Il contacte le serveur LDAP pour tester la validité du login/mdp saisi par le client et pour déterminer les droits de ce dernier (ici l'autorisation de connexion).
* En fonction de la réponse reçu, le radius autorise la connexion du client ou non.
2. Pré requis et Conseils
Ce tutoriel fonctionne sur les distributions suivantes:
* Debian Etch
Ce guide a été fait avec une Debian Etch. (choix personnel)
* Il vous faut un annuaire LDAP installé, configuré et fonctionnel
Personnellement j'ai donc utilisé OpenLDAP avec smbldap-tools, qui permet de construire la base d'architecture d'un annuaire !
* Une carte wifi qui accepte le mode AP (ou master), les cartes avec les chipset Atheros le font !
Afin que ce guide corresponde totalement à votre environnement, je vous conseille de modifier le niveau de priorité de Debconf. Sur la nouvelle Debian Etch et sur Ubuntu le niveau de Debconf est à «Élevé», ce qui réduit sensiblement le nombre de questions qui vous ait posé lors de l'installation d'un paquet. On va donc passer le niveau à «Intermédiaire» voir à «Basse» pour contrôler un maximum les paramètres.
Pour cela tapez en root :
Code :
|
Choisissez "Dialogue" puis «Intermédiaire» ou «Basse»
Je vous conseille grandement d'utiliser le même mot de passe que celui de votre utilisateur root à chaque fois qu'on vous demande un mot de passe. Cela évitera les erreurs !!
| Spoiler : Edit modo : je suis d'avis contraire |
3. Installation du serveur Freeradius
En effet cela est valable pendant les tests. Par la suite une politique de mots de passe est préférable !
Installation
Il vous faut récupérer le code source de Freeradius ! En effet un problème de licence d'un des modules de Freeradius (rlm_eap_tls) fait que celui-ci ne se trouve pas dans le paquet fourni avec la Debian !
freeradius-server-2.1.1.tar.gz
ou ici pou ceux qui veulent ce documenter :Site officiel
Je passe les détails de la compilation en dehors du fait qu'il faut certains paquets pour compiler du code :
Code :
|
Les versions de ces paquets sont ceux de Debian Etch au moment de mon installation. (Aujourd'hui 01/09/2008).
libssl-dev et openssl 0.9.8c-4etch3
Décompressez l'archive dans un dossier, allez dans le dossier extrait et tapez les commandes suivantes :
Code :
|
puis en root
Code :
|
Cela installera, les exécutables dans /usr/bin, les fichiers de configurations dans /usr/etc, les journaux dans /usr/log/raddb.
Tests
Vous pouvez dès à présent tester le serveur freeradius avec la ligne de commande suivante :
Attention : Lors du premier lancement il y a création des certificats. Ce sont ceux par défaut. Ils se trouvent dans /usr/etc/raddb/certs. Ils sont utilisés dans le fichier modules/inner-eap.
En root :
Code :
|
Votre serveur Radius écoute et attend !
Vous pouvez l'arrêter avec CTRL+C
Si des erreurs apparaissent, vérifiez bien vos paramètres et consultez les logs.
Configuration de Freeradius
Nous allons modifier quelques fichiers : clients.conf, radiusd.conf, modules/ldap, site-enabled/default, site-enabled/inner-tunnel.
Tout d'abord le fichier clients.conf :
Code :
|
Le fichier radiusd.conf :
Nous allons modifier que la partie « journaux ».
Code :
|
Le fichier modules/ldap :
Code :
|
Le fichier site-enabled/default :
Nous modifions la partie « authorize » et « authenticate ».
Code :
|
Le fichier sites-enabled/inner-tunnel :
Nous modifions la partie « autorize » et « authenticate ».
Code :
|
Normalement votre serveur Radius est près... Vous devriez pouvoir lancer radius -X, pour vérifier les alertes !
4. Installation de la borne
Installation
Vous pouvez suivre le tutos rapide : AP
Il faut installer les mêmes paquets... hostapd...
Configuration de la borne AP
Le fichier /etc/hostapd/hostapd.conf :
Code :
|
Création du script de lancement de la borne AP
Nous créons un script bash qui lancera les commandes de destruction, construction, configuration et de paramètres de la borne AP. Ce script sera dans /etc/init.d
Code :
|
Configuration du serveur DHCP
Le fichier se trouve : /etc/dhcpd3/dhcpd.conf :
Code :
|
5. Adaptation de notre annuaire
Nous devons ajouté l' ObjectClass = radiusProfile à nos comptes utilisateurs. Pour cela au par avant il faut ajouter le schéma Radius à notre annuaire.
Le schéma se trouve dans : /làoùvousavezdécompressélesource/freeradius-server-$version/doc/examples/openldap.schema.
Renommez le en freeradius.schema et mettez le dans /etc/ldap/schema.
Redémarrez le processus LDAP : # /etc/init.d/slapd restart
Et ajouter l'attribut « dialupAccess », j'ai mis la valeur « yes », mais peu importe.
Faites le avec phpLDAPadmin ou ApacheDirectoryStudio.
J'ai aussi modifié le script perl smbldap-useradd pour ajouter cet attribut.
Modifiez cette partie à partir de la ligne 330 :
Code :
|
En :
Code :
|
6. Comptabilité Radius :
Radius offre la possibilité de faire de la comptabilité (appelé accounting). En effet on peut enregistrer un certain nombre de données informatives telles que :
L'heure de connexion, l'identifiant, par quel NAS (borne), le nombre d'octets entrants/sortants, etc...
Ceci peut-être pratique si vous avez à facturer ou tout simplement compter les connexions !
Pour cela rien de plus simple(*).
1. Création d'une base de données avec les tables.
2. Modification de la configuration Radius et redémarrage de celui-ci.
Création de la base :
L'installation : # apt-get install mysql-server-5.0
On vous demande le mot de passe qu'il faut mettre à l'administrateur de MySQL
Création de la base de données « radius » :
Code :
|
Dans le répertoire d'installation de radius et mysql, il y a un fcihier /usr/etc/raddb/sql/mysql/schema.sql, nous allons l'utiliser pour créer les tables, etc...
Code :
|
Deux tables nous intéresserons : radpostauth et radacct.
Modification de Radius :
Nous allons modifier le fichier site-enable/default
Dans la partie « accounting » : concerne la table « radacct »
Code :
|
Dans la partie « post-auth» : concerne la table « radpostauth »
Code :
|
(*) : Oui pourquoi cette étoile...
Et bien voilà, le rien de plus simple a durée 5-6 jours, en effet dans le hostapd.conf j'avais renseigné deux fois la même variable impliquant l'oublie d'une autre !
La variable renseignée deux fois était : auth_server_shared_secret
Au lieu de renseigner auth_server_shared_secret et acct_server_shared_secret !!!
Il n'y avait donc pas de valeur pour acct_server_shared_secret, donc pas d' « accounting » !!!! :-/
Remarque : l'accounting ne sert pas à grand chose si, personne n'a accès aux données.
Pour cela nous allons installer un serveur web avec les modules PHP et MySQL :
Code :
|
Redémarrez apache : #/etc/init.d/apache2 restart
Les pages apache sont mises dans /var/www. Nous allons donc créer un répertoire "radius" pour y placer les pages "accounting". Ce répertoire doit être en lecture pour le processus d'apache tournant sous "www-data".
Code :
|
Nous allons créer trois pages PHP :
- page de connexion à MySQL pour la base de données "radius".
- page d'entré récapitulant toutes les sessions radius et de sélection des utilisateurs.
- page de résultats de la sélection.
La page de connexion BDD config.inc.db.php :
Code :
|
La page par défaut index.php :
Code :
|
La page de résultats resultat.php :
Code :
|
Ce qui devrait donner :
La page par défaut :
La page résultats :
7. Conclusion
J'ai tenté rapidement de faire un tuto simple, style copier/coller, pour n'aller qu'a l'essentiel !
Mais je vous recommande de vous documenter ! Vous trouverez ici et là des tutos qui vous indiquent de mettre dans le fichier « users » la valeur :
DEFAULT Auth-Type == LDAP
Fall-Through = 0
Ceci est faux comme le dit le développeur principale de Freeradius !
http://readlist.com/lists/lists.fr [...] 10880.html
http://deployingradius.com/documen [...] acles.html
http://deployingradius.com/blog/
8. Bibliographie
http://www.editions-eyrolles.com/L [...] vec-radius
http://lists.shmoo.com/pipermail/h [...] 11481.html
http://linux.sys-con.com/node/46902
http://fr.wikipedia.org/wiki/Wi-Fi [...] ccess#WPA2
http://www.nantes-wireless.org/act [...] _article=8
http://crip-agalan.ujf-grenoble.fr [...] galan.html
http://www.keller.com/wifi/CNIT107HW7.html
http://ubuntuforums.org/showthread.php?t=151781
http://cisler.net/writing/rad.html
http://www.davidgis.fr/blog/index. [...] t-openldap
http://vuksan.com/linux/dot1x/802-1x-LDAP.html
http://smhteam.info/wiki/index.lin [...] ReseauWifi
http://deployingradius.com/documen [...] acles.html
8. Légende
!unmotdepassefort! est un mot de passe de 8 caractères alpha-numériques au moins !
!unmotdepassetrèstrèsfort! est un mot de passe d'au moins 16 caractères alpha-numériques ! (C'est lui qu'il ne faut pas qu'on réussisse à casser !!!). Pour exemple le miens était : f55d75ac2fitib16_tilu
DOMAIN : Est le nom de domaine tronqué de l'annuaire. Construit à partir de domain.local.
Désengagement : Ce tuto n'est pas suivre si vous ne connaissez pas comment vous en sortir. En effet le service Radius sous Linux contient au moins un vingtaine de fichiers. Il vous sera très difficile de retomber sur vos pieds si vous mettez le bazar dans les fichiers ! Bref prudence et documentez-vous !
Message édité par lolotux le 02-04-2009 à 22:36:09
Et énervé, donc !
Si vous avez des commentaires, des remarques, des questions, ...
C'est ICI que ça ce passe
Editer vos titres (pas de titre en majuscule, [RESOLU] quand c'est le cas)
Tutos IDN
Répondre à maith
Il y a 1741 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
