Sommaire
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, intranet…etc.).
Ce qu’il vous faut : | Machine virtuelle : machine-virtuelle-pixelabs/ |
Firewall pfSense : Portail Captif | VM pfSense (2.4.5-RELEASE-p1) |
Documentation (EN) :
- Service Portail Captif : docs.netgate.com/pfsense
- RADIUS Authentication with Windows Server : docs.netgate.com/pfsense
Schéma portail Captif
Voici le schéma et la configuration réseau du firewall pfSense :
Interface WAN | Interface LAN | Interface WIFI |
@IP : 192.168.1.73/24 GW : 192.168.1.254 DNS : 192.168.1.254 | @IP : 172.16.1.254 | @IP : 192.168.2.254 |
Pour la configuration réseau des 3 interfaces, voir ici : installation-configuration-pfsense-virtualbox/
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
Configuration des interfaces pour chaque VM : Configuration > Réseau
Adaptateur | Firewall pfSense | Windows Server 2016 (Server Radius) | Windows 10 (VM de test) |
Adaptateur 1 | Pour l’interface WAN Mode : Accès par pont (Bridge) Nom : Realtek PCIe (…) | Pour l’interface LAN Mode : Réseau Interne Nom : LAN-1 | Pour l’interface WIFI Mode : Réseau Interne Nom : LAN-2 |
Adaptateur 2 | Pour l’interface LAN Mode : Réseau Interne Nom : LAN-1 | ||
Adaptateur 3 | Pour l’interface WIFI Mode : Réseau Interne Nom : LAN-2 |
En détail :
- Firewall pfSense possède 3 interfaces réseau : WAN, LAN, WIFI
- WAN : pour avoir une connexion internet sous pfSense (depuis votre machine hôte)
- LAN : le réseau LAN sécurisé de pfSense
- WIFI : l’interface que nous allons utiliser pour le service portail captif
Adapter 1 | pour l’interface WAN
Adapter 2 | pour l’interface LAN
Adapter 3 | pour l’interface WIFI
- Windows Server 2016 possède une seule interface : LAN
- LAN : doit être connectée (branchée) sur le réseau LAN de pfSense
Adapter 1 | pour l’interface LAN-1 | LAN-1 = pfSense LAN
- Windows 10 possède une seule interface : WIFI
- WIFI : doit être connectée (branchée) sur le réseau WIFI de pfSense afin de tester le portail captif.
Adapter 1 | pour l’interface LAN-2| LAN-2 = pfSense WIFI
Configuration Windows Server 2016
Vous devez installer et configurer Windows Serveur 2016. Voir l’article suivant : 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
Remarque : le pare-feu Windows est désactivé.
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
- 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"
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
- Cliquez sur OK
Installation Rôle 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
- Cliquez sur suivant x3
- Cliquez sur Installer
Configuration Rôle 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
- 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 secret partagé (à retenir)
Remarque : j’ai mis un mot de passe avec des caractères spéciaux, il n’a pas du tout aimé, l’authentification ne fonctionne pas.
Lors des tests, j’ai eu l’erreur : Error : could not connect to authentication server pfsenseA vérifier ! En attendant, mettez uniquement des lettres et des chiffres.
- 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é.
- 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
- Cliquez ensuite sur Suivant
- Laissez par défaut : Accès accordé et cliquez sur Suivant
- Cochez les deux cases en plus comme l’image ci-dessous :
- 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 qu’on vient de créer (CaptivePortal) pour modifier un paramètre que j’ai oublié !
- Allez dans l’onglet Paramètres
- Allez dans Chiffrement
- Décochez la case : Aucun chiffrement
- Cliquez sur OK
- Désactiver les deux stratégies au dessous : clic-droit > désactiver :
Passons à la configuration de pfSense.
Configuration pfSense 2.4.5
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) :
- Ignorer la règle concernant IPv6 (pas besoin).
- Interface : WIFI
- Source : WIFI net
- Destination : tout
- Description : Default allowWIFI 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
- 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
Configuration Serveur d’Auth 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
- 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
Un peu plus bas :
- Allez dans la partie Authentification un peu plus bas
- 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.
- Accounting Server : CaptivePortal
- Send accounting updates : Aucune mise à jour
- Enregistrer
Test Portail Captif
Voici la configuration de ma VM de test Windows 10 (considérée comme un smartphone/tablette ou un PC portable).
- Elle est connectée sur l’interface du portail captif (WIFI = LAN-2)
- Configuration réseau automatique via le DHCP pfSense.
- Elle ne fait pas partie du domaine AD
Remarque : le pare-feu est désactivé sur Windows 10.
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.
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
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.
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 :
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.