Aller au contenu

🔐 Authentification MAB

📝 Introduction

MAB (Mac Authentication Bypass) est une méthode d'authentification utilisée sur les réseaux, souvent dans un contexte NAC comme ici avec PacketFence.

Quand un appareil se connecte au réseau sans pouvoir s'authentifier normalement (comme avec un login/mot de passe ou certificat), le commutateur envoie l’adresse MAC de l’appareil au serveur d’authentification PacketFence. PacketFence s'appuie pour cela sur le protocole RADIUS en intégrant le serveur FreeRADIUS.

Principe basique de fonctionnement :

  1. Un appareil se branche sur le réseau.
  2. Le switch ne voit pas de méthode d’authentification classique (pas de 802.1X par exemple).
  3. Le switch envoie l'adresse MAC de l'appareil à PacketFence.
  4. PacketFence regarde si cette MAC est connue et autorisée:
    • Si oui → l'accès est accordé.
    • Si non → l'accès est refusé ou restreint.

✅ Avantages :

  • Permet de connecter des appareils "bêtes" (ex : imprimantes, caméras, téléphones IP) qui ne savent pas faire d'authentification avancée.
  • Facile à mettre en place dans un environnement existant.

⚠️ Inconvénients :

  • Moins sécurisé (une MAC peut être usurpée/falsifiée).
  • Repose sur une liste manuelle ou semi-automatique des adresses MAC autorisées.

Si vous avez une base d'inventaire de vos machines (contenant les adresses MAC) vous pouvez très bien importée celle-ci dans PacketFence.

🔄 Configuration du swicth

Ce n'est pas la partie la plus facile. Ce n'est pas compliqué mais la configuration va dépendre des marques et des modèles des switchs. Dans mon lab, j'utilise un vieux switch Cisco datant de 2011, mis à jour avec le dernier firmware (et les derniers backdoors constructeur comme m'a précisé un ami spécialiste en cybersécurité 😂). Je pars du principe que votre switch est déjà configuré au niveau réseau et autres paramètres (VLAN...).

On utilisera le mode CLI de Cisco. Malgré une mise à jour du firmware, j'ai du utiliser cette commande pour me connecter en SSH au switch :

ssh \                                                                   
  -o KexAlgorithms=+diffie-hellman-group-exchange-sha1 \
  -o HostKeyAlgorithms=+ssh-rsa \
  -o Ciphers=+aes128-cbc \
  -o Ciphers=+3des-cbc \
  -o Ciphers=+aes256-cbc \
  cisco@192.168.10.2

Configuration de RADIUS

Nous allons commencer par configurer le serveur RADIUS (PacketFence utilise FreeRadius qui est libre et gratuit). Ces commandes sont spécifiques au switch Cisco SF302-08P.

Configuration RADIUS
# Activation l’authentification 802.1X
# Nécessaire pour que l’authentification par login/certificat (ou fallback MAB) soit prise en compte
dot1x system-auth-control

# Définition du mot de passe partagé utilisé pour sécuriser les communications entre le switch et le serveur RADIUS
radius-server key UnSecretFort # à remplacer par votre secret

# C'est le serveur PacketFence/Freeradius qui va authentifier les utilisateurs/appareils connectés via 802.1X ou MAB
radius-server host 192.168.10.253

# Configuration du suivi des connexions
# Cela permet de savoir qui s’est connecté, quand, et pendant combien de temps.
aaa accounting dot1x start-stop group radius

# Cela permet à un serveur SNMP (PacketFence) de modifier la configuration du switch à distance
snmp-server community public ro view Default
snmp-server community private rw view Default # C'est pour le lab. En mode production, on utilisera le SNMPv3

Nous reviendrons plus tard sur le fonctionnement d'un serveur RADIUS.

Configuration de l'authentification MAC

Dans mon cas, il me reste les ports 4 à 7 de libre sur mon switch. Je vais donc prendre le port 4.

Configuration de l'auth. MAC sur le port 4
sw01#conf t
sw01(config)#int Fa4
sw01(config-if)#switchport mode access
sw01(config-if)#dot1x host-mode multi-sessions
sw01(config-if)#dot1x reauthentication
sw01(config-if)#dot1x timeout reauth-period 10800
sw01(config-if)#dot1x timeout quiet-period 10
sw01(config-if)#dot1x timeout server-timeout 5
sw01(config-if)#dot1x timeout supp-timeout 3
sw01(config-if)#dot1x authentication mac       
sw01(config-if)#dot1x radius-attributes vlan
sw01(config-if)#dot1x port-control auto
sw01(config-if)#spanning-tree portfast
sw01(config-if)#ex
sw01(config)#end

🛡️ Configuration de PacketFence

Création du rôle LAN

Les rôles sont affectés aux appareils. Ils peuvent être affectés manuellement ou automatiquement. On va créer le rôle LAN qui sera utilisé par notre premier appareil.

Ajout switch

Renseignez le nom du rôle et une description puis sauvegardez :

Ajout switch

Ajout du switch Cisco

Il nous faut déclarer le switch afin que PacketFence puisse communiquer avec celui-ci et régler les VLAN suivant les éléments d'authentification fournis.

Je dois avouer que je ne me suis pas cogné toute la documentation de PacketFence sur l'interface d'ajout d'un switch. Je me suis contenté de reprendre les exemples donnés. Je trouve d'ailleurs dommage que PacketFence ne donne pas d'explications comme le font Pfsense ou OPNSense.

Rendez-vous sur l'interface web de PacketFence puis ajoutez un nouveau commutateur puis cliquez sur Default :

Ajout switch

Définition

Ajout switch

Roles par VLAN Id

Lorsque nous connecterons notre appareil, nous affecterons le rôle LAN à ce dernier. Ce rôle sera alors utilisé par PacketFence pour régler l'Id sur VLAN sur le port du switch auquel l'appareil est connecté.

Ajout switch

Ici j'ai défini le VLAN Id 20 (correspondant au LAN 192.168.20.0/24) sur le rôle "LAN" et le VLAN Id 1 sur "Default".

RADIUS

Parémétrez le secret renseigné lors de l'étape de "Configuration de RADIUS" du switch.

Ajout switch

SNMP

Ajout switch

Terminez la configuration en cliquant sur le bouton "Créer". Vous verrez alors apparaitre une notification vous indiquant la création du switch

Ajout switch

🖥️ Branchement d'un appareil

Enregistrement dans PacketFence

Relevez l'adresse MAC de votre appareil puis enregistrez la dans PacketFence comme ceci :

Ajout appareil

Si le rôle LAN n'apparait pas, actualisez la page web.

Branchement

Récupération de l'IP

Branchez maintenant l'appareil (un raspberry pi 3 dans mon cas) sur le port du switch configuré précédemment. Dans mon cas, OPNSense fait office de serveur DHCP sur le VLAN 20. Si vous récupérez une IP du réseau 192.168.20.0/24 alors c'est gagné !

Informations remontées dans PacketFence

Vous devez voir l'appareil sur PacketFence au niveau de l'audit :

Ajout appareilh

Note

Dans le contexte RADIUS, NAS signifie Network Access Server. Il est en chage d'acheminer les demandes d'authentification des clients vers un serveur RADIUS.

Et au niveau des Appareils :

Ajout appareil

En cliquant sur cet appareil nous pouvons constater que l'appareil a bien été identifié en tant que Raspberry Pi :

Ajout appareil

Regardons les logs sur PacketFence. Connectez vous en SSH puis parcourez les logs du fichier /usr/local/pf/logs/packetfence.log

Ajout appareil

Affichage des VLAN sur le switch

Sur le switch (en SSH) :

Avant la connexion de l'appareil, nous constatons que Fa4 est dans le VLAN 1 non tagué.

Affichage VLAN sur Cisco

Une fois l'appareil branché, nous constatatons que Fa4 est passé dans le VLAN 20 non tagué.

Affichage VLAN sur Cisco

Ensuite quand l'appareil est débranché, le Fa4 est de nouveau sorti du VLAN 20 pour revenir dans le VLAN 1.

🖥️ Branchement d'un nouvel appareil

🧪 Expérience #1

Que se passe-t-il si nous branchons un nouvel appareil sur le switch et non déclaré dans PacketFence ?

L'appareil remontera alors dans PacketFence mais il apparaitra comme non enregistré :

Ajout appareil

Si nous regardons son emplacement VLAN, nous constatons que l'appareil a été placé dans le VLAN 2 avec le rôle "registration". Si nous revenons sur les paramètres du switch dans PacketFence, nous relevons qu'en effet le VLAN ID de "registration" par défaut est 2.

VLAN registration

N'ayant pas encore configuré de VLAN Registration, je vais mettre l'ID 1. J'ai déconnecté/reconnecté l'appareil sur le swith et l'ID VLAN 1 a bien été appliqué.

VLAN registration ID 1

Explication

Notre appareil n'utilisant pas l'authentificaton 820.1X mais MAB, nous pouvons enregistrer l'appareil de deux manières :

  • Un enregistrement manuel en tant qu'admin dans la console web de PacketFence :
    • soit en enregistrant l'adresse MAC en amont de la connexion de l'appareil,
    • soit en enregristant l'adresse MAC une fois remontée dans PacketFence après la connexion d'un appareil.
  • Un enregistrement depuis un portail captif qui se lance directement sur l'appareil.

La première façon de faire est adapatée aux appareils comme des imprimantes. La deuxième façon convient uniquement à des appareils comme des PC, c'est-à-dire capable de lancer une page web (portail captif).

Si nous créons le VLAN Registration, PacketFence devrailt alors redirigé notre nouvel appareil vers un portail captif. C'est le sujet de notre deuxième expérience.

🧪 Expérience #2

Configuration du réseau

Nous allons mettre en place un portail captif afin de permettre à de nouveaux appareils de s'authentifier en s'appyant toujours sur l'auth MAB.

Une fois les appareils authentifiés depuis le portail captif, ils passeront alors sur le VLAN Guests. Je pars du principe que les appareils positionnés sur ce VLAN n'auront accès qu'à Internet et non aux autres réseaux internes (LAN, AD, Administation...).

Pour cela, je vais devoir mettre à jour mon tableau des VLAN en ajoutant les VLAN 2 et 3.

VLAN et adressage réseau

ID Nom Réseau Passerelle/DHCP DNS
🆕 2 Registration 192.168.2.0/24 PacketFence PacketFence
🆕 3 Isolation 192.168.3.0/24 PacketFence PacketFence
10 Administration 192.168.10.0/24 OPNSense AD
20 LAN 192.168.20.0/24 OPNSense AD
30 AD 192.168.30.0/24 OPNSense AD
40 Guests 192.168.40.0/24 OPNSense OPNSense

Il faut créer ces VLAN sur le switch et sur PacketFence.

Important : PacketFence, et non OPNSense, fera office de DHCP et DNS sur les VLAN 2 et 3. Pour être précis, toute machine sur le VLAN 2 ou 3, n'a ni accès aux autres réseaux, ni accès à Internet.

Une fois les VLAN créés sur le switch, taguez les VLAN ID 2 et 3 sur le port 1 (C'est le port sur lequel est branché mon PVE).

Ensuite il nous faut créer deux cartes réseaux supplémentaires pour la VM PacketFence sur Promox VE avec leur vlan tag correspondant.

VM net cards

Vous retrouverez alors les deux nouvelles cartes réseaux dans la configuration réseau de PacketFence :

Net config

Activez la carte ens19 et configurez la pour le réseau Registration :

Net config

Sauvegardez et revenez sur la liste des interfaces.

Activez la carte ens20 et configurez la pour le réseau Isolation :

Net config

Sauvegardez et revenez sur la liste des interfaces.

Vous constaterez l'ajout de deux réseaux dans la partie "Réseaux Niveau 2". Vous pouvez par exemple préciser le plage IP DHCP pour les réseaux affichés.

Net config

Warning

Lors de la création des 2 nouveaux réseaux, il est précisé de redémarrer les services pfdns, pfdhcp et iptables. Dans mon cas ça n'a pas suffit et mon appareil ne récupérait pas d'IP du VLAN registration. J'ai du rebooter le serveur PacketFence et à partir de ce moment mon PC récupérait bien une IP.

Pour terminer, nous devons préciser l'ID du VLAN 40 sur "guest" et remettre l'ID du VLAN 2 sur "registration" sur le switch dans PacketFence :

Net config

Pour rappel, ma passerelle OPNSense fait office de serveur DHP et DNS sur le VLAN Guests.

Configuration de la source d'authentification

Si nous voulons régler l'affectation du VLAN Guests de manière automatique, nous devons passer par les sources d'authentification.

Étant donné que nous souhaitons utiliser l'authentification MAB, nous devons utiliser une source externe. Dans ce cas, je choisis la source "email" vu que j'ai réglé le serveur SMTP lors de l'installation de PacketFence.

Sources d'auth

Nous conservons le délai de 10 minutes (par défaut) pour récupérer le lien d'activation sur notre email.

Sources d'auth

Laissez les autres options par défaut ainsi que la règle d'authentification :

Sources d'auth

Cette règle indique qu'une fois authentifiés, les appareils passent sur le VLAN "guest" pour une durée de 24 heures avant de devoir se réauthentifier.

Configuration du profil de connexion

Si nous nous rendons sur le profil par défaut, nous constatons qu'il n'a pas de source d'authentification spécifiée.

Profil par défaut de connexion

Et c'est écrit juste au dessous ce paramètre : En l’absence de source spécifiée, toutes les sources internes et externes seront utilisées.

Nous sélectionnons donc email comme source d'authentification. Puis nous sauvegardons ce changement.

Branchement d'un nouvel appareil

J'ai utilisé un PC sous Zorin OS que j'ai branché sur le port 4 du switch. Une fois connecté, le PC a récupéré une IP du réseau registration puis a ouvert automatiquement une fenêtre web pointant vers le portail captif de PacketFence.

Portail captif
Je n'ai pas personnalisé les conditions d'utilisation, nous avons donc par défaut l'affichage d'un "Lorem ipsum"
Portail captif
Ensuite nous renseignons un email et nous cliquons sur "Continuer"

Le réseau de l'appareil passe alors sur le VLAN 40 (Guests) au bout de quelques secondes. Nous avons accès à Internet durant 10 minutes afin de pouvoir récupérer le lien d'activation reçu dans la boite mail.

Portail captif
Ciquez sur le lien d'activation

Une fois le lien ouvert, vous êtes redirigé vers le portail de PacketFence vous indiquant que votre accès a bien été activé. Nous pouvons voir les emplacements successifs de l'appareil :

Emplacement

Je ne l'ai pas signalé, mais notez que PacketFence nous indique sur quel switch et quel port de celui-ci est connecté l'appareil.

Enfin si vous dépassez le délai d'activation, le PC est alors replacé dans le VLAN 2. Vous devez alors de nouveau vous inscrire pour obtenir un lien d'activation.

👉 La suite

Maintenant que nous avons abordé l'authentification MAB, il est temps de passer à l'authentification 802.1X. Nous reviendrons sur l'authentification MAB lors de la mise en place du Wifi pour les invités.