FreeRADIUS et MySQL

Source de la documentation : http://techtots.blogspot.fr/2010/01/installing-and-configuring-freeRADIUS.html et http://www.unix-experience.fr/2012/freeRADIUS-serveur-RADIUS-opensource/.

Procédure validée sur Debian 7 et Ubuntu 12.04

Présentation

RADIUS est un protocole client-serveur permettant de centraliser des données d'authentification.

FreeRADIUS est un serveur RADIUS libre permettant de s'authentifier. Le protocole RADIUS permet de se connecter via un échange de paquets UDP, généralement sur le port 1812. RADIUS intègre également un module d'accounting, permettant par exemple de la facturation. RADIUS permet de s'authentifier via diverses moyens comme une authentification en clair, par adresse MAC, via base MySQL/PostgreSQL, protocole MSCHAPv1 et MSCHAPv2 ou encore annuaire LDAP.

Installation

Pour installer RADIUS et ses dépendances, tapez :

apt-get install freeradius freeradius-mysql mysql-server

Lors de l'installation de MySQL Server, l'assistant vous demandera le mot de passe root de MySQL. Si cette étape à échoué, entrez :

dpkg-reconfigure mysql-server-5.5

Configuration de base de FreeRADIUS

Tout d'abord, modifions le mot de passe de FreeRADIUS. Modifiez le fichier /etc/freeradius/clients.conf et modifiez la ligne suivante dans le secteur localhost :

secret		= ObelixLivreurDeMenhir

Ajoutons maintenant un utilisateur de test dans le fichier /etc/freeradius/users :

antoine		Cleartext-Password := "LukeJeSuisTonPere"

Enregistrez et entrez la commande suivante pour (re)démarrer le service :

/etc/init.d/freeradius restart

Puis entrez la commande suivante pour tester FreeRADIUS :

radtest antoine LukeJeSuisTonPere localhost 1812 ObelixLivreurDeMenhir

Vous devriez obtenir le résultat suivant :

Sending Access-Request of id 149 to 127.0.0.1 port 1812
        User-Name = "antoine"
        User-Password = "LukeJeSuisTonPere"
        NAS-IP-Address = X.X.X.X
        NAS-Port = 1812
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=149, length=20

Une fois ce test effectué et fonctionnel, commentez ou supprimez la ligne que nous avons ajouté dans le fichier /etc/freeradius/users.

Configuration de MySQL et de FreeRADIUS pour MySQL

Connectez-vous à MySQL :

mysql -u root -p

Entrez votre mot de passe défini lors de l'installation puis créez la base de donnée pour RADIUS :

CREATE DATABASE radius;
GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY "radpass";

Puis déconnectez-vous en appuyant sur Ctrl et D. Entrez la commande suivante afin d'importer le modèle RADIUS dans la base de données :

mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql

Modifiez le fichier /etc/freeradius/sql.conf afin d'adapter la configuration de RADIUS à celle de MySQL et modifiez les entrées suivantes :

server = "localhost"
login = "radius"
password = "radpass"
radius_db = "radius"

Activez la configuration MySQL dans RADIUS en décommentant la ligne suivante dans le fichier /etc/freeradius/radiusd.conf :

$INCLUDE sql.conf

Puis décommentez les lignes "sql" dans le fichier /etc/freeradius/sites-available/default :

authorize {
    ...
    sql
    ...
}

accounting {
    ...
    sql
    ...
}

session {
    ...
    sql
    ...
}

post-auth {
    ...
    sql
    ...
}

Ajoutez enfin un utilisateur à la base de données. Connectez-vous à la base de données et entrez :

INSERT INTO 'radius'.'radcheck' ('id' ,'username' ,'attribute' ,'op' ,'value')
VALUES (NULL , 'antoine', 'MD5-Password', ':=', MD5( 'LukeJeSuisTonPere' ) );

Redémarrez le serveur RADIUS et testez de nouveau. Vérifiez en entrant cette commande dans l'interpréteur de MySQL :

SELECT * FROM radpostauth;