Portail Captif pfSense avec authentification RADIUS

Hello, nous allons voir dans cet article comment mettre en place un portail captif sous pfSense avec un serveur d’authentification RADIUS (Remote Authentication in Dial-In User Service) sous Windows Server 2016.

Un portail captif permet de mettre en place un point d’accès Wifi (ou câblé) pour les utilisateurs afin qu’ils puissent se connecter sur internet avec leur smartphone, tablette…etc. La dernière version de pfSense permet d’activer le portail captif sur plusieurs interfaces réseau.

Dés qu’un utilisateur tente de se connecter à ce réseau, une page de connexion (personnalisable) s’affiche l’invitant à s’authentifier avec son compte Active Directory. Une fois connecté, il est possible de rediriger l’utilisateur vers n’importe quelle page Web (Google, site public de l’entreprise…etc.).Portail Captif pfSense

Ce qu’il vous faut :

  • Firewall pfSense : Portail Captif
  • Windows Server 2016 : Contrôleur de domaine
  • Windows 10/8/7 : Utilisateur

Tout est expliqué ici : machine-virtuelle-pixelabs/

Documentation (EN) :

Schéma portail Captif

Voici le schéma et la configuration réseau du firewall pfSense :

pfSense Captive Portal Schéma

  • Interface WAN
    • 192.168.1.73/24
    • GW : 192.168.1.254
    • DNS : 192.168.1.254
  • Interface LAN
    • 172.16.1.254
  • Interface WIFI
    • 192.168.2.254

Configuration Interface pfSense

La borne Wifi est branchée sur l’interface WIFI du routeur (firewall) pfSense. Pour que les utilisateurs puissent se connecter sur internet, il faut que le réseau WIFI soit joignable depuis le réseau LAN. Il faut donc mettre en place des règles firewall pour autoriser la connexion internet.

Mode Réseau sous VirtualBox

Firewall pfSense : Configuration > Réseau

  • Interface 1 :  WAN
    • Mode : Accès par pont (Bridge)
    • Nom : Realtek PCIe (…)
  • Interface 2 : LAN
    • Mode : Réseau Interne
    • Nom : LAN-1
  • Interface 3 : WIFI
    • Mode : Réseau Interne
    • Nom : LAN-2

Windows Server 2016 : Configuration > Réseau

  • Interface 1 : LAN
    • Mode : Réseau Interne
    • Nom : LAN-1

Windows 10 (machine de test) : Configuration > Réseau

  • Interface 1 : PC branché sur port WIFI
    • Mode : Réseau Interne
    • Nom : LAN-2

Configuration Windows Server 2016

Vous devez installer et configurer Windows Serveur 2016. Voir l’article suivant (j’utilise la même machine) : windows-server-2016/

  • Les rôles suivant sont déjà installés (sans configuration particulière)
    • Rôle Active Directory
      • Domaine : pixelabs.lan
    • Rôle DNS

Allez dans le gestionnaire de serveur et cliquez sur  Outils > Utilisateurs et ordinateurs Active Directory

  • Cliquez sur votre domaine : pixelabs.lan
    • Allez dans Users
    • Effectuer un clic droit Nouveau > Groupe
    • Donner un nom à votre groupe

Création de Groupe AD

  • Pour ajouter une description à votre groupe, effectuer un double clic dessus.
    • Description : Utilisateurs autorisés à se connecter au point d’accès WiFi

Nous allons en profiter pour créer un utilisateur dans /Users et l’affecter à ce groupe de sécurité.

Faisons cette opération rapidement avec PowerShell. Voici le script à ouvrir avec Windows PowerShell ISE :

$NewUser = Read-Host "Nom de session"
$PrincipalName = Read-Host "Nom de session principal"
$FirstName = Read-Host "votre nom"
$LastName = Read-Host "votre prénom"
$NewName = "$FirstName $LastName"
$Path = "CN=Users,DC=PIXELABS,DC=LAN"

New-ADUser -SamAccountName $NewUser -UserPrincipalName $PrincipalName -Name $NewName -GivenName $FirstName -Surname $LastName -Path $Path -AccountPassword (Read-Host "Password" -AsSecureString) -PasswordNeverExpires $true -Enabled $true

Modifier la ligne selon votre configuration : $Path = "CN=Users,DC=PIXELABS,DC=LAN"

Ajouter Utilisateur via PowerShell

Allez dans le gestionnaire de serveur et cliquez sur  Outils > Utilisateurs et ordinateurs Active Directory

  • Effectuer un clic-droit sur l’utilisateur Pixel > Ajouter à un groupe…
    • Tapez le groupe que nous avons crée plus haut : CaptivePortal
    • Cliquez sur Vérifier les noms
  • OK

Installation Serveur RADIUS

Nous allons maintenant installer le rôle NPS pour Network Policy Server = Services de stratégie et d’accès réseau.

  • Ouvrir le gestionnaire de serveur et cliquez sur  Gérer > Ajout des rôles et fonctionnalités
    • Cliquez sur suivant x3
    • Cochez le case : Services de stratégie et d’accès réseau
    • Une fenêtre apparaît, cliquez sur ajoutés les fonctionnalités

Install NPS Server 2016

  • Cliquez sur suivant x3
  • Cliquez sur Installer

Configuration Serveur RADIUS

Une fois l’installation du rôle terminé, lancez la console d’administration du serveur NPS.

  • Ouvrir le gestionnaire de serveur et aller dans le menu Outil > Serveur NPS (Network Policy Server)
    • Effectuer un clic-droit sur NPS (Local)
    • Cliquez sur : Inscrire un serveur dans Active Directory

Register NPS Server

  • Confirmer en cliquant sur OK x2

Nous allons commencer par mettre en place un nouveau client RADIUS.

  • Allez dans Client et serveurs RADIUS (sous NPS (Local))
    • Effectuer un clic-droit sur Client RADIUS > Nouveau
    • Nom convivial : CaptivePortal
    • Adresse IP : 172.16.1.254 (Adresse IP de l’interface LAN-1 de pfSense)

Ajouter un Client RADIUS

  • Ajouter un secret partagé (à retenir)
  • Cliquez sur OK

Nous allons maintenant donner l’autorisation aux utilisateurs. Dans notre cas, il faut donc ajouter le groupe de sécurité CaptivePortal et tous les utilisateurs appartenant à ce groupe auront l’autorisation.

  • Allez dans Stratégies
    • Effectuer un clic-droit sur Stratégies réseau > Nouveau
    • Nom de la stratégie : CaptivePortal
    • Tous les paramètres peuvent être modifier une fois terminé.

Add New Network Policy

  • Cliquez sur suivant
  • Cliquez sur Ajouter…
  • Sélectionnez Groupes d’utilisateur et cliquez sur Ajouter…
    • Cliquez sur Ajouter des groupes…
    • Tapez le nom de votre groupe : CaptivePortal et cliquez sur Vérifier les noms
    • Cliquez sur OK

Add User Group Radius Server

  • Cliquez encore sur OK x2
  • Cliquez sur Suivant
  • Laissez par défaut : Accès accordé et cliquez sur Suivant 
  • Cochez les deux cases en plus comme l’image ci-dessous :

Radius Authentification Method

  • Appliquer les paramètre et si une fenêtre s’affiche, cliquez sur NON
  • Laissez tout le reste par défaut et cliquez sur suivant jusqu’à la fin.
  • Cliquez sur Terminer.
  • Effectuer un double clic sur le nom de la stratégie pour modifier un paramètre (oublié)
    • Allez dans l’onglet Paramètres
    • Allez dans Chiffrement 
    • Décochez la case : Aucun chiffrement

Edit NPS Server Policy

 

  • Cliquez sur OK
  • Désactiver les deux stratégies au dessous : clic-droit > désactiver

Passons à la configuration de pfSense.

Configuration pfSense 2.4.4

Voici les tâches que nous allons réaliser sous pfSense :

  • Autoriser l’interface WIFI à communiquer avec les autres l’interfaces
  • Activer le DHCP sur l’interface WIFI
  • Activer le DNS Resolver sur toutes les interfaces
  • Activer l’authentification RADIUS
  • Activer le service portail Captif
  • Tester le portail Captif

Règle Firewall Interface WIFI

Pour le moment, nous allons tout autoriser comme sur l’interface LAN. Il faut donc copier la règle IPv4 qui autorise le LAN à joindre toutes les autres interfaces et l’appliquer à l’interface WIFI.

  • Allez dans le menu : Pare-feu > Règles > LAN
  • Cliquez sur l’icône copier (icône avec deux carrés superposés) :

Rules Captive Portal

  • Interface : WIFI
  • Description : Default allow WIFI to any rule
  • Enregistrer et Appliquer les modifications

Activer le serveur DHCP

Pour que les utilisateurs puissent se connecter sur internet, il faut leur attribuer une adresse IP. Nous allons donc activer le serveur DHCP sur l’interface WIFI.

Allez dans le menu Services > Serveur DHCP > WIFI

  •  Activer le serveur DHCP sur l’interface WIFI
    • Sous-réseau : 192.168.2.0
    • Masque de sous-réseau : 255.255.255.0
    • Plage disponible : 192.168.2.1 – 192.168.2.254
  • Juste au dessous de ces informations, ajouter une plage de votre choix. Par exemple :
    • de : 192.168.2.50
    • A : 192.168.2.100

Serveur DHCP pfSense

  • L’adresse IP de l’interface WIFI sera utilisée comme passerelle et le DNS. Laissez le reste par défaut.
  • Tout en bas, cliquez sur Enregistrer 

Activer le DNS Resolver

Allez dans le menu Services > Résolveur DNS > Paramètres généraux

  •  Activer les résolutions DNS
    • Interface réseau : Tout
    • Interfaces réseau sortantes : Tout
    •  Activer le support DNSSEC
    •  Enregistrer les bails DHCP dans le résolveur DNS
    •  Enregistrez les mappages statiques DHCP dans le Résolveur DNS
  • Tout le reste est par défaut.
  • Cliquez sur Enregistrer et Appliquer les paramètres

Authentification RADIUS

Allez dans le menu : Système > Gestionnaire d’usagers > Serveurs d’authentification

  • Cliquez sur Ajouter
    • Nom descriptif : CaptivePortal
    • Type : RADIUS
    • Protocole : MS-CHAPv2
    • Nom d’hôte ou adresse IP : 172.16.1.5 (Adresse du serveur RADIUS, c’est-à-dire Windows Server 2016)
    • Secret partagé : ce que vous avez mis lors de l’activation du client RADIUS sous Windows
    • Service offerts : Authentification et comptabilité
    • Port d’authentification : 1812
    • Port de comptabilité : 1813
    • Délai d’expiration de l’authentification : par défaut c’est 5 secondes
    • Attribut IP RADIUS NAS : LAN – 172.16.1.254

Authentification RADIUS pfSense

  • Enregistrer

Configuration Portail Captif

Allez dans le menu Services > Portail Captif > Ajouter

  • Nom de la zone : CaptivePortal
  • Description de zone : CaptivePortal
  • Enregistrer et poursuivre

Prenez en compte le message au dessous :

N’oubliez pas d’activer le serveur DHCP sur la même interface que le portail captif! Assurez-vous que la valeur par défaut/maximale du bail DHCP est plus grande que celle du hard timeout référencée dans cette page. Assurez-vous également que les Forwarders et Resolvers DNS sont actifs pour que les requêtes émises depuis des clients non authentifiés soient honorées.

  •  Activer le Portail Captif
    • Interfaces : WIFI
    •  Activer la fenêtre de dialogue de fermeture de session
    • Après authentification Redirection URL : https://pixelabs.fr ou https://google.fr
  • Allez dans la partie Authentification 
    • Méthode d’authentification : Use an Authentication backend
    • Serveur d’authentification : CaptivePortal
    •  Réauthentifier les utilisateurs connectés chaque minute
  • Allez dans la partie Comptabilité
    •  Send RADIUS accounting packets.
  • Enregistrer

Test Portail Captif

Voici la configuration de ma machine de test (considérée comme un smartphone/tablette ou un PC portable).

  • Configuration réseau automatique (DHCP)
  • Elle est connectée sur l’interface du portail captif (WIFI=LAN-2)
  • Elle ne fait pas partie du domaine AD

lancer une invite de commande et lancez ces deux commandes :

C:\Users\PC-PIXEL#> ipconfig /release
C:\Users\PC-PIXEL#> ipconfig /renew

Le service DHCP doit distribuer une adresse IP à votre machine.

Lancez votre navigateur internet et tapez une adresse en HTTP et non HTTPS. http://google.fr

La redirection HTTPS vers HTTP ne peut pas fonctionner. Nous n’avons pas sécurisé la page de connexion du portail captif, il faut un certificat valide pour que la redirection se fasse sans problème.

Portail Captif Redirection Page

Personnaliser la page Login

La page de connexion de votre portail captif est totalement personnalisable. Depuis l’interface pfSense, dans les paramètres du portail captif (Services > Portail Captif), vous pouvez :

  • Changer le design de la page HTML
  • Ajouter un fond (background)
  • Changer de logo
  • Ajouter les conditions d’utilisation

pfSense Captive Portal Custom

Si vous souhaitez modifier le texte “Made with love by Netgate”, connectez-vous en FTP sur votre serveur pfSense depuis votre machine physique (même identifiant que l’interface web et la connexion se fait sur le WAN) et modifier le fichier suivant : (ligne 167 et 169)

Remarque : ne pas oublier d’activer le SSH depuis le menu pfSense pour pouvoir se connecter en FTP.

Personnaliser Portail Captif pfSense

Si vous souhaitez changer le nom qui apparaît dans l’onglet du navigateur et si votre logo est flou. Dans le même fichier, modifier les éléments suivant :

pfSense Portail Captif Logo Size

Une fois le texte modifié, allez dans les options de votre portail captif et activer l’option suivante :

  •  Enable to use a custom captive portal login page
  • Enregistrer
  • Actualiser la page web de connexion

Pour sécuriser votre portail captif pfSense au maximum :

  • Activer le protocole HTTPS pour la page de connexion et ajouter un certificat valide.
  • Bloquer tout le trafic sur l’interface WIFI et autoriser uniquement le nécessaire :
    • Port HTTP/80 et HTTPS/443
    • Ports RADIUS : 1812, 1813
    • Port AD/389
    • Port DNS/53

Je vous laisse explorer les paramètres, il est possible de limiter le débit, de bloquer les clients par adresse MAC, et bien d’autres…etc.

C’est terminé les amis. N’hésitez pas si vous avez des questions. Amusez-vous bien.

Bonne journée et à très bientôt.

 
Besoin d’aide ? des questions ?

Venez sur le forum
logo Forum Pixelabs
***********
La rédaction de cette documentation demande beaucoup de temps, de motivation, mais surtout beaucoup de café 🙂

Vous aimez pixelabs ?

Offrez moi un petit café en cliquant sur la tasse ci-dessous.
pixelans_donation
Merci !

22 réponses

  1. MattWidip dit :

    Bonjour,

    En ce qui concerne la législation, est il possible d’exporter les logs de connexion, de navigation, … vers un serveur syslog par exemple ?
    Merci bien,
    Matthieu

    • sysadmin dit :

      Bonjour Matthieu,
      Oui, c’est possible. Il faut ajouter ton serveur syslog depuis l’interface web pfSense.
      Tu vas dans : État > Journaux système > Paramètres et tout en bas, active l’option : Envoyer les messages de log a un serveur de log externe
      Il te reste à configurer ton serveur syslog.
      Bonne journée.
      -sysadmin.

      • MattWidip dit :

        Bonjour,

        Merci bien, je viens d’essayer ça, mais je n’ai pas les sites visité, Comment puis-je faire pour exporter ce genre d’information.
        Si je coche “portail captif”, j’ai bien l’info de qui s’est connecté, mais je n’ai pas les infos de ce qu’il sera allé consulter.

        Y a t il un moyen d’avoir ses log là ?

        Merci bien 🙂

        Matthieu

        • sysadmin dit :

          Salut,
          A part ce que propose pfSense, je ne sais pas désolé !
          Essaie avec le package Syslog-ng si tu peux avoir plus de logs :
          Système / Gestionnaire de paquets / Paquets disponible
          Cherche et installes : syslog-ng
          Bon courage 🙂
          -sysadmin.

          • MattWidip dit :

            Bonjour,

            Merci de tes conseils, j’ai essayé mais j’ai l’impression que ça remonte des infos du system mais je n’ai pas l’url du site visité.
            Je vais rechercher si il y a un parametrage specifique de syslog-ng pour ça.
            Merci bien si tu as d’autre conseil, sinon c’est déjà super sympa. Merci bien. 🙂

          • sysadmin dit :

            Salut MattWidip,
            Voici une piste à suivre : si tu veux tracker les URL des utilisateurs, il te faut un serveur proxy (ce n’est plus un portail captif) car, cela relève de confidentialité.
            Un serveur proxy est possible avec pfSense + Squid (package à installer).
            Avec un portail captif, je pense qu’il est possible de connaitre les URL en ayant un serveur DNS interne (ton propre serveur DNS).
            Bon courage.
            -sysadmin

          • MattWidip dit :

            Bonjour,
            Merci bien de ses conseils.
            Donc je peux mettre un portail Captif + un proxy (genre SQUID + SQUIDGuard) et il faudrait que je puisse exporter mes logs SQUID sur un serveur SYSLOG.
            Désolé de mon harcelement, mais du coup il est possible d’exporter les logs SQUID vers un serveur de log ? (URL bloqué, comme les URL non bloqué ?)

            Merci bien de votre aide.
            – Matthieu –

          • sysadmin dit :

            Je ne suis pas sur, mais je pense qu’il est possible de déléguer les logs proxy Squid à syslog de pfSense.
            Une piste ici (qui date un peu) deporter-les-logs-du-proxy-squid-sur-pfsense-vers-un-serveur-syslog-centralise

  2. Drei dit :

    Bonjour ! Super tuto, un grand merci ! J’ai juste des soucis du côté Access Point, je me perds dans les configurations AP Cisco Catalyst :/

  3. Saran dit :

    Coucou j’ai bien aimé ton exposé, j’ai une question l’adresee du Wi-Fi c’est toi qui l’a choisi par hasard ??

    • sysadmin dit :

      Salut,
      Oui, tu peux choisir n’importe quel réseau et n’importe quelle adresse IP pour ton réseau WIFI.
      Bonne journée.
      sysadmin.

  4. Myror dit :

    Merci beaucoup.
    Est-ce qu’il y un autre moyen de vous contacter pour d’éventuelles questions?

  5. moussa gueye dit :

    merci pour la presentation de exposer mais est ce que vous expliquer ce que le portail captif fait reellement j’ai pas bien compris

    • pixelabs dit :

      Bonjour Moussa,
      Tu t’es déjà connecté (sans doute) à un portail captif sans le savoir. le réseau wifi que l’on trouve au Macdo, Hôtel, Aéroport…etc. Ce sont des portails captif permettant aux gens de se connecter au Wifi (hotspot) de l’entreprise.
      J’espère que j’ai répondu à ta question.
      Bonne journée.
      -Pixel.

      • Myror dit :

        Bonjour,
        Merci pour ce tutoriel mais j’ai des préoccupations par rapport à ça.
        Je constate que le point d’accès et le LAN ne sont pas dans le même réseau, est-ce que ça veut dire que lorsqu’un utilisateur voudra se connecter au Wi-Fi il aura une adresse de type 192.168.2.x ?
        Sur le schéma on voit bien que le point d’accès se relie au LAN, est-ce que ça voudrait dire que le point d’accès attribuera par DHCP une adresse de type 172.16.x.x pour que les utilisateurs du LAN puissent accéder à internet par Wi-Fi ?
        Merci de me répondre.

        • sysadmin dit :

          Salut,
          Le point d’accès WIFI à son réseau à part (192.168.2.0) et isolé du réseau de l’entreprise (172.16.0.0).
          Le service DHCP est activé uniquement sur l’interface WIFI. Toutes les personnes connectés sur le WIFI de l’entreprise auront systématiquement une adresse IP 192.168.2.X.
          N’hésites pas si besoin.
          -sysadmin.

          • Myror dit :

            OK, mais est-ce que les utilisateurs qui se connecteront au WiFi pourront s’authentifier via le serveur RADIUS qui est dans le LAN ?

          • sysadmin dit :

            Oui biensur, c’est le firewall pfSense qui fait la liaison entre le portail captif et le serveur Radius AD. Dans pfSense, le portail Captif est activée sur l’interface WiFi.
            N’hésite pas si tu as d’autres questions.
            -sysadmin.

          • Myror dit :

            Je comprends mieux.
            J’avoue que j’ai recherché un site qui traite de ce sujet et je suis tombé sur le site qu’il me fallait.
            Je crois que je vais vous poser assez de questions.
            Est-ce que ça veut dire que les utilisateurs connectés au Wi-Fi feront partie de l’AD ?
            Sur les postes clients (LAN et WI-FI) quelle adresse DNS doit-on renseigner (celle de notre contrôleur de domaine ou celle de notre interface Wi-Fi et LAN) pour avoir internet ?

          • sysadmin dit :

            Oui,les utilisateurs font partie de l’AD sinon, il n’ont pas d’autres moyen de se connecter au WiFi (dans cet article).

            Oublie le LAN c’est le réseau (avec domaine) de l’entreprise, il est isolé du WiFi.

            C’est le DHCP de pfSense qui s’occupe de distribuer la configuration réseau à chaque utilisateur connectés. Le DHCP est activé UNIQUEMENT sur l’interface WIFI et non le LAN.
            L’adresse IP de l’interface WIFI est utilisée en tant que passerelle ET DNS.

            Bonne journée.
            -sysadmin