Dans mon travail, il m’a été demandé de trouver une solution pérenne et surtout plus pratique pour les connexions nomades à internet. A chaque fois, il faut rentrer une clef WPA pour permettre le surf. Cela implique de faire le paramétrage pour ceux qui ne savent pas le faire. Chaque année par mesure de sécurité, la clef est changée, le travail de paramétrage des machines nomades…. et seul le service informatique est habilité à appliquer cette procédure pour les utilisateurs (question de sécurité). Je m’arrête là, vous comprenez bien le soucis et le casse tête.
Après avoir étudié différentes solutions, la solution retenue est un portail captif (pfSense) couplé à un annuaire radius (installé sous Debian/GNU Linux ou Ubuntu). Je n’expliquerai pas l’installation ni la configuration de pfSense, différents tutoriaux sur la toile vous le permettront. Je n’adorderai que l’installation de l’annuaire freeradius couplée à daloradius sous notre distribution préférée.
Prérequis
Apache2, MySQL, Php et PhpMyAdmin (pour gérer vos bases de données) doivent être impérativement installé au préalable. Vous devez donc disposer d’un serveur web complet.
Configuration de MySQL
# echo “create database radius;” | mysql -u root -p
# echo “grant all on radius.* to radius@’%’ identified by ‘motdepasse_sql’; flush privileges;” | mysql -u root -p
# mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql
# mysql -u root -p radius < /etc/freeradius/sql/mysql/nas.sql
Installation de Freeradius
apt-get install freeradius freeradius-utils freeradius-mysql
Configuration de Freeradius
- Modifier le fichier /etc/freeradius/sql.conf
sql {
database = “mysql”
driver = “rlm_sql_${database}”
server = “localhost”
login = “radius”
password = “motdepasse_sql”
radius_db = “radius”
acct_table1 = “radacct”
acct_table2 = “radacct”
postauth_table = “radpostauth”
authcheck_table = “radcheck”
authreply_table = “radreply”
groupcheck_table = “radgroupcheck”
groupreply_table = “radgroupreply”
usergroup_table = “radusergroup”
deletestalesessions = yes
sqltrace = no
sqltracefile = ${logdir}/sqltrace.sql
num_sql_socks = 5
connect_failure_retry_delay = 60
readclients = yes
nas_table = “nas”
$INCLUDE sql/${database}/dialup.conf
}
- Modifier le fichier /etc/freeradius/radiusd.conf : décommenter les 2 lignes suivantes :
$INCLUDE sql.conf
$INCLUDE sql/mysql/counter.conf
- Modifier le fichier /etc/freeradius/sites-available/default (les lignes “files” doivent être commentées)
authorize {
preprocess
chap
suffix
sql
expiration
logintime
pap
}
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
eap
}
preacct {
preprocess
acct_unique
suffix
}
accounting {
detail
radutmp
sql
}
session {
radutmp
sql
}
post-auth {
sql
# sql_log
exec
Post-Auth-Type REJECT {
attr_filter.access_reject
}
}
- Lancer freeradius en mode console pour tester si tout fonctionne bien et voir les messages :
# /etc/init.d/freeradius stop
# freeradius -X
[...]
Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on proxy address * port 1814
Ready to process requests.
- modifier dans le fichier /etc/freeradius/clients.conf le secret partagé entre le NAS (pfSense) et le serveur radius (Debian) :
client 10.10.10.10 {
ipaddr = 10.10.10.10
secret = monsecret_nasradius
nastype = other
}
10.10.10.10 correspond à l’adresse ip de votre pfsense.
- Redémarrer Freeradius
# /etc/init.d/freeradius start
Vous disposez désormais d’un annuaire freeradius installé et fonctionnel.
Installation de Daloradius
La bibliothèque php-db doit être installé pour que daloradius fonctionne correctement.
apt-get install php-db
Se rendre sur le site pour télécharger l’archive http://sourceforge.net/projects/daloradius/
- Extraire daloradius.tar.gz dans /var/www
tar -zxvf daloradius.tar.gz
cp daloradius/ /var/www -R
- Il nous faut maintenant changer les permissions des fichiers et dossiers correspondants :
chown www-data:www-data /var/www/daloradius -R
chmod 644 /var/www/daloradius/library/daloradius.conf.php
Installation de la base de donnée
- Si vous disposez d’un schéma de base :
cd /var/www/daloradius/contrib/db
mysql -u root -p radius < mysql-daloradius.sql
- Si vous installez sans schéma de base (nouvelle installation):
mysqladmin create radius
Deux options s’offre à vous :
A. Si vous disposez de FreeRADIUS 1.X then:
mysql -u root -p radius < fr1-mysql-daloradius-and-freeradius.sql
B. Si vous disposez de FreeRADIUS 2.X then:
mysql -u root -p radius < fr2-mysql-daloradius-and-freeradius.sql
Nous mettons les informations de la base dans le fichier de configuration :
cd library/
vi daloradius.conf.php
Utilisation de daloradius
Connectez-vous sur votre annuaire http://votreip/daloradius
Login:
username: administrator
password: radius
N’oubliez pas de changer immédiatement le mot de passe de connexion par défaut. Pour cela connectez-vous à votre base avec phpMyAdmin puis allez dans la section “Operators”.