FreeRadius

De Wiki NCad
Révision de 31 août 2011 à 00:23 par Cacheln (discuter | contributions) (Module MySQL)

Aller à : navigation, rechercher

Présentation

FreeRadius (Remote Authentication Dial-In User Service) est un serveur Radius libre sous license BSD soutenu par la société Network Radius SARL. Le protocol RADIUS permet de centraliser les informations d'authentification des utilisateurs. Ces informations sont stockées dans une base de données. Elles sont sollicitées lorsque le client (l'utilisateur) tente d'établir une session. La requête est alors transmise à un serveur (client) qui soumet la requête d'authentification au serveur radius central. Cet exemple peut être illustré avec les réseaux wifi de grande envergure. Les utilisateurs sont stockés dans la base de données du serveur radius. L'opérateur dispose de plusieurs points d'accès pour proposer son service sans fil. Lorsqu'un client se connecte avec ses identifiants, ces derniers sont soumis à la borne wifi. Cette dernière transmet la requête d'authentification au serveur RADIUS central qui répond favorablement ou non à la requête initiale.

Installation

  • Le logiciel serveur FreeRadius est disponible dans les dépôts Ubuntu. Pour l'installer il suffit de lancer la commande suivante :
ICON Terminal.png

sudo apt-get install freeradius freeradius-utils freeradius-mysql

Module MySQL

Ce module permettra de renseigner directement dans la base de données les clients et utilisateurs RADIUS au lieu d'éditer les fichier clients.conf et users. Au préalable on créera sur le serveur MySQL une base de données dédiée à freeradius.

  • Voici la liste des tables SQL a créer dans la base de données nouvellement crée :
CREATE TABLE radacct (
 radacctid bigint(21) NOT NULL auto_increment,
 acctsessionid varchar(64) NOT NULL default ,
 acctuniqueid varchar(32) NOT NULL default ,
 username varchar(64) NOT NULL default ,
 groupname varchar(64) NOT NULL default ,
 realm varchar(64) default ,
 nasipaddress varchar(15) NOT NULL default ,
 nasportid varchar(15) default NULL,
 nasporttype varchar(32) default NULL,
 acctstarttime datetime NULL default NULL,
 acctstoptime datetime NULL default NULL,
 acctsessiontime int(12) default NULL,
 acctauthentic varchar(32) default NULL,
 connectinfo_start varchar(50) default NULL,
 connectinfo_stop varchar(50) default NULL,
 acctinputoctets bigint(20) default NULL,
 acctoutputoctets bigint(20) default NULL,
 calledstationid varchar(50) NOT NULL default ,
 callingstationid varchar(50) NOT NULL default ,
 acctterminatecause varchar(32) NOT NULL default ,
 servicetype varchar(32) default NULL,
 framedprotocol varchar(32) default NULL,
 framedipaddress varchar(15) NOT NULL default ,
 acctstartdelay int(12) default NULL,
 acctstopdelay int(12) default NULL,
 xascendsessionsvrkey varchar(10) default NULL,
 PRIMARY KEY  (radacctid),
 KEY username (username),
 KEY framedipaddress (framedipaddress),
 KEY acctsessionid (acctsessionid),
 KEY acctsessiontime (acctsessiontime),
 KEY acctuniqueid (acctuniqueid),
 KEY acctstarttime (acctstarttime),
 KEY acctstoptime (acctstoptime),
 KEY nasipaddress (nasipaddress)
) ;

CREATE TABLE radcheck (
 id int(11) unsigned NOT NULL auto_increment,
 username varchar(64) NOT NULL default ,
 attribute varchar(64)  NOT NULL default ,
 op char(2) NOT NULL DEFAULT '==',
 value varchar(253) NOT NULL default ,
 PRIMARY KEY  (id),
 KEY username (username(32))
) ;

CREATE TABLE radgroupcheck (
 id int(11) unsigned NOT NULL auto_increment,
 groupname varchar(64) NOT NULL default ,
 attribute varchar(64)  NOT NULL default ,
 op char(2) NOT NULL DEFAULT '==',
 value varchar(253)  NOT NULL default ,
 PRIMARY KEY  (id),
 KEY groupname (groupname(32))
) ;

CREATE TABLE radgroupreply (
 id int(11) unsigned NOT NULL auto_increment,
 groupname varchar(64) NOT NULL default ,
 attribute varchar(64)  NOT NULL default ,
 op char(2) NOT NULL DEFAULT '=',
 value varchar(253)  NOT NULL default ,
 PRIMARY KEY  (id),
 KEY groupname (groupname(32))
) ;

CREATE TABLE radreply (
 id int(11) unsigned NOT NULL auto_increment,
 username varchar(64) NOT NULL default ,
 attribute varchar(64) NOT NULL default ,
 op char(2) NOT NULL DEFAULT '=',
 value varchar(253) NOT NULL default ,
 PRIMARY KEY  (id),
 KEY username (username(32))
) ;

CREATE TABLE radusergroup (
 username varchar(64) NOT NULL default ,
 groupname varchar(64) NOT NULL default ,
 priority int(11) NOT NULL default '1',
 KEY username (username(32))
) ;

CREATE TABLE radpostauth (
 id int(11) NOT NULL auto_increment,
 username varchar(64) NOT NULL default ,
 pass varchar(64) NOT NULL default ,
 reply varchar(32) NOT NULL default ,
 authdate timestamp NOT NULL,
 PRIMARY KEY  (id)
) ;


ICON Light.png
Créez une base de données spécialement pour le serveur RADIUS. Dans notre cas nous l’appellerons freeradius. Elle contiendra les tables et enregistrements pour le serveur.
  • Pour que FreeRadius interroge la base de données MySQL, il faut adapter le fichier de configuration sql.conf qui regroupe les informations de connexion au serveur :
sql {
       database = "mysql"        
       driver = "rlm_sql_${database}"
       server = "<ip_server>"
       login = "<login>"
       password = "<mot_de_passe>"
       radius_db = "<nom_de_la_base_mysql>"
[...]
}