Retour aux projets

NM Network Access Manager

Interface web de gestion centralisée d'un serveur FreeRADIUS. Permet d'administrer les utilisateurs, les groupes, les politiques AAA et de consulter les sessions actives — sans toucher aux fichiers de configuration ou à la base de données directement.

PHP OOP FreeRADIUS MySQL Bootstrap RADIUS Protocol
Catégorie Administration réseau
Stack PHP OOP · MySQL · Bootstrap
Protocole RADIUS (RFC 2865)
Statut ● Actif

Aperçu de l'interface

Flux d'authentification RADIUS

💻
Client
Supplicant
📡
NAS / AP
Access-Request
🔐
FreeRADIUS
AAA Server
🗄️
MySQL
radcheck / radreply
🌐
NM NAM
Interface web

Fonctionnalités principales

Gestion complète des utilisateurs RADIUS : création, modification, suppression, réinitialisation de mot de passe.
Gestion des attributs radcheck et radreply : quotas, bande passante, VLAN assigné, durée de session.
Organisation des utilisateurs en groupes avec politiques héritées (radusergroup, radgroupcheck).
Enregistrement et administration des équipements NAS (routeurs, switchs, points d'accès) avec secret partagé.
Consultation en temps réel des sessions actives depuis la table radacct avec possibilité de déconnexion (CoA / DM).
Historique des connexions avec filtres par utilisateur, NAS, date et statut (Accept / Reject).
Dashboard avec statistiques : sessions actives, authentifications réussies/échouées, top utilisateurs, graphes de consommation.
Authentification admin sécurisée, rôles et permissions sur les modules.

Points techniques notables

Le principal défi était d'abstraire le schéma de base de données de FreeRADIUS (tables radcheck, radreply, radusergroup, radacct…) en une couche modèle cohérente, manipulable depuis l'interface sans connaître le détail du schéma. Le routeur interne du NM Base Framework gère toutes les routes en un seul point d'entrée (public/index.php), ce qui simplifie la sécurisation des accès par middleware avant chaque contrôleur.

La gestion des attributs RADIUS est particulièrement flexible : l'interface permet d'ajouter n'importe quel attribut standard (Framed-IP-Address, Session-Timeout, WISPr-Bandwidth-Max-Down, etc.) sans modifier le code — ils sont gérés comme des entrées dynamiques en base.