Se connecter / S'enregistrer
Votre question

[Comment] [TUTO] Borne d'accès wifi avec authentification Radius+LDAP

Tags :
  • Wifi
  • Internet
Dernière réponse : dans Internet
2 Octobre 2008 04:47:49

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 :
  1. dpkg-reconfigure debconf


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 !! (lors des tests, à changer dès que cela fonctionne)
Spoiler
Edit modo : je suis d'avis contraire

16-10-2010 : J'ajoute que depuis, mon avis sur le sujet est plus en adéquation avec le modo...

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 :
  1. apt-get install openssl libssl libssl-dev libldap2-dev g++ build-essential debian-builder libstdc++6.4-1-dev libmysqlclient15-dev


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 :

  1. ./configure --prefix=/usr --libdir=/usr/lib --with-experimental-modules
  2. make

puis en root
  1. make install


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 :
  1. radiusd -X
  2. FreeRADIUS Version 2.1.1, for host i686-pc-linux-gnu, built on Sep 30 2008 at 07:25:52
  3. Copyright (C) 1999-2008 The FreeRADIUS server project and contributors.
  4. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
  5. PARTICULAR PURPOSE.
  6. You may redistribute copies of FreeRADIUS under the terms of the
  7. GNU General Public License v2.
  8. Starting - reading configuration files ...
  9. including configuration file /usr//etc/raddb/radiusd.conf
  10.  
  11. bla bla .......
  12.  
  13. listen {
  14. type = "acct"
  15. ipaddr = *
  16. port = 0
  17. }
  18. Listening on authentication address * port 1812
  19. Listening on accounting address * port 1813
  20. Listening on proxy address * port 1814
  21. Ready to process requests.


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 :

  1. client localhost {
  2. # Cette partie permet l'authentification de la borne
  3. # au près du service Radius si la borne est sur la
  4. # même machine.
  5. ipaddr = 127.0.0.1
  6. secret = !unmotdepassetrèstrèsfort!
  7. require_message_authenticator = no
  8. shortname = localhost
  9. #
  10. # The nastype tells 'checkrad.pl' which NAS-specific method to
  11. # use to query the NAS for simultaneous use.
  12. #
  13. # Permitted NAS types are:
  14. #
  15. # cisco
  16. # computone
  17. # livingston
  18. # max40xx
  19. # multitech
  20. # netserver
  21. # pathras
  22. # patton
  23. # portslave
  24. # tc
  25. # usrhiper
  26. # other # for all other types
  27.  
  28. #
  29. nastype = other # localhost isn't usually a NAS...
  30. }
  31.  
  32. client adrIP/mask {
  33. # Cette partie permet l'authentification de la borne
  34. # au près du service Radius si la borne est sur l'
  35. # adresse réseau adrIP/mask.
  36. secret = !unmotdepassetrèstrèsfort!
  37. shortname = private-network-2 # un nom quelconque de ce réseau
  38. }


Le fichier radiusd.conf :

Nous allons modifier que la partie « journaux ».

  1. #
  2. # Logging section. The various "log_*" configuration items
  3. # will eventually be moved here.
  4. #
  5. log {
  6. .... bla bla ...
  7. #
  8. stripped_names = yes
  9.  
  10. # Log authentication requests to the log file.
  11. #
  12. # allowed values: {no, yes}
  13. #
  14. auth = yes
  15.  
  16. # Log passwords with the authentication requests.
  17. # auth_badpass - logs password if it's rejected
  18. # auth_goodpass - logs password if it's correct
  19. #
  20. # allowed values: {no, yes}
  21. #
  22. auth_badpass = yes
  23. auth_goodpass = yes
  24. }



Le fichier modules/ldap :

  1. ldap {
  2. #
  3. # Note that this needs to match the name in the LDAP
  4. # server certificate, if you're using ldaps.
  5. server = "nomdhote"
  6. identity = "cn=admin,dc=DOMAIN,dc=local"
  7. password = !motdepasseadminldap!
  8. basedn = "dc=DOMAIN,dc=local"
  9. filter = "(&(uid=%{Stripped-User-Name:-%{User-Name}})(dialupAccess=yes))"
  10. # Cela implique qu'il faut que cel soit un utilisateur LDAP et qu'il y est
  11. # l'attribut dialupAccess=yes
  12. base_filter = "(objectclass=radiusprofile)"
  13.  
  14. .... bla bla ....
  15. # default_profile = "cn=radprofile,ou=dialup,dc=dom-sln,dc=local"
  16. # profile_attribute = "radiusProfileDn"
  17. access_attr = "dialupAccess"
  18. # Cet attribut LDAP nous permettra de filtrer les utilisateurs autorisés
  19. # ou pas ! Si dialupAccess alors autorisés, sinon pas !
  20. # Là il vous faudra ajouter cet attribut à chaque compte utilisateur,
  21. # de l'annuaire, autorisé à se connecter à la borne
  22. # J'essayerais par les groupes ! ;) Voir plus bas !
  23.  
  24. # Mapping of RADIUS dictionary attributes to LDAP
  25. .... bla bla ...
  26. password_attribute = userPassword
  27. # Un-comment the following to disable Novell
  28. .... bla bla ....
  29. }



Le fichier site-enabled/default :

Nous modifions la partie « authorize » et « authenticate ».

  1. authorize {
  2. .... bla bla ....
  3. #
  4. # The ldap module will set Auth-Type to LDAP if it has not
  5. # already been set
  6. ldap
  7.  
  8. .... bla bla ....
  9. #
  10. # Use the checkval module
  11. checkval
  12. .... bla bla ....
  13. }
  14.  
  15. .....
  16.  
  17. authenticate {
  18. .... bla bla ....
  19. # Uncomment it if you want to use ldap for authentication
  20. #
  21. # Note that this means "check plain-text password against
  22. # the ldap database", which means that EAP won't work,
  23. # as it does not supply a plain-text password.
  24. Auth-Type LDAP {
  25. ldap
  26. }
  27.  
  28. #
  29. # Allow EAP authentication.
  30. eap
  31. }



Le fichier sites-enabled/inner-tunnel :

Nous modifions la partie « autorize » et « authenticate ».

  1. authorize {
  2. .... bla bla ....
  3. #
  4. # The ldap module will set Auth-Type to LDAP if it has not
  5. # already been set
  6. ldap
  7.  
  8. .... bla bla ....
  9. #
  10. # Use the checkval module
  11. checkval
  12. .... bla bla ....
  13. }
  14.  
  15.  
  16. .... bla bla ....
  17.  
  18. authenticate {
  19. .... bla bla ....
  20. # Uncomment it if you want to use ldap for authentication
  21. #
  22. # Note that this means "check plain-text password against
  23. # the ldap database", which means that EAP won't work,
  24. # as it does not supply a plain-text password.
  25. Auth-Type LDAP {
  26. ldap
  27. }
  28.  
  29. #
  30. # Allow EAP authentication.
  31. eap
  32. }



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 :

  1. interface=nominterface (eth0, ath0, ra0, etc...)
  2. ssid=VotreESSID
  3. driver=votrepilote (madwifi, ndiswrapper, wext, wired, etc...)
  4. logger_syslog=-1
  5. logger_syslog_level=4
  6. logger_stdout=--1
  7. logger_stdout_level=4
  8. debug=4
  9. ctrl_interface_group=0
  10.  
  11. # Comment gérer les adresses MAC (adresse Hardware des cartes réseaux)
  12. # C'est une sécurité qui peut facilement être contournée, mais est
  13. # néanmoins pratique, car elle est facile à mettre en place
  14. # En effet, hostAPd va vérifier l'adresse MAC de la carte Wifi qui fait une
  15. # demande d'accès et pourra alors, sur cette seule adresse, soit continuer le
  16. # processus d'identification, soit s'arrêter et refuser la carte.
  17. # Les paramètres possibles sont les suivants :
  18. # 0 : Tout accepter à moins qu'elle ne soit dans la liste noire
  19. # 1 : Tout refuser, à moins qu'elle ne soit dans la liste blanche
  20. # 2 : Vérifier l'adresse auprès d'un serveur RADIUS (honnêtement, pour son réseau local, ça ne sert à rien)
  21. # Le meilleur paramètre pour commencer est 1. Ça réduit de beaucoup les risques de piratage.
  22. macaddr_acl=2
  23. #deny_mac_file=/etc/hostapd/hostapd.deny
  24. #accept_mac_file=/etc/hostapd/hostapd.accept
  25.  
  26. ieee8021x=1
  27. own_ip_addr= adrIP
  28. nas_identifier=nomdhote
  29. auth_server_addr= adrIP
  30. auth_server_port=1812
  31. auth_server_shared_secret=!unmotdepassetrèstrèsfort!
  32. acct_server_addr= adrIP
  33. acct_server_port=1813
  34. acct_server_shared_secret=!unmotdepassetrèstrèsfort!
  35. radius_acct_interim_interval=6
  36.  
  37. wpa=3
  38. wpa_key_mgmt=WPA-EAP
  39. wpa_pairwise=TKIP CCMP
  40. wpa_group_rekey=300
  41. wpa_gmk_rekey=6400



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

  1. #!/bin/sh
  2.  
  3. # Création de la carte ath0 et du point d'accès debian-AP
  4. echo "Création de la carte ath0 et du point d'accès debian-AP";
  5.  
  6. ifconfig NomCarte down;
  7. wlanconfig NomCarte destroy;
  8. wlanconfig NomCarte create wlandev wifi0 wlanmode ap;
  9. echo "Veuillez patienter...";
  10. sleep 2;
  11. echo "Activation de ath0";
  12.  
  13. ifconfig NomCarte mtu 1492 adrIP netmask mask up;
  14. kill `pidof radiusd`;
  15. radiusd;
  16. killall hostapd;
  17. /usr/sbin/hostapd -B -P /var/run/hostapd.pid -dd -K -t /etc/hostapd/hostapd.conf.wpa2-enterprise;
  18.  
  19. echo "Veuillez patienter...";
  20. sleep 1;
  21. echo "Mise en place des options du point d'accès debian-AP";
  22. iwconfig NomCarte key restricted;
  23. iwconfig NomCarte nickname "unNickName";
  24.  
  25. echo "Veuillez patienter...";
  26. sleep 1;
  27. echo "Mise en place des options DHCP";
  28. /etc/init.d/dhcp3-server restart;
  29.  
  30. echo "Veuillez patienter...";
  31. sleep 1;
  32. iwconfig NomCarte channel VotreCanal;
  33.  
  34. echo "Veuillez patienter...";
  35. sleep 1;
  36. echo "Mise en place du routage NAT internet";
  37. echo 1 > /proc/sys/net/ipv4/ip_forward;
  38. iptables -t nat -A POSTROUTING -o NomCarteInternet -j MASQUERADE;
  39. /etc/init.d/samba restart;



Configuration du serveur DHCP

Le fichier se trouve : /etc/dhcpd3/dhcpd.conf :

  1. ddns-update-style none;
  2. option domain-name "DOMAIN.local";
  3.  
  4. default-lease-time 600;
  5. max-lease-time 7200;
  6.  
  7. # If this DHCP server is the official DHCP server for the local
  8. # network, the authoritative directive should be uncommented.
  9. authoritative;
  10.  
  11. # Use this to send dhcp log messages to a different log file (you also
  12. # have to hack syslog.conf to complete the redirection).
  13. log-facility local7;
  14.  
  15. # wifi
  16. subnet adrIPrz netmask mask {
  17. range IP1 IP2;
  18. option domain-name-servers IPDNS1, IPDNS2, IPDNS3;
  19. option routers adrIP;
  20.  
  21. option broadcast-address adrIPbroadcast;
  22. default-lease-time 600;
  23. max-lease-time 7200;
  24. }



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 :

  1. } else {
  2. $add = $ldap_master->add ("uid=$userName,$config{usersdn}",
  3. attr => [
  4. 'objectclass' => ['top','person', 'organizationalPerson', 'inetOrgPerson','posixAccount','shadowAccount'],
  5. 'cn' => "$userCN",
  6. 'sn' => "$userSN",
  7. 'givenName' => "$givenName",
  8. 'uid' => "$userName",
  9. 'uidNumber' => "$userUidNumber",
  10. 'gidNumber' => "$userGidNumber",
  11. 'homeDirectory' => "$userHomeDirectory",
  12. 'loginShell' => "$config{userLoginShell}",
  13. 'gecos' => "$config{userGecos}",
  14. 'userPassword' => "{crypt}x"
  15. ]
  16. );
  17. }



En :

  1. } else {
  2. $add = $ldap_master->add ("uid=$userName,$config{usersdn}",
  3. attr => [
  4. 'objectclass' => ['top','person', 'organizationalPerson', 'inetOrgPerson','posixAccount','shadowAccount','radiusProfile'],
  5. 'cn' => "$userCN",
  6. 'sn' => "$userSN",
  7. 'givenName' => "$givenName",
  8. 'uid' => "$userName",
  9. 'uidNumber' => "$userUidNumber",
  10. 'gidNumber' => "$userGidNumber",
  11. 'homeDirectory' => "$userHomeDirectory",
  12. 'loginShell' => "$config{userLoginShell}",
  13. 'gecos' => "$config{userGecos}",
  14. 'userPassword' => "{crypt}x",
  15. 'dialupAccess' => "Si pas d acces effacez cet attribut !"
  16. ]
  17. );
  18. }



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 » :

  1. # mysql -p
  2. Enter password:
  3. Welcome to the MySQL monitor. Commands end with ; or \g.
  4. Your MySQL connection id is 173
  5. Server version: 5.0.32-Debian_7etch6-log Debian etch distribution
  6.  
  7. Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
  8.  
  9. mysql> create database radius;
  10. Query OK, 1 row affected (0.01 sec)
  11.  
  12. mysql> quit
  13. Bye




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...

  1. # mysql -p radius < /usr/etc/raddb/sql/mysql/schema.sql
  2. Enter password:



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 »
  1. accounting {
  2. ...
  3. #
  4. # Log traffic to an SQL database.
  5. #
  6. # See "Accounting queries" in sql.conf
  7. sql
  8. ...
  9. }



Dans la partie « post-auth» : concerne la table « radpostauth »
  1. post-auth {
  2. ...
  3. #
  4. # After authenticating the user, do another SQL query.
  5. #
  6. # See "Authentication Logging Queries" in sql.conf
  7. sql
  8. ...
  9. }


(*) : 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 :
  1. # apt-get install apache2-mpm-prefork php5-mysql php5-ldap libapache2-mod-php5

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".

  1. # mkdir /var/www/radius
  2. # chmod 755 /var/www/radius


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 :
  1. <?php
  2. // L'hôte sur le quel est la base de donn?e
  3. $host="localhost";
  4. // Le login superuser de MySQL
  5. $user="root";
  6. // Son mots de passe
  7. $pass="motdepasseadminmysql";
  8. // Le nom de la base de données
  9. $DB="radius";
  10.  
  11.  
  12. // Connexion à MySQL sur $host
  13. $message = "échec de la connexion.<br>";
  14. $message = $message . "Le serveur est inaccessible, ou le service de base de données est arrêtée ...<br>";
  15. $message = $message . "Veuillez contacter l'administrateur<br>";
  16. $message = $message;
  17. $link = mysql_connect($host, $user, $pass) or die($message);
  18.  
  19. // S?lection de la base $DB
  20. $message = "échec de la base de données.<br>";
  21. $message = $message . "La base de donn?es est inaccessible...<br>";
  22. $message = $message . "Veuillez contacter l'administrateur<br>";
  23. $message = $message;
  24. $sel = mysql_select_db($DB) or die($message);
  25. ?>


La page par défaut index.php :
  1. <?php
  2. // // Connexion la base de donnée
  3. include ("conf.inc.db.php");
  4.  
  5. // La requète
  6. $sql = "SELECT * FROM radacct ORDER BY radacctid DESC";
  7. ?>
  8. <body bgcolor="#B4B3C6">
  9. <h1><p align=center><strong><u>Radius Accounting</u></strong></p></h1>
  10. <?PHP
  11. $req = mysql_query($sql) or die('Requète mal formulïée');
  12.  
  13. echo "<table border='1' align='center' bgcolor='#ADADAD'><tbody bgcolor='Gray'>";
  14. echo "<tr bgcolor='Silver'>";
  15. echo "<td>Identifiant Comptable</td>";
  16. echo "<td>Nom utilisateur</td>";
  17. echo "<td>KOctets entrés</td>";
  18. echo "<td>KOctets sortis</td>";
  19. echo "<td>Heure et date début</td>";
  20. echo "<td>Heure et date fin</td>";
  21. echo "</tr>";
  22.  
  23. while($data = mysql_fetch_assoc($req))
  24. {
  25. $koin=round (intval ($data['acctinputoctets'])/1024, 2); //plus agréable en Ko
  26. $koout=round (intval ($data['acctoutputoctets'])/1024, 2); //plus agréable en Ko
  27. if ($data['acctstoptime']=='') {
  28. $data['acctstoptime']="<font color='Red'>Session en cours</font>";
  29. }
  30. echo "<tr bgcolor='#00C0C0'>";
  31. echo "<td>".$data['radacctid']."</td>";
  32. echo "<td>".$data['username']."</td>";
  33. echo "<td>".$koin."</td>";
  34. echo "<td>".$koout."</td>";
  35. echo "<td>".$data['acctstarttime']."</td>";
  36. echo "<td>".$data['acctstoptime']."</td>";
  37. echo "</tr>";
  38. }
  39. echo "</tbody></table>";
  40. ?>
  41. <br><br>
  42. <center>
  43. Choisissez un utilisateur :
  44. <FORM method="POST" action="resultat.php" name="formulaire" class="txt">
  45. <SELECT name="username">
  46. <?PHP
  47. $sql = 'SELECT DISTINCT username from radacct ORDER by username';
  48. $req = mysql_query($sql) or die('Requète mal formulïée');
  49. //echo '<option></option>';
  50. while($data = mysql_fetch_assoc($req))
  51. {
  52. if ($data['username'] != "") {
  53. echo "<option value=\"".htmlentities($data['username'])."\">".htmlentities($data['username'])."</option>";
  54. }
  55. }
  56. ?>
  57. </select>
  58. <INPUT type="submit" name="recherche" value="Afficher">
  59. </FORM>
  60. </center>
  61. </body>


La page de résultats resultat.php :
  1. <?php
  2. // // Connexion la base de donnée
  3. include ("conf.inc.db.php");
  4.  
  5. // Réccupération des variable postées
  6. $username = $_POST['username'];
  7. ?>
  8. <body bgcolor="#B4B3C6">
  9. <h1><p align=center><strong><u>Radius Accounting</u></strong></p></h1>
  10. <?PHP
  11. $sql = "SELECT * FROM radacct WHERE username='$username'";
  12. $req = mysql_query($sql) or die('Requète mal formulïée 1');
  13.  
  14. echo "<table border='1' align='center' bgcolor='#ADADAD'><tbody bgcolor='Gray'>";
  15. echo "<tr bgcolor='Silver'>";
  16. echo "<td>Identifiant Comptable</td>";
  17. echo "<td>Nom utilisateur</td>";
  18. echo "<td>KOctets entrés</td>";
  19. echo "<td>KOctets sortis</td>";
  20. echo "<td>Heure et date début</td>";
  21. echo "<td>Heure et date fin</td>";
  22. echo "</tr>";
  23.  
  24. while($data = mysql_fetch_assoc($req))
  25. {
  26. $koin=round (intval ($data['acctinputoctets'])/1024, 2);
  27. $koout=round (intval ($data['acctoutputoctets'])/1024, 2);
  28. if ($data['acctstoptime']=='') {
  29. $data['acctstoptime']="<font color='Red'>Session en cours</font>";
  30. }
  31. echo "<tr bgcolor='#00C0C0'>";
  32. echo "<td>".$data['radacctid']."</td>";
  33. echo "<td>".$data['username']."</td>";
  34. echo "<td>".$koin."</td>";
  35. echo "<td>".$koout."</td>";
  36. echo "<td>".$data['acctstarttime']."</td>";
  37. echo "<td>".$data['acctstoptime']."</td>";
  38. echo "</tr>";
  39. }
  40. echo "</tbody></table>";
  41. ?>
  42. <br><br>
  43. <center>
  44. Choisissez un utilisateur :
  45. <FORM method="POST" action="resultat.php" name="formulaire" class="txt">
  46. <SELECT name="username">
  47. <?PHP
  48. $sql = 'SELECT DISTINCT username from radacct ORDER by username';
  49. $req = mysql_query($sql) or die('Requète mal formulïée');
  50. //echo '<option></option>';
  51. while($data = mysql_fetch_assoc($req))
  52.  
  53.  
  54. {
  55. if ($data['username'] != "") {
  56. echo "<option value=\"".htmlentities($data['username'])."\">".htmlentities($data['username'])."</option>";
  57. }
  58. }
  59. ?>
  60. </select>
  61. <INPUT type="submit" name="recherche" value="Afficher">
  62. </FORM>
  63. </center>
  64. <br><br>
  65. <center>
  66. <FORM method="POST" action="index.php">
  67. <INPUT type="submit" name="reset" value="Revenir">
  68. </FORM>
  69. </center>
  70. </body>


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.freeradius.org/freeradi...

http://deployingradius.com/documents/protocols/oracles....

http://deployingradius.com/blog/



8. Bibliographie
http://www.editions-eyrolles.com/Livre/9782212120073/au...
http://lists.shmoo.com/pipermail/hostap/2005-September/...
http://linux.sys-con.com/node/46902
http://fr.wikipedia.org/wiki/Wi-Fi_Protected_Access#WPA...
http://www.nantes-wireless.org/actu/article.php3?id_art...
http://crip-agalan.ujf-grenoble.fr/technique/Radius/fre...
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.php?2008/01/19/276-fr...
http://vuksan.com/linux/dot1x/802-1x-LDAP.html
http://smhteam.info/wiki/index.linux.php5?wiki=Configur...
http://deployingradius.com/documents/protocols/oracles....

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 !

Autres pages sur : tuto borne acces wifi authentification radius ldap

2 Octobre 2008 21:12:00

Si vous avez des commentaires, des remarques, des questions, ...

C'est ICI que ça ce passe ;) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS