Portail captif/ freeradius/ créer des utilisateurs



  • Bonjour,

    Dans le cadre de mon stage je dois faire un portail captif sous pfsense. (version 3.2)
    J'utilise freeradius pour enregistrer les utilisateurs, tout cela marche très bien.
    Le portail : http://hpics.li/2dfbd40

    Cependant j'ai rajouté sur ma page de connexion un lien "inscription" qui amené vers une autre page html où l'utilisateur dois rentrer un identifiant et un mot de passe pour s’inscrire et quand il valide je voudrait que cette identifiant et ce mot de passe s'ajoute dans la partie freeradius de mon pfsense.
    Ma page d'inscription : http://hpics.li/9e5554f

    Ma question est donc : le action du form de ma page inscription doit pointer vers quel fichier ? Actuellement je l'ai mis vers /usr/local/www/pkg_edit.php le problème c'est que cette page me créer une erreur et me renvoie sur /usr/local/www/csrf/csrf-magic.php et un bouton "try again" apparait lorsque je clique dessus cela me met "error not founded" mais mon utilisateur freeradius est cependant bien ajouté dans mon pfsense.

    Je voudrais que dés que l'utilisateur clique sur "inscription" il soit renvoyé sur le portail et que son id et son password soit bien enregistré dans freeradius.

    Aussi j'ai essayé de modifier le chemin de mon bouton "try again" en le faisant pointer vers ma page portail mais quand j'ai fait ça mon pfsense à crash….

    Si quelqu'un à le moindre indice je suis preneur !

    Merci d'avance.



  • Il est bien regrettable que, bien que la page 'A LIRE EN PREMIER' soit ouverte sur votre écran (preuve votre copie d'écran),
    vous n'en ayez pas tenu compte pour présenter votre question !
    Cette page décrit une façon de fournir des informations pour présenter votre question.
    Beaucoup la recommande …

    Avoir le droit de s'autoinscrire est particulièrement dangereux, en terme de sécurité. (et incohérent avec le discours de la page d'authentification).
    Il ne me semble peu évident qu'un page html puisse insérer dans la base sous-jacente de FreeRadius un identifiant et son mot de passe ...
    En tout état de cause, il est probable qu'il faille un 'truc' serveur qui aurait le droit de le faire.

    Khan aurait une solution (je l'ai trouvé en 2'), mais ce n'est certainement pas à conseiller ...



  • Merci pour votre réponse il est vrai que je n'est pas vraiment respecté la charte, je repose donc mon probléme :

    Contexte : Je suis actuellement en stage pour ma deuxième année de prépa d'ingénieur (l'ESILV Paris ).

    Besoin : Prenons un exemple, imaginons un camping, le campeur arrive à l'accueil pour la wifi , la secrétaire ouvre sur son ordinateur une "page web secrétaire" lui permettant en rentrant le nom du client de lui sortir un code qui lui permettra de se connecter au réseau du camping. Je dois donc relié ma page html/js (celle où on rentre le nom du client et qui nous donne un code) avec ma base de données freeradius (c'est cela que je n'arrive pas à faire).

    Wan : nombre 1, type adresse ip local, 192.168.1.199/24
    Lan : nombre 1, type adresse ip local, 192.168.182.1
    Dmz : aucun
    Wifi : portail captif avec freeradius, dns forwarder, dhcp depuis pfsense
    Règle NAT : port 443 https, port 22 ssh
    Règle fireward : port 443 https, port 22 ssh
    Autre fonction sur pfsense : portail captif

    Question : j'ai créer une page html/js où la "secrétaire" rentre le nom du client et le js génère un code aléatoire. Me voilà donc avec un id et un code, je voudrais les stocker dans la base donnée de freeradius, comme si j'avais fait sur pfsense freeradius -> user -> add et que j'avais ajouté un utilisateur avec un mot de passe.

    Piste imaginé : trouver dans le pfsense quelle page php enregistre l'id et le mot de passe des utilisateurs freeradius et ensuite quelle fonction dans la page l'enregistre. Une fois trouvé je créerais une page php rattaché à ma page html/js avec les fonctions permettant d'envoyer mon id et code dans la base de données freerradius.

    Test : j'avais mis dans mon html un "form" avec comme "action" la page php pkg_edit.php (celle qui est utilisé quand on créer un utilisateur via la vrai interface freeradius, avec cette méthode l'utilisateur avec le code était bien créer mais j'étais renvoyé sur la page du pfsense, or pr pour une secrétaire arriver sur l'interface de pfsense n'est pas le top…

    J'espère avoir était clair, si quelqu'un à un début d'idée je suis preneur, merci d'avance.



  • Pour ce type d'usage, plutôt que de réécrire ton propre code, n'est-il pas plus simple de définir un compte sur pfSense pour la secrétaire si ce compte est configuré pour autoriser les fonctions de gestion des comptes clients "portail captif" et "freeradius" en utilisant directement l'interface de pfSense ?

    Si on était en dehors du cadre d'un stage / projet, ma suggestion serait plutôt de gérer une base de comptes clients dans un annuaire LDAP  8)



  • Merci pour votre réponse rapide,
    Le problème en utilisant la page pfsense même juste pour créer un utilisateur c'est que c'est "trop compliqué" pour  la personne qui va rentrer l'id et le mot de passe, il me faut une page vraiment très simple ou l'on peut juste introduire un nom. Comme ça après avoir entrer le nom de la personne une page texte ou word s'ouvre et la secrétaire a plus qu'à cliquer sur imprimer pour imprimer un petit papier ou il y aura le nom de la personne, son code wifi et la durée du séjour du client, qu'elle lui remettra par la suite (cela je l'ai déjà fait mais si le code qui y est inscrit ne permet pas de se connecter ça ne sert pas en grand chose….).



  • Il te faut quand même au minimum gérer des informations de durée pour t'assurer que ton campeur n'a automatiquement plus d'accès au delà de la durée du séjour.

    Techniquement, si tu as déjà tout le code et comme tu as déjà configuré ton portail captif pour t'appuyer sur Radius, il suffit que ton appli de gestion de compte écrive dans un annuaire LDAP et tu configure ton serveur Radius pour utiliser cet annuaire LDAP.
    De cette manière, tu ne crées pas de compte sur pfSense et tu as la maîtrise de ton code et de ce que tu veux stoker comme information.

    L'approche que tu as choisi (pour simplifier, le revamping de l'interface pfSense) n'est peut-être pas aussi triviale que ça  :-\



  • Pourquoi faire simple quand on peut faire compliqué ?

    Reprenons dans l'ordre :
    1- La doc du portail captif (captive portal) de pfSense : https://doc.pfsense.org/index.php/Captive_Portal
    2- Notion de Users : "If authentication is used, this can be performed using pfSense's built-in user management, or an external authentication server such as a RADIUS server."
    3- Nécessairement il faut ajouter des users : ce n'est pas automatique ! ce n'est pas simple !

    Mais est mentionné un système (supporté) de 'vouchers' !
    cf https://doc.pfsense.org/index.php/Captive_Portal_Vouchers
    Les 'vouchers' sont très utilisé dans les campings, hotels, …; parce que cela permet d'accorder, très aisément, un temps de connexion au travers du portail captif.
    On peut, par exemple, créer des vouchers de 1 jour, 2 jours, 7 jours; et ils commencent à partir de leur première utilisation.
    On peut ou non les faire payer : cela évite que des petits voisins malins utilisent le signal Wifi plutôt forcément ouvert (quoique) !

    Il est notable que le système de 'vouchers' fonctionnent de base 'sans rien faire' (sauf adaptation de la page par défaut : traduction en français par ici !).
    Il suffit juste de lire (bien lire, plutôt 2 fois qu'1) et d'essayer ...
    NB : chercher comment imprimer les rolls par exemple ...



  • @jdh:

    Pourquoi faire simple quand on peut faire compliqué ?

    Peut-être que le mécanisme ne correspond pas au cadre de son stage ou aux conditions d'utilisation ?

    Le voucher, c'est bien (mais anonyme) et l'autre inconvénient, c'est qu'il faut générer des vouchers pour chaque durée.
    Un lot de voucher par durée. Techniquement ça marche mais est-ce bien pratique dans ce cas ?

    Et contrairement à une base de compte, lorsqu'il n'y a plus de voucher, il faut en générer d'autres.
    Si la secrétaire a du mal à créer un compte Radius, pour les vouchers, il faut choisir la durée puis exporter (CSV)

    Au delà de ces points de détails, un autre aspect important de la différence entre l'approche voucher et Radius, c'est que Radius permet de comptabiliser le temps d'utilisation du portal (en mode connecté) alors que la durée de vie du voucher commence à sa première utilisation et expire en fonction de la durée du voucher, que l'utilisateur se connecte ou pas.

    Dans le cas de ce projet, je n'ai pas d'avis sur quel modèle est le plus adapté  ;)



  • J'ai exposé les vouchers qui sont une technique simple, facile et aisé à mettre en place (après la phase essentielle de compréhension).
    Cela fonctionne très bien dans des campings et hôtels : il suffit juste d'imprimer des pages de vouchers puis les distribuer ensuite.

    Je reviens sur ce que j'ai écrit

    2- Notion de Users : "If authentication is used, this can be performed using pfSense's built-in user management, or an external authentication server such as a RADIUS server."
    3- Nécessairement il faut ajouter des users : ce n'est pas automatique ! ce n'est pas simple !

    La phase est particulièrement claire : quand on veut authentifier

    • soit on utilise la base utilisateur pfSense
    • soit on utilise une 'authentification externe' telle un serveur Radius.

    Il est clair que l'on utilise pas (jamais ?) les utilisateurs pfSense !
    Donc il faut comprendre que le portail captif pfSense sait s'interfacer, nativement, avec un 'service Radius' (soit le package soit un Radius externe).

    Donc il faut s'intéresser à Radius.
    En premier on lit Wikipedia (forcément) https://fr.wikipedia.org/wiki/Remote_Authentication_Dial-In_User_Service
    Et on comprend que Radius est un intermédiaire

    • qui normalise le transport de données d'authentification,
    • et qui accède (si nécessaire) à une base externe.

    Le problème devient alors

    • mise à jour d'une base externe, par personne autorisée (nettement préférable).

    Et là on a le choix des solutions …


Log in to reply