Tutorial, How-To, HowTo

Le paquet freeradius fourni par debian ne contient pas les modules expérimentaux. Or pour l’utilisation du logiciel phpMyPrepaid, il faut installer le module freeradius rlm_sqlcounter.so pour l’accounting et utiliser l’attribut Radius : Max-All-Session. Ce tutorial va vous montrer comment créer un nouveau paquet .deb freeradius comportant les modules expérimentaux (dont rlm_sqlcounter.so).

Pour installer également les modules rlm_eap_tls.so et rlm_eap_ttls.so, voir mon articlé précédent : Ajouter les modules EAP/TLS et EAP/TTLS à FreeRADIUS sur une Debian testing.

Compilation de rlm_sqlcounter.so

Nous allons recompiler les sources de FreeRADIUS : pour cela, il faut rajouter une entrée deb-src dans votre fichier /etc/apt/sources.list si celle-ci n’existe pas :


deb-src http://http.us.debian.org/debian testing main contrib non-free

- Installer les packages nécessaires pour générer le paquet .deb :


# apt-get install devscripts dpkg-dev
# apt-get install fakeroot build-essential

- Installer les dépendances pour recompiler freeradius :


# mkdir -p /usr/src/freeradius
# cd /usr/src/freeradius
# apt-get build-dep freeradius
# apt-get install python-dev
# apt-get install libperl-dev
# apt-get install libssl-dev
# apt-get source freeradius

- Modifier le fichier debian/rules :

Rajouter dans le bloc .configure, la ligne suivante :


        --with-experimental-modules

- Modifier le fichier debian/control :

Supprimer la ligne :


Build-Conflicts: libssl-dev

- Modifier le changelog du paquet .deb :


# cd /usr/src/freeradius/freeradius-1.0.5
# dch -i

et rajouter des commentaires....

- Générer le paquet .deb :


# dpkg-buildpackage -rfakeroot -uc -us

- Installer les paquets .deb générés :

Rq : le script d’installation effectue un "freeradius restart", ce qui peut provoquer des erreurs ou des warnings si le serveur freeradius n’est pas lancé au moment de l’installation (cf. 1ère ligne)


# /etc/init.d/freeradius start
# cd ..
# dpkg -i *.deb

Finalisation de l’installation...

Pour marquer le paquet .deb comme "hold" et éviter de le désinstaller lors d’une mise à jour de debian via un apt-get update :


echo "freeradius hold" | dpkg --set-selections

Rq : pour enlever le paquest .deb marqué comme "hold" :


# echo "freeradius install" |dpkg --set-selections

Configuration

Créer le fichier /etc/freeradius/sqlcounter.conf :


sqlcounter noresetcounter {
       driver = "rlm_sqlcounter"
       counter-name = Max-All-Session-Time
       check-name = "Max-All-Session"
       sqlmod-inst = sql
       key = User-Name
       reset = never
       query = "SELECT SUM(AcctSessionTime) FROM radacct WHERE UserName='%{%k}'"
}

Rajouter dans le fichier /etc/freeradius/radiusd.conf


[...]
$INCLUDE ${confdir}/sql.conf
$INCLUDE ${confdir}/sqlcounter.conf
[...]

instantiate {
 [...]
 expr
 noresetcounter
 [...]
}

authorize {
 [...]
 sql
 noresetcounter
 [...]
}

accounting {
 detail
 [...]
 sql
}

session {
 sql
}

Documentation

  • http://www.frbox.net/viewtopic-26117.html