Recherche sur le site Web

Installer FreeRADIUS et Daloradius sur Rocky/Alma/CentOS 9|8


Je veux installer FreeRADIUS et Daloradius sur CentOS 8/RHEL 8. RADIUS, qui signifie « Remote Authentication Dial-In User Service », est un protocole réseau utilisé pour l'authentification et la comptabilité des utilisateurs distants. Il fournit des services AAA, à savoir Autorisation, Authentification et Comptabilité.

FreeRADIUS est un serveur RADIUS open source, performant, évolutif, modulaire et riche en fonctionnalités. FreeRADIUS prend en charge le proxy de requêtes, le basculement et la répartition de charge, ainsi que l'accès à diverses bases de données en arrière-plan.

Principales fonctionnalités de FreeRADIUS

  • Configuration flexible grâce à une large gamme de méthodes pour sélectionner les configurations utilisateur.
  • Prise en charge complète des attributs RFC 2865 et RFC 2866.
  • EAP avec les sous-types EAP-MD5, EAP-SIM, EAP-TLS, EAP-TTLS, EAP-PEAP et Cisco LEAP
  • Attributs spécifiques des fournisseurs pour près d'une centaine de fournisseurs, y compris BinTec, Foundry, Cisco, Juniper, Lucent/Ascend, HP ProCurve, Microsoft, USR/3Com, Acc/Newbridge et bien d'autres.

Intégrer daloRADIUS dans le mélange

daloRADIUS est une plateforme avancée de gestion RADIUS via le web, écrite en PHP et JavaScript. Elle est principalement destinée à la gestion de points d'accès Hotspot et de déploiements ISP à usage général utilisant le serveur FreeRADIUS. Voici les principales fonctionnalités de daloRADIUS :

  • Couche d'abstraction de base de données avec prise en charge de nombreux systèmes de bases de données – MySQL, SQLite, PostgreSQL, MsSQL et Oracle
  • Gestion avancée des utilisateurs
  • Rapports graphiques et comptables puissants
  • S'intègre à Google Maps pour la géolocalisation
  • Dispose d’un moteur de facturation

Suivez les étapes suivantes pour installer FreeRADIUS et daloRADIUS sur un système Linux CentOS 8/RHEL 8.

Étape 1 : Mettez à jour votre serveur

Ne faites jamais confiance à un système qui n'est pas à jour. Tous les paquets installés peuvent être mis à jour en exécutant la commande suivante dans le terminal.

sudo dnf -y update

Étape 2 : Installer Apache et PHP

Nous utiliserons le serveur Apache httpd pour héberger daloRADIUS sur votre système. Installez les packages httpd et PHP avec la commande suivante.

sudo dnf module reset -y php
sudo dnf module reset -y php && sudo dnf module install -y php:8.0
sudo dnf -y install php-{cli,curl,mysqlnd,devel,gd,pear,mbstring,xml,pear,zip}
sudo pear install DB
sudo pear install MDB2

Vérifiez la version de PHP installée pour confirmer que l'installation a été réussie.

$ php -v
PHP 8.0.30 (cli) (built: Aug  3 2023 17:13:08) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.30, Copyright (c) Zend Technologies

Installer le serveur web Apache :

sudo dnf -y install @httpd

Démarrez et activez les services php-fpm et httpd.

sudo systemctl enable --now httpd php-fpm

Validons le démarrage en vérifiant l'état des deux services.

systemctl status httpd php-fpm

Autoriser les ports http et https sur le pare-feu.

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Référence pour l'installation d'Apache httpd :

  • Installer le serveur Apache httpd sur RHEL/CentOS 8

Étape 3 : Installer et configurer MariaDB

Nous avons un guide séparé sur l'installation du serveur de base de données MariaDB sur RHEL/CentOS 8. Référez-vous à celui-ci en utilisant le lien ci-dessous.

  • Installer le serveur de base de données MariaDB sur CentOS/RHEL 8

Après l'installation, accédez à la console MySQL en tant qu'utilisateur root et créez une base de données/utilisateur pour FreeRADIUS/daloRADIUS.

$ mysql -u root -p
CREATE DATABASE radius;
GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY "StrongradIusPass";
FLUSH PRIVILEGES;
\q

Étape 4 : Installation de FreeRADIUS

Les paquets FreeRADIUS sont disponibles dans le dépôt modulaire.

$ sudo dnf module list freeradius
Last metadata expiration check: 0:04:00 ago on Thu 10 Oct 2019 05:08:54 PM EAT.
CentOS-8 - AppStream
Name                      Stream                 Profiles                 Summary                                                                  
freeradius                3.0 [d]                server [d]               High-performance and highly configurable free RADIUS server              

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Pour l’installer, il suffit d’exécuter la commande.

sudo dnf install -y @freeradius freeradius-utils freeradius-mysql

Démarrez le service après l'installation.

sudo systemctl enable --now radiusd.service

Vous pouvez maintenant vérifier le statut :

$ systemctl status radiusd.service
● radiusd.service - FreeRADIUS high performance RADIUS server.
   Loaded: loaded (/usr/lib/systemd/system/radiusd.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2023-11-23 01:53:42 UTC; 3s ago
  Process: 14781 ExecStart=/usr/sbin/radiusd -d /etc/raddb (code=exited, status=0/SUCCESS)
  Process: 14778 ExecStartPre=/usr/sbin/radiusd -C (code=exited, status=0/SUCCESS)
  Process: 14732 ExecStartPre=/bin/sh /etc/raddb/certs/bootstrap (code=exited, status=0/SUCCESS)
  Process: 14731 ExecStartPre=/bin/chown -R radiusd.radiusd /var/run/radiusd (code=exited, status=0/SUCCESS)
 Main PID: 14783 (radiusd)
    Tasks: 6 (limit: 22612)
   Memory: 77.8M
   CGroup: /system.slice/radiusd.service
           └─14783 /usr/sbin/radiusd -d /etc/raddb

Nov 23 01:53:41 rocky8.mylab.io sh[14769]:                   URI:http://www.example.com/example_ca.crl
Nov 23 01:53:41 rocky8.mylab.io sh[14769]: Certificate is to be certified until Jan 22 01:53:41 2024 GMT (60 days)
Nov 23 01:53:41 rocky8.mylab.io sh[14769]: Write out database with 1 new entries
Nov 23 01:53:41 rocky8.mylab.io sh[14769]: Data Base Updated
Nov 23 01:53:41 rocky8.mylab.io sh[14741]: openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12  -passin pass:'whatever' -passout pass:'whatever'
Nov 23 01:53:41 rocky8.mylab.io sh[14741]: chmod g+r client.p12
Nov 23 01:53:41 rocky8.mylab.io sh[14741]: openssl pkcs12 -in client.p12 -out client.pem -passin pass:'whatever' -passout pass:'whatever'
Nov 23 01:53:41 rocky8.mylab.io sh[14741]: chmod g+r client.pem
Nov 23 01:53:41 rocky8.mylab.io sh[14741]: cp client.pem '[email '.pem
Nov 23 01:53:42 rocky8.mylab.io systemd[1]: Started FreeRADIUS high performance RADIUS server..

Si vous avez le service Firewalld en cours d'exécution, autorisez le trafic radius et http1812 et 1813.

sudo firewall-cmd --add-service=radius --permanent
sudo firewall-cmd --reload

Étape 5 : Configurer FreeRADIUS

Pour configurer FreeRADIUS afin d'utiliser MariaDB, suivez les étapes ci-dessous.

1 – Importer le schéma de la base de données Radius pour remplir la base de données radius

sudo su -
mysql -u root -p radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql

2 – Configurer Radius

Tout d'abord, vous devez créer un lien symbolique pour SQL sous /etc/raddb/mods-enabled

sudo ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/

Configurez le module SQL /raddb/mods-available/sql et modifiez les paramètres de connexion à la base de données pour qu'ils correspondent à votre environnement :

sudo vi /etc/raddb/mods-available/sql
  • La section sql devrait ressembler à ce qui suit.
sql {
driver = "rlm_sql_mysql"
dialect = "mysql"

# Connection info:

server = "localhost"
port = 3306
login = "radius"
password = "StrongradIusPass"

# Database table configuration for everything except Oracle

radius_db = "radius"
}

# Set to ‘yes’ to read radius clients from the database (‘nas’ table)
# Clients will ONLY be read on server startup.
read_clients = yes

# Table to keep radius client info
client_table = "nas"

Commenter les paramètres SSL de MySQL.

 mysql {
                # If any of the files below are set, TLS encryption is enabled
#               tls {
#                       ca_file = "/etc/ssl/certs/my_ca.crt"
#                       ca_path = "/etc/ssl/certs/"
#                       certificate_file = "/etc/ssl/certs/private/client.crt"
#                       private_key_file = "/etc/ssl/certs/private/client.key"
#                       cipher = "DHE-RSA-AES256-SHA:AES128-SHA"
#
#                       tls_required = yes
#                       tls_check_cert = no
#                       tls_check_cert_cn = no
#               }

Ensuite, changez le groupe droit de /etc/raddb/mods-enabled/sql en radiusd :

sudo chgrp -h radiusd /etc/raddb/mods-enabled/sql

Redémarrer le service radiusd

sudo systemctl restart radiusd

Étape 6 : Installer et configurer Daloradius (Optionnel)

Vous pouvez utiliser Daloradius pour gérer le serveur RADIUS depuis une interface web. Il s'agit d'une configuration optionnelle que vous pouvez choisir en fonction de votre cas d'utilisation.

Téléchargez le code daloradius depuis Github.

sudo yum -y install git vim
git clone https://github.com/lirantal/daloradius.git

Importer les tables MySQL de Daloradius

mysql -u root -p radius < daloradius/contrib/db/fr3-mariadb-freeradius.sql
mysql -u root -p radius < daloradius/contrib/db/mariadb-daloradius.sql

Déplacez le dossier daloradius vers le chemin dans /var/www/html

sudo mv daloradius /var/www/

Ensuite, modifiez les permissions du dossier http et définissez les bonnes permissions pour le fichier de configuration de daloradius.

cd /var/www/daloradius/app/common/includes/
sudo cp daloradius.conf.php.sample daloradius.conf.php
sudo chown -R apache:apache /var/www/daloradius/

Vous devriez maintenant modifier le fichier daloradius.conf.php pour ajuster les informations de la base de données MySQL.

sudo vim daloradius.conf.php

Définissez le nom de la base de données, l’utilisateur et le mot de passe pour la connexion.

$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = 'StrongradIusPass';
$configValues['CONFIG_DB_NAME'] = 'radius';

Pour s'assurer que tout fonctionne, redémarrez les services radiusd et httpd.

sudo systemctl restart radiusd.service httpd
systemctl status radiusd.service httpd

Il ne devrait y avoir aucune erreur dans la sortie de l'état du service :

Créer les répertoires supplémentaires requis.

cd /var/www/daloradius/
sudo mkdir -p var/{log,backup}
sudo chown -R apache:apache var

Installez les modules PHP ci-dessous.

sudo pear install DB
sudo pear install MDB2

Configurer le serveur web Apache

Configurer Apache pour écouter sur le port 80 et le port 8000

$ sudo vim /etc/httpd/conf/httpd.conf
Listen 80
Listen 8000

Configurer l'hôte virtuel pour le module des opérateurs :

sudo tee /etc/httpd/conf.d/operators.conf<<EOF
<VirtualHost *:8000>
    ServerAdmin operators@localhost
    DocumentRoot /var/www/daloradius/app/operators

    <Directory /var/www/daloradius/app/operators>
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    <Directory /var/www/daloradius>
        Require all denied
    </Directory>

    ErrorLog /var/log/httpd/daloradius/operators/error.log
    CustomLog /var/log/httpd/daloradius/operators/access.log combined
</VirtualHost>
EOF

Ensuite, nous créons un hôte virtuel pour les utilisateurs :

sudo tee /etc/httpd/conf.d/users.conf<<EOF
<VirtualHost *:80>
    ServerAdmin users@localhost
    DocumentRoot /var/www/daloradius/app/users

    <Directory /var/www/daloradius/app/users>
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    <Directory /var/www/daloradius>
        Require all denied
    </Directory>

    ErrorLog /var/log/httpd/daloradius/users/error.log
    CustomLog /var/log/httpd/daloradius/users/access.log combined
</VirtualHost>
EOF

Créez des répertoires qui stockeront les fichiers journaux.

sudo mkdir -p /var/log/httpd/daloradius/{operators,users}

Désactiver la page d'accueil par défaut du serveur web Apache.

sudo rm /etc/httpd/conf.d/welcome.conf

Si SELinux est activé, étiquetez les répertoires en conséquence.

sudo yum -y install policycoreutils-python-utils
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/daloradius(/.*)?"
sudo restorecon -Rv /var/www/daloradius

Si SELinux est en mode enforcement, ajoutez une étiquette au port 8000 pour qu’il soit utilisé par httpd.

sudo semanage port -m -t http_port_t -p tcp 8000

Vérifiez si cela a été appliqué correctement.

# semanage port -l | grep -w http_port_t
http_port_t                    tcp      8000, 80, 81, 443, 488, 8008, 8009, 8443, 9000

Autoriser l'accès aux ports depuis le pare-feu.

sudo firewall-cmd --add-service={http,https,radius} --permanent
sudo firewall-cmd --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

Redémarrez les services pour vous assurer que tout fonctionne.

sudo systemctl restart httpd radiusd.service

Le statut de vos services peut être vérifié en utilisant systemctl :

systemctl status httpd radiusd

Accédez maintenant à daloradius en utilisant les URL ci-dessous.

  • Application de gestion RADIUS : http://<ip>:8000/
  • Application portail utilisateur RADIUS : http://<ip>

Exemple d'interface de portail d'application de gestion RADIUS.

Les informations de connexion par défaut sont :

Username: administrator
Password: radius

Apparence de l'interface de gestion daloRADIUS :

Amusez-vous à utiliser FreeRADIUS et daloRADIUS :

  • Installer FreeRADIUS et daloRADIUS sur Ubuntu