Mise en place d’un portail captif sous ZeroShell

I. Présentation

La distribution Zeroshell propose la configuration d'un portail captif sur ses interfaces. Un portail captif est une page qui s'affichera sur le navigateur des clients qui souhaiteront aller sur Internet.

Les portails captifs demandent généralement une authentification afin d'accéder à Internet, ils sont utilisés dans des environnements de diffusion d'un réseau (WiFi notamment) publique comme des hôtels. Les clients sont alors obligés de demander les identifiants au propriétaire de la connexion qui demande souvent une monétisation en échange de l'accès à Internet. Le portail captif offre donc un contrôle et une restriction de l'utilisation de l'accès Internet.

Le portail captif Zeroshell offre bon nombre de configurations et de possibilités qui ne seront pas toutes détaillées dans ce tutoriel.

Attention : Cette documentation a été réalisée avec la version RC2 de Zeroshell, considérez ce détail lors de la lecture du tutoriel et de son application sur des versions plus récentes de Zeroshell

II. Pré-requis et architecture

Pour qu'un portail captif puisse être mis en place, il faut qu'il soit la passerelle d'au moins un réseau. Ainsi les clients voulant sortir sur Internet devront passer par le Zeroshell et celui-ci affichera le portail captif afin de demander une authentification aux clients. Seuls les clients ayant les identifiants pourront sortir sur Internet.

Voici une illustration du fonctionnement du portail captif Zeroshell :

ZPortail01

Lorsqu'un portail captif est en place, les utilisateurs sont obligés de se loger sur celui-ci. Il est néanmoins possible de configurer des exceptions au niveau des accès. Nous pouvons autoriser la visite de certains services ou autoriser certains utilisateurs à ne pas passer par l'authentification pour utiliser l'accès.

III. Mise en place

Il faut tout d'abord se rendre sur l'interface graphique de notre Zeroshell par navigateur. Il faut ensuite se loger et aller dans "Captive Portal". La première chose à faire est de déterminer sur quelle interface notre portail captif fera effet. Par exemple si notre Zeroshell a son côté LAN sur l'interface ETH00, il faut sélectionner ETH00 dans la liste en haut à droite puis cliquer sur "Save".  Il est également possible de mettre le portail captif sur plusieurs interfaces en cliquant sur "Multi" pour avoir cette fenêtre :

ZPortail02

Il faut alors passer les interfaces voulues dans "MULTI Interface" puis cliquer sur "Ok" pour valider. Pour rendre enfin effectif le portail captif il faut cocher la case en haut à gauche "GW" puis cliquer sur "Save"

Le portail captif est alors actif, il faut maintenant s'occuper de la création des identifiants qui auront la permission de se loger sur celui-ci.

IV. Création des utilisateurs du portail captif

Les identifiants utilisés pour le portail captif sont les identifiants enregistrés dans les utilisateurs du Zeroshell, il faut donc se rendre dans "User" dans la colonne du menu à gauche puis dans "Add" en haut pour en ajouter.Il faut alors entrer les identifiants de cet utilisateur, les éléments importants sont le "Username" qui sera le login à utiliser et le mot de passe qui sera également à saisir. Pour finir la création de l'utilisateur, cliquez sur "Submit".

Il est temps de tester notre portail captif, depuis un poste utilisateur qui se situe dans le côté LAN de votre Zeroshell, il faut ouvrir un navigateur et tenter d’accéder à une page web :

ZPortail03

Vous verrez alors cette page web apparaitre, il faudra ici entrer les identifiants de l'utilisateur précédemment créé. Si l'authentification se passe correctement, la page suivante apparaitra et tentera de vous rediriger :

ZPortail04

La redirection s'effectuera soit vers une URL indiquée soit vers l'URL à laquelle le client voulait accéder à la base. Ce paramètre ce gère dans un menu que nous détaillerons plus tard. Une fenêtre pop-up va également apparaitre, celle-ci est présente pour maintenir la connexion ouverte pour le client authentifié, il est préférable de ne pas la fermer ou le client sera automatiquement déconnecté. Il est néanmoins possible de configurer le délai de la déconnexion après fermeture de cette fenêtre :ZPortail05

Nous voyons également qu'il est possible de mettre en place un système de monétisation de l'accès Internet.

V. Gestion des connexions

Dans le menu "Gateway" du portail captif, nous pouvons gérer les paramètres de base de l'authentification des clients. Le panneau de gauche permet de voir les utilisateurs connectés à notre portail captif :

ZPortail06

Il est possible de voir l'IP et l'adresse de l'utilisateur et les identifiants qu'il a utilisés. Nous pouvons depuis ce panneau déconnecter l'utilisateur en cliquant sur "Disconnect". Le panneau en haut à droite de la fenêtre du portail captif permet de voir et de modifier les paramètres principaux.

Il nous est par exemple possible de paramétré si nous souhaitons identifier les clients par leur IP et leur MAC ou alors juste par leur IP. Nous pouvons aussi déterminer si vous souhaitons autoriser l'utilisation simultanée d'un identifiant de connexion ou non. L'autorisation de cette connexion multiple est par exemple utile dans un Hotel ou un espace public où il serait complexe de créer un utilisateur pour chaque demande de connexion.

ZPortail07

L'Authenticator Validity est le paramètre qui déterminera combien de temps la connexion va rester active après la fermeture de la fenêtre de connexion du côté du client. Il est déterminé en minute et peut être paramétré en "infinie" si l'authentification du client doit toujours rester active. Une fois les paramètres modifiés, il faut cliquer sur "Save" pour les valider.

Le troisième panneau sert à déterminer les exceptions de l'utilisation du portail captif. Nous pouvons par exemple y mettre une IP qui sera celle d'un poste à IP fixe, cette IP n'aura alors pas besoin de s'authentifier pour accéder à Internet. Il faut pour cela sélectionner "Clients" à droite de "Free Authorized" puis cliquer sur le " + " et enfin entrer l'IP et le masque de ce client.

ZPortail08

Il faut enfin cliquer sur "Save" pour valider l'ajout de l'exception. Nous pouvons aussi y mettre un service en sélectionnant "Services" puis en cliquant sur le "+", il faut alors entrer le nom du service, l'IP source de ce service et le port qu'il utilise puis cliquer sur "Save".

VI. Gestion des authentifications

Dans la configuration du portail captif, il est possible de personnaliser l'authentification des clients comme la page d'authentification, la redirection une fois qu'ils sont logés ou le processus utilisé pour l'authentification. Il faut pour cela se rendre dans "Authentication" dans le menu du haut. Nous allons commencer par personnaliser la page de log avec le panneau "Web Login Page Customization" :

ZPortail09

Il est également possible de modifier directement le code HTML de la page en cliquant sur "Template" puis en sélectionner "View Source" plutôt que "Preview". Veillez cependant à ne pas modifier la page par défaut.

Nous voyons qu'il est possible de changer les titres de cette page ainsi que d'importer une image pour remplacer celle par défaut . Voici un exemple de page personnalisée :

ZPortail10

Le second panneau "Page redirection" nous permet de forcer la redirection vers une page donnée une fois que le client est identifié ou alors de le rediriger vers la requête qu'il avait demandé à la base. Il faut dans le premier cas sélectionner "Redirect to target URL" puis remplir l'URL voulue en dessous ou alors sélectionner " Redirect original user to requested URL".

ZPortail14

Il est possible de mettre en place une authentification Sibboleth qui est un système d'authentification SSO mais nous ne le ferons pas dans ce tutoriel.

Le panneau "Authorized Domains" à droite permet de gérer le type d'authentification et le domaine de provenance des utilisateurs. En effet Zeroshell permet de gérer plusieurs domaines et les utilisateurs qui y sont affectés. Par défaut c'est une authentification de type Radius qui est en place.

ZPortail11

Nous allons pour le tutoriel enlever ce type d'authentification pour mettre en place une authentification gérée par le service Kerberos 5 de Zeroshell. Il faut commencer par supprimer le domaine autorisé en le sélectionnant comme l'image ci-dessus puis en cliquant sur le "-". Il faut ensuite cliquer sur le "+" pour ajouter un nouveau domaine et sélectionner "Local Kerberos 5 Realm" qui est le royaume sur lequel règne Kerberos. Cliquer enfin sur "Save" pour valider :

ZPortail12

Le domaine devrait donc apparaitre dans la fenêtre "Authorized Domains" à droite et être défini comme le domaine par défaut, si ce n'est pas le cas, vous pourrez le sélectionner et cliquer sur "D". Cette manipulation est aussi utile dans le cas ou plusieurs domaines existent.

Le portail captif est maintenant en place et la gestion des utilisateurs et de l'authentification est opérationnelle. Nous pouvons ajouter plusieurs autres fonctionnalités à notre portail captif comme la monétisation de l'accès, la gestion de la langue d'affichage ou la supervision réseau de l'accès

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur en sécurité des systèmes d'information chez Amossys

    mickael has 502 posts and counting.See all posts by mickael

    11 pensées sur “Mise en place d’un portail captif sous ZeroShell

    • Merci pour ce article.

      Ce site regorge d’excellents articles.

      Cependant petite précision sur Zeroshell, je déconseille l’utilisation de cette solution car vulnérable.

      Les fichiers de conf etc… sont accessible grâce à un simple Local file disclosure, donc les mot de passes d’administration facilement retrouvables.

      Répondre
      • Merci pour ces précisions ! C’est vrai que Zeroshell est rarement mis à jour, les vulnérabilités trouvées (il y en a toujours) ne sont donc pas forcément corrigées… Néanmoins Zeroshell reste un très bon outil pour les plateforme de test où nous avons besoin de routeur facilement manageable ou encore pour comprendre rapidement le fonctionnement d’un service donné.

        Répondre
        • Oui c’est sûr que Zeroshell reste un bon outil pour les plateforme de test, mais justement ils viennent de sortir une version 3.0 qui résout ces problèmes de vulnérabilités . 😀

          Répondre
    • je suis francis et administrateur reseau informatique
      je suis tres ravis de cette initiative …felicitation et, sachons que aucun system n’est parfait ,on l’améliore .
      je souhaiterai aussi apporter ma modeste contribution ici
      merci pour ce tutto

      Répondre
    • Bonjour, Merci pour le tuto.
      J’essaie depuis de le réaliser avec des machines virtuelles mais j’ai un problème d’interception des requêtes http. Lorsque les clients tentent d’accéder a internet, cela se solde par un échec. Quand j’entre l’ip du serveur zeroshell dans la barre d’adresse d’une des machines client, j’accède au portail captif mais pas d’internet et pas d’interception de requêtes.
      J’espère obtenir un peu d’aide. Merci d’avance.

      Répondre
    • Bonjour,

      Zeroshell et Zerotruth sont pour moi de très bonne solutions surtout pour les personnes ayant pour objectif de mettre en place un hot-spot Wifi gratuitement tout en respectant la législation des réseau wifi public,
      La configuration n’est pas trop complexe avec l’aide des documentations que l’on trouve sur le site,
      De plus les créateurs proposent des mises à jour régulière permettant de corriger certaines failles !

      Répondre
    • salut
      c’est possible d’intégrer ce portal captive pour mon serveur web ?

      Répondre
    • Salut,

      J’ai quelque difficulté avec mes employés dans mon cyber, il n’y a pas des possibilités pour créer les comptes d’utilisateurs de façon pour vendre des heures aux clients mais qu’ils n’ont pas accès à modifier la configuration faite par l’administrateur dans zeroshell?

      Répondre
    • Merci beaucoup pour ce tutoriel car sa ma permi de bien comprendre la technologie zeroshell et qui ma permi de le préférer a un autre pour pour mon theme de stage…………………
      du courage pour la suite………..

      Répondre
      • de plus moi je ne suis pas encore pro ……
        je suis a la quette du savoir

        Répondre
    • Bonjour zeroshell j ai un problème au niveau la configuration de machine virtuel je inséré l’adresse Ip au niveau de ET00 en fin que ça me donne la possible de ramener cette adresse au niveau de web: http mais la page donne toujours échec je sais comment procéder

      Répondre

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

     

    Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.