# Point Accès Wi-Fi



# 01 - Description

## **1) Architecture du projet**

Le projet IRS nécessite la mise en place d'un accès WiFi dédié aux visiteurs. Cet accès doit être totalement isolé du réseau interne de l'établissement afin de garantir la sécurité des équipements et des données.

Le réseau visiteurs est diffusé par un point d'accès WiFi Cisco WAP150, configuré en mode autonome (sans contrôleur WLC). Il est segmenté via le VLAN 40, indépendant des autres VLANs du réseau.

## **2) Objectifs**

 • Fournir un accès WiFi fonctionnel aux visiteurs du projet IRS

 • Isoler le trafic visiteurs du reste de l'infrastructure réseau

 • Sécuriser l'accès par authentification WPA Personal

 • Empêcher la communication entre les clients WiFi visiteurs (Channel Isolation)

## **2) Matériels utilisée**

<table cellpadding="5" cellspacing="0" id="bkmrk-param%C3%A8tre-valeur-%C3%89qu" width="624"><colgroup><col width="222"></col> <col width="380"></col> </colgroup><tbody><tr valign="top"><td bgcolor="#1f4e79" style="background: #1f4e79; border: 1px solid #1f4e79; padding: 0.14cm 0.21cm;" width="222"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Paramètre**</span></span></span>

</td><td bgcolor="#2e75b6" style="background: #2e75b6; border: 1px solid #1f4e79; padding: 0.14cm 0.21cm;" width="380"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Valeur</span></span></span>

</td></tr><tr valign="top"><td bgcolor="#ebf3fb" style="background: #ebf3fb; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Équipement**</span></span></span>

</td><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="380"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Cisco WAP150</span></span></span>

</td></tr><tr valign="top"><td bgcolor="#ebf3fb" style="background: #ebf3fb; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Adresse IP de gestion**</span></span></span>

</td><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="380"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">192.168.10.200</span></span></span>

</td></tr><tr valign="top"><td bgcolor="#ebf3fb" style="background: #ebf3fb; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**VLAN de gestion**</span></span></span>

</td><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="380"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">VLAN 40</span></span></span>

</td></tr><tr valign="top"><td bgcolor="#ebf3fb" style="background: #ebf3fb; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Interface web**</span></span></span>

</td><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="380"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">https://192.168.10.200</span></span></span>

</td></tr><tr valign="top"><td bgcolor="#ebf3fb" style="background: #ebf3fb; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Identifiant par défaut**</span></span></span>

</td><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="380"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">cisco</span></span></span>

</td></tr></tbody></table>

## **3) Plan d'adressage**

<table cellpadding="5" cellspacing="0" id="bkmrk-%C3%89quipement-vlan-adre" width="602"><colgroup><col width="156"></col> <col width="70"></col> <col width="157"></col> <col width="177"></col> </colgroup><tbody><tr valign="top"><td bgcolor="#1f4e79" style="background: #1f4e79; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="156"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Équipement**</span></span></span>

</td><td bgcolor="#1f4e79" style="background: #1f4e79; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="70"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**VLAN**</span></span></span>

</td><td bgcolor="#1f4e79" style="background: #1f4e79; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="157"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Adresse IP**</span></span></span>

</td><td bgcolor="#1f4e79" style="background: #1f4e79; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="177"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Rôle**</span></span></span>

</td></tr><tr valign="top"><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="156"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">AP Cisco WAP150</span></span></span></span>

</td><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="70"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">10</span></span></span></span>

</td><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="157"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">192.168.10.200</span></span></span></span>

</td><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="177"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">Point d'accès WiFi</span></span></span></span>

</td></tr><tr valign="top"><td bgcolor="#f5f9ff" style="background: #f5f9ff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="156"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">Sous-interface routeur</span></span></span></span>

</td><td bgcolor="#f5f9ff" style="background: #f5f9ff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="70"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">40</span></span></span></span>

</td><td bgcolor="#f5f9ff" style="background: #f5f9ff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="157"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">192.168.40.x</span></span></span></span>

</td><td bgcolor="#f5f9ff" style="background: #f5f9ff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="177"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">Passerelle VLAN 40</span></span></span></span>

</td></tr><tr valign="top"><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="156"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">Clients visiteurs</span></span></span></span>

</td><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="70"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">40</span></span></span></span>

</td><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="157"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">192.168.40.x (DHCP)</span></span></span></span>

</td><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="177"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">Accès Internet visiteurs</span></span></span></span>

</td></tr></tbody></table>

## **4) Architecture réseau**

#### **Schéma d'ensemble**

<span style="font-family: Arial, serif;"><span style="font-size: small;">Le schéma ci-dessous présente l'intégration du point d'accès dans l'infrastructure réseau du projet IRS.</span></span>

[![image.png](https://wiki-matheo.kermorvant.fr/uploads/images/gallery/2026-03/scaled-1680-/EmEimage.png)](https://wiki-matheo.kermorvant.fr/uploads/images/gallery/2026-03/EmEimage.png)

# 02 - Installation

## **1) Prérequis**

#### **Matériel nécessaire**

 • Point d'accès Cisco WAP150  
 • Switch compatible PoE (Power over Ethernet) ou injecteur PoE  
 • Câble RJ45 (Cat5e ou supérieur)  
 • PC avec navigateur web pour la configuration  
 • Câble console USB (optionnel, pour accès CLI)

#### **Prérequis réseau**

 • VLAN 40 créé et configuré sur le switch et le routeur  
 • Service DHCP actif pour le VLAN 40 sur le routeur  
 • Port switch dédié à l'AP configuré en access VLAN 40

<p class="callout warning">Vérifier que le port switch est bien en mode access VLAN 40 avant de brancher l'AP. Un port en mode trunk ou sur le mauvais VLAN empêchera l'accès à l'interface web</p>


## **2 ) Installation physique**

#### **Branchement**

 1. Choisir un emplacement adapté pour couvrir la zone visiteurs  
 2. Brancher le câble RJ45 entre le port Ethernet de l'AP et le port 17 du switch  
 3. L'AP s'alimente via PoE — aucune alimentation électrique séparée nécessaire  
 4. Attendre environ 2 minutes le démarrage complet de l'AP  
 5. Vérifier que les LEDs de l'AP et du switch s'allument correctement

#### **Vérification du port switch**

Depuis la console du switch, vérifier la configuration du port 17 :

```
show interfaces GigabitEthernet0/17 switchport
```

Le résultat doit afficher :  
 • Administrative Mode : static access  
 • Access Mode VLAN : 40

<p class="callout info">Si le port n'est pas sur le VLAN 40, le configurer avec les commandes suivantes :</p>

```
configure terminal
interface GigabitEthernet0/17
switchport mode access
switchport access vlan 40
end
write memory
```


## **3) Premier accès à l'interface web**

#### **Accès via naviguateur**

 6. Ouvrir un navigateur web (Firefox ou Edge recommandé)  
 7. Saisir l'adresse : https://192.168.10.200  
 8. Accepter l'avertissement de certificat auto-signé  
 9. Se connecter avec les identifiants par défaut :

<table cellpadding="5" cellspacing="0" id="bkmrk-champ-valeur-par-d%C3%A9f" width="602"><colgroup><col width="256"></col> <col width="323"></col> </colgroup><tbody><tr valign="top"><td bgcolor="#1f4e79" style="background: #1f4e79; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="256"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Champ**</span></span></span>

</td><td bgcolor="#1f4e79" style="background: #1f4e79; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="323"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Valeur par défaut**</span></span></span>

</td></tr><tr valign="top"><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="256"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">Nom d'utilisateur</span></span></span></span>

</td><td bgcolor="#ffffff" style="background: #ffffff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="323"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">cisco</span></span></span></span>

</td></tr><tr valign="top"><td bgcolor="#f5f9ff" style="background: #f5f9ff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="256"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">Mot de passe</span></span></span></span>

</td><td bgcolor="#f5f9ff" style="background: #f5f9ff; border: 1px solid #cccccc; padding: 0.14cm 0.21cm;" width="323"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;"><span style="font-weight: normal;">cisco</span></span></span></span>

</td></tr></tbody></table>

<p class="callout warning">Le protocole HTTP simple (port 80) est désactivé par défaut sur le WAP150. Utiliser impérativement HTTPS. En cas de chargement infini, vérifier que l'URL commence bien par https://.</p>

# 03 - Configuration

## **1) Topologie réseau Wi-Fi**

<span style="font-family: Arial, serif;"><span style="font-size: small;">L'infrastructure Wi-Fi est isolée du réseau de production via le VLAN 40. Le tableau suivant récapitule l'adressage réseau utilisé :</span></span>

<table border="1" cellpadding="5" cellspacing="0" id="bkmrk-%C3%89l%C3%A9ment-vlan-adresse" style="border-collapse: collapse; width: 602px; height: 237.578px; border-spacing: 0px; border-color: #000000; border-style: solid;" width="602"><colgroup><col width="156"></col> <col width="157"></col> <col width="123"></col> <col width="124"></col> </colgroup><thead><tr style="height: 35.7969px;"><td bgcolor="#2e4a7a" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="156"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Élément**</span></span></span>

</td><td bgcolor="#2e4a7a" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="157"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**VLAN**</span></span></span>

</td><td bgcolor="#2e4a7a" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="123"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Adresse IP**</span></span></span>

</td><td bgcolor="#2e4a7a" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="124"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Masque**</span></span></span>

</td></tr></thead><tbody><tr style="height: 35.7969px;"><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="156"><span style="font-family: Arial, serif;"><span style="font-size: small;">WAP150 (gestion)</span></span>

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="157"><span style="font-family: Arial, serif;"><span style="font-size: small;">VLAN 40</span></span>

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="123"><span style="font-family: Arial, serif;"><span style="font-size: small;">192.168.10.198</span></span>

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="124"><span style="font-family: Arial, serif;"><span style="font-size: small;">/27</span></span>

</td></tr><tr style="height: 35.7969px;"><td bgcolor="#f2f2f2" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="156"><span style="font-family: Arial, serif;"><span style="font-size: small;">Réseau VLAN 40</span></span>

</td><td bgcolor="#f2f2f2" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="157"><span style="font-family: Arial, serif;"><span style="font-size: small;">VLAN 40</span></span>

</td><td bgcolor="#f2f2f2" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="123"><span style="font-family: Arial, serif;"><span style="font-size: small;">192.168.10.192</span></span>

</td><td bgcolor="#f2f2f2" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="124"><span style="font-family: Arial, serif;"><span style="font-size: small;">/27</span></span>

</td></tr><tr style="height: 35.7969px;"><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="156"><span style="font-family: Arial, serif;"><span style="font-size: small;">Passerelle VLAN 40</span></span>

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="157"><span style="font-family: Arial, serif;"><span style="font-size: small;">VLAN 40</span></span>

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="123"><span style="font-family: Arial, serif;"><span style="font-size: small;">192.168.10.194</span></span>

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="124"><span style="font-family: Arial, serif;"><span style="font-size: small;">/27</span></span>

</td></tr><tr style="height: 58.5938px;"><td bgcolor="#f2f2f2" style="height: 58.5938px; border-color: rgb(0, 0, 0);" width="156"><span style="font-family: Arial, serif;"><span style="font-size: small;">Plage DHCP visiteurs</span></span>

</td><td bgcolor="#f2f2f2" style="height: 58.5938px; border-color: rgb(0, 0, 0);" width="157"><span style="font-family: Arial, serif;"><span style="font-size: small;">VLAN 40</span></span>

</td><td bgcolor="#f2f2f2" style="height: 58.5938px; border-color: rgb(0, 0, 0);" width="123"><span style="font-family: Arial, serif;"><span style="font-size: small;">192.168.10.196 – .222</span></span>

</td><td bgcolor="#f2f2f2" style="height: 58.5938px; border-color: rgb(0, 0, 0);" width="124"><span style="font-family: Arial, serif;"><span style="font-size: small;">/27</span></span>

</td></tr><tr style="height: 35.7969px;"><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="156"><span style="font-family: Arial, serif;"><span style="font-size: small;">Port switch</span></span>

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="157"><span style="font-family: Arial, serif;"><span style="font-size: small;">Fa0/23 (trunk)</span></span>

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="123">—

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="124">—

</td></tr></tbody></table>

<span style="font-family: Arial, serif;"><span style="font-size: small;">Le port Fa0/23 du switch Cisco est configuré en mode trunk et autorise le VLAN 40 ainsi que le VLAN natif. Le DHCP snooping est activé sur ce port en mode trusted pour autoriser les réponses DHCP provenant du serveur.</span></span>

## **2) Configuration du réseau sans fil (SSID)**

<table border="1" cellpadding="5" cellspacing="0" id="bkmrk-param%C3%A8tre-valeur-con" style="border-collapse: collapse; width: 602px; border-width: 1px; border-spacing: 0px; border-color: #000000; border-style: solid;" width="602"><colgroup><col width="222"></col> <col width="357"></col> </colgroup><thead><tr><td bgcolor="#2e4a7a" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Paramètre**</span></span></span>

</td><td bgcolor="#2e4a7a" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Valeur configurée**</span></span></span>

</td></tr></thead><tbody><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="222"><span style="font-family: Arial, serif;"><span style="font-size: small;">Nom du réseau (SSID)</span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="357"><span style="font-family: Arial, serif;"><span style="font-size: small;">Visiteurs-IRS</span></span>

</td></tr><tr><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="222"><span style="font-family: Arial, serif;"><span style="font-size: small;">Diffusion du SSID</span></span>

</td><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="357"><span style="font-family: Arial, serif;"><span style="font-size: small;">Activée</span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="222"><span style="font-family: Arial, serif;"><span style="font-size: small;">VLAN associé</span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="357"><span style="font-family: Arial, serif;"><span style="font-size: small;">VLAN 40</span></span>

</td></tr><tr><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="222"><span style="font-family: Arial, serif;"><span style="font-size: small;">Bande de fréquence</span></span>

</td><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="357"><span style="font-family: Arial, serif;"><span style="font-size: small;">2,4 GHz</span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="222"><span style="font-family: Arial, serif;"><span style="font-size: small;">Standard</span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="357"><span style="font-family: Arial, serif;"><span style="font-size: small;">802.11b/g/n</span></span>

</td></tr><tr><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="222"><span style="font-family: Arial, serif;"><span style="font-size: small;">Canal</span></span>

</td><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="357"><span style="font-family: Arial, serif;"><span style="font-size: small;">Auto (sélection automatique)</span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="222"><span style="font-family: Arial, serif;"><span style="font-size: small;">Puissance d'émission</span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="357"><span style="font-family: Arial, serif;"><span style="font-size: small;">100 % (pleine puissance)</span></span>

</td></tr><tr><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="222"><span style="font-family: Arial, serif;"><span style="font-size: small;">Isolation clients</span></span>

</td><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="357"><span style="font-family: Arial, serif;"><span style="font-size: small;">Activée (clients isolés entre eux)</span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="222"><span style="font-family: Arial, serif;"><span style="font-size: small;">Chiffrement</span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="357"><span style="font-family: Arial, serif;"><span style="font-size: small;">WPA2 Personal </span></span>

</td></tr></tbody></table>

  
Le SSID Visiteurs-IRS est dédié aux accès des visiteurs et invités. L'isolation des clients est activée afin d'empêcher toute communication directe entre les postes connectés au Wi-Fi. Seul l'accès à travers le portail captif NoDogSplash est autorisé.

#### **Affectation VLAN sur l'interface réseau**

L'interface Ethernet du WAP150 est configurée en mode trunk pour transporter à la fois le VLAN de gestion (VLAN 99) et le VLAN visiteurs (VLAN 40).

**Configuration trunk côté switch (port Fa0/23)**

```
Switch(config)# interface FastEthernet0/23
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan 40,99
Switch(config-if)# ip dhcp snooping trust
Switch(config-if)# spanning-tree portfast
```

#### **Configuration VLAN côté WAP150**

Dans l'interface web du WAP150, les paramètres VLAN sont accessibles via le menu Advanced &gt; VLAN &amp; Radio Settings. Le SSID Visiteurs-IRS est associé au VLAN 40.

#### **Intégration du portail captif NoDogSplash**

Le portail captif NoDogSplash est déployé sur une machine virtuelle Debian 12 hébergée sur Proxmox. Cette VM joue le rôle de passerelle pour le VLAN 40 et intercepte les requêtes HTTP des clients Wi-Fi pour les rediriger vers une page d'authentification.

<table border="1" cellpadding="5" cellspacing="0" id="bkmrk-%C3%89l%C3%A9ment-d%C3%A9tail-os-de" style="border-collapse: collapse; width: 602px; border-spacing: 0px; border-color: #000000; border-style: solid;" width="602"><colgroup><col width="189"></col> <col width="391"></col> </colgroup><thead><tr><td bgcolor="#2e4a7a" style="border-color: rgb(0, 0, 0);" width="189"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Élément**</span></span></span>

</td><td bgcolor="#2e4a7a" style="border-color: rgb(0, 0, 0);" width="391"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Détail**</span></span></span>

</td></tr></thead><tbody><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="189"><span style="font-family: Arial, serif;"><span style="font-size: small;">OS de la VM</span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="391"><span style="font-family: Arial, serif;"><span style="font-size: small;">Debian 12 (Bookworm)</span></span>

</td></tr><tr><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="189"><span style="font-family: Arial, serif;"><span style="font-size: small;">Interface LAN (VLAN 99)</span></span>

</td><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="391"><span style="font-family: Arial, serif;"><span style="font-size: small;">ens18 — accès gestion / supervision</span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="189"><span style="font-family: Arial, serif;"><span style="font-size: small;">Interface Wi-Fi (VLAN 40)</span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="391"><span style="font-family: Arial, serif;"><span style="font-size: small;">ens19 — 192.168.10.194/27</span></span>

</td></tr><tr><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="189"><span style="font-family: Arial, serif;"><span style="font-size: small;">Logiciel portail captif</span></span>

</td><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="391"><span style="font-family: Arial, serif;"><span style="font-size: small;">NoDogSplash (sources GitHub)</span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="189"><span style="font-family: Arial, serif;"><span style="font-size: small;">Port d'écoute</span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="391"><span style="font-family: Arial, serif;"><span style="font-size: small;">TCP 2050</span></span>

</td></tr><tr><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="189"><span style="font-family: Arial, serif;"><span style="font-size: small;">Démarrage</span></span>

</td><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="391"><span style="font-family: Arial, serif;"><span style="font-size: small;">Service systemd (nodogsplash.service)</span></span>

</td></tr></tbody></table>

Le flux d'un client visiteur se déroule comme suit : le poste obtient une adresse IP du DHCP du VLAN 40, puis toutes ses requêtes HTTP sont interceptées par NoDogSplash et redirigées vers le portail de connexion. Après validation sur la page d'accueil, l'accès au réseau est autorisé.

# 04 - Sécurité

## **1) Choix du protocole de chiffrement Wi-Fi**

L'un des premiers choix à effectuer pour sécuriser un réseau sans fil est le protocole de chiffrement. Contrairement aux réseaux filaires, les ondes radio se propagent au-delà des murs et peuvent être captées par tout équipement situé à portée. Sans chiffrement, toutes les données échangées seraient lisibles en clair par n'importe quel observateur passif.

Quatre générations de protocoles existent. Le tableau suivant les compare afin de justifier le choix retenu pour le projet IRS-SI.

<table border="1" cellpadding="5" cellspacing="0" id="bkmrk-protocole-chiffremen" style="border-collapse: collapse; width: 602px; border-spacing: 0px; border-color: #000000; border-style: solid;" width="602"><colgroup><col width="109"></col> <col width="110"></col> <col width="110"></col> <col width="110"></col> <col width="111"></col> </colgroup><thead><tr><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="109"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Protocole**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Chiffrement**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Authentification**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Niveau sécurité**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="111"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Statut**</span></span></span>

</td></tr></thead><tbody><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="109"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**WEP (1999)**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**RC4 – 40/104 bits**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Clé partagée**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #c0392b;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Très faible**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="111"><span style="color: #c0392b;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Obsolète**</span></span></span>

</td></tr><tr><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="109"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**WPA-TKIP (2003)**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**RC4 + TKIP**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**PSK / 802.1X**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #d35400;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Faible**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="111"><span style="color: #d35400;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Déprécié**</span></span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="109"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**WPA2-AES (2004)**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**AES-CCMP 128 bits**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**PSK / 802.1X**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #1e8449;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Bon**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="111"><span style="color: #1e8449;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Retenu ✔**</span></span></span>

</td></tr><tr><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="109"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**WPA3-SAE (2018)**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**AES-CCMP + SAE**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**SAE / 802.1X**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="110"><span style="color: #1a4f8a;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Excellent**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="111"><span style="color: #777777;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Non supporté**</span></span></span>

</td></tr></tbody></table>

**WEP — Wired Equivalent Privacy (1999)**  
WEP est le premier protocole de sécurité Wi-Fi standardisé. Il utilise l'algorithme de chiffrement RC4 avec des clés de 40 ou 104 bits. Dès 2001, des chercheurs ont démontré que le vecteur d'initialisation (IV) de seulement 24 bits est réutilisé trop rapidement, ce qui permet à un attaquant de retrouver la clé en quelques minutes avec des outils comme aircrack-ng. WEP est formellement interdit dans tout réseau professionnel depuis 2004.

<p class="callout warning">Attention : WEP ne doit jamais être utilisé. Même un réseau sans données sensibles peut servir de point d'entrée vers l'infrastructure interne.</p>

**WPA-TKIP — Wi-Fi Protected Access (2003)**  
WPA avec TKIP a été conçu comme solution transitoire dans l'attente de WPA2. Il corrige les failles de WEP en ajoutant un compteur de séquence de trames et en renouvelant dynamiquement les clés. Cependant, des attaques de type TKIP MIC ont été publiées dès 2008, puis l'attaque Beck-Tews (2009) a permis de déchiffrer des paquets courts. WPA-TKIP est déprécié depuis 2012 par le standard 802.11.

**WPA2-AES-CCMP — Protocole retenu pour le projet**  
WPA2 utilise le chiffrement AES (Advanced Encryption Standard) en mode CCMP (Counter Mode with CBC-MAC Protocol), avec des clés de 128 bits. AES est un algorithme symétrique standardisé par le NIST en 2001 et n'a à ce jour fait l'objet d'aucune attaque pratique sur des implémentations correctes. WPA2 est le standard de facto dans les environnements professionnels depuis 2006.

<p class="callout success">Bonne pratique : WPA2-Personal avec AES-CCMP est retenu pour le SSID Visiteurs-IRS. Ce choix offre un niveau de sécurité adapté à un réseau invités tout en étant compatible avec l'ensemble des terminaux mobiles actuels.  
</p>

**WPA3-SAE — Évolution non déployée**  
WPA3, introduit en 2018, remplace l'échange de clé PSK par le protocole SAE (Simultaneous Authentication of Equals), basé sur l'échange Diffie-Hellman. SAE élimine les attaques par dictionnaire hors ligne sur le mot de passe, car chaque tentative d'authentification nécessite une interaction réseau. WPA3 n'est pas supporté par le firmware 1.1.4.0 du Cisco WAP150 et ne peut donc pas être déployé dans le cadre actuel du projet.

## **2) Authentification et contrôle d'accès**

Le contrôle d'accès au réseau Wi-Fi repose sur deux mécanismes complémentaires : l'authentification au niveau du protocole Wi-Fi (WPA2-PSK) et le contrôle applicatif via le portail captif NoDogSplash, qui intervient après l'association au réseau.

#### **WPA2 Personal (PSK) - Premier niveau**

En mode WPA2-Personal, un mot de passe commun (Pre-Shared Key) est configuré sur le point d'accès. Tous les clients doivent le connaître pour s'associer au SSID. Cette méthode est adaptée à un réseau visiteurs où les terminaux sont variés et non gérés par l'entreprise.

La clé PSK subit une dérivation cryptographique PBKDF2-HMAC-SHA1 avec 4096 itérations pour produire la PMK (Pairwise Master Key) de 256 bits. Cette PMK n'est jamais transmise sur le réseau.

**Politique appliquée au mot de passe Wi-Fi**

<table border="1" cellpadding="5" cellspacing="0" id="bkmrk-crit%C3%A8re-r%C3%A8gle-appliq" style="border-collapse: collapse; width: 602px; border-spacing: 0px; border: 1px solid #000000;" width="602"><colgroup><col width="222"></col> <col width="357"></col> </colgroup><thead><tr><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Critère**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Règle appliquée**</span></span></span>

</td></tr></thead><tbody><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Longueur minimale</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">12 caractères</span></span></span>

</td></tr><tr><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Composition</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Majuscules + minuscules + chiffres</span></span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Durée de validité</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Renouvellement mensuel recommandé</span></span></span>

</td></tr><tr><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Diffusion</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Via le portail captif après validation de l'identité</span></span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Stockage</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Hash PBKDF2 côté WAP150, jamais en clair</span></span></span>

</td></tr></tbody></table>

#### **Portail captif NoDogSplash - Second niveau de contrôle**

Le portail captif constitue le deuxième niveau d'authentification. Même si un visiteur connaît le mot de passe WPA2, ses requêtes HTTP sont interceptées par la VM NoDogSplash jusqu'à ce qu'il accepte les conditions d'utilisation sur la page du portail.

**Flux d'authentification**

Le flux complet d'un client visiteur se déroule en cinq étapes :  
 1. Association Wi-Fi : le terminal se connecte au SSID Visiteurs-IRS avec le mot de passe WPA2.  
 2. Obtention d'une adresse IP : le serveur DHCP du VLAN 40 attribue une adresse dans la plage 192.168.10.196–222/27.  
 3. Interception HTTP : NoDogSplash redirige toute requête HTTP vers sa page d'accueil (port TCP 2050).  
 4. Validation : le visiteur accepte les conditions d'utilisation sur le portail.  
 5. Accès autorisé : NoDogSplash lève le blocage et laisse passer le trafic du client vers internet.

## **3) Isolation et segmentation réseau**

La segmentation réseau est le principe de défense qui consiste à diviser l'infrastructure en zones étanches. Même si un attaquant pénètre dans l'une d'elles, il ne peut pas accéder aux autres sans franchir des contrôles supplémentaires.

#### **Isolation des clients Wi-Fi**

L'isolation des clients interdit toute communication directe entre les terminaux connectés au même SSID. Sans cette mesure, deux visiteurs sur le même réseau pourraient s'attaquer mutuellement via des techniques comme l'ARP spoofing ou le scan de ports.

Lorsque l'isolation est activée sur le WAP150, le point d'accès bloque au niveau de la couche 2 (Ethernet) tout échange de trames entre clients. Un client ne peut envoyer des trames qu'en direction de la passerelle par défaut (la VM NoDogSplash, 192.168.10.194). Les trames destinées à d'autres clients sont silencieusement supprimées par le WAP150.

#### **Segmentation par VLAN 40**

Le réseau Wi-Fi visiteurs est entièrement isolé du réseau de production par l'utilisation du VLAN 40. Ce VLAN est dédié exclusivement aux clients sans fil et n'est pas routé vers les VLAN internes (VLAN 10 Gestion, VLAN 20 Administration, VLAN 30 Commercial, etc.).

<table border="1" cellpadding="5" cellspacing="0" id="bkmrk-vlan-usage-r%C3%A9seau-ac" style="border-collapse: collapse; width: 602px; border-spacing: 0px; border: 1px solid #000000;" width="602"><colgroup><col width="89"></col> <col width="157"></col> <col width="123"></col> <col width="191"></col> </colgroup><thead><tr><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="89"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**VLAN**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="157"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Usage**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="123"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Réseau**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="191"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Accès depuis VLAN 40**</span></span></span>

</td></tr></thead><tbody><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="89"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**VLAN 10**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="157"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Gestion**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="123"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**192.168.10.0/27**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="191"><span style="color: #c0392b;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Interdit**</span></span></span>

</td></tr><tr><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="89"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**VLAN 20**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="157"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Administration**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="123"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**192.168.10.32/27**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="191"><span style="color: #c0392b;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Interdit**</span></span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="89"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**VLAN 30**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="157"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Commercial**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="123"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**192.168.10.64/27**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="191"><span style="color: #c0392b;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Interdit**</span></span></span>

</td></tr><tr><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="89"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**VLAN 40**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="157"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Wi-Fi visiteurs**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="123"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**192.168.10.192/27**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="191"><span style="color: #1e8449;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Natif — DHCP 196-222**</span></span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="89"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**VLAN 99**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="157"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**LAN VMs / gestion**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="123"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**192.168.10.128/26**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="191"><span style="color: #c0392b;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Interdit (sauf passerelle)**</span></span></span>

</td></tr></tbody></table>

Le routeur Cisco ISR 4321 est configuré pour bloquer tout routage inter-VLAN depuis le VLAN 40 vers les VLAN de production. Seul le trafic à destination d'internet (ou des ressources explicitement autorisées) est permis après validation sur le portail captif.

#### **Rôle de la VM NoDogSplash comme point de contrôle unique**

La VM NoDogSplash (Debian 12) est le seul point de transit entre le VLAN 40 (Wi-Fi visiteurs) et le reste du réseau. Son architecture réseau est la suivante :

<table border="1" cellpadding="5" cellspacing="0" id="bkmrk-interface-vm-vlan-ad" style="border-collapse: collapse; width: 602px; border-spacing: 0px; border-color: #000000; border-style: solid;" width="602"><colgroup><col width="122"></col> <col width="123"></col> <col width="157"></col> <col width="157"></col> </colgroup><thead><tr><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="122"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Interface VM**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="123"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**VLAN**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="157"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Adresse IP**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="157"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Rôle**</span></span></span>

</td></tr></thead><tbody><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="122"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">ens18</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="123"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">VLAN 99</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="157"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Adresse DHCP</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="157"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Gestion / supervision Zabbix</span></span></span>

</td></tr><tr><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="122"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">ens19</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="123"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">VLAN 40</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="157"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">192.168.10.194/27</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="157"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Passerelle des clients Wi-Fi</span></span></span>

</td></tr></tbody></table>

Les clients Wi-Fi utilisent 192.168.10.194 comme passerelle par défaut. Tout leur trafic transite obligatoirement par la VM, qui peut ainsi appliquer des règles iptables pour filtrer ou journaliser les connexions avant de les transmettre.

## **3) Supervision**

  
La supervision permet de détecter des comportements anormaux (saturation de la bande passante, nombre inhabituel de clients associés, perte de connectivité) et d'alerter l'administrateur avant qu'un incident ne se transforme en incident de sécurité majeur.

#### **Choix de SNMPv3**

Le protocole SNMP (Simple Network Management Protocol) est le standard de supervision des équipements réseau. Trois versions coexistent, avec des niveaux de sécurité très différents :

<table border="1" cellpadding="5" cellspacing="0" id="bkmrk-version-authentifica" style="border-collapse: collapse; width: 602px; border-spacing: 0px; border-color: #000000; border-style: solid;" width="602"><colgroup><col width="96"></col> <col width="163"></col> <col width="150"></col> <col width="151"></col> </colgroup><thead><tr><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="96"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Version**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="163"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Authentification**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="150"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Chiffrement**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="151"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Recommandation**</span></span></span>

</td></tr></thead><tbody><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="96"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**SNMPv1**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="163"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Community string en clair**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="150"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Aucun**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="151"><span style="color: #c0392b;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**À proscrire**</span></span></span>

</td></tr><tr><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="96"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**SNMPv2c**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="163"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Community string en clair**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="150"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Aucun**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="151"><span style="color: #d35400;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Déconseillé**</span></span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="96"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**SNMPv3 noAuthNoPriv**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="163"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Utilisateur, sans auth**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="150"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Aucun**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="151"><span style="color: #d35400;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Insuffisant**</span></span></span>

</td></tr><tr><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="96"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**SNMPv3 authNoPriv**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="163"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**SHA-1 ou MD5**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="150"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Aucun**</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="151"><span style="color: #1a4f8a;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Acceptable**</span></span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="96"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**SNMPv3 authPriv**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="163"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**SHA-1**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="150"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**DES / AES**</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="151"><span style="color: #1e8449;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Retenu ✔**</span></span></span>

</td></tr></tbody></table>

SNMPv1 et v2c transmettent le nom de communauté (équivalent d'un mot de passe) en clair sur le réseau. Un simple sniffeur (Wireshark) suffit à l'intercepter et à prendre le contrôle de l'équipement. SNMPv3 en mode authPriv apporte une authentification forte par HMAC-SHA1 et un chiffrement du contenu des échanges par DES ou AES.

#### **Configuration SNMPv3 appliquée**

<table border="1" cellpadding="5" cellspacing="0" id="bkmrk-param%C3%A8tre-valeur-con" style="border-collapse: collapse; width: 602px; border-spacing: 0px; border-color: #000000; border-style: solid;" width="602"><colgroup><col width="222"></col> <col width="357"></col> </colgroup><thead><tr><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Paramètre**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Valeur configurée**</span></span></span>

</td></tr></thead><tbody><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Utilisateur SNMP</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">zabbix</span></span></span>

</td></tr><tr><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Niveau de sécurité</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">authPriv (authentification + chiffrement)</span></span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Protocole authentification</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">SHA-1 (HMAC)</span></span></span>

</td></tr><tr><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Protocole chiffrement</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">DES (Data Encryption Standard)</span></span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Mot de passe auth</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Zabbix123 (à renforcer en production)</span></span></span>

</td></tr><tr><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Mot de passe chiffrement</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Zabbix123 (à renforcer en production)</span></span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Version SNMP côté Zabbix</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">SNMPv3</span></span></span>

</td></tr><tr><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="222"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">OID supervisés</span></span></span>

</td><td bgcolor="#f4f4f4" style="border-color: rgb(0, 0, 0);" width="357"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">ifInOctets, ifOutOctets, ifOperStatus, sysUpTime</span></span></span>

</td></tr></tbody></table>

# 05 - NoDogSplash

## **<span class="token token">1) Qu'est ce que NoDogSplash</span>**

NoDogSplash est un logiciel open source de portail captif léger, conçu pour les systèmes Linux embarqués. Un portail captif est un mécanisme réseau qui intercepte le trafic HTTP d'un client nouvellement connecté à un réseau Wi-Fi et le redirige vers une page web de bienvenue, avant de lui accorder un accès complet à internet ou aux ressources autorisées. Ce type de système est fréquemment rencontré dans les hôtels, aéroports, restaurants ou tout établissement proposant un accès Wi-Fi public.

Techniquement, NoDogSplash s'installe sur une machine Linux faisant office de passerelle (routeur) entre le réseau sans fil et le réseau en amont. Il exploite le pare-feu netfilter (iptables) du noyau Linux pour bloquer par défaut tout le trafic des clients non authentifiés, à l'exception des requêtes DNS et des connexions vers le portail lui-même. Lorsqu'un client tente d'accéder à n'importe quelle page web, NoDogSplash intercepte la requête et retourne une réponse de redirection HTTP 302 vers l'adresse de son interface web interne.

Après que l'utilisateur a accepté les conditions d'utilisation sur la page du portail, NoDogSplash ajoute dynamiquement une règle iptables autorisant le trafic de ce client spécifique (identifié par son adresse MAC). L'accès reste ouvert jusqu'à expiration de la session ou déconnexion.

## **2) Obligation légal**

En France, toute personne physique ou morale proposant un accès à internet au public est soumise à des obligations légales définies par la loi n°2004-575 du 21 juin 2004 pour la Confiance dans l'Économie Numérique (LCEN), complétée par le décret n°2011-219 du 25 février 2011. Ces textes imposent à tout opérateur de réseau Wi-Fi ouvert de conserver pendant une durée d'un an les données de connexion de ses utilisateurs, notamment les adresses IP attribuées, les horodatages de connexion et de déconnexion, ainsi que les identifiants techniques permettant d'identifier le terminal utilisé.

Cette obligation vise à permettre aux autorités judiciaires de remonter jusqu'à l'auteur d'une infraction commise via le réseau en cas de réquisition.

Dans le cadre du projet IRS-SI, la mise en place du portail captif NoDogSplash répond directement à cette exigence. En interceptant chaque connexion et en enregistrant l'adresse MAC du terminal, l'adresse IP attribuée et l'horodatage de la session, la VM NoDogSplash permet à la PME fictive de disposer d'une traçabilité minimale conforme à la législation. Sans ce mécanisme, l'entreprise s'exposerait à des sanctions pénales en cas d'utilisation illicite de son réseau par un visiteur, faute de pouvoir fournir les éléments d'identification requis par les autorités.

## **3) Utilité dans le projet IRS-SI**

Dans le projet IRS-SI, le réseau Wi-Fi est dédié aux visiteurs et invités de la PME fictive. Ce réseau est isolé du réseau de production par le VLAN 40. NoDogSplash y joue trois rôles complémentaires :

 • **Contrôle d'accès applicatif :** même si un visiteur connaît le mot de passe WPA2, il ne peut pas naviguer sans valider le portail. Cela ajoute un second niveau d'authentification indépendant du chiffrement Wi-Fi.  
 • **Responsabilisation juridique :** en affichant des conditions d'utilisation que le visiteur doit accepter explicitement, l'entreprise se protège légalement en cas d'utilisation abusive du réseau.  
 • **Point de journalisation :** NoDogSplash peut enregistrer les connexions (adresse MAC, horodatage, durée de session), ce qui permet une traçabilité minimale conforme aux obligations légales françaises pour les opérateurs de réseaux Wi-Fi ouverts.

La VM NoDogSplash est déployée sur l'hyperviseur Proxmox avec deux interfaces réseau : ens18 connectée au VLAN 99 (LAN de gestion) et ens19 connectée au VLAN 40 (réseau Wi-Fi visiteurs) avec l'adresse 192.168.10.194/27. Elle constitue la passerelle par défaut de tous les clients Wi-Fi.

<table border="1" cellpadding="5" cellspacing="0" id="bkmrk-caract%C3%A9ristique-d%C3%A9ta" style="border-collapse: collapse; width: 602px; height: 357.969px; border-spacing: 0px; border-color: #000000; border-style: solid;" width="602"><colgroup><col width="176"></col> <col width="404"></col> </colgroup><thead><tr style="height: 35.7969px;"><td bgcolor="#1b3a6b" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="176"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Caractéristique**</span></span></span>

</td><td bgcolor="#1b3a6b" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="404"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Détail**</span></span></span>

</td></tr></thead><tbody><tr style="height: 35.7969px;"><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="176"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Logiciel</span></span></span>

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="404"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">NoDogSplash (sources GitHub — branche master)</span></span></span>

</td></tr><tr style="height: 35.7969px;"><td bgcolor="#f2f2f2" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="176"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Licence</span></span></span>

</td><td bgcolor="#f2f2f2" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="404"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">GNU GPL v2</span></span></span>

</td></tr><tr style="height: 35.7969px;"><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="176"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">OS hôte</span></span></span>

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="404"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Debian 12 (Bookworm)</span></span></span>

</td></tr><tr style="height: 35.7969px;"><td bgcolor="#f2f2f2" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="176"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Hyperviseur</span></span></span>

</td><td bgcolor="#f2f2f2" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="404"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Proxmox VE</span></span></span>

</td></tr><tr style="height: 35.7969px;"><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="176"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Interface VLAN 40</span></span></span>

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="404"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">ens19 — 192.168.10.194/27</span></span></span>

</td></tr><tr style="height: 35.7969px;"><td bgcolor="#f2f2f2" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="176"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Interface VLAN 99</span></span></span>

</td><td bgcolor="#f2f2f2" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="404"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">ens18 — adresse DHCP (gestion)</span></span></span>

</td></tr><tr style="height: 35.7969px;"><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="176"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Port d'écoute portail</span></span></span>

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="404"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">TCP 2050</span></span></span>

</td></tr><tr style="height: 35.7969px;"><td bgcolor="#f2f2f2" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="176"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Démarrage</span></span></span>

</td><td bgcolor="#f2f2f2" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="404"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Service systemd (nodogsplash.service)</span></span></span>

</td></tr><tr style="height: 35.7969px;"><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="176"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Rôle réseau</span></span></span>

</td><td bgcolor="#ffffff" style="height: 35.7969px; border-color: rgb(0, 0, 0);" width="404"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Passerelle par défaut des clients VLAN 40</span></span></span>

</td></tr></tbody></table>

##   
**4) Installation depuis les sources GitHub**

**<span class="token token">Clonage du dépôt</span>**

<span class="token token">NoDogSplash est disponible sur GitHub. La branche master contient la version stable la plus récente. Le clonage s'effectue dans le répertoire de l'utilisateur courant.</span>

```
cd /home/nodogsplash
git clone https://github.com/nodogsplash/nodogsplash.git
cd nodogsplash
```

<span class="token token">**Compilation**</span>

<span class="token token">La compilation utilise les outils standards de build Linux. Aucune option particulière n'est nécessaire : NoDogSplash détecte automatiquement libmicrohttpd si le paquet de développement est installé.</span>

```
make

# En cas d'erreur liée à libmicrohttpd :
# Vérifier : dpkg -l | grep libmicrohttpd-dev
```

<span class="token token">**Installation**</span>

<span class="token token">La commande make install copie le binaire dans /usr/bin/ et les fichiers de configuration par défaut dans /etc/nodogsplash/.</span>

```
make install

# Vérifier les fichiers installés :
ls /etc/nodogsplash/
which nodogsplash
nodogsplash --version
```

<table border="1" cellpadding="5" cellspacing="0" id="bkmrk-fichier-%2F-r%C3%A9pertoire" style="border-collapse: collapse; width: 602px; border-spacing: 0px; border-color: #000000; border-style: solid;" width="602"><colgroup><col width="202"></col> <col width="377"></col> </colgroup><thead><tr><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="202"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Fichier / Répertoire installé**</span></span></span>

</td><td bgcolor="#1b3a6b" style="border-color: rgb(0, 0, 0);" width="377"><span style="color: #ffffff;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Contenu**</span></span></span>

</td></tr></thead><tbody><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="202"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">/usr/bin/nodogsplash</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="377"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Binaire principal</span></span></span>

</td></tr><tr><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="202"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">/etc/nodogsplash/nodogsplash.conf</span></span></span>

</td><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="377"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Fichier de configuration principal</span></span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="202"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">/etc/nodogsplash/htdocs/</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="377"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Pages HTML du portail (splash page)</span></span></span>

</td></tr><tr><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="202"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">/etc/nodogsplash/htdocs/splash.html</span></span></span>

</td><td bgcolor="#f2f2f2" style="border-color: rgb(0, 0, 0);" width="377"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Page d'accueil affichée au visiteur</span></span></span>

</td></tr><tr><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="202"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">/var/log/nodogsplash.log</span></span></span>

</td><td bgcolor="#ffffff" style="border-color: rgb(0, 0, 0);" width="377"><span style="color: #111111;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Fichier de log (créé au démarrage)</span></span></span>

</td></tr></tbody></table>

## **5) Configuration de NoDogSplash**

<span class="token token">Le fichier de configuration principal se trouve dans /etc/nodogsplash/nodogsplash.conf. Il définit l'interface réseau sur laquelle NoDogSplash écoute, le port du portail, les règles de filtrage et les paramètres de session. Voici la configuration appliquée dans le projet IRS-SI :  
</span>

```
#
# Nodogsplash Configuration File
#

# Parameter: GatewayInterface
# Default: NONE
#
# GatewayInterface is not autodetected, has no default, and must be set here.
# Set GatewayInterface to the interface on your router
# that is to be managed by Nodogsplash.
# Typically br-lan for the wired and wireless lan.
#
GatewayInterface ens19

# Parameter: WebRoot
# Default: /etc/nodogsplash/htdocs
#
# The local path where the splash page content resides.

# FirewallRuleSet: authenticated-users
#
# Control access for users after authentication.
# These rules are inserted at the beginning of the
# FORWARD chain of the router's filter table, and
# apply to packets that have come in to the router
# over the GatewayInterface from MAC addresses that
# have authenticated with Nodogsplash, and that are
# destined to be routed through the router.  The rules are
# considered in order, and the first rule that matches
# a packet applies to it.
# If there are any rules in this ruleset, an authenticated
# packet that does not match any rule is rejected.
# N.B.: This ruleset is completely independent of
# the preauthenticated-users ruleset.
#
#TrustedMACList 70:f3:5a:27:95:30 
FirewallRuleSet authenticated-users {

# You may want to open access to a machine on a local
# subnet that is otherwise blocked (for example, to
# serve a redirect page; see RedirectURL).  If so,
# allow that explicitly here, e.g:
#  FirewallRule allow tcp port 80 to 192.168.254.254

# Your router may have several interfaces, and you
# probably want to keep them private from the GatewayInterface.
# If so, you should block the entire subnets on those interfaces, e.g.:
#  FirewallRule block to 192.168.0.0/16
#  FirewallRule block to 10.0.0.0/8

# Typical ports you will probably want to open up include
# 53 udp and tcp for DNS,
# 80 for http,
# 443 for https,
# 22 for ssh:
#  FirewallRule allow tcp port 53	
#  FirewallRule allow udp port 53	
#  FirewallRule allow tcp port 80
#  FirewallRule allow tcp port 443
#  FirewallRule allow tcp port 22
# Or for happy customers allow all
  FirewallRule allow all
# You might use ipset to easily allow/block range of ips, e.g.: 
# FirewallRule allow ipset WHITELISTED_IPS
# FirewallRule allow tcp port 80 ipset WHITELISTED_IPS
}
# end FirewallRuleSet authenticated-users


# FirewallRuleSet: preauthenticated-users
#
# Control access for users before authentication.
# These rules are inserted in the PREROUTING chain
# of the router's nat table, and in the
# FORWARD chain of the router's filter table.
# These rules apply to packets that have come in to the 
# router over the GatewayInterface from MAC addresses that
# are not on the BlockedMACList or TrustedMACList,
# are *not* authenticated with Nodogsplash.  The rules are
# considered in order, and the first rule that matches
# a packet applies to it. A packet that does not match 
# any rule here is rejected.
# N.B.: This ruleset is completely independent of
# the authenticated-users and users-to-router rulesets.
#
#TrustedMACList 70:f3:5a:27:95:30 
FirewallRuleSet preauthenticated-users {
# For preauthenticated users to resolve IP addresses in their
# initial request not using the router itself as a DNS server.
# Leave commented to help prevent DNS tunnelling

FirewallRule allow tcp port 53
FirewallRule allow udp port 53
FirewallRule allow to 192.168.99.0/28
# For splash page content not hosted on the router, you
# will want to allow port 80 tcp to the remote host here.
# Doing so circumvents the usual capture and redirect of
# any port 80 request to this remote host.
# Note that the remote host's numerical IP address must be known
# and used here.  
#  FirewallRule allow tcp port 80 to 123.321.123.321
}
# end FirewallRuleSet preauthenticated-users


# FirewallRuleSet: users-to-router
#
# Control access to the router itself from the GatewayInterface.
# These rules are inserted at the beginning of the
# INPUT chain of the router's filter table, and
# apply to packets that have come in to the router
# over the GatewayInterface from MAC addresses that
# are not on the TrustedMACList, and are destined for
# the router itself.  The rules are
# considered in order, and the first rule that matches
# a packet applies to it. 
# If there are any rules in this ruleset, a
# packet that does not match any rule is rejected.
#
#TrustedMACList 70:f3:5a:27:95:30 
FirewallRuleSet users-to-router {
 # Nodogsplash automatically allows tcp to GatewayPort,
 # at GatewayAddress, to serve the splash page.
 # However you may want to open up other ports, e.g.
 # 53 for DNS and 67 for DHCP if the router itself is
 # providing these services.
    FirewallRule allow udp port 53	
    FirewallRule allow tcp port 53	
    FirewallRule allow udp port 67
 # You may want to allow ssh, http, and https to the router
 # for administration from the GatewayInterface.  If not,
 # comment these out.
   FirewallRule allow tcp port 22
   FirewallRule allow tcp port 80
   FirewallRule allow tcp port 443
   FirewallRule allow to 192.168.99.0/28
}

```

**<span class="token token">[![image.png](https://wiki-matheo.kermorvant.fr/uploads/images/gallery/2026-05/scaled-1680-/dzpimage.png)](https://wiki-matheo.kermorvant.fr/uploads/images/gallery/2026-05/dzpimage.png)</span>**

**<span class="token token">Page d'accueil du portail</span>**

<span class="token token">La page affichée aux visiteurs est définie dans /etc/nodogsplash/htdocs/splash.html. La page par défaut fournie par NoDogSplash suffit pour les besoins du projet. Elle contient un bouton permettant au visiteur d'accepter les conditions d'utilisation et de valider son accès.</span>

```html

<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Portail de Connexion</title>
      <style>
    * { box-sizing: border-box; margin: 0; padding: 0; }
    body { font-family: Arial, sans-serif; background: #f0f2f5; min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 1rem; }
    .portal-wrap { width: 100%; max-width: 480px; }
    .portal-card { background: #ffffff; border: 1px solid #e0e0e0; border-radius: 12px; overflow: hidden; }
    .portal-header { background: #0055a4; padding: 2rem 2rem 1.5rem; text-align: center; }
    .logo-circle { width: 56px; height: 56px; border-radius: 50%; background: rgba(255,255,255,0.15); border: 2px solid rgba(255,255,255,0.4); display: flex; align-items: center; justify-content: center; margin: 0 auto 1rem; }
    .logo-circle svg { width: 28px; height: 28px; stroke: #fff; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
    .portal-header h1 { font-size: 18px; font-weight: 600; color: #fff; margin: 0 0 4px; }
    .portal-header p { font-size: 13px; color: rgba(255,255,255,0.75); margin: 0; }
    .portal-body { padding: 1.5rem 2rem; }
    .welcome-box { background: #f7f8fa; border-radius: 8px; padding: 1rem 1.25rem; margin-bottom: 1.25rem; }
    .welcome-box p { font-size: 14px; color: #555; line-height: 1.6; }
    .cgu-title { font-size: 12px; font-weight: 600; color: #333; margin-bottom: 8px; }
    .cgu-box { border: 1px solid #e0e0e0; border-radius: 8px; padding: 1rem 1.25rem; margin-bottom: 1.25rem; max-height: 130px; overflow-y: auto; }
    .cgu-box p { font-size: 12px; color: #666; line-height: 1.6; margin-bottom: 8px; }
    .cgu-box p:last-child { margin-bottom: 0; }
    .cgu-box strong { color: #444; }
    .checkbox-row { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 1.25rem; cursor: pointer; }
    .checkbox-row input[type=checkbox] { margin-top: 3px; flex-shrink: 0; cursor: pointer; width: 15px; height: 15px; }
    .checkbox-row label { font-size: 13px; color: #555; line-height: 1.5; cursor: pointer; }
    .connect-btn { width: 100%; padding: 11px; background: #0055a4; color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 600; cursor: not-allowed; opacity: 0.4; transition: opacity 0.2s, background 0.2s; }
    .connect-btn.active { opacity: 1; cursor: pointer; }
    .connect-btn.active:hover { background: #004080; }
    .portal-footer { padding: 1rem 2rem; border-top: 1px solid #e0e0e0; text-align: center; }
    .portal-footer p { font-size: 11px; color: #aaa; }
  </style>
</head>

<body>
    <div class="portal-wrap">
        <div class="portal-card">

            <div class="portal-header">
                <div class="logo-circle">
                    <svg viewBox="0 0 24 24">
                        <path d="M5 12.55a11 11 0 0 1 14.08 0" />
                        <path d="M1.42 9a16 16 0 0 1 21.16 0" />
                        <path d="M8.53 16.11a6 6 0 0 1 6.95 0" />
                        <circle cx="12" cy="20" r="1" fill="#fff" stroke="none" />
                    </svg>
                </div>
                <h1>Réseau Visiteurs IRS-SI</h1>
                <p>Portail de connexion invité</p>
            </div>

            <div class="portal-body">
                <div class="welcome-box">
                    <p>Bienvenue sur le réseau visiteurs du site IRS-SI. Ce réseau est réservé aux invités et visiteurs
                        autorisés. L'accès est limité à un usage professionel et temporaire.</p>
                </div>

                <p class="cgu-title">Conditions générales d'utilisation</p>
                <div class="cgu-box">
                    <p><strong>Usage autorisé</strong> - Ce réseau est mis à disposition à titre gratuit pour un usage
                        professionnel uniquement. Toute activité illicite, le téléchargement de contenus protégés ou
                        l'utilisation excessive de la bande passante sont interdits.</p>
                    <p><strong>Confidentialité</strong> - Les connexions sont susceptibles d'être journalisées à des
                        fins de sécurité conformément à la législation en vigueur.</p>
                    <p><strong>Responsabilité</strong> - L'établissement décline toute responsabilité quant aux dommages
                        pouvant résulter de l'utilisation de ce réseau. L'utilisateur est seul responsable de l'usage
                        qu'il fait de cette connexion.</p>
                    <p><strong>Durée</strong> - L'accès est accordé pour la durée de votre visite. La session peut être
                        interrompue à tout moment par l'administrateur réseau.</p>
                </div>

                <div class="checkbox-row">
                    <input type="checkbox" id="cgu-check" onchange="toggleBtn(this)">
                    <label for="cgu-check">J'ai lu et j'accepte les conditions générales d'utilisation de ce
                        réseau.</label>
                </div>
                <form method="get" action="$authaction">
                    <input type="hidden" name="tok" value="$tok">
                    <input type="hidden" name="redir" value="$redir">
                    <button type="submit" class="connect-btn" id="connect-btn" disabled>
                        Accéder au réseau
                    </button>
                </form>
            </div>

            <div class="portal-footer">
                <p>IRS-SI &mdash; Réseau sécurisé &mdash; Toute utilisation abusive sera signalée</p>
            </div>

        </div>
    </div>

    <script>
        function toggleBtn(cb) {
            var btn = document.getElementById('connect-btn');
            btn.disabled = !cb.checked;
            if (cb.checked) {
                btn.classList.add('active');
            } else {
                btn.classList.remove('active');
            }
        }
    </script>
</body>

</html>
```

[![image.png](https://wiki-matheo.kermorvant.fr/uploads/images/gallery/2026-06/scaled-1680-/nj2image.png)](https://wiki-matheo.kermorvant.fr/uploads/images/gallery/2026-06/nj2image.png)

</body></html>