Mise en place de FreeRadius
 23/03/2007 
 Christian CALECA 
Liste des cours

Pour les VLANs

Accueil ] [ FreeRADIUS ] [ Pour les VLANs ] [ Pour WPA2 ] [ Révocations ]


La gestion des adresses MAC des clients

Il existe plusieurs méthodes pour collecter les adresses MAC de vos postes clients, comme par exemple les logiciels d'inventaire de parc (OCS Inventory NG , en est un).

La table "radcheck"

La table qui doit accueillir les "utilisateurs" s'appelle "radcheck". Voyons de plus près la structure de cette table :

mysql> describe radcheck;
+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| id        | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| UserName  | varchar(64)      | NO   | MUL |         |                |
| Attribute | varchar(32)      | NO   |     |         |                |
| op        | char(2)          | NO   |     | ==      |                |
| Value     | varchar(253)     | NO   |     |         |                |
+-----------+------------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

Entrer dans le détail des nombreuses possibilités de FreeRADIUS nous mènerait beaucoup trop loin. Dans le cadre de notre projet, nous devons créer une ligne par client de la manière suivante :

Comme pour gérer dans la suite une telle collection de valeurs, il faudra savoir à quel client correspond une adresse MAC, je vous conseille vivement d'ajouter dans cette table une rubrique supplémentaire destinée à contenir, par exemple, le nom du client associé :

mysql> describe radcheck;
+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| id        | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| UserName  | varchar(64)      | NO   | MUL |         |                |
| Attribute | varchar(32)      | NO   |     |         |                |
| op        | char(2)          | NO   |     | ==      |                |
| Value     | varchar(253)     | NO   |     |         |                |
| Comment   | varchar(50)      | YES  |     | NULL    |                |
+-----------+------------------+------+-----+---------+----------------+
6 rows in set (0.01 sec)

Il "suffit" ensuite de peupler cette base avec vos adresses MAC par la méthode qui vous conviendra le mieux. Ceci devrait aboutir à quelque chose de la forme :

mysql> select *  from radcheck;
+----+-------------------+----------------+----+----------------------------------+----------------------+
| id | UserName          | Attribute      | op | Value                            | Comment              |
+----+-------------------+----------------+----+----------------------------------+----------------------+
|  1 | test0             | User-Password  | == | userpassword                     | Test initial         |
|  2 | 00:05:5d:df:f4:5b | User-Password  | == | 00:05:5d:df:f4:5b                | Poste client 1       |
|  3 | 00:13:46:2f:93:f5 | User-Password  | == | 00:13:46:2f:93:f5                | Poste client 2       |
|  4 | 00:13:46:2f:93:ef | User-Password  | == | 00:13:46:2f:93:ef                | Poste client 3       |
....

Il n'est pas nécessaire de relancer FreeRADIUS après modification de cette table.

La table "nas"

Il ne faut pas oublier non plus d'ajouter dans la table "nas" les informations concernant vos SWITCHs. La table "nas" est de structure suivante :

mysql> describe nas;
+-------------+--------------+------+-----+---------------+----------------+
| Field       | Type         | Null | Key | Default       | Extra          |
+-------------+--------------+------+-----+---------------+----------------+
| id          | int(10)      | NO   | PRI | NULL          | auto_increment |
| nasname     | varchar(128) | NO   | MUL |               |                |
| shortname   | varchar(32)  | YES  |     | NULL          |                |
| type        | varchar(30)  | YES  |     | other         |                |
| ports       | int(5)       | YES  |     | NULL          |                |
| secret      | varchar(60)  | NO   |     | secret        |                |
| community   | varchar(50)  | YES  |     | NULL          |                |
| description | varchar(200) | YES  |     | RADIUS Client |                |
+-------------+--------------+------+-----+---------------+----------------+
8 rows in set (0.00 sec)

Nous devons avoir dans cette table, quelque chose qui ressemble à ceci :

mysql> select *  from nas;
+----+---------------+-----------+-------+-------+--------------+-----------+---------------------+
| id | nasname       | shortname | type  | ports | secret       | community | description         |
+----+---------------+-----------+-------+-------+--------------+-----------+---------------------+
|  1 | 127.0.0.1     | localhost | other |  NULL | naspassword  | NULL      | RADIUS Client       |
|  2 | 192.168.10.11 | sw1       | other |  NULL | chutt        | NULL      | switch 1            |
...

Notez qu'une modification de la table "nas" nécessite (pour l'instant) un redémarrage de FreeRADIUS.

Normalement, tout devrait fonctionner correctement. Le client d'adresse MAC 00:05:5d:df:f4:5b devrait se retrouver sur le VLAN d'IP 2 (PARADIS_VLAN) alors qu'un client d'adresse MAC ne figurant pas dans la table "radcheck" se retrouvera dans le VLAN d'ID 3 (ENFER_VLAN).

Si vous rencontrez des problèmes, la première chose à faire est d'arrêter FreeRADIUS, puis de le relancer en "foreground" (avant-plan) en mode "debug", par la commande :

freeradius -x

ou, pour encore plus de détails :

freeradius -xx

FreeRADIUS est assez verbeux dans ce mode. Si, lors de la connexion d'un client, vous n'observez rien, c'est tout simplement que le switch ne dialogue pas avec le radius. Il faut alors en trouver la raison.

Si le dialogue démarre, il vous faudra déchiffrer le discours pour trouver la raison du disfonctionnement. Les raisons les plus probables étant :


Précédente ] [ Accueil ] [ Suivante ]