Vous êtes sur la page 1sur 28

‘r

Rapport de mise en place d’un


serveur d’authentification radius :
Cas de RADIUSDESK

NOM PRÉNOM
AMEGNRAN K. Wilfried Honoré
AOUGAH Y. Jean-Félix
SEHOUBO Romaric K.A.T
DIMADO Koffi Franco

Superviseur : Mr NASSAR k. Willy


SOMMAIRE
Introduction...........................................................................4
I. Installation et Configuration de serveur web Nginx.........5
II. Installation et Configuration de MariaDB......................9
III. Installation et configuration de Radiusdesk................11
IV. Installation et Configuration de freeradius..................17
V. Configuration de l’interface Web de RADIUSDESK....21
Conclusion..........................................................................27
Introduction
Le protocole Radius est un système d'authentification standard
mise au point sur les routeurs Mikrotik afin de gérer les utilisateurs.

Ce pendant, le système de Router OS de mikrotik est dôté d'une


licence selon laquelle le nombre de connexion simultané est limité
par rapport au niveau de licence du système.

c'est dans cette perspective et en vue d'apporter une solution pour


remédier à ce problème que nous avions eu à faire des recherches

afin de trouver un système d'authentification libre et accessible pour


tout le monde. Suite à nos diverses recherches nous avions trouvé
un système authentification opensource et facile à mettre en place
nommé radiusdesk et c'est sur ce système que sera axé nos
diverses présentations et configurations.

Le document issu de nos travaux est subdivisé en 5 étapes :


Installation et configuration du serveur Nginx, Installation et
configuration de la base de donnée MariaDB, Installation et
configuration du serveur Radiusdesk , Installation et configuration
du serveur freeradius et enfin la configuration de l’interface web de
Radiusdesk.
 Présentation de l’architecture réseau
Nous allons présenté l’architecture réseau sur lequel nous allons
nous base afin de réaliser notre système d’authentification.

Figure 1 : Architecture réseau du système d’authentification


I. Installation et Configuration de serveur web
Nginx
Nginx est un serveur Web qui semble avoir dépassé Apache en
termes de popularité et de nombre de sites actifs sur Internet
aujourd'hui. Il est frais, léger, rapide, s'adapte bien et est capable
de supporter beaucoup de charge sans surcharger votre système.

1. Installation du serveur Ngnix

Nous allons tout d’abord mettre à jour notre serveur avec la


commande suivantes
# Obtenez les dernières listes de packages
sudo apt-get update
 Assurez-vous que le pack de langue anglaise est installé

sudo apt-get install language-pack-en-base

 Installer le serveur Nginx

sudo apt-get install nginx

 Assurez-vous que le serveur Web démarre et fonctionne

sudo systemctl stop nginx.service


sudo systemctl start nginx.service

Accédez à l'adresse IP du serveur sur lequel vous avez


installé Nginx à l' aide d'un navigateur pour vous assurer que Nginx
fonctionne normalement, par exemple http://127.0.0.1
2. Configuration de Nginx

L’installation par defaut de nginx ne prend pas en


charge l’interprétation de fichiers php. Pour ce faire nous allons
installer un service appelé php.fpm qui sera à l’écoute les
demandes d’interprétation.

 Installez le service php-fpm

sudo apt-get install php-fpm


sudo systemctl enable php7.4-fpm
sudo systemctl disable php7.4-fpm

3. Modification des fichiers de configuration de nginx


Maintenant que le service php-fpm est installé, nous devons
changer la configuration par défaut du serveur Nginx pour l'utiliser.
Modifiez le fichier /etc/nginx /sites-enable/default et ajoutez
index.php à cette ligne.

nano /etc/nginx /sites-enabled/default

Figure 2 : Modification du fichier /etc/nginx /sites-enabled/default


 Activez le traitement PHP en dé-commentant cette
section toujours dans le fichier /etc/nginx/sites-enabled/
default

Figure 3 : Activation du traitement PHP

 Activer le masquage des fichiers .htaccess

# deny access to .htaccess files, if Apache's document


root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}

Après avoir appliquer ces différentes modifications nous allons


recharger les fichiers de configuration de notre serveur nginx avec
la commande.

sudo systemctl reload nginx.service


Nous allons à présent créer un fichier php pour tester le
fonctionnement de notre serveur web nginx.

# Création du fichier test.php


sudo nano /var/www/html/test.php

# Ajouter le code suivant dans le contenu du fichier


test.php crée

<?php
phpinfo();
?>

# ce code permet d’avoir les diverses informations sur


le service php installe
 Accédez à votre navigateur et tapez l’adresse ip suivante
http://ip_serveur/test.php et voyez si la page affiche les
informations PHP.

Figure 4 : Information sur le service PHP


II. Installation et Configuration de MariaDB
MariaDB est un système de gestion de base de données
relationnelle open source, couramment utilisé comme alternative à
MySQL en tant que partie de base de données de la pile populaire
LAMP (Linux, Apache, MySQL, PHP/Python/Perl). Nous avons
découvert que la version de MySQL fournie par défaut avec Ubuntu
20.04 défragmentait des choses sur RADIUSdesk. C’est la raison
pour laquelle nous avions choisi d’installer MariaDB.

 Installation de MariaDB
# Installation du serveur MariaDB
sudo apt-get install mariadb-server php-mysql
# Activation du serveur
sudo systemctl enable mariadb
# Redemarrage du serveur
sudo systemctl restart mariadb
# Verification de l’etat d’activite du serveur
sudo systemctl status mariadb

Nous avions constaté qu’avec Ubuntu 20.04, la version groupée de


MariaDB est à la version 10.3 qui a introduit quelques modes stricts
qui ont quelques problèmes avec l'implémentation de la base de
données RADIUSdesk. Pour ce faire nous allons désactiver le
mode SQL strict dans MariaDB en créant un nouveau fichier
/etc/mysql/conf.d/disable_strict_mode.cnf .
# Création du fichier
nano /etc/mysql/conf.d/disable_strict_mode.cnf

# Ajoutez le contenu ci-après a l’intérieur du fichier

[ mysqld ]
sql_mode
=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DI
VISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTI
ON

 Enregistrer le fichier et redémarrer le serveur Mysql

sudo systemctl restart mariadb

 Modification de la date d’expiration de certains fichiers


en modifiant le fichiers /etc/nginx/sites-availabled/default

# Ajoutez la ligne suivante dans la section serveur

location ~ ^/cake3/.+\.(jpg|jpeg|gif|png|ico|js|css)$ {
rewrite ^/cake3/rd_cake/webroot/(.*)$
/cake3/rd_cake/webroot/$1 break;
rewrite ^/cake3/rd_cake/(.*)$
/cake3/rd_cake/webroot/$1 break;
access_log off;
expires max;
add_header Cache-Control public;
}

# Ensuite recharger la configuration du serveur nginx

sudo systemctl reload nginx.service


Figure 5 : Modification du fichier /etc/nginx/sites-availabled/default

III. Installation et configuration de Radiusdesk


RADIUSdesk est un gestionnaire de points d'accès sans fil Open
Source basé sur le Web. Vous pouvez gérer les utilisateurs, les
coupons, les appareils et les configurations de maillage à partir d'un
tableau de bord central. RADIUSdesk est composé de trois
éléments essentiels qui sont :
rd: le répertoire avec son contenu qui contient tout le code HTML et
JavaScript et est utilisé comme couche de présentation.
Cake3: une application CakePHPv3 et peut être considérée comme
la salle des machines. Ici, les données sont traitées avant d'être
présentées par la couche de présentation.
Login: un répertoire avec diverses pages de connexion qui sont
gérées de manière centralisée via l'applet RADIUSdesk Dynamic
Login Pages . Bien que cela soit facultatif, il est utilisé par la plupart
des installations.
 Installation des packages requis

sudo apt-get install php-cli php-mysql php-gd php-curl


php-xml php-mbstring php-intl git wget

# Redémarrage du service php

sudo systemctl restart php7.4-fpm

 Consulter le référentiel git RdCore

cd /var/www
sudo git clone https://git.code.sf.net/p/radiusdesk/git
rd_code

# Cela permettra la creation du repertoire rd_code


contenant des sous dossiers

 Création de lien symboliques

Nous allons à présent créer des liens symboliques dans le


répertoire où Nginx servira le contenu RADIUSdesk.

cd /var/www/html
sudo ln -s ../rd_code/rd/build/production/Rd/ ./rd
sudo ln -s ../rd_code/cake3 ./cake3
sudo ln -s ../rd_code/login ./login
 Modification des droits propriétaires
Changez la propriété des fichiers suivants en www-data afin que
Nginx puisse apporter des modifications aux fichiers et répertoires.

sudo mkdir -p /var/www/html/cake3/rd_cake/logs

sudo mkdir -p
/var/www/html/cake3/rd_cake/webroot/files/ imagecache

sudo mkdir -p /var/www/html/cake3/rd_cake/tmp


sudo chown -R www-data.
/var/www/html/cake3/rd_cake/tmp
sudo chown -R www-data.
/var/www/html/cake3/rd_cake/logs

sudo chown -R www-data. /var/www/html/cake3/rd_cake


/webroot/img/realms

sudo chown -R www-data. /var/www/html/cake3 /rd_cake /


webroot/img/dynamic_details

sudo chown -R www-data. /var/www/html/cake3/rd_cake


/webroot/img/dynamic_photos

sudo chown -R www-data. /var/www/html/cake3/rd_cake


/webroot/img/access_providers

sudo chown -R www-data. /var/www/html/cake3/rd_cake


/webroot/img/nas

sudo chown -R www-data. /var/www/html/cake3/rd_cake


 Création de la base de donnée rd
/webroot/files/imagecache
sudo su
mysql -u root -p
create database rd;
GRANT ALL PRIVILEGES ON rd.* to 'rd'@'127.0.0.1'
IDENTIFIED BY 'rd';
GRANT ALL PRIVILEGES ON rd.* to 'rd'@'localhost'
IDENTIFIED BY 'rd';
exit;
 Importation du fichier rd.sql dans la base de donnée
sudo mysql -u root -p rd < /var/www/html/cake3/rd_cake/
setup/db/rd.sql

 Modification du fichier /etc/nginx/sites-enabled/default

sudo nano /etc/nginx/sites-enabled/default

# Ajoutez le code suivant dans la section serveur

location /cake3/rd_cake {
rewrite ^/cake3/rd_cake(.+)$ /cake3/rd_cake/webroot$1
break;
try_files $uri $uri/
/cake3/rd_cake/index.php$is_args$args;
}
# Recharger les fichiers de configuration de nginx

sudo systemctl reload nginx.service

Figure 6 : Modification du fichier /etc/nginx/sites-enabled/default


Pour accéder à l’interface d’administration de RadiusDESK veuillez
saisir l’adresse suivante dans votre navigateur.
http://ip_serveur/rd
exemple : http://127.0.0.1/rd
si souhaitez charger directement le contenu le contenu de
RadiusDesk a partir de la racine veuillez procéder comme suit.

sudo cp -R /var/www/html/rd/* /var/www/html/

Figure 6 : Interface d’authentification du serveur RADIUSDESK

Login : root
password : admin
RADIUSdesk nécessite quelques scripts pour s'exécuter
périodiquement afin de maintenir un système sain et fonctionnel.
Pour activer les scripts cron exécutez la commande suivante, qui
ajoutera le Crons de scripts RADIUSdesk au système Cron.
sudo cp
/var/www/html/cake3/rd_cake/setup/cron/cron3
/etc/cron.d/
sudo apt-get update
sudo apt-get install software-properties-common

IV. Installation et Configuration de freeradius


Freeradius est un serveur radius libre qui offre une alternative aux
autres serveurs d’entreprise RADIUS et est l’un des serveurs les
plus riches en fonctionnalités aujourd’hui.
 Installation de freeradius

sudo apt-get install libdatetime-perl


sudo apt-get install freeradius freeradius-mysql

# Répondez oui pour les installer avec leurs


dépendances
# Veuillez noter que lorsque ce paquet est installé,
certaines choses sont générées qui peuvent prendre
beaucoup de temps sur des machines plus lentes .

 Activation et démarrage de freeradius


# Activer le service freeradius
sudo systemctl enable freeradius
# Démarrer le service freeradius
sudo systemctl start freeradius
# Affichier l’etat du serveur freeradius
sudo systemctl status freeradius
Nous allons configurer freeradius de la manière suivante afin qu’il
puisse fonctionne avec notre serveur RADIUSDESK.
# Arrêtez le service s'il est déjà en cours d'exécution
sudo systemctl stop freeradius
# Sauvegardez le répertoire FreeRADIUS d'origine
sudo mv /etc/freeradius /etc/freeradius.orig
# Extrayez le répertoire FreeRADIUS modifié par RADIUSdesk
sudo tar xzf
/var/www/html/cake3/rd_cake/setup/radius/freeradius-3-
radiusdesk.tar.gz –one-top-level=/etc/freeradius/

sudo mv /etc/freeradius/freeradius /etc/freeradius/3.0


sudo chown -R freerad. /etc/freeradius/3.0/
sudo mkdir /var/run/freeradius
chown freerad. /var/run/freeradius

 Configuration du secret partagé entre le serveur radius et les


client radius
sudo nano /etc/freeradius/3.0/sites-enabled/dynamic-
clients
 Recherchez cette partie dans le fichier et remplacez
FreeRADIUS-Client-Secret par la valeur que vous choisissez
d'utiliser.
# Echo the IP address of the client.
FreeRADIUS-Client-IP-Address = "%{Packet-Src-IP-Address}"

# require_message_authenticator
FreeRADIUS-Client-Require-MA = no

# secret
FreeRADIUS-Client-Secret = "testing123"

# shortname
FreeRADIUS-Client-Shortname = "%{Packet-Src-IP-Address}"
 Commentez les deux lignes suivantes dans le fichier d'unité
Systemd
sudo nano /lib/systemd/system/freeradius.service

 Consultez cet exemple pour voir les deux lignes à


commenter. Ne pas le faire entraînera un disfonctionnement
du système avec un démarrage anormal de freeradius
[Unit]
Description=FreeRADIUS multi-protocol policy server
After=syslog.target network.target
Documentation=man:radiusd(8) man:radiusd.conf(5)
http://wiki.freeradius.org/
http://networkradius.com/doc/

[Service]
Type=forking
PIDFile=/run/freeradius/freeradius.pid
#EnvironmentFile=-/etc/default/freeradius
#ExecStartPre=/usr/sbin/freeradius $FREERADIUS_OPTIONS
-Cxm -lstdout
ExecStart=/usr/sbin/freeradius $FREERADIUS_OPTIONS
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

 Après avoir terminé ces commandes, vous pouvez tester si


FreeRADIUS démarre correctement.

sudo systemctl daemon-reload


sudo systemctl restart freeradius
sudo systemctl status freeradius
 Correction d'un petit bug

Il y a un petit bug qui empêche FreeRADIUS de démarrer après un


redémarrage. Il a été signale sur le site https://bugs.debian.org/cgi-
bin/bugreport.cgi?bug=954911. Pour corriger ce bug nous allons
devoir créer un fichier appelé /usr/lib/tmpfiles.d/freeradius.conf .

sudo nano /usr/lib/tmpfiles.d/freeradius.conf

# Ajoutez la ligne suivante

d / run / freeradius 750 freerad freerad -

 Ajoutez Nginx pour exécuter des scripts

Pour permettre au serveur Web d'exercer un certain contrôle sur


FreeRADIUS, nous aurons un script personnalisé qui sera ajouté
au fichier sudoers. La bonne manière de modifier le fichiers sudoers
est d’utiliser la commande suivante :
sudo visudo

# Ajoutez ce qui suit a la fin du fichier

# Les membres du groupe admin peuvent obtenir les


privilèges root
%admin ALL=(ALL) ALL www-data ALL =
NOPASSWD:/var/www/html/cake3/rd_cake/setup/scripts/radm
in_wrapper.pl

#Confirmez que cette ligne est maintenant dans le


fichier /etc/sudoers

sudo cat /etc/sudoers


V. Configuration de l’interface Web de RADIUSDESK
 Présentation du tableau de bord de radiusdesk

Figure 7 : Présentation du tableau de bord de RADIUSDESK

 Création de profil utilisateur

2 3
1

4
Figure 8 : Création d’un profil utilisateur

 Création d’un utilisateur

2
1

3
Figure 9 : Création d’un utilisateur

 Ajout d’un client Radius


Nous allons configurer le client radius au niveau de votre routeur
mikrotik afin qu’il routeur puisse communiquer avec notre serveur
radius.
Adresse IP du
serveur radius
Cle de securite
entre le serveur et
le client radius

Figure 10 :Configuration du client radius sur le routeur mikrotik

Après avoir renseigner les paramètres de connexion au niveau du


client radius, nous allons à présent ajouter le client radius au niveau
du serveur radius.
1

4
3

Figure 11:Ajout du client radius sur le serveur RadiusDESK

 Les Tests
Nous allons à présent effectuer le test de connexion entre notre
routeur mikrotik et notre serveur radius en se connectant à travers
le portail captif implémenter sur le routeur mikrotik avec l’utlisateur
test créer sur notre serveur radiusdesk.
Figure 12 : Test de connexion réussi

Nous avions remarqué que l’utilisateur test que nous avions créer
s’est connecté avec succès.
 Processus d’authentification entre le serveur radius et la
client radius
Nous allons à présent observer comment d’authentification se
passe entre les deux entités. Lors de l’authentification le client
envoie une requête au serveur contenant ses identifiants (nom
d’utilisateur, mot de passe, clé secrète), ces derniers sont ensuite
vérifiés par le serveur et comparés aux informations stockées dans
la base de donnée. En fonction de la nature des informations
(correct ou incorrect) le serveur peux autoriser ou refuser la
connexion du client. La figure ci-dessous nous montre le processus
d’authentification entre le serveur et le client radius.

Figure 13 : Processus d’authentification entre le serveur et le client radius


Nous allons à présent capturer le trafic entre le serveur et le client
grâce à l’outil d’analyse des paquets nommé Wireshark.

Figure 13 : analyse des paquets radius dans wireshark


Conclusion
On peut retenir qu’après l’identification des utilisateurs, leur
authentification est nécessaire pour accéder aux données d’un
système. Cette authentification se fait par l’intermédiaire d’un
serveur d’authentification, chargé d’autoriser ou non l’accès aux
données.

Vous aimerez peut-être aussi