Problème portail captif + FreeRadius + WAMP
-
Bonjour à toutes et à tous,
Contexte : milieu perso, niveau expertise de l'administrateur : étudiant en 3e année de Télécommunications et Réseaux, age de la solution firewall : quelques jours, version actuelle 2.4.0-RELEASE (amd64)
Besoin : Je dois mettre en place un portail captif qui prend en paramètres l'adresse e-mail et le numéro de téléphone de l'utilisateur, qui lui envoie un code OTP par SMS grâce à son numéro de téléphone, qu'il doit entrer dans le formulaire suivant pour avoir l'accès Internet.
WAN (Wi-Fi de poche) : Adressage par DHCP
LAN : Adressage statique IPv4 192.168.1.1 avec 2 clients virtuels connectés à l'interface
Packages ajoutés : FreeRADIUS 3 pour l'authentification par une base de données SQL.
Un client: 192.168.1.1
Deux interfaces:- la 1ère 'auth': 192.168.1.1:1812
- la 2e 'acct': 192.168.1.1:1813
Les principaux paramètres SQL sont les suivants: - SQL Authorization : Enable;
- SQL Accounting : Enable;
- SQL Session : Disable;
- SQL Post-Auth : Disable;
- Read the group tables : no;
- Read clients from database: no.
Autres fonctions assignées au pfSense : Portail captif : sur l'interface LAN, authentification par RADIUS
Question : Je fais donc face à plusieurs problèmes:
- le 1er est celui de la redirection du serveur Web vers le portail captif (j'ai déjà essayé des tas d'URLs sans succès: ['ip de l'interface']:8002/?zone=portail_captif , ['ip de l'interface']:8002/index.php?zone=portail_captif);
- le 2nd est l'arrêt intermittent de radiusd dans Status/ Services;
- le 3e est l'erreur qui m'est affichée lorsque j'essaie un utilisateur que j'ai créé dans radcheck: Error sending request: No valid RADIUS responses received et elle ne vient pas de l'arret de radiusd, vu que je vérifie qu'il est bien démarré avant chaque essai. Ça ne vient pas non plus des clients, ni des interfaces de FreeRadius vu que l'erreur n'apparaît pas lorsque je désactive le support SQL et je teste un utilisateur créé dans l'interface.
Pistes imaginées : J'utilise une redirection vers mon serveur Web pour le remplissage des formulaires par l'utilisateur et l'écriture dans la base de données (elle est constituée des différentes tables de FreeRadius et d'une table 'utilisateur' qui conserve l'adresse e-mail, le numéro de téléphone et le code OTP que je génère en PHP sur le serveur Web).
Etant donné que ce sont juste l'adresse e-mail et le numéro de téléphone qui sont à la fois obligatoires et constants, je les utilise respectivement comme username et password dans radcheck. En outre, j'ai désactivé l'utilisation des tables de groupe, dans les paramètres SQL de FreeRadius, donc j'ajoute une ligne Fall-Through = yes pour chaque nouvel utilisateur dans la table radreply.J'ai essayé d'adapter mon ancien post au modèle exigé. J'espère que ce sera suffisant.
Merci d'avance :)
-
salut salut
1 faire un tour de tornade et bien lire et appliquer https://forum.pfsense.org/index.php?topic=79600.0
2 reformuler comme le lien https://forum.pfsense.org/index.php?topic=79600.0perso pas tout compris les gros pavé c'est un imbitable donc https://forum.pfsense.org/index.php?topic=79600.0
merci et bon courage
-
Merci à @Tatave pour la réponse.
Conformément à la requête, j'ai mis à jour mon post. ;D -
Je dois mettre en place un portail captif qui prend en paramètres l'adresse e-mail et le numéro de téléphone de l'utilisateur, qui lui envoie un code OTP par SMS grâce à son numéro de téléphone, qu'il doit entrer dans le formulaire suivant pour avoir l'accès Internet.
pfSense sait faire un portail captif, disons 'simple'.
Selon la config de portail captif choisie, une page survient avec une demande d'identification : identifiant + mdp (de mémoire).
Mais je ne vois rien sur pfSense qui enverrait un sms au n° saisie dans un champ (qui n'existe pas) …
Si vous aviez testé déjà ce qui existe, vous auriez vu que c'est assez limité.
Ensuite, à votre avis, on peut ajouter des bout de code pour envoyer un sms à un n° de téléphone sur un firewall ? -
@jdh:
Je dois mettre en place un portail captif qui prend en paramètres l'adresse e-mail et le numéro de téléphone de l'utilisateur, qui lui envoie un code OTP par SMS grâce à son numéro de téléphone, qu'il doit entrer dans le formulaire suivant pour avoir l'accès Internet.
pfSense sait faire un portail captif, disons 'simple'.
Selon la config de portail captif choisie, une page survient avec une demande d'identification : identifiant + mdp (de mémoire).
Mais je ne vois rien sur pfSense qui enverrait un sms au n° saisie dans un champ (qui n'existe pas) …
Si vous aviez testé déjà ce qui existe, vous auriez vu que c'est assez limité.
Ensuite, à votre avis, on peut ajouter des bout de code pour envoyer un sms à un n° de téléphone sur un firewall ?Eh bien, je ne compte pas envoyer d'SMS à partir de pfSense, mais de mon serveur WAMP.
Je n'ai pas trouvé nécessaire d'en parler dans mon post parce que les différents problèmes que je rencontre concernent uniquement le portail captif. Mais pour information, j'utilise l'application SMS Gateway ME pour l'envoi d'SMS. Elle sert à faire d'un équipement fonctionnant sous Android une passerelle SMS et sur le site de l'application, le code PHP d'envoi est disponible.
En fait, le plus gros du travail est fait sur mon serveur WAMP, que j'atteins en redirigeant l'utilisateur du portail captif vers lui (le serveur WAMP). Mais je n'arrive pas à faire une redirection de WAMP vers le portail captif (mon 1er problème).Pour être plus précis, le serveur WAMP fait ceci:
- dans un 1er temps, il affiche un formulaire qui demande l'adresse e-mail et le numéro de téléphone de l'utilisateur;
- puis, il enregistre ces infos dans la table utilisateur et génère un code OTP qu'il enregistre dans la même table;
- ensuite, il envoie le code OTP par SMS et affiche un formulaire qui demande le code qui lui a été envoyé;
- si le code est correct, ses informations sont enregistrées dans les tables radcheck et radreply;
- enfin, il est censé être redirigé vers le portail captif, mais je ne sais pas quelle est l'adresse à utiliser pour cela :-[
Cordialement,
Twenty21 -
Cela me parait hautement casse-gueule !
Il est clair que
- le rôle 'interrupteur' du portail captif ne peut être situé QUE sur pfSense.
- la redirection (sur le 1er paquet HTTP) peut, à la rigueur, être renvoyé sur un autre serveur web.
- si il y a renvoi vers un autre serveur web, il faut être capable de 'revenir' vers pfsense pour que l''interrupteur' s'ouvre.
- confier des choses complexes comme envoyer un SMS, remplir des champs d'une table de Radius, à un serveur web sous Windows, parait étrange.
Un tel projet suppose
- d'avoir une vue d'ensemble du processus (global) et une vue détaillée de chaque mécanisme,
- de découper en étapes suffisamment simples, solides et fiables.
-
@jdh:
- si il y a renvoi vers un autre serveur web, il faut être capable de 'revenir' vers pfsense pour que l''interrupteur' s'ouvre.
C'est justement mon 1er problème. J'ignore vers quelle adresse rediriger l'utilisateur après le serveur web.
@jdh:
- confier des choses complexes comme envoyer un SMS, remplir des champs d'une table de Radius, à un serveur web sous Windows, parait étrange.
Je suis en phase de test et je dois tout virtualiser. De plus, mon PC fonctionne normalement sous Windows. Lorsque je crée une machine virtuelle fonctionnant sous Ubuntu, je rame.
Mais jusqu'à présent, mon serveur web remplit chacune de ses tâches sans aucun problème.@jdh:
Un tel projet suppose
- d'avoir une vue d'ensemble du processus (global) et une vue détaillée de chaque mécanisme,
- de découper en étapes suffisamment simples, solides et fiables.
En fait, j'ai déjà une idée précise de ce que seront les étapes une fois le projet terminé:
- lorsque l'utilisateur se connecte au point d'accès connecté à l'interface LAN de pfSense et essaie d'accéder à une page, il est renvoyé vers le portail captif;
- ce dernier le renvoie vers le serveur web;
- celui-ci effectue toutes les tâches que j'ai déjà décrites;
- il le redirige vers le portail captif avec un formulaire caché contenant son nom d'utilisateur et son mot de passe;
- ces infos sont attribuées aux variables $_POST['auth_user'] et $_POST['auth_pass'] de la page web du portail captif;
- puis, le formulaire sur la page web du portail captif est automatiquement envoyé;
- enfin, les infos ayant été entrées dans la base de données par le serveur web, l'utilisateur devrait se connecter.
Premièrement, je bute au niveau de la redirection du serveur web vers le portail captif.
Ensuite, radiusd s'arrête tout le temps dans Status / Services.
Enfin, l'erreur affichée par le portail captif lorsque j'essaie un utilisateur enregistré dans radcheck pour FreeRadius : Error sending request: No valid RADIUS responses receivedCordialement,
Twenty21