Vue d'ensemble de l'infrastructure

Cette page présente une synthèse de l’infrastructure NexaGroup : périmètre couvert, principaux indicateurs techniques et services critiques déployés. Elle permet d’avoir, en un coup d’œil, la vision globale du système avant d’entrer dans le détail des sections suivantes.

6
VLANs configurés
VLAN 10 · 20 · 30 · 40 · 50 · 60
10
Serveurs déployés
6 Paris · 1 RODC Lyon · 2 nœuds pfSense (HA)
2
Pare-feu (cluster HA)
pfSense CARP · XMLRPC · failover < 5 s
2
Sites interconnectés (VPN)
Paris ↔ Lyon · WireGuard · ChaCha20-Poly1305

Résumé fonctionnel

L’infrastructure NexaGroup couvre 75 collaborateurs répartis sur 2 sites (Paris & Lyon), reliés en VPN WireGuard. Elle assure la gestion centralisée des identités (Active Directory — 2 DC + 1 RODC), le stockage collaboratif (Nextcloud), la supervision temps réel (Zabbix — 10 hôtes monitorés) et la détection de menaces (Wazuh SIEM).

Les services sont segmentés en 6 VLANs avec filtrage inter-zones sur un cluster pfSense HA (failover < 5 s). La DMZ (VLAN 30) expose 2 serveurs web derrière un reverse proxy Nginx. Le helpdesk GLPI gère le support IT avec inventaire automatisé via FusionInventory.

Services déployés

Active Directory
SRV-AD01 / SRV-AD02 — VLAN 10
✅ Actif
MariaDB (Base de données)
SRV-BDD — VLAN 10
✅ Actif
Nextcloud & Talk
SRV-NEXTCLOUD — VLAN 10
✅ Actif
SIEM Wazuh
SRV-WAZUH — VLAN 10
✅ Actif
GLPI (Helpdesk)
SRV-GLPI — VLAN 10
✅ Actif
Zabbix (Supervision)
SRV-ZABBIX — VLAN 10
✅ Actif
Reverse Proxy / Web
SRV-WEB1 / SRV-WEB2 / SRV-RPROXY — VLAN 30
✅ Actif
VPN site à site
pfSense WireGuard — Interconnexion Paris / Lyon
✅ Actif

Récapitulatif réseau

VLAN Nom Réseau Passerelle (VIP) Type
10 Serveurs Infrastructure 192.168.10.0/24 192.168.10.254 Statique
20 Postes Clients 192.168.20.0/24 192.168.20.254 DHCP (.10 → .200)
30 DMZ 192.168.30.0/24 192.168.30.254 Statique
40 Dép. IT / Administration 192.168.40.0/24 192.168.40.254 Mixte (.10 → .50)
50 Infra Distante (RODC) 192.168.50.0/24 192.168.50.254 Statique
60 Clients Distants 192.168.60.0/24 192.168.60.254 DHCP (.10 → .100)
Mgmt Sync / Heartbeat 10.0.0.0/29 10.0.0.1 Statique
Toutes les passerelles VLAN (.254) sont des adresses IP virtuelles CARP, partagées entre les deux nœuds pfSense en haute disponibilité.

Présentation du projet

NexaGroup — Dossier E6 BTS SIO SISR
Contexte, objectifs, périmètre infrastructure multi-sites
PAUL BARRAULT-GAUTIER Site principal + site distant

Contexte de l'entreprise

NexaGroup est une ESN (Entreprise de Services du Numérique) fondée en 2015, spécialisée dans le développement web, l'intégration de solutions métier et le conseil en transformation digitale. L’entreprise compte 75 collaborateurs répartis sur deux sites :

Enjeux et objectifs du projet

Dans un contexte de croissance et de montée en criticité des services numériques, NexaGroup a engagé un projet de modernisation de son infrastructure. Les principaux objectifs sont :

Périmètre de la solution mise en œuvre

Le projet couvre l’infrastructure réseau et serveurs des deux sites (Paris et Lyon), incluant le routage, la sécurité périmétrique, les services Active Directory, la supervision et les outils collaboratifs internes.

Environnement technique

Domaine Active Directory barrault.pb
Environnement de virtualisation VMware Workstation Pro
Pare-feux Cluster pfSense HA (CARP, pfsync, XMLRPC)
Supervision Zabbix + Wazuh (SIEM)
Services collaboratifs Nextcloud & Talk, GLPI

Architecture réseau

L’architecture réseau de NexaGroup est conçue autour d’un cœur redondé basé sur un cluster de pare-feux pfSense HA. Elle s’appuie sur une segmentation par VLAN afin d’isoler les usages (serveurs, postes clients, DMZ, administration et site distant) et de maîtriser les flux inter‑zones.

Vue logique des zones

Zone VLAN Usage principal Niveau de sensibilité
Infrastructure VLAN 10 Serveurs AD, BDD, supervision, services internes critiques Élevé
Postes clients VLAN 20 Postes utilisateurs du site principal Moyen
DMZ VLAN 30 Services exposés (reverse proxy, web) Élevé (surface exposée)
Administration VLAN 40 Postes et outils du département IT Très élevé
Site distant – Infra VLAN 50 RODC et services locaux du site distant Élevé
Site distant – Clients VLAN 60 Postes utilisateurs site distant (VPN WireGuard) Moyen

Plan d'adressage IP

VLAN / Zone Réseau Passerelle VIP Plage DHCP
VLAN 10 — Serveurs Infrastructure 192.168.10.0/28 192.168.10.254 -
VLAN 20 — Clients 192.168.20.0/24 192.168.20.254 192.168.20.10 → .200
VLAN 30 — DMZ 192.168.30.0/28 192.168.30.254 -
VLAN 40 — Dép. IT / Administration 192.168.40.0/24 192.168.40.254 192.168.40.10 → .50
VLAN 50 — Infra Distante (RODC) 192.168.50.0/24 192.168.50.254 -
VLAN 60 — Clients Distants 192.168.60.0/24 192.168.60.254 192.168.60.10 → .100

Principes de routage et de flux

Segmentation VLAN

La segmentation par VLAN permet de cloisonner les usages (postes, serveurs, DMZ, administration, site distant) et de limiter l’impact d’un incident de sécurité à une zone donnée. Chaque VLAN est associé à une politique de filtrage spécifique au niveau du cluster pfSense.

Rôle des principaux VLAN

VLAN Zone Équipements principaux Flux autorisés (exemples)
VLAN 10 Infrastructure Contrôleurs de domaine, BDD, supervision, Nextcloud, GLPI, Wazuh… Accès depuis VLAN 20/40 aux services AD, DNS, BDD, HTTP(S) internes selon besoin.
VLAN 20 Postes clients – Site principal Postes Windows des utilisateurs Accès contrôlé aux services internes (VLAN 10) et à Internet via pfSense.
VLAN 30 DMZ SRV-RPROXY, SRV-WEB1, SRV-WEB2… Flux entrants depuis Internet vers reverse proxy, flux sortants limités vers VLAN 10.
VLAN 40 Administration Postes et outils du département IT Accès d’administration vers VLAN 10/30/50/60 (RDP, SSH, consoles web sécurisées).
VLAN 50 Infra site distant RODC, services locaux du site distant Flux AD/DNS vers VLAN 10 via tunnel VPN WireGuard.
VLAN 60 Clients site distant Postes utilisateurs site distant Accès contrôlé aux services internes via VPN WireGuard (similaire aux postes VLAN 20).

Schéma de l'infrastructure

Le schéma ci‑dessous représente les principales zones (LAN, DMZ, site distant, Internet), la répartition des VLAN et le rôle du cluster pfSense dans le routage et la sécurisation des flux.

Schéma de l'infrastructure NexaGroup

Cluster Pare-feu HA (pfSense) En production

Cluster pfSense — Haute Disponibilité
Routage, filtrage et continuité de service — Basculement automatique CARP
12/12/2025 CARP + pfsync + XMLRPC 2 nœuds

Pourquoi un cluster pfSense HA ?

Le pare-feu est le seul point de passage entre tous les VLANs et vers Internet : sa panne paralyse immédiatement les 75 collaborateurs NexaGroup (plus d'AD, plus de mail, plus de GLPI, plus de VPN Lyon). La DSI a exigé une disponibilité de 99,9 % sur ce périmètre.

Le choix d'un cluster actif/passif pfSense (plutôt qu'un pare-feu unique renforcé) apporte trois bénéfices complémentaires :

  • CARP — VIP flottante partagée : les clients pointent vers .254, ils ne savent pas quel nœud les sert. Basculement transparent en moins de 5 secondes.
  • pfsync — réplication des états de session : les connexions TCP ouvertes (sessions Nextcloud, RDP, SSH) survivent au failover, aucune reconnexion utilisateur nécessaire.
  • XMLRPC — synchronisation automatique des règles, NAT, VIPs et DHCP depuis le nœud maître : une seule administration à faire, zéro divergence de configuration.

pfSense a été retenu face à un pare-feu matériel (Fortinet, Stormshield) pour son coût nul (open source), sa large communauté, son intégration native avec CARP/pfsync et la simplicité de virtualisation pour les tests du projet BTS.

1. Identification & Rôle

Rôle : Routage, filtrage et continuité de service. Basculement automatique sans interruption des sessions actives en cas de panne du nœud primaire.

  • SRV-PFSENSE-01 : Nœud Primaire / Maître
  • SRV-PFSENSE-02 : Nœud Secondaire / Esclave

2. Intégration réseau

Interfaces (6 adaptateurs réseau par VM) :

  • Network Adapter 1 : WAN (Externe) — Bridged/NAT
  • Network Adapter 2 : SYNC (Heartbeat) — Segment LAN : SEG_SYNC_HA
  • Network Adapter 3 : OPT1 (VLAN 10)
  • Network Adapter 4 : OPT2 (VLAN 20)
  • Network Adapter 5 : OPT3 (VLAN 30)
  • Network Adapter 6 : OPT4 (VLAN 40)
Interface IP Réelle Primaire IP Réelle Secondaire IP Virtuelle (VIP/GW)
WAN DHCP/Static FAI DHCP/Static FAI Selon FAI
SYNC 10.0.0.2 10.0.0.3 N/A
OPT1 192.168.10.253 192.168.10.252 192.168.10.254
OPT2 192.168.20.253 192.168.20.252 192.168.20.254
OPT3 192.168.30.253 192.168.30.252 192.168.30.254
OPT4 192.168.40.253 192.168.40.252 192.168.40.254

3. Paramétrage & Configuration

Configuration CARP

  • Menu pfSense : Firewall > Virtual IPs
  • Type : CARP
  • VHID Group : Identifiant unique par réseau (ex: 10 pour VLAN10)
  • Skew Primaire : 0 (Maître) / Skew Secondaire : 100 (Backup)

Synchronisation XMLRPC & pfsync

  • Interface SYNC : Autoriser tout le trafic (Protocol Any)
  • pfsync : Synchronisation de l'état des connexions via interface SYNC
  • XMLRPC : Configuré UNIQUEMENT sur le Primaire
    • IP cible : 10.0.0.3
    • Synchroniser : Rules, NAT, DHCP, VIPs (toutes les options)

DHCP associé

La passerelle distribuée aux clients doit OBLIGATOIREMENT être la VIP (.254) et non l'IP réelle du routeur.

4. Sécurité & Règles pare-feu

Le cluster pfSense constitue le point unique de contrôle des flux entre les différentes zones (VLAN 10/20/30/40/50/60) et vers Internet. Le principe retenu est : tout est interdit par défaut, seules les communications explicitement nécessaires sont autorisées.

Principes généraux

  • Trafic inter-VLAN bloqué par défaut (policy deny).
  • Ouverture ciblée pour les services d’infrastructure : DNS, AD, supervision, accès DMZ, VPN.
  • Règles spécifiques heartbeat/synchronisation (SYNC, pfsync, XMLRPC) autorisées uniquement entre les nœuds pfSense.

Exemples de règles clés

Source Destination Service / Port Action Commentaire
VLAN 20 / 60 (Clients) VLAN 10 (SRV-AD01/02) DNS (53/TCP-UDP), Kerberos, LDAP/LDAPS Allow Authentification et résolution de noms des postes
VLAN 20 / 60 (Clients) Internet HTTP/HTTPS (80/443) Allow Navigation vers l’extérieur via pfSense
VLAN 30 (DMZ) VLAN 10 (Nextcloud / GLPI / Zabbix) HTTPS, DB (ports nécessaires) Allow Accès contrôlé des services exposés vers l’interne
VLAN 40 (Admin) VLAN 10 / 30 / 50 / 60 RDP, SSH, consoles web d’administration Allow Accès d’administration restreint aux postes IT
VLAN 50 / 60 (Site distant) VLAN 10 (Infra centrale) DNS, AD, services applicatifs Allow Accès des utilisateurs distants via tunnel VPN WireGuard

5. VPN site-à-site WireGuard (Paris ↔ Lyon)

Pourquoi WireGuard plutôt qu'IPsec ?

WireGuard a été retenu pour sa modernité (intégré au noyau Linux depuis la version 5.6, support natif pfSense CE 2.5+), sa simplicité de configuration et ses performances élevées (chiffrement ChaCha20-Poly1305). Son modèle cryptographique basé sur Curve25519 réduit la surface d'attaque par rapport à la négociation complexe des proposals IKEv2. L'intégration avec le cluster pfSense HA est fluide : Lyon pointe uniquement sur la VIP CARP 203.0.113.1 — le keepalive de 25 s garantit la reprise automatique du tunnel sans re-négociation après un failover CARP.

CritèreIPsec (IKEv2)WireGuardDécision
Complexité config Élevée (Phase 1/2, proposals, SPD/SAD) Simple (clés publiques, peers, allowed IPs) ✓ WireGuard
Débogage Configuration verbeuse, nombreux paramètres interdépendants (proposals, SPD/SAD, lifetimes) Configuration minimale : deux clés, un peer, des allowed IPs — état lisible en une commande (wg show) ✓ WireGuard
Performance AES-GCM/CBC — overhead notable ChaCha20-Poly1305 — très performant ✓ WireGuard
Intégration pfSense HA Re-négociation IKE parfois nécessaire après failover Seamless : keepalive 25 s + VIP CARP suffisent ✓ WireGuard

Principe de fonctionnement

WireGuard établit un tunnel UDP chiffré (port 51820) entre les deux pfSense via Curve25519. Lyon pointe son endpoint vers la VIP CARP WAN 203.0.113.1 — jamais l'IP physique d'un nœud. En cas de panne de PFSENSE-01, PFSENSE-02 hérite de la VIP et le tunnel se reconnecte automatiquement en < 5 s grâce au keepalive (25 s) configuré côté Lyon.

⚠ Point critique — Clé privée partagée : La configuration WireGuard (tunnel + clé privée) n'est PAS synchronisée par XMLRPC. Elle doit être reproduite manuellement sur PFSENSE-02. Les deux nœuds partagent la même clé privée pour présenter la même clé publique à Lyon, rendant le failover CARP transparent.

Justification du partage de clé privée : Dans un cluster HA actif/passif, les deux nœuds constituent logiquement une seule entité réseau vue de Lyon. Partager la clé privée est une pratique délibérée et documentée (recommandée par la documentation officielle pfSense pour WireGuard HA) : elle permet à PFSENSE-02 de reprendre le tunnel sans re-négociation, car Lyon voit toujours la même clé publique. Cette exception au principe "une clé privée par dispositif" est acceptable dans ce contexte cloisonné où les deux nœuds partagent déjà la même configuration réseau, les mêmes règles pare-feu et les mêmes VIPs CARP. Les accès à PFSENSE-02 doivent être restreints au VLAN 40 (Administration) pour limiter l'exposition de cette clé partagée.
Adresses WAN de documentation (RFC 5737) : Les IPs 203.0.113.0/24 utilisées ici (TEST-NET-3) sont des adresses réservées pour la documentation et les exemples — elles ne routent pas sur Internet. Dans ce projet, elles simulent un lien WAN entre Paris et Lyon sur le segment VMware VMnet5 (réseau 203.0.113.0/29). En production réelle, elles seraient remplacées par les IPs publiques fournies par le FAI.

Adressage du tunnel

NœudIP WANIP tunnel WireGuardRoutes injectées
Paris (VIP CARP) 203.0.113.1 10.100.0.1/30 192.168.50.0/24, 192.168.60.0/24
Lyon (pfSense) 203.0.113.4 10.100.0.2/30 192.168.10.0/24, .20, .30, .40

Flux autorisés à travers le tunnel (interface WG_TUNNEL)

SourceDestinationPorts / ProtocoleObjectif
VLAN 50 / VLAN 60 SRV-AD01/02 (192.168.10.5/.10) DNS 53, Kerberos 88, LDAP 389 Authentification AD & résolution DNS
VLAN 50 / VLAN 60 SRV-GLPI (192.168.10.25) HTTPS 443 Helpdesk / Inventaire
VLAN 50 / VLAN 60 SRV-NEXTCLOUD (192.168.10.35) HTTPS 443, TURN 3478 Fichiers & visioconférence Talk
VLAN 50 / VLAN 60 SRV-WAZUH (192.168.10.40) TCP 1514/1515 Agents SIEM
VLAN 40 (IT Paris) Infra Lyon (VLAN 50) SSH 22, RDP 3389 Administration distante
Tout Tout (non listé) Tout Block — isolation par défaut

Validation de la connexion WireGuard

# 1. VPN > WireGuard > Status
#    Latest Handshake < 2 min + Transfer RX/TX en augmentation

# 2. Ping tunnel point-à-point (depuis Lyon)
ping 10.100.0.1

# 3. Ping SRV-AD01 Paris depuis client VLAN 60
ping 192.168.10.5

# 4. Résolution DNS
nslookup srv-glpi.barrault.pb 192.168.10.5

# 5. Test failover HA : suspendre PFSENSE-01
#    Résultat attendu : perte max 1-2 paquets, reprise auto < 5 s
#    Vérifier PFSENSE-02 : Status > CARP = MASTER
#    Vérifier : VPN > WireGuard > Status > Latest Handshake récent

Preuve que le trafic passe par le tunnel WireGuard (et non par VMnet5)

En environnement de lab VMware, le segment SIM_WAN (VMnet5, 203.0.113.0/29) est partagé entre les pfSense Paris et Lyon. Sans vérification, un routage mal configuré pourrait faire transiter le trafic inter-sites directement via VMnet5 plutôt que dans le tunnel chiffré. Les tests suivants permettent de prouver formellement que le trafic emprunte bien le tunnel WireGuard.

Test 1 — Compteurs TX/RX WireGuard

Si le trafic passe par le tunnel, les compteurs de transfert du peer WireGuard augmentent à chaque échange. Un trafic qui court-circuiterait via VMnet5 ne ferait pas bouger ces compteurs.

# Sur pfSense Paris — VPN > WireGuard > Status
# Ou depuis le shell :
wg show

# Observer le champ "transfer" du peer Lyon :
#   transfer: 1.23 MiB received, 4.56 MiB sent
# Lancer un ping depuis un client VLAN 60 (Lyon) vers 192.168.10.5
# Les valeurs TX/RX doivent augmenter → trafic dans le tunnel ✓

Test 2 — Capture de paquets sur l'interface WAN (VMnet5)

Si le tunnel fonctionne correctement, seul du trafic UDP 51820 (WireGuard encapsulé) doit apparaître sur l'interface WAN entre Paris et Lyon. Aucune trame en clair (ICMP, TCP 389, etc.) ne doit être visible sur VMnet5.

# Sur pfSense Paris — Diagnostics > Packet Capture > Interface WAN
# Ou depuis le shell :
tcpdump -ni em0 host 203.0.113.4

# Résultat attendu : uniquement des paquets UDP port 51820
# (trafic WireGuard chiffré)
# Si on voit du ICMP, TCP 389, TCP 445 en clair → le trafic ne passe PAS
# par le tunnel → vérifier les routes statiques et la gateway WG

Test 3 — Traceroute depuis un client Lyon

Un traceroute depuis un poste VLAN 60 vers SRV-AD01 (192.168.10.5) doit afficher exactement deux sauts : la passerelle pfSense Lyon (192.168.60.254) puis directement SRV-AD01. L'absence de saut intermédiaire sur 203.0.113.x confirme que le trafic est encapsulé dans le tunnel et non routé en clair sur VMnet5.

# Depuis un poste Windows VLAN 60 (Lyon)
tracert 192.168.10.5

# Résultat attendu :
#   1    <1 ms   192.168.60.254   (pfSense Lyon — gateway VLAN 60)
#   2    <5 ms   192.168.10.5     (SRV-AD01 Paris)
#
# Si un saut 203.0.113.x apparaît → trafic en clair sur VMnet5
# → vérifier : System > Routing > Static Routes
#              gateway = GW_WG_PARIS (10.100.0.1) et non WAN
Scénario de testCommande / ActionRésultat attenduStatut
Compteurs WG augmentent wg show avant/après ping TX/RX en hausse sur le peer Lyon À valider
Capture WAN = UDP 51820 uniquement tcpdump -ni em0 host 203.0.113.4 Aucune trame en clair visible À valider
Traceroute = 2 sauts max tracert 192.168.10.5 depuis VLAN 60 Aucun saut 203.0.113.x À valider

6. Tests & Validation

Test de basculement réalisé :

1. Depuis un client, lancer : ping 8.8.8.8 -t
2. Suspendre SRV-PFSENSE-01
3. Résultat attendu : perte de 1 à 2 paquets maximum, puis reprise via SRV-PFSENSE-02 qui passe en statut MASTER.

Contrôleurs de domaine (AD DS / DNS / DHCP) En production

Active Directory — SRV-AD01 / SRV-AD02
Authentification Kerberos, gestion des objets, résolution DNS, DHCP Failover
12/12/2025 barrault.pb Windows Server 2016+

Pourquoi deux contrôleurs Active Directory ?

L'Active Directory est le cœur identitaire de NexaGroup : sans AD, aucun utilisateur ne peut se connecter à son poste, Nextcloud refuse toute authentification, GLPI perd son SSO et Wazuh n'enregistre plus les événements Windows. Le service doit donc être aussi résilient que le réseau lui-même.

Pourquoi deux DC (et non un seul) ?

  • Redondance d'authentification — en cas de panne de SRV-AD01, SRV-AD02 prend immédiatement le relais grâce à la réplication multi-maître Kerberos.
  • DHCP Failover 50/50 — les deux DC se partagent les baux DHCP des VLAN 20 et 40 : si l'un tombe, l'autre continue de distribuer les IP sans interruption.
  • DNS intégré AD répliqué — la zone barrault.pb est présente sur les deux serveurs : toute résolution de nom interne reste disponible en cas de panne.

Pourquoi AD plutôt qu'OpenLDAP ? NexaGroup utilise 75 postes Windows : AD offre une intégration native (GPO, SSO Kerberos, jonction domaine) impossible à reproduire simplement avec OpenLDAP. Les GPO permettent notamment le déploiement centralisé du certificat CA interne, des règles pare-feu (VNC, ICMP) et des logiciels (Nextcloud Desktop, agent GLPI).

2. Intégration réseau

VLAN10
Masque/24
Passerelle192.168.10.254
Serveur Rôle IP Fixe DNS Préféré DNS Auxiliaire
SRV-AD01 PDC 192.168.10.5 127.0.0.1 192.168.10.10
SRV-AD02 SDC 192.168.10.10 192.168.10.5 127.0.0.1

3. Paramétrage & Configuration

AD DS & Réplication

  • Réplication SYSVOL : DFS-R
  • Topologie : Réplication intra-site automatique (latence < 15 secondes)
  • Catalogue Global (GC) : Activé sur les DEUX serveurs
  • Rôles FSMO : tous hébergés sur SRV-AD01 (Schéma, Maître d'attribution de noms, RID, CDP, Infrastructure)

DNS Intégré AD

  • Type de zone : Zone de recherche directe intégrée AD (mises à jour sécurisées)
  • Zone principale : barrault.pb
  • Zones inversées : 10.168.192.in-addr.arpa, 20.168.192.in-addr.arpa
  • Forwarders : 8.8.8.8 / 1.1.1.1

DHCP Failover (Mode Load Balancing 50/50)

Étendue Plage Masque Gateway DNS
VLAN 20 Clients 192.168.20.10 → .200 /24 .254 10.5, 10.10
VLAN 40 Admin 192.168.40.10 → .50 /24 .254 10.5, 10.10

Structure OU Active Directory

OU=Entreprise
  ├── OU=Utilisateurs
  ├── OU=Ordinateurs
  ├── OU=Groupes
  └── OU=Services (ex: SVC_Nextcloud)

4. Sécurité & Règles pare-feu

GPO : Default Domain Policy (Politique de mots de passe, verrouillage de compte).

5. Tests & Validation

Jonction au domaine testée sur les postes clients physiques et virtuels. Résolution DNS interne/externe vérifiée via nslookup.

Serveur de données (SRV-BDD) En production

SRV-BDD — MariaDB Server
Hébergement centralisé des bases de données (GLPI, Nextcloud, Zabbix)
29/10/2025 Debian 12 MariaDB 10.11 LTS

Pourquoi une BDD centralisée (et externe aux applications) ?

GLPI, Nextcloud et Zabbix ont tous besoin d'un SGBD relationnel. Deux architectures étaient possibles : BDD intégrée à chaque serveur applicatif ou BDD externalisée sur un serveur dédié. NexaGroup a retenu la seconde option pour trois raisons :

  • Architecture 3-Tiers (séparation des rôles) — le frontend web, la base de données et l'annuaire AD sont sur trois serveurs distincts. Une compromission du serveur web n'expose pas directement les données sensibles.
  • Sauvegarde et administration centralisées — une seule politique de backup à maintenir, un seul tuning MariaDB à optimiser, un seul monitoring Zabbix à configurer pour toutes les bases applicatives.
  • Économie de ressources — une instance MariaDB unique partagée entre trois applications consomme moins de RAM que trois instances isolées ; l'allocation des ressources est mutualisée.

Pourquoi MariaDB plutôt que MySQL ou PostgreSQL ? MariaDB est un fork communautaire 100 % compatible MySQL, recommandé par défaut sous Debian. GLPI, Nextcloud et Zabbix supportent tous MariaDB nativement. Le partitionnement LVM dédié (/var/lib/mysql sur un volume logique séparé) permet d'étendre le stockage sans arrêt de service.

2. Intégration réseau

VLAN10
IP192.168.10.30
Masque/24
Passerelle192.168.10.254
DNS Prim192.168.10.5
DNS Sec192.168.10.10

3. Paramétrage & Configuration

Partitionnement LVM

  • Disque 1 (Système) : 30 Go → /, /boot, /home
  • Disque 2 (Données) : 50 Go → /var/lib/mysql
    • Groupe de Volume : vg_data
    • Volume Logique : lv_mysql
    • Format : EXT4

Configuration MariaDB

  • Fichier : /etc/mysql/mariadb.conf.d/50-server.cnf
  • bind-address : 0.0.0.0 (connexions distantes depuis serveurs applicatifs)
  • Jeu de caractères : utf8mb4

4. Sécurité & Règles pare-feu

Sécurisation initiale

  • mysql_secure_installation exécuté.
  • Mot de passe root complexe. suppression des utilisateurs anonymes, base test supprimée, connexion root distante désactivée.

Matrice des privilèges

Base de données Utilisateur IP Source autorisée Serveur source Privilèges
glpidb glpi_user 192.168.10.25 SRV-GLPI ALL on glpidb
nextclouddb nc_user 192.168.10.35 SRV-NEXTCLOUD ALL on nextclouddb
zabbixdb zabbix_user 192.168.10.20 SRV-ZABBIX ALL on zabbixdb

Pare-feu local UFW

# Port 22 : ALLOW depuis VLAN 40 (Administration)
# Port 3306 : ALLOW depuis 192.168.10.0/24 uniquement
# Politique par défaut : DENY INCOMING

5. Tests & Validation

Modèle de privilèges testé depuis chaque IP applicative via mysql -u <user> -p -h 192.168.10.30. Connexions refusées depuis les réseaux non autorisés.

Nextcloud & Talk (SRV-NEXTCLOUD) En production

SRV-NEXTCLOUD — Cloud privé & Talk
Plateforme collaborative + communication audio/vidéo (Coturn)
12/12/2025 Debian 12 192.168.10.35

Pourquoi Nextcloud (et non Microsoft 365 / Google Workspace) ?

Les collaborateurs de NexaGroup ont besoin de partager des fichiers, de travailler sur des documents et de communiquer en visioconférence. Le choix entre une solution cloud publique (M365, Workspace) et une solution auto-hébergée a été tranché en faveur de Nextcloud pour quatre raisons :

  • Souveraineté des données — NexaGroup traite des données clients sensibles. Héberger sur ses propres serveurs garantit qu'aucune donnée ne quitte l'infrastructure et respecte le RGPD sans transfert hors UE.
  • Coût maîtrisé — pas d'abonnement par utilisateur (contrairement à M365 à ~12€/mois/utilisateur × 75 collab. = 900€/mois). Seuls les coûts matériels et le temps d'administration sont à prévoir.
  • Intégration LDAP native — Nextcloud se connecte directement à l'AD barrault.pb : les comptes utilisateurs existent déjà, pas de double saisie, SSO pour les utilisateurs.
  • Talk + Coturn intégrés — la visioconférence chiffrée est incluse sans licence supplémentaire, ce qui couvre le besoin de communication inter-sites Paris/Lyon via le tunnel WireGuard.

Pourquoi déployer Coturn (serveur TURN) ? Les appels audio/vidéo WebRTC échouent lorsque les interlocuteurs sont derrière des NAT différents (cas des collaborateurs VLAN 20 Paris ↔ VLAN 60 Lyon). Coturn relaie le flux média chiffré entre les deux pairs via un serveur intermédiaire accessible des deux côtés.

1. Identification & Rôle

2. Intégration réseau

Composant Serveur hôte Adresse IP Port d'écoute
Frontend Web SRV-NEXTCLOUD 192.168.10.35 80 (HTTP) / 443 (HTTPS)
Backend BDD SRV-BDD 192.168.10.30 3306 (MySQL)
Serveur TURN SRV-NEXTCLOUD 192.168.10.35 3478 (UDP/TCP)

3. Paramétrage & Configuration

Base de données (sur SRV-BDD)

Domaines de confiance (config.php)

'trusted_domains' => array (
  0 => '192.168.10.35',
  1 => 'nextcloud.barrault.pb',
),
'overwriteprotocol' => 'https',

4. Sécurité & Règles pare-feu

Intégration Active Directory (LDAP)

5. Tests & Validation

Authentification via compte AD fonctionnelle. Appels audio/vidéo Talk opérationnels via le serveur TURN.

SIEM Wazuh (SRV-WAZUH) En production

SRV-WAZUH — SIEM All-in-one
Gestionnaire de logs centralisé (Manager + Indexer + Dashboard)
12/12/2025 All-in-one 192.168.10.40

Pourquoi déployer un SIEM ?

Avant Wazuh, les logs étaient éparpillés : Event Viewer sur chaque contrôleur AD, /var/log/auth.log sur chaque serveur Linux, logs firewall pfSense accessibles uniquement depuis la GUI. Impossible de détecter une brute-force SSH qui cible successivement SRV-BDD, SRV-NEXTCLOUD puis SRV-GLPI — chaque tentative isolée passe sous les seuils d'alerte locaux.

Un SIEM (Security Information and Event Management) apporte trois capacités critiques :

  • Centralisation — tous les logs (Windows Security, Linux auth, pfSense filterlog, authentifications AD) arrivent dans un index OpenSearch unique, interrogeable en quelques secondes.
  • Corrélation d'événements — les règles de Wazuh détectent les patterns suspects sur plusieurs hôtes (ex. 8 échecs SSH en 120 s = brute-force, création de compte admin hors horaires = élévation de privilèges suspecte).
  • Intégrité des fichiers (FIM) — Wazuh surveille les modifications de fichiers critiques (/etc/passwd, C:\Windows\System32\drivers\etc\hosts) et alerte en temps réel en cas d'altération.

Pourquoi Wazuh plutôt que Splunk / ELK ? Splunk est payant et hors budget d'un projet BTS ; ELK demande d'assembler soi-même les composants (Elasticsearch + Logstash + Kibana + un décodeur maison). Wazuh fournit un SIEM complet clé-en-main (Manager + Indexer OpenSearch + Dashboard) avec des règles préinstallées pour Windows, Linux et pfSense.

Valeur BTS E6 : le déploiement de Wazuh satisfait l'exigence "détection d'intrusions" de la liste 2.2 du référentiel SISR, et constitue la Réalisation 2 du dossier.

1. Identification & Rôle

2. Intégration réseau

Rôle Machine IP Domaine
SIEM Manager SRV-WAZUH 192.168.10.40 barrault.pb
Contrôleur domaine SRV-AD01 192.168.10.5 barrault.pb
Supervision SRV-ZABBIX 192.168.10.20 barrault.pb
Passerelle pfSense 192.168.10.254

3. Paramétrage & Configuration

Déploiement agent (exemple SRV-AD01)

- OS Agent : Windows
- Server address : 192.168.10.40
- Groupe : Default
- Démarrage du service : NET START WazuhSvc

4. Sécurité & Règles pare-feu

Ports ouverts (UFW) :

5. Composants Wazuh (Version 4.9)

ComposantRôlePort
Wazuh ManagerCœur de traitement, décodeur et moteur de règles1514 / 1515
Wazuh IndexerStockage OpenSearch des alertes JSON9200
Wazuh DashboardInterface web de visualisation443

Schéma d'architecture SIEM

Schéma d'architecture Wazuh

6. Intégration pfSense → Wazuh (Syslog)

Méthode d'intégration

pfSense fonctionnant sur FreeBSD, l'installation d'un agent Wazuh natif n'est pas possible. L'intégration s'effectue via le protocole Syslog (UDP 514) : pfSense envoie ses logs en temps réel au Wazuh Manager qui les décode via le décodeur decoder-pfsense.xml.

Types de logs collectés depuis pfSense

SourceContenuValeur sécurité
filterlogPaquets bloqués/autorisés, IP src/dst, interfaceDétection d'intrusion réseau
authlogConnexions GUI/SSH pfSense, succès/échecsDétection brute-force admin
WireGuardTunnels VPN up/down, clients connectésSupervision VLAN 50 et 60
dhcpdBaux DHCP alloués, adresses MACDétection rogue DHCP

7. Couverture par VLAN

VLANMachines ciblesAgents installésCouverture
VLAN 10AD1, AD2, Zabbix, GLPI, BDD, Nextcloud, Wazuh7 / 7100 %
VLAN 20Postes clients (DHCP)00 %
VLAN 30SRV-WEB1, SRV-WEB2, SRV-RPROXY3 / 3100 %
VLAN 40PC-Admin-0010 / 10 %
VLAN 50AD-Distant, SRV-Local3 / 3100 %
VLAN 60Clients VPN dynamiquesN/AVia pfSense
pfSenseRouteurs 10.0.0.2 / 10.0.0.3Via SyslogConfiguré

8. Matrice de risque

ZoneRisqueCauseImpact
ClientsIMPORTANTAucun agent déployéRansomware invisible
ITIMPORTANTAucun agent déployéComptes admin non surveillés
ServeursFAIBLEAgents déployés sur tous les serveursCouverture SIEM élevée
DMZMODÉRÉZone exposée, mais agents actifsRisque réduit par monitoring
Action prioritaire : Finaliser le déploiement des agents Wazuh sur les LAN utilisateurs et IT (VLAN 20 et VLAN 40), les serveurs étant déjà couverts.

9. Procédure d'installation (Annexe)

Objectif

Installation de Wazuh en mode All-in-one (Manager + Indexer + Dashboard) sur SRV-WAZUH, avec disque dédié pour l'Indexer, puis enrôlement d'un agent Windows (exemple : SRV-AD01).

Préparation stockage (disque dédié Indexer)

# Exemple (Debian/Ubuntu) : disque /dev/sdb (50 Go) monté pour l'Indexer
sudo mkdir -p /var/lib/wazuh-indexer
sudo mkfs.ext4 /dev/sdb1
# Ajouter dans /etc/fstab (UUID) puis :
sudo mount -a
df -h | grep wazuh

Installation Wazuh (script officiel)

sudo apt update && sudo apt upgrade -y
sudo apt install curl apt-transport-https unzip wget libcap2-bin software-properties-common gnupg2 -y

curl -sO https://packages.wazuh.com/4.9/wazuh-install.sh
sudo bash wazuh-install.sh -a -o

DNS & accès dashboard

Enrôlement agent (exemple Windows : SRV-AD01)

# Dans le dashboard : Add agent (OS Windows) / Server address 192.168.10.40 / Group Default
# Puis sur le serveur Windows :
NET START WazuhSvc

Point de vigilance (pipeline d'alertes)

Surveillance : si les agents apparaissent actifs mais que les alertes n'apparaissent pas dans le dashboard, vérifier l'index wazuh-alerts-4.x-* côté Indexer/OpenSearch, la configuration du groupe default (/var/ossec/etc/shared/default/agent.conf) et la connectivité Manager → Indexer (port 9200).

Commandes de diagnostic utiles

# Indices OpenSearch (alertes)
curl -u admin:admin https://192.168.10.40:9200/_cat/indices/wazuh-alerts*

# Logs Wazuh
tail -f /var/ossec/logs/ossec.log
tail -f /var/ossec/logs/alerts/alerts.json

# Agents
/var/ossec/bin/agent_control -l

# Test connectivité agent -> manager (Windows)
Test-NetConnection -ComputerName 192.168.10.40 -Port 1514

10. Tests & Validation

Remontée des alertes de sécurité Windows réussie. Création d'événements de test FIM détectée et indexée.

GLPI — Gestion de parc & Helpdesk (SRV-GLPI) En production

SRV-GLPI — Gestion de parc & Helpdesk
ITSM, inventaire automatique et support utilisateurs
12/12/2025 Debian 12 GLPI 10.x

Pourquoi GLPI (helpdesk + inventaire) ?

Avant GLPI, les demandes de support étaient éparpillées : mails, messages Teams, post-it sur les écrans des admins. Aucune traçabilité, aucune priorisation, impossible de mesurer la charge réelle du service IT ni de justifier un recrutement. L'inventaire du parc était tenu dans un fichier Excel jamais à jour.

GLPI résout deux problèmes métier en parallèle :

  • Helpdesk structuré — tous les utilisateurs créent leurs tickets via une interface web unique (SSO AD). Les tickets sont priorisés (P1/P2/P3), assignés, suivis et mesurés (SLA, temps de résolution, backlog).
  • Inventaire automatisé (FusionInventory) — l'agent GLPI remonte quotidiennement depuis chaque poste : matériel (CPU, RAM, disque), logiciels installés, antivirus à jour, volumes BitLocker. Fini le fichier Excel obsolète, l'inventaire est toujours à jour.

Pourquoi GLPI plutôt que Jira Service Management ou Zendesk ? Jira et Zendesk sont payants à l'utilisateur/mois. GLPI est open source, gratuit, installé sur Debian avec Apache + MariaDB, et couvre à lui seul le ticketing et l'inventaire — là où Jira nécessiterait un outil complémentaire (Snipe-IT, Lansweeper).

Pourquoi un déploiement via GPO ? Déployer l'agent GLPI manuellement sur 75 postes est chronophage et source d'oubli. La GPO garantit une installation silencieuse uniforme à la jonction du poste au domaine, avec l'URL de collecte déjà configurée.

1. Identification & Rôle

2. Intégration réseau

VLAN10
IP192.168.10.25
Masque/24
Passerelle192.168.10.254
DNS Prim192.168.10.5
DNS Sec192.168.10.10
ComposantHôteAdressePort
Frontend GLPISRV-GLPI192.168.10.2580 / 443
Base de donnéesSRV-BDD192.168.10.303306
Annuaire LDAPSRV-AD01/02192.168.10.5 / 192.168.10.10389

3. Paramétrage & Configuration

Pile applicative

Intégration Active Directory

Fonctionnalités activées

4. Sécurité & Règles pare-feu

Pare-feu local (UFW)

# Port 22  : ALLOW depuis VLAN 40 (Administration SSH)
# Port 80  : ALLOW depuis 192.168.0.0/16 (Accès Web interne)
# Port 443 : ALLOW depuis 192.168.0.0/16 (HTTPS)
# Politique par défaut : DENY INCOMING

5. Tests & Validation

6. Architecture distribuée (3-Tiers)

GLPI est déployé en architecture 3-Tiers : le serveur Web (Frontend) est séparé de la base de données (Backend sur SRV-BDD) et de l'annuaire d'authentification (SRV-AD01). Cette séparation isole les données sensibles, facilite la montée en charge et réduit la surface d'attaque.

ComposantServeur hôteAdresse IPPort
Frontend WebSRV-GLPI192.168.10.2580 / 443
Backend BDDSRV-BDD192.168.10.303306
Annuaire LDAPSRV-AD01192.168.10.5389

7. Sécurisation HTTPS & HSTS

Le protocole HTTPS est rendu obligatoire pour protéger les authentifications (mots de passe AD) et les données d'inventaire.

8. Configuration LDAP détaillée

9. Inventaire automatisé (Agent GLPI)

10. Matrice des flux réseau

SourceDestinationPortProtocoleDescription
VLAN 20 / 40SRV-GLPI443TCPAccès interface Web (HTTPS)
SRV-GLPISRV-BDD3306TCPConnexion base de données
SRV-GLPISRV-AD01/02389TCP/UDPAuthentification LDAP
SRV-GLPIInternet443TCPMises à jour & Marketplace

Supervision (SRV-ZABBIX) En production

SRV-ZABBIX — Supervision centralisée
Monitoring infrastructure, alerting et tableaux de bord
12/12/2025 Debian 12 Zabbix 7.x LTS

Pourquoi Zabbix (supervision proactive) ?

Sans supervision, une panne n'est découverte qu'au moment où un utilisateur se plaint. Un disque plein sur SRV-BDD peut rester inaperçu jusqu'à ce que GLPI, Nextcloud et Zabbix lui-même tombent simultanément. Un contrôleur AD qui ne réplique plus peut provoquer des problèmes d'authentification intermittents pendant des jours.

Wazuh (SIEM) et Zabbix (supervision) répondent à des besoins complémentaires, pas redondants :

  • Wazuh = sécurité. Il détecte les tentatives d'intrusion, les événements anormaux (brute-force, FIM, création de compte admin).
  • Zabbix = disponibilité. Il détecte les pannes matérielles et applicatives (disque plein, service arrêté, CPU saturé, ping perdu sur pfSense).

Pourquoi Zabbix plutôt que Nagios, Centreon ou PRTG ? Zabbix 7.0 LTS est open source (gratuit), offre une découverte automatique des services, un frontend web moderne et un système d'alerting par email natif. Contrairement à Nagios, il stocke l'historique dans une BDD (MariaDB) ce qui permet des graphiques de tendances sur plusieurs mois.

Pourquoi superviser pfSense en SNMP (et non en agent) ? pfSense tourne sous FreeBSD : l'agent Zabbix natif Linux n'y est pas compatible. SNMP est le protocole standard de supervision réseau, supporté nativement par pfSense (Services > SNMP) et permet de récupérer l'état des interfaces, le trafic et surtout l'état CARP (MASTER / BACKUP) pour détecter un basculement inattendu.

1. Identification & Rôle

2. Intégration réseau

VLAN10
IP192.168.10.20
Masque/24
Passerelle192.168.10.254
DNS Prim192.168.10.5
DNS Sec192.168.10.10
ComposantHôteAdressePort
Zabbix ServerSRV-ZABBIX192.168.10.2010051
Frontend WebSRV-ZABBIX192.168.10.20443
Base de donnéesSRV-BDD192.168.10.303306

3. Paramétrage & Configuration

Architecture

Schéma d'architecture monitoring

Schéma d'architecture du monitoring Zabbix

Éléments supervisés

Hôte IP Type d'agent Métriques clés
SRV-AD01 192.168.10.5 Zabbix Agent (Windows) CPU, RAM, Disque, Services AD/DNS/DHCP
SRV-AD02 192.168.10.10 Zabbix Agent (Windows) CPU, RAM, Disque, Réplication AD
SRV-BDD 192.168.10.30 Zabbix Agent (Linux) CPU, RAM, I/O disque, MySQL queries
SRV-NEXTCLOUD 192.168.10.35 Zabbix Agent (Linux) CPU, RAM, Disque, Apache status
pfSense (VIP) 192.168.10.254 SNMP Interfaces, Firewall states, CPU

4. Déploiement des agents Zabbix

Méthode de déploiement réellement utilisée

Périmètre Méthode Détail
Serveurs Debian (VLAN 10/30) Script automatisé zabbix_deploy.sh (installation, configuration agent, redémarrage service, tentative d'enregistrement API)
SRV-AD01 / SRV-AD02 Manuel Installation MSI + configuration Windows de l'agent sur chaque contrôleur AD

Exécution du script sur Debian

# Sur chaque machine Debian/Ubuntu cible
sudo bash zabbix_deploy.sh

Ce que fait le script zabbix_deploy.sh

Différences Windows / Linux

Le déploiement varie selon l'OS cible. Les hôtes Windows utilisent le package MSI (Agent 2) déployé via GPO, avec configuration du fichier zabbix_agent2.conf. Les hôtes Linux utilisent les paquets natifs (apt) et communiquent via le port 10050. Dans tous les cas, l'agent opère en mode passif (le serveur l'interroge).

Paramètres clés (zabbix_agentd.conf)

5.1 Compte rendu technique

Résumé

Mise en place de Zabbix (7.0.23 LTS) sur SRV-ZABBIX avec collecte Agent 2 (serveurs Linux/Windows) et SNMP v2c (pfSense). Objectifs : disponibilité, métriques système, alerting et dashboard temps réel.

Incidents rencontrés (extraits)

PowerShell : erreurs possibles liées à la syntaxe (apostrophes/guillemets) et aux noms de service variant selon versions (Zabbix Agent vs Zabbix Agent 2). Recommandation : détecter automatiquement le nom de service et éviter les caractères spéciaux dans les scripts.

Supervision pfSense via SNMP (HA CARP)

# pfSense : Services > SNMP : Enable, Port 161, Read Community (ex: public)
# Test depuis SRV-ZABBIX :
apt install snmp -y
snmpwalk -v2c -c public 10.0.0.2 .1.3.6.1.2.1.1

Widgets de dashboard recommandés

WidgetTypeObjectif
CPU UtilisationTop hosts by CPUClassement des hôtes par charge
RAM UtilisationTop hosts by memoryIdentifier les saturations
Disponibilité hôtesHost availabilityUP / DOWN / Inconnu
Problèmes actifsProblemsAlertes en cours
Carte réseauMapTopologie + état temps réel

5. Modèles (Templates) et Déclencheurs (Triggers)

CibleTemplates appliquésExemples de Triggers critiques
Windows Server (AD)Windows by Zabbix agent, Active Directory by Zabbix agentService AD DS arrêté, CPU > 90% (5m)
Linux Server (BDD, Nextcloud)Linux by Zabbix agent, MySQL by Zabbix agent, Apache by ZabbixEspace libre / < 10%, MySQL est down
pfSense HApfSense SNMPInterface WAN down, Haute disponibilité CARP status = Backup sur nœud principal

6. Notifications et Alerting

7. Plan d'Action & Matrice de Risque

Risque identifiéImpactAction Corrective (Zabbix)
Saturation disque de la BDDArrêt de la production (GLPI, Nextcloud)Déclencheur sur espace /var/lib/mysql < 5Go avec escalade par SMS
Bascule inattendue pfSenseIndisponibilité temporaire / Split-brainSupervision SNMP de l'état CARP et interface Heartbeat
Service Windows arrêté (AD)Perte d'authentificationTemplate Active Directory vérifiant le statut des services clés (NTDS, DNS)

8. Sécurité & Règles pare-feu

9. Tests & Validation

VLAN 20 — Clients Utilisateurs En production

VLAN 20 — Postes utilisateurs
Segment client interne, adressage DHCP et accès contrôlé aux services
192.168.20.0/24 Site principal GW 192.168.20.254

1. Identification & Rôle

Ce VLAN regroupe les postes de travail (ex: CLT-WIN) des collaborateurs du site principal. Ils accèdent aux ressources internes (VLAN 10) et à internet, tout en étant isolés de la DMZ (VLAN 30) et du domaine d'administration (VLAN 40).

2. Intégration réseau

VLAN20
Réseau192.168.20.0/24
Passerelle192.168.20.254
ModeDHCP
ParamètreValeurSource
Plage DHCP192.168.20.10 → 192.168.20.200SRV-AD01 / SRV-AD02
DNS distribué192.168.10.5 / 192.168.10.10DHCP Options
Gateway192.168.20.254VIP pfSense

3. Sécurité

Infrastructure Web & Reverse Proxy (DMZ) En production

DMZ — SRV-RPROXY / SRV-WEB1 / SRV-WEB2
Répartition de charge Nginx et serveurs web backend Apache2
12/12/2025 VLAN 30 Nginx + Apache2

Pourquoi une DMZ + Reverse Proxy ?

Les sites web de NexaGroup doivent être accessibles depuis Internet (intranet, portail client). Les exposer directement depuis le VLAN 10 (serveurs critiques) serait une faute grave de sécurité : une vulnérabilité sur Apache ouvrirait une porte directe vers SRV-AD01 ou SRV-BDD.

La DMZ (VLAN 30) est une zone tampon entre Internet et le réseau interne :

  • Les flux Internet → DMZ sont autorisés sur les ports web (80, 443) uniquement.
  • Les flux DMZ → VLAN 10 sont extrêmement restreints par pfSense (seulement les ports applicatifs nécessaires : DNS 53, MySQL 3306).
  • Une compromission d'un serveur web ne donne pas accès au reste du SI : l'attaquant reste piégé dans la DMZ.

Pourquoi un reverse proxy (SRV-RPROXY / Nginx) devant les backends Apache ?

  • Répartition de charge — algorithme least_conn : les requêtes sont dirigées vers le backend le moins chargé. Arrêter SRV-WEB1 pour maintenance redirige automatiquement tout le trafic vers SRV-WEB2, transparent pour l'utilisateur.
  • TLS Termination — le proxy gère le HTTPS (certificat PKI interne), les backends Apache discutent en HTTP sur le réseau DMZ. Le chiffrement/déchiffrement coûteux est concentré sur un seul serveur.
  • Point d'entrée unique — une seule IP à exposer, une seule configuration de certificat à maintenir, un seul endroit où appliquer les règles de sécurité (rate-limiting, headers HSTS, blocage d'IP).

Pourquoi Nginx plutôt qu'HAProxy ? Nginx combine reverse proxy + serveur web statique dans le même binaire, sa syntaxe upstream est plus lisible pour un opérateur qui débute, et il peut servir directement des pages d'erreur personnalisées sans backend si les deux WEB1/WEB2 tombent.

1. Identification & Rôle

2. Intégration réseau

Serveur FQDN IP Rôle
SRV-RPROXY srv-rproxy.barrault.pb 192.168.30.10 Load Balancer (Frontend Nginx)
SRV-WEB1 srv-web1.barrault.pb 192.168.30.20 Serveur Web Apache2
SRV-WEB2 srv-web2.barrault.pb 192.168.30.21 Serveur Web Apache2

3. Paramétrage & Configuration

Configuration Nginx (SRV-RPROXY)

# /etc/nginx/nginx.conf
upstream myapp {
    least_conn;
    server 192.168.30.20;
    server 192.168.30.21;
}

server {
    listen 80;
    location / {
        proxy_pass http://myapp;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

4. Sécurité & Règles pare-feu

Flux inter-VLAN (pfSense)

Règles pare-feu local

5. Tests & Validation

Load balancing vérifié : requêtes distribuées avec maintien sur nœud disponible via least_conn. Arrêt manuel de WEB1 entraîne la redirection totale vers WEB2 transparente pour le client.

VLAN 40 — Département IT & Administration En production

VLAN 40 — Département IT
Segment d'administration avec accès privilégié aux équipements critiques
192.168.40.0/24 Site principal SSH / RDP / Management

1. Rôle et Objectif

Ce VLAN est strictement dédié aux administrateurs réseau et système de NexaGroup. Il héberge les postes et outils de gestion, et bénéficie de privilèges d'accès étendus sur l'infrastructure pour la maintenance et la supervision (SSH, RDP, accès Web management).

Les postes IT de ce segment intègrent les outils RSAT (Remote Server Administration Tools), notamment Active Directory Users and Computers (dsa.msc) et Group Policy Management Console (gpmc.msc), afin d'administrer le domaine barrault.pb directement depuis les clients sans connexion RDP sur SRV-AD01.

2. Intégration réseau

VLAN40
Réseau192.168.40.0/24
Passerelle192.168.40.254
UsageAdministration IT
FluxDestinationPortsObjectif
Postes ITServeurs VLAN 1022 / 3389 / 443Administration système
Postes ITpfSense / Hyperviseurs443Gestion des infrastructures
Postes IT (RSAT)Domaine barrault.pbRPC / LDAP / Kerberos / SMBAdministration AD/GPO locale via dsa.msc et gpmc.msc sans session RDP sur SRV-AD01

3. Règles de sécurité

Il est le seul réseau autorisé à accéder aux interfaces d'administration des pare-feu, des hyperviseurs, et au port 22 des divers serveurs Linux (SRV-BDD, SRV-NEXTCLOUD, etc.).

VLAN 50 — Serveur AD Local (RODC) En production

AD-HERO — Contrôleur de domaine en lecture seule
Continuité d'authentification du site Lyon même en cas de coupure WireGuard
192.168.50.5/24 Site Lyon GW 192.168.50.254 Windows Server (RODC)

Pourquoi un RODC (et non un DC classique) sur Lyon ?

Sans contrôleur de domaine local, les 20 collaborateurs lyonnais dépendent entièrement du tunnel WireGuard pour s'authentifier. Une coupure du VPN = impossibilité de se connecter à son poste, de résoudre nextcloud.barrault.pb, ou d'accéder aux partages. Un contrôleur local est donc nécessaire pour garantir la continuité de service.

Pourquoi RODC (Read-Only Domain Controller) plutôt qu'un DC classique ?

  • Sécurité physique — le serveur Lyon est dans un local d'antenne moins sécurisé que le datacenter Paris. Un RODC ne contient pas la base AD complète en écriture : même si la machine est volée, un attaquant ne peut pas modifier l'AD du siège.
  • Cache de credentials contrôlé (PRP) — par défaut le RODC ne met aucun mot de passe en cache. La Password Replication Policy permet de n'autoriser que les comptes lyonnais, limitant l'exposition si la machine est compromise.
  • Réplication unidirectionnelle — le RODC reçoit les changements depuis Paris mais n'envoie jamais rien : une modification locale accidentelle ne peut pas contaminer l'AD du siège.
  • DNS intégré local — la zone barrault.pb est répliquée sur AD-HERO, les résolutions DNS ne traversent plus le tunnel WireGuard, gain de latence + tolérance à la coupure VPN.

Le RODC est exactement le bon outil pour un site secondaire : il offre la continuité de service d'un DC sans exposer la sécurité du domaine à un environnement moins contrôlé.

1. Identification & intégration réseau

NomAD-HERO
VLAN50
IP192.168.50.5
Masque/24
Passerelle192.168.50.254
SupportPC physique dédié
CaractéristiqueValeur sur AD-HERO
Type de DCRODC (Read-Only Domain Controller)
RéplicationUnidirectionnelle (Paris → Lyon)
Cache de mots de passeUniquement pour les comptes autorisés (PRP)
DNS intégréZone barrault.pb répliquée localement
Catalogue globalActivé (accélère les authentifications)
Rôles FSMOAucun (hébergés sur SRV-AD01 Paris)

2. Procédure d'installation et promotion RODC

2.1 Pré-requis avant promotion

Avant de promouvoir AD-HERO, il faut s'assurer que le tunnel WireGuard est opérationnel et que SRV-AD01 est joignable depuis Lyon :

# Vérifications préalables depuis AD-HERO
ping 192.168.10.5
nslookup barrault.pb 192.168.10.5

# Configuration réseau provisoire (avant promotion)
# IP             : 192.168.50.5/24
# Gateway        : 192.168.50.254 (pfSense Lyon)
# DNS primaire   : 192.168.10.5 (SRV-AD01 Paris, temporaire)

2.2 Installation du rôle AD DS

# PowerShell administrateur sur AD-HERO
Install-WindowsFeature AD-Domain-Services -IncludeManagementTools

2.3 Promotion en RODC

Install-ADDSDomainController `
  -DomainName "barrault.pb" `
  -SiteName "Default-First-Site-Name" `
  -ReadOnlyReplica:$true `
  -InstallDns:$true `
  -NoGlobalCatalog:$false `
  -Force:$true
ParamètreValeurJustification
-ReadOnlyReplica:$trueObligatoireDéfinit le serveur comme RODC (lecture seule)
-InstallDns:$trueActivéInstalle le DNS local répliqué depuis Paris
-NoGlobalCatalog:$falseGC activéAccélère les authentifications sans requête Paris
-Force:$trueRedémarrage autoRedémarre automatiquement après promotion

2.4 Vérification de la réplication

# Depuis SRV-AD01 Paris — vérifier que le RODC apparaît
Get-ADDomainController -Filter * | Select Name, IsReadOnly, Site, IPv4Address

# Depuis AD-HERO — forcer la réplication initiale
repadmin /syncall /AdeP

# Contrôler le statut de réplication
repadmin /showrepl

3. Password Replication Policy (PRP)

Point critique pour la continuité de service

Par défaut, le RODC ne met en cache aucun mot de passe. Sans configuration explicite de la PRP, si le tunnel WireGuard tombe, plus aucun utilisateur ne peut s'authentifier sur Lyon — exactement la situation que le RODC est censé prévenir.

# Depuis SRV-AD01 Paris — autoriser la mise en cache des credentials
Add-ADDomainControllerPasswordReplicationPolicy `
  -Identity "AD-HERO" `
  -AllowedList "Domain Users"

Justification BTS E6 : la PRP limite la mise en cache aux comptes strictement nécessaires. Si AD-HERO est volé, l'attaquant ne peut extraire que les empreintes des utilisateurs lyonnais — pas celles des administrateurs ou des comptes de service du siège Paris.

4. Configuration DNS finale

Après déploiement du RODC et vérification de la réplication de la zone barrault.pb, la configuration DNS doit être mise à jour pour que le RODC serve en priorité :

MachineDNS PrimaireDNS SecondaireRaison
AD-HERO (RODC)127.0.0.1192.168.10.5 (Paris)Se résout lui-même en priorité
Postes VLAN 60 (via DHCP pfSense)192.168.50.5 (RODC)192.168.10.5 (Paris)Résolution locale prioritaire, Paris en secours

5. Test de résilience — Simulation de coupure VPN

Ce test est la validation fonctionnelle majeure du RODC : il prouve que le site Lyon reste opérationnel même sans le tunnel WireGuard.

  1. Couper le tunnel WireGuard côté pfSense Lyon (désactiver temporairement le peer).
  2. Depuis un poste VLAN 60, vérifier la résolution : nslookup barrault.pb → doit répondre via 192.168.50.5.
  3. Tenter une ouverture de session avec un compte du domaine → doit fonctionner via le cache RODC.
  4. Réactiver le tunnel et valider la reprise normale des services centraux (GLPI, Nextcloud).

Résultat attendu

L'authentification locale et la résolution DNS continuent de fonctionner sans aucune dépendance au VPN. Les seules fonctionnalités perdues sont celles qui dépendent des serveurs centraux (Nextcloud, GLPI, Wazuh), ce qui est le comportement normal attendu.

VLAN 60 — Postes Clients Distants En production

VLAN 60 — Postes clients Lyon
Accès aux services Paris via WireGuard, DHCP local sur pfSense Lyon
192.168.60.0/24 Site Lyon GW 192.168.60.254 DHCP .10 → .100

Pourquoi le DHCP sur pfSense Lyon (et pas sur SRV-AD01 Paris) ?

Deux options étaient techniquement possibles pour distribuer les adresses IP aux postes du VLAN 60 :

OptionAvantagesInconvénients
pfSense Lyon (retenu)Fonctionne indépendamment du tunnel WireGuard. Continuité totale en cas de panne VPN.
SRV-AD01 Paris via DHCP RelayCentralisé, mutualise l'infra existante.Si le VPN tombe, plus aucun bail DHCP pour Lyon.

Pourquoi pas le RODC AD-HERO comme serveur DHCP ? Le rôle DHCP Server Windows nécessite d'écrire son autorisation dans la partition de configuration AD, qui est en lecture seule sur un RODC. Le RODC ne peut donc pas porter ce rôle — pfSense Lyon est le choix naturel.

1. Description générale

Ce VLAN regroupe les postes clients du site Lyon. Il est diffusé via le switch MikroTik SwOS relié au pfSense Lyon, garantissant une étanchéité complète avec le VLAN 50 (infrastructure RODC) et un routage contrôlé vers les services du siège via le tunnel WireGuard.

2. Configuration DHCP sur pfSense Lyon

Chemin pfSense : Services → DHCP Server → VLAN60

ParamètreValeurCommentaire
Enable✓ ActivéActivation du service DHCP
Range From192.168.60.10Début plage dynamique
Range To192.168.60.10091 adresses disponibles
Gateway192.168.60.254Interface pfSense Lyon sur VLAN 60
DNS Primaire192.168.50.5RODC AD-HERO (local, toujours disponible)
DNS Secondaire192.168.10.5SRV-AD01 Paris (secours via WireGuard)

Ordre des DNS : RODC avant Paris

Le DNS primaire pointe vers le RODC local (192.168.50.5) et non vers Paris. Si le tunnel WireGuard tombe, les postes peuvent toujours résoudre barrault.pb localement via le RODC. Si le primaire fonctionne, les requêtes DNS ne traversent même pas le VPN : gain de latence.

3. Configuration du switch MikroTik SwOS (VLAN 802.1Q)

Le switch MikroTik fonctionne en mode VLAN 802.1Q. Il reçoit les trames taguées depuis pfSense Lyon sur le port trunk (Port1) et les distribue sur les ports access en retirant le tag VLAN avant transmission aux équipements terminaux.

3.1 Rôle des ports

PortRôleModeVLAN
Port 1Trunk vers pfSense LyonTagged (trunk)VLAN 50 + VLAN 60
Port 2Access vers RODC AD-HEROUntagged (access)VLAN 50 uniquement
Port 3Access vers postes clients LyonUntagged (access)VLAN 60 uniquement
Port 5Gestion switch (192.168.88.1)Non configuré

3.2 Configuration Ingress (Onglet VLAN)

ParamètrePort1 (Trunk)Port2 (RODC)Port3 (Clients)
VLAN Modeenabledenabledenabled
VLAN Receiveonly taggedonly untaggedonly untagged
Default VLAN ID15060
Force VLAN ID☐ Non☑ Oui☑ Oui
VLAN Header (Egress)leave as isalways stripalways strip

Pourquoi "leave as is" vs "always strip" ?

"leave as is" = le switch laisse le tag VLAN intact (nécessaire sur le trunk vers pfSense, qui a besoin de ces tags pour router).
"always strip" = le switch retire le tag avant d'envoyer la trame (les PC et serveurs ne gèrent pas les tags VLAN et ne comprendraient pas une trame taguée).

3.3 RSTP désactivé sur les ports access

Le RSTP (Rapid Spanning Tree Protocol, 802.1w) évite les boucles réseau en bloquant temporairement un port pendant la phase Learning. Ce délai est utile entre switches, mais inutile et pénalisant sur un port connecté à un PC ou un serveur (ceux-ci ne peuvent pas créer de boucles).

Désactiver le RSTP (ou passer en mode Edge Port) sur Port2 et Port3 permet au port de passer immédiatement en état Forwarding dès la détection du lien, sans délai d'attente à chaque redémarrage d'un PC.

4. Flux autorisés via le tunnel WireGuard

SourceDestinationCheminFinalité
VLAN 60AD-HERO (VLAN 50)LAN Lyon directAuthentification locale (cache RODC)
VLAN 60SRV-AD01/02 Paris (VLAN 10)Tunnel WireGuardAuth AD + DNS (ports 53, 88, 389)
VLAN 60SRV-GLPI / SRV-NEXTCLOUD (VLAN 10)Tunnel WireGuardHelpdesk, fichiers (HTTPS 443)
VLAN 60SRV-WAZUH / SRV-ZABBIX (VLAN 10)Tunnel WireGuardSIEM, supervision (1514, 10050)
VLAN 60SRV-RPROXY (VLAN 30)Tunnel WireGuardIntranet, sites web publiés
AnyAny (non listé)Block (deny-by-default)

5. Diagnostic — Problèmes rencontrés lors du déploiement

ProblèmeSymptômeCauseSolution
Interface parente incorrectePas de ping vers 192.168.60.254VLAN60 configuré sur alc0 (WAN simulé) au lieu de ue1Modifier interface parente : alc0ue1
Adaptateur USB déconnectéue1 : status no carrierAdaptateur USB→RJ45 mal enfoncéDébrancher/rebrancher, vérifier status: active
RSTP bloque le traficPing intermittent, trames STP en captureRSTP en phase Learning sur ports accessDésactiver RSTP sur Port2 et Port3

Commandes de diagnostic utiles

# Depuis pfSense Lyon (Diagnostics > Command Prompt)
ifconfig ue1                          # État physique de l'interface
ifconfig ue1.60                       # Sous-interface VLAN 60 (doit afficher 192.168.60.254)
tcpdump -ni ue1 -c 20                 # Trames arrivant sur le port physique
arp -a | grep 192.168.60              # Table ARP : IPs des clients VLAN 60

# Depuis un poste client Windows (VLAN 60)
ipconfig /all                         # Vérifier la config IP reçue du DHCP
ping 192.168.60.254                   # Gateway pfSense Lyon
ping 192.168.10.5                     # SRV-AD01 Paris via tunnel WireGuard
nslookup barrault.pb 192.168.50.5     # Résolution via RODC local
nltest /dsgetdc:barrault.pb           # Test découverte DC

Procédure de Migration HTTPS (PKI Interne) Documenté

Migration HTTPS & PKI Interne
Sécurisation des flux web (GLPI, Web, etc.) via la fonction CA de pfSense
Sécurité PKI Apache2

Pourquoi HTTPS partout (et une PKI interne) ?

Le HTTP en clair expose tous les identifiants AD en clair sur le réseau. Un attaquant positionné sur un switch VLAN 20 peut capturer (via tcpdump ou Wireshark) les credentials d'un utilisateur qui se connecte à GLPI ou Nextcloud — et rebondir ensuite vers l'AD. Le chiffrement TLS est donc une exigence non négociable sur les interfaces web internes qui utilisent l'authentification AD.

Pourquoi une PKI interne (pfSense) plutôt que Let's Encrypt ?

  • Le domaine barrault.pb est privé (non résolvable sur Internet) : Let's Encrypt ne peut pas valider la propriété du domaine via HTTP-01.
  • Let's Encrypt nécessiterait d'exposer les serveurs internes à Internet — exactement ce que la DMZ cherche à éviter.
  • La PKI interne (fonction Certificate Manager de pfSense) est déjà disponible sur le cluster firewall : aucun serveur supplémentaire à déployer, contrairement à AD CS qui exigerait un rôle Windows dédié.

Pourquoi déployer la CA via GPO ? Pour que les navigateurs des 75 postes Windows fassent confiance aux certificats signés par la CA interne, il faut importer la CA racine dans le magasin Trusted Root Certification Authorities. Une GPO appliquée à la racine de barrault.pb réalise ce déploiement automatiquement à la jonction de chaque poste au domaine — zéro intervention manuelle, zéro alerte rouge dans le navigateur.

1. Contexte de la demande

Initialement, le reverse proxy (VLAN 30 DMZ) exposait le site web de l'entreprise sur le port 80 en HTTP clair. La direction de NexaGroup a exigé la sécurisation des échanges (chiffrement) de ses applications critiques afin d'éviter toute interception de données ou d'identifiants (notamment pour GLPI et l'interface Active Directory). L'objectif : passer au HTTPS sur le port 443 avec redirection forcée.

2. Options techniques envisagées

SolutionAvantagesInconvénientsChoix final
1. Let's Encrypt (Certbot) Certificats gratuits, reconnus mondialement, automatisés Exige un nom de domaine public résolvable et accessible d'Internet (le nom barrault.pb est purement privé/local) Rejeté
2. PKI Active Directory (AD CS) Intégration native Windows, déploiement GPO automatique Lourd à mettre en place, nécessite un serveur dédié et complique la gestion pour les clients non-Windows Exclu temporairement
3. PKI pfSense (Certificate Manager) Déjà présent dans l'infra, centralisé, simple à gérer, export des certificats facilité Nécessite le déploiement manuel/GPO du certificat CA Root sur les postes clients Retenu

3. Déploiement de la PKI (Autorité de Certification)

La solution retenue repose sur pfSense (SRV-PFSENSE-01 / MASTER). Le processus suivi a été :

4. Mise en œuvre sur les serveurs web (ex: Apache)

1. Transfert des certificats : Les clés .crt et .key ont été placées dans /etc/ssl/certs/ et /etc/ssl/private/ sur le serveur web.

2. Configuration du VirtualHost (Redirection + SSL) :

# Redirection HTTP vers HTTPS
<VirtualHost *:80>
    ServerName glpi.barrault.pb
    Redirect permanent / https://glpi.barrault.pb/
</VirtualHost>

# Configuration HTTPS
<VirtualHost *:443>
    ServerName glpi.barrault.pb
    DocumentRoot /var/www/html/glpi/public

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/glpi-cert.crt
    SSLCertificateKeyFile /etc/ssl/private/glpi-key.key
</VirtualHost>

3. Activation : Activation des modules SSL et redémarrage d'Apache (a2enmod ssl, a2enconf default-ssl, systemctl restart apache2).

5. Durcissement Sécurité (HSTS)

Pour prévenir les attaques de type SSL Stripping (downgrade forcé vers HTTP), l'en-tête HSTS (HTTP Strict Transport Security) a été activé. Il force le navigateur à se connecter obligatoirement en HTTPS pendant une durée déterminée (un an dans notre cas).

6. Difficultés rencontrées et remédiation

1. Boucle de redirection infinie (ERR_TOO_MANY_REDIRECTS)

Problème : Lors de la connexion à GLPI post-migration, le navigateur affichait une erreur "trop de redirections".
Cause : Le paramètre URL de GLPI dans la BDD n'avait pas été mis à jour pour forcer HTTPS.
Solution : Modification via la commande CLI GLPI : php bin/console glpi:config:set --config-name=url_base --config-value=https://glpi.barrault.pb

2. Avertissement de sécurité navigateur (NET::ERR_CERT_AUTHORITY_INVALID)

Problème : Même après l'ajout du certificat, les navigateurs affichaient une page d'avertissement rouge.
Cause : Le navigateur ne faisait pas confiance à la PKI interne, le certificat CA Root n'était pas présent dans le magasin du poste.
Solution : Vérification et déploiement du certificat racine de pfSense via un objet GPO "Public Key Policies > Trusted Root Certification Authorities" sur tous les postes membres de l'AD.

3. Blocage du Reverse Proxy (Nginx vers Apache Backend)

Problème : Le proxy répondait 502 Bad Gateway.
Cause : Nginx (proxy) essayait de contacter le backend (Apache) en SSL mais sans faire confiance à sa configuration.
Solution : Configuration du "TLS Termination" sur le proxy. Le proxy reçoit les flux chiffrés d'Internet, s'occupe du SSL, puis discute en clair sur le réseau privé (DMZ) avec les backends Web. L'overhead cryptographique est ainsi concentré sur le Load Balancer.

GPO Pare-feu — Règles VNC & ICMP Documenté

GPO — Pare-feu Windows (Règles entrantes)
Déploiement centralisé de règles VNC (5900 TCP) et ICMP Echo Request
barrault.pb gpmc.msc Domain + Private

Pourquoi une GPO plutôt qu'une configuration manuelle ?

Après la jonction au domaine des postes Lyon et du RODC, deux dysfonctionnements ont été identifiés : VNC inaccessible (port 5900 bloqué) et ping Paris → Lyon impossible (ICMP Echo Request bloqué). Le service VNC écoute bien (netstat -an | findstr 5900 = LISTENING) mais le pare-feu Windows bloque les connexions entrantes.

Trois approches étaient possibles :

MéthodeAvantagesInconvénients
Configuration manuelle poste par posteRapide sur 1 posteNon scalable (75 postes), écrasé au prochain gpupdate, oublis garantis
Script PowerShell de déploiementScriptableNécessite exécution privilégiée, pas de rollback natif
GPO de domaine (retenu)Automatique, centralisé, auditable, rollback simpleUn unique aller-retour gpupdate à attendre

La GPO garantit que chaque nouveau poste qui rejoint le domaine reçoit automatiquement les règles — zéro intervention manuelle, configuration uniforme sur 75 postes, auditable depuis gpmc.msc.

1. Diagnostic initial

Avant toute modification, vérifier que les services écoutent effectivement et que le problème est bien au niveau du pare-feu :

# Sur le poste concerné (PowerShell administrateur)
netstat -an | findstr 5900

# Résultat attendu : VNC en état LISTENING sur 0.0.0.0:5900
# → le service fonctionne, le blocage est bien au niveau du pare-feu

# Vérifier le profil réseau (Public vs Domain)
Get-NetConnectionProfile

Point de vigilance — Profil réseau

Après jonction de domaine via tunnel WireGuard, Windows peut ne pas détecter correctement le DC et affecter le profil réseau Public au lieu de Domain, ce qui applique des règles de filtrage plus restrictives. Vérifier avec Get-NetConnectionProfile avant toute conclusion.

2. Création de la GPO

  1. Ouvrir gpmc.msc sur SRV-AD01 (192.168.10.5)
  2. Clic droit sur barrault.pbCreate a GPO in this domain
  3. Nommer la GPO : GPO - Parefeu Regles Entrant
  4. Clic droit sur la GPO → Edit

Chemin dans l'éditeur de GPO

Computer Configuration
  └── Policies
      └── Windows Settings
          └── Security Settings
              └── Windows Defender Firewall with Advanced Security
                  └── Inbound Rules

3. Règle 1 — VNC (port 5900 TCP)

Clic droit sur Inbound RulesNew Rule

ParamètreValeur
Rule TypePort
ProtocolTCP
Local Port5900
ActionAllow the connection
ProfileDomain + Private
NameVNC - Accès distant 5900

4. Règle 2 — ICMP Echo Request (ping entrant)

Clic droit sur Inbound RulesNew Rule

ParamètreValeur
Rule TypeCustom (pas "Port")
ProgramAll programs
ProtocolICMPv4
ICMP TypeEcho Request (type 8)
ActionAllow the connection
ProfileDomain + Private
NameICMP - Echo Request entrant

Pourquoi "Custom" et pas "Port" ?

L'assistant "Port" ne propose que TCP ou UDP. Pour autoriser l'ICMP (qui n'est ni TCP ni UDP mais un protocole de couche 3 distinct), il faut passer par le type Custom, qui permet de sélectionner ICMPv4 dans les paramètres de protocole, puis de cibler précisément le type Echo Request (type 8).

5. Liaison de la GPO

CibleChemin OUUsage
Domaine entierbarrault.pbApplique les règles à tous les postes et serveurs membres
Postes clients uniquementOU=Ordinateurs,OU=Entreprise,DC=barrault,DC=pbRecommandé — cible postes VLAN 20 et VLAN 60 uniquement

6. Application et validation

Forcer l'application sur les postes

# Sur chaque poste client
gpupdate /force

Vérifier que les règles sont bien appliquées

Get-NetFirewallRule | Where-Object {
  $_.DisplayName -like '*VNC*' -or $_.DisplayName -like '*ICMP*'
}

7. Tests de validation

ScénarioCommande / ActionRésultat attendu
VNC accessible depuis ParisConnexion VNC vers IP VLAN 60 depuis VLAN 40Connexion établie
Ping Paris → Lyonping <IP-CLT-Lyon> depuis SRV-AD01Réponse < 10ms
Règles présentesGet-NetFirewallRule2 règles visibles

8. Récapitulatif des règles déployées

Règle GPOProtocolePort / TypeProfilAction
VNC - Accès distant 5900TCP5900Domain + PrivateAllow
ICMP - Echo Request entrantICMPv4Echo Request (type 8)Domain + PrivateAllow

Bonne pratique sécurité

Ces règles sont appliquées uniquement sur les profils Domain et Private. Le profil Public reste bloquant, ce qui protège les postes mobiles (télétravail, hotspots) contre des connexions VNC ou des ping depuis des réseaux non maîtrisés.

Tests & Validation

L'ensemble des services a fait l'objet de tests de validation fonctionnelle et de résilience.

Matrice de validation

Service Scénario de test Résultat Statut
pfSense HA Suspension du nœud primaire Perte de 1-2 paquets, reprise automatique via CARP OK
AD DS Création objet sur AD01, vérification AD02 Réplication en < 15 secondes OK
DHCP Failover Arrêt du DHCP sur AD01 Bail distribué par AD02 OK
DNS nslookup srv-bdd.barrault.pb Résolution interne/externe correcte OK
Jonction domaine Ajout poste Windows au domaine Jonction réussie, GPO appliquées OK
MariaDB Connexion depuis SRV-GLPI (port 3306) Accès OK ; refus depuis IP non autorisée OK
Nextcloud LDAP Connexion avec compte AD Authentification et sync groupes OK OK
Nextcloud Talk Appel audio/vidéo Flux via serveur TURN opérationnel OK
Wazuh SIEM Événement FIM test Alerte remontée et indexée OK
Load Balancer Arrêt SRV-WEB1 Redirection transparente vers SRV-WEB2 OK
VPN WireGuard site à site Ping VLAN 60 → 192.168.10.5 depuis Lyon Tunnel WireGuard établi, handshake < 2 min OK
RODC distant Auth utilisateur VPN coupé Auth locale via cache RODC OK
Tous les tests de validation ont été réalisés avec succès. Chaque service répond aux exigences de disponibilité, sécurité et redondance.

Bilan & Difficultés rencontrées

Compétences mobilisées

Architecture réseau
Segmentation VLAN, routage inter-VLAN, adressage IP
Sécurité réseau
Pare-feu pfSense, ACL, DMZ, VPN WireGuard
Haute disponibilité
CARP, pfsync, DHCP failover, load balancing
Supervision & SIEM
Zabbix, Wazuh, alerting, FIM

Difficultés rencontrées

Configuration CARP / pfsync

La synchronisation des états de connexion entre les deux nœuds pfSense a nécessité plusieurs itérations pour être stable. La configuration XMLRPC devait impérativement être effectuée uniquement depuis le nœud primaire.

Routage inter-VLAN et règles pare-feu

La mise en place des ACL entre VLANs a demandé une compréhension fine du flux de données. Des ouvertures spécifiques (DNS, DHCP relay) étaient nécessaires pour que les services fonctionnent correctement tout en maintenant l'isolation.

Nextcloud Talk — Serveur TURN

La communication audio/vidéo nécessitait un certificat SSL et un serveur TURN (Coturn) correctement configuré. Le secret partagé et les ports UDP devaient être ouverts à travers le pare-feu.

Wazuh — Déploiement agents Windows

L'enrôlement des agents Wazuh sur les contrôleurs de domaine Windows Server a nécessité l'ouverture de ports spécifiques (1514, 1515) et la configuration correcte de l'adresse du manager.

VPN site à site (WireGuard)

La mise en place du tunnel WireGuard a nécessité la création manuelle de la gateway (pfSense ne la crée pas automatiquement pour une interface statique) et la configuration du keepalive (25 s) côté Lyon. La clé privée doit être copiée manuellement sur PFSENSE-02, XMLRPC ne synchronisant pas WireGuard.

Bilan

Points forts du projet

  • Architecture entièrement redondante : pas de SPOF (Single Point of Failure) sur les composants critiques
  • Segmentation réseau rigoureuse limitant la surface d'attaque
  • Supervision et sécurité proactives via Zabbix et Wazuh
  • Environnement collaboratif complet (Nextcloud, GLPI) intégré à l'annuaire AD
  • Multi-sites avec résilience (RODC pour authentification locale en cas de perte VPN)

Évolutions envisagées

  • Couverture Wazuh VLAN 20 (postes clients) : déploiement des agents via GPO (Computer Startup Script), à prioriser pour la détection ransomware. Non réalisé dans ce projet faute de temps, mais la GPO de déploiement est prête.
  • Couverture Wazuh VLAN 40 (postes IT) : déploiement manuel ou via GPO sur les postes administrateurs — prioritaire car ce sont les comptes à hauts privilèges. À réaliser en priorité après la mise en production.
  • Migration vers des certificats Let's Encrypt (remplacement des auto-signés)
  • Mise en place d'un PRA (Plan de Reprise d'Activité) formalisé
  • Déploiement de la sauvegarde automatisée (Veeam / scripts rsync)
  • Passage en HTTPS forcé sur l'ensemble des services web internes

Mise en place d'une haute disponibilité pfSense avec basculement automatique et politique de filtrage ACL Documenté

Contexte et enjeux

Cadre NexaGroup

NexaGroup héberge ses services critiques (AD, BDD, Nextcloud, SIEM) en interne. Une coupure du pare-feu entraînerait une interruption totale des accès réseau pour les 75 collaborateurs. La direction a exigé une disponibilité minimale de 99,9 % sur le périmètre réseau.

La solution retenue est un cluster pfSense en haute disponibilité actif/passif (CARP, synchronisation d’état et de configuration), complété par une politique de filtrage ACL stricte entre VLANs pour réduire la surface d’attaque tout en assurant les flux métier.

Compétences SISR couvertes

Compétences mobilisées : bloc B3 (administration des réseaux), bloc B4 (cybersécurité — pare-feu, politique de sécurité).

Bloc SISR Compétence Comment cette réalisation la couvre
B3 Administration des réseaux (routage, segmentation, haute disponibilité) Déploiement du cluster pfSense, interfaces VLAN, VIP CARP, adressage cohérent avec le plan IP, tests de basculement et validation de continuité de service.
B4 Cybersécurité — pare-feu, politique de sécurité Définition du principe de filtrage, règles ACL par zone, usage d’aliases, journalisation des décisions de filtrage pour audit et détection d’anomalies.

Architecture HA pfSense

Le cluster repose sur trois mécanismes complémentaires : adresse virtuelle partagée, réplication des états de session et synchronisation de la configuration.

CARP

Common Address Redundancy Protocol : une VIP flottante (ex. .254 par VLAN) assure la passerelle par défaut ; en cas de panne du nœud maître, le secondaire prend le relais avec un délai de convergence court.

pfsync

Synchronisation des états de connexion (firewall states) entre les nœuds via l’interface dédiée SYNC, afin de limiter la perte de sessions actives lors d’un failover.

XMLRPC

Réplication de configuration (règles, NAT, VIPs, DHCP…) depuis le nœud primaire vers le secondaire ; toute modification opérationnelle s’effectue uniquement sur le maître pour éviter les divergences.

Adressage des nœuds (exemple VLAN infrastructure VLAN 10)

Les IP réelles des appliances sont en fin de subnet ; la VIP CARP sert de passerelle pour les clients et serveurs du VLAN.

Rôle Hôte Adresse IPv4
Maître (MASTER) SRV-PFSENSE-01 192.168.10.253
Sauvegarde (BACKUP) SRV-PFSENSE-02 192.168.10.252
VIP CARP (passerelle) 192.168.10.254
Lien de synchronisation dédié : le trafic pfsync, XMLRPC et heartbeat est isolé sur le segment 10.0.0.0/29 (adresses typiques 10.0.0.2 / 10.0.0.3 sur l’interface SYNC), sans exposition vers les VLANs métier — conformément au schéma décrit dans la fiche « Cluster pfSense HA » du présent document.

Politique de filtrage ACL

Principe appliqué : politique de type « deny all, permit by exception » — tout trafic non explicitement autorisé est bloqué. Les règles sont ordonnées du plus spécifique au plus général ; une règle finale « deny any » matérialise le refus par défaut sur chaque interface concernée.

Règles ACL principales (extrait représentatif)

/td>
Source (VLAN) Destination (VLAN / zone) Protocoles / ports Action Commentaire
VLAN 20 / VLAN 60 (postes clients) VLAN 10 (AD / DNS) DNS 53 TCP/UDP ; Kerberos ; LDAP/LDAPS Autoriser Authentification et résolution de noms
VLAN 20 VLAN 10 (BDD) TCP 3306 (MariaDB) depuis alias Serveurs_Applicatifs uniquement (SRV-GLPI .25, SRV-NEXTCLOUD .35, SRV-ZABBIX .20) Autoriser Accès BDD restreint aux serveurs applicatifs uniquement — jamais depuis les postes clients VLAN 20
VLAN 30 (DMZ) VLAN 10 (Nextcloud, GLPI, Zabbix) HTTPS 443 ; ports DB selon service Autoriser Flux retour DMZ vers backends internes
VLAN 40 (administration) VLAN 10 / VLAN 30 / VLAN 50 RDP 3389 ; SSH 22 ; HTTPS consoles Autoriser Administration restreinte aux postes IT
VLAN 10 (serveurs) Internet (WAN) HTTPS 443 ; NTP 123 UDP (sortant) Autoriser Mises à jour et synchronisation temps
Tout VLAN métier Autre VLAN (non listé) Tout Bloquer Isolation par défaut entre zones

Aliases pfSense (groupes IP et ports)

Les règles s’appuient sur des aliases (Firewall → Aliases) pour rester lisibles et maintenables :

  • Alias réseau / hôte : par exemple NET_SRV_AD, NET_DMZ, HOST_SRV_BDD — regroupement des sous-réseaux ou hôtes autorisés.
  • Alias de ports : par exemple P_MYSQL (3306), P_AD_CORE (DNS, Kerberos, LDAP) — réutilisables sur plusieurs règles homogènes.

Toute nouvelle ouverture passe par la mise à jour d’un alias ou l’ajout d’une règle documentée, puis la synchronisation XMLRPC vers le nœud secondaire.

Journaux de filtrage : la journalisation des correspondances de règles (allow/deny) est activée sur les ACL sensibles ; les logs pfSense alimentent la supervision et permettent de vérifier les flux effectifs, d’auditer les changements et d’investiger des tentatives bloquées.

Tests et validation

Déroulement (jalons)

Constitution du cluster HA

Installation des deux nœuds, interface SYNC sur 10.0.0.0/29, paramétrage CARP par VLAN et vérification des rôles MASTER / BACKUP.

Synchronisation des règles et de la configuration

Configuration XMLRPC depuis le primaire ; contrôle que règles, VIPs et aliases sont identiques sur le secondaire après push.

Test de failover

Coupure ou suspension du nœud maître pendant un ping continu vers Internet : perte limitée à quelques paquets, reprise via le backup et maintien des sessions grâce à pfsync.

Validation des ACL

Scénarios par VLAN : flux attendus autorisés, flux non prévus refusés (inter-VLAN), contrôle depuis la DMZ et depuis les postes clients.

Vérification des journaux

Contrôle des entrées de filtrage sur les règles critiques ; cohérence avec les tests réalisés et absence d’ouvertures involontaires.

Résultats des tests

Basculement automatique
Failover CARP validé, convergence conforme au cahier des charges
✅ OK
Synchronisation des règles
XMLRPC — règles et aliases alignés sur les deux nœuds
✅ OK
Isolation VLAN
Refus par défaut ; exceptions fonctionnelles uniquement
✅ OK
Journaux actifs
Traçabilité des décisions de filtrage opérationnelle
✅ OK

Aliases pfSense — Méthodologie et mise en œuvre

Pourquoi utiliser des aliases ?

Un alias dans pfSense est l'équivalent d'une variable nommée pour une IP, un réseau ou un port. Au lieu d'écrire 192.168.10.5 et 192.168.10.10 dans chaque règle, on crée une fois l'alias HOST_AD et on l'utilise partout. Si l'IP d'un serveur change, une seule modification met à jour toutes les règles qui le référencent.

Cette approche est une bonne pratique d'administration réseau qui rend la politique de filtrage lisible, auditable et maintenable — trois critères attendus par le jury E6.

Ordre de création obligatoire : Hosts → Networks → Ports. Les aliases sont créés dans Firewall → Aliases → Add avant toute règle.

Aliases Hosts — Serveurs individuels

Nom de l'AliasTypeContenuJustification
HOST_ADHost192.168.10.5 / 192.168.10.10AD01 + AD02 regroupés — toujours ciblés ensemble dans les règles d'authentification. Remplace deux aliases séparés.
Serveur_WEBHost192.168.30.21 / 192.168.30.22WEB1 + WEB2 — backends Apache DMZ, toujours traités ensemble par le load balancer.
pfsense_SYNCHost10.0.0.2 / 10.0.0.3PF01 + PF02 IPs SYNC — utilisé pour les règles CARP, pfsync et XMLRPC entre nœuds HA.
Serveur_ZABBIXHost192.168.10.20SRV-ZABBIX — supervision Zabbix 7.0.23 LTS.
Serveur_GLPIHost192.168.10.25SRV-GLPI — helpdesk et inventaire. Accessible depuis VLAN 20, 40 et 60 avec des règles différentes.
Serveur_BDDHost192.168.10.30SRV-BDD — MariaDB centralisé. Accès très restreint (serveurs applicatifs uniquement, port 3306).
Serveur_NEXTCLOUDHost192.168.10.35SRV-NEXTCLOUD — cloud privé + Talk. Port TURN 3478 spécifique à ce serveur.
Serveur_WAZUHHost192.168.10.40SRV-WAZUH — manager SIEM. Reçoit syslog (514/UDP) + agents (1514/1515).
Serveur_RPROXYHost192.168.30.10SRV-RPROXY — seul point d'entrée Internet exposé. Alias critique pour la règle WAN.
Serveur_AD_LOCALHost192.168.50.5AD-HERO RODC site Lyon — contrôleur lecture seule. Utilisé dans les règles WG_TUNNEL.
WG_DISTANTHost10.100.0.2pfSense Lyon — IP tunnel WireGuard point-à-point. Source autorisée sur SIM_WAN.

Aliases Networks — Sous-réseaux

Nom de l'AliasTypeContenuJustification
Reseau_SERVEURNetwork192.168.10.0/24VLAN 10 — tous serveurs infrastructure Paris.
Reseau_CLIENTSNetwork192.168.20.0/24VLAN 20 — postes clients utilisateurs Paris.
Reseau_DMZNetwork192.168.30.0/24VLAN 30 — zone démilitarisée.
Reseau_ITNetwork192.168.40.0/24VLAN 40 — département IT / administration réseau.
Reseau_SERVEUR_DISTANTNetwork192.168.50.0/24VLAN 50 — infrastructure distante Lyon (RODC).
Reseau_CLIENTS_DISTANTNetwork192.168.60.0/24VLAN 60 — postes clients distants Lyon.
Reseau_DISTANTNetwork192.168.50.0/24 + 192.168.60.0/24VLANs 50+60 regroupés — tout le site Lyon. Utilisé dans les règles WG_TUNNEL.
Reseau_SYNCNetwork10.0.0.0/29Réseau SYNC/Heartbeat pfSense HA.
Reseau_SIM_WANNetwork203.0.113.0/29Segment WAN simulé VMnet5 — liaison inter-pfSense pour WireGuard.

Aliases Ports — Services réseau

Nom de l'AliasPortsJustification
P_AD_CORE53, 88, 389, 636Coeur Active Directory : DNS, Kerberos, LDAP, LDAPS — utilisé dans toutes les règles d'authentification clients vers AD.
P_AD_REPL135, 445, 49152-65535Réplication AD : RPC Endpoint (135), SMB (445), ports RPC dynamiques (49152-65535). Ces ports dynamiques sont indispensables — sans eux la réplication AD entre Paris et le RODC Lyon est instable.
P_SMB135, 139, 445Partage fichiers Windows SMB — RPC Endpoint, NetBIOS Session, SMB. Nécessaire pour l'accès aux partages réseau depuis les postes clients.
P_HTTPS443HTTPS uniquement — accès sécurisé aux interfaces web (GLPI, Nextcloud, Zabbix, Wazuh dashboard).
P_WEB80, 443HTTP + HTTPS — navigation web et accès intranet via reverse proxy.
P_SSH_RDP22, 3389SSH + RDP regroupés — administration distante depuis VLAN IT. Toujours ouverts ensemble.
P_ZABBIX10050, 10051Zabbix agent passif (10050) + trapper serveur (10051).
P_WAZUH1514, 1515Wazuh agent communication (1514) + enrôlement (1515).
P_MYSQL3306MariaDB — accès base de données restreint aux serveurs applicatifs.
P_NTP123NTP UDP — synchronisation horloge. Critique pour Kerberos : tolérance maximale de 5 minutes de décalage.
P_SYSLOG514Syslog UDP — envoi des logs pfSense vers SRV-WAZUH (intégration SIEM).
P_WIREGUARD51820WireGuard UDP — tunnel VPN site-à-site Paris et Lyon.
P_SNMP161SNMP UDP — supervision pfSense HA depuis SRV-ZABBIX (état CARP).
P_VNC5900VNC — accès bureau distant postes clients (GPO pare-feu déployée).

Règles pare-feu — pfSense Paris (PF01/PF02)

Règle fondamentale : toutes les modifications sont effectuées exclusivement sur PF01 (MASTER). XMLRPC synchronise automatiquement vers PF02. Modifier sur PF02 risque d'être écrasé au prochain push du primaire.
Logique pfSense : l'interface = l'interface d'où vient le paquet (source). pfSense lit les règles de haut en bas et s'arrête à la première correspondance. Le DEFAULT DENY est toujours en dernière position avec log activé.

LAN_SRV — VLAN 10 Serveurs

SourceDestinationPort / ServiceProtoActionJustification
Reseau_SERVEURServeur_ADP_NTPUDPALLOWNTP tous serveurs VLAN 10 vers AD01. Critique pour Kerberos (moins de 5 min de décalage).
Reseau_SERVEURany80, 443, 53TCP/UDPALLOWMises à jour (apt), DNS externe et accès Internet pour les serveurs VLAN 10.
*Reseau_SERVEURICMPICMPALLOWPing intra-VLAN 10 — diagnostics et supervision réplication AD.
Serveur_ADServeur_AD_LOCALP_AD_REPLTCPALLOWRéplication AD Paris vers RODC Lyon — inclut les ports RPC dynamiques 49152-65535.
Serveur_ZABBIXReseau_DMZ / Reseau_CLIENTS / Reseau_IT / Serveur_AD_LOCALP_ZABBIXTCPALLOWZabbix collecte agents sur tous les VLANs (mode passif).
Serveur_ZABBIXpfsense_SYNCP_SNMPUDPALLOWSupervision pfSense HA via SNMP — état CARP, interfaces, charge CPU.
Serveur_WAZUHReseau_SERVEUR / Reseau_DMZ / Reseau_SERVEUR_DISTANTP_WAZUHTCPALLOWWazuh collecte agents sur VLAN 10, DMZ et VLAN 50 (RODC Lyon).
Serveur_WAZUHpfsense_SYNCP_SYSLOGUDPALLOWSyslog pfSense PF01+PF02 vers Wazuh SIEM — alimentation temps réel.
****DENY + LOGDEFAULT DENY — tout flux non autorisé depuis VLAN 10 est bloqué et loggé.

LAN_CLT — VLAN 20 Clients

La règle DENY Reseau_SERVEUR est placée avant la règle Navigation Internet pour bloquer l'accès direct aux dashboards Zabbix/Wazuh (port 443), tout en laissant passer Nextcloud et GLPI grâce à leurs règles spécifiques placées au-dessus.
SourceDestinationPort / ServiceProtoActionJustification
Reseau_CLIENTSHOST_ADP_AD_CORETCP/UDPALLOWAuth AD + DNS depuis postes clients (Kerberos, LDAP, DNS).
Reseau_CLIENTSHOST_AD67 (DHCP)UDPALLOWDHCP relay vers contrôleurs de domaine.
Reseau_CLIENTSHOST_ADP_SMBTCPALLOWAccès serveur de fichiers — SMB (135, 139, 445) nécessaire pour les partages réseau Windows.
Reseau_CLIENTSServeur_NEXTCLOUDP_HTTPS + 3478TCP/UDPALLOWNextcloud cloud privé + Talk (port TURN 3478 pour la visioconférence).
Reseau_CLIENTSServeur_GLPIP_HTTPSTCPALLOWGLPI helpdesk — déclaration de tickets par les utilisateurs.
Reseau_CLIENTSServeur_RPROXYP_WEBTCPALLOWIntranet NexaGroup via reverse proxy Nginx.
Reseau_CLIENTSReseau_SERVEUR**DENY + LOGBloquer l'accès direct VLAN 10 non autorisé (Zabbix, Wazuh) — placé avant la règle Internet.
Reseau_CLIENTSanyP_WEBTCPALLOWNavigation Internet via pfSense.
****DENY + LOGDEFAULT DENY — tout flux non autorisé depuis VLAN 20.

LAN_DMZ — VLAN 30 DMZ

Principe de la DMZ NexaGroup

Le reverse proxy est le seul point d'entrée Internet. Il distribue uniquement vers WEB1/WEB2 (serveurs statiques sans lien BDD). Il ne proxifie pas Nextcloud ou GLPI — ces services sont accessibles directement depuis les clients internes.

SourceDestinationPort / ServiceProtoActionJustification
Reseau_DMZServeur_ZABBIXP_ZABBIXTCPALLOWAgents Zabbix sur serveurs DMZ vers serveur Zabbix Paris.
Reseau_DMZServeur_WAZUHP_WAZUHTCPALLOWAgents Wazuh sur serveurs DMZ vers manager SIEM Paris.
Serveur_RPROXYServeur_WEBP_WEBTCPALLOWLoad balancing RPROXY vers WEB1+WEB2 (algorithme least_conn).
****DENY + LOGDEFAULT DENY — DMZ totalement isolée, aucun autre flux autorisé.

LAN_IT — VLAN 40 Administration

SourceDestinationPort / ServiceProtoActionJustification
Reseau_ITReseau_SERVEURanyanyALLOWAccès complet IT à tous les serveurs VLAN 10 — administration système.
Reseau_ITpfsense_SYNC22 (SSH)TCPALLOWSSH pfSense PF01+PF02 depuis VLAN IT.
Reseau_ITReseau_CLIENTS / Reseau_DMZ / Reseau_DISTANTP_SSH_RDPTCPALLOWPrise en main distante postes clients (VLANs 20, 30, 50, 60).
Reseau_ITReseau_SYNCP_HTTPSTCPALLOWInterface web pfSense — HTTPS uniquement (HTTP 80 supprimé).
Reseau_ITServeur_WAZUH / Serveur_ZABBIX / Serveur_NEXTCLOUD / Serveur_GLPIP_HTTPSTCPALLOWAccès dashboards d'administration (Wazuh, Zabbix) et services internes depuis postes IT.
Reseau_ITanyP_WEBTCPALLOWNavigation Internet IT — mises à jour, documentation.
****DENY + LOGDEFAULT DENY — VLAN IT isolé de tout accès entrant non sollicité.

WG_TUNNEL — Trafic site distant Lyon (VLAN 50 + VLAN 60)

SourceDestinationPort / ServiceProtoActionJustification
Reseau_SERVEUR_DISTANTHOST_ADP_AD_REPLTCPALLOWRéplication AD RODC Lyon et AD Paris — ports RPC dynamiques 49152-65535 inclus dans P_AD_REPL.
Serveur_AD_LOCALHOST_ADP_AD_CORE + P_NTPTCP/UDPALLOWAuth Kerberos, LDAP et NTP depuis RODC vers AD Paris.
Reseau_CLIENTS_DISTANTHOST_ADP_AD_CORE + P_SMBTCP/UDPALLOWAuth AD + accès partage de fichiers depuis clients Lyon.
Reseau_CLIENTS_DISTANTServeur_NEXTCLOUD / Serveur_GLPI / Serveur_RPROXYP_HTTPS + 3478TCPALLOWAccès services Paris depuis clients Lyon — Nextcloud, GLPI, intranet.
Reseau_DISTANTServeur_ZABBIX / Serveur_WAZUHP_ZABBIX + P_WAZUH + P_SYSLOGTCP/UDPALLOWAgents Zabbix et Wazuh depuis Lyon — supervision et SIEM.
****DENY + LOGDEFAULT DENY — isoler les flux non autorisés depuis le tunnel.

SIM_WAN et WAN

InterfaceSourceDestinationPortProtoActionJustification
SIM_WANWG_DISTANTReseau_SIM_WANP_WIREGUARD (51820)UDPALLOWTunnel WireGuard entrant pfSense Lyon vers Paris. Authentification Curve25519.
SIM_WAN****DENY + LOGDEFAULT DENY SIM_WAN — aucun autre flux sur ce segment VMnet5.
WANanyServeur_RPROXYP_WEB (80, 443)TCPALLOWSeul point d'entrée Internet — reverse proxy Nginx. WEB1/WEB2 jamais exposés directement.
WAN****DENY + LOGDEFAULT DENY WAN — tout autre flux entrant bloqué et loggé pour Wazuh.

Règles pare-feu — pfSense Lyon (Site distant)

Particularités du pfSense Lyon

pfSense Lyon est standalone — pas de cluster HA, pas de XMLRPC. La priorité est la résilience locale : l'authentification via le RODC local fonctionne même si le tunnel WireGuard est coupé.

VLAN50 — RODC Lyon

SourceDestinationPort / ServiceProtoActionJustification
Serveur_AD_LOCALHOST_ADP_AD_CORE + P_AD_REPL + P_SMB + P_NTPTCP/UDPALLOWRéplication AD bidirectionnelle complète — DNS, Kerberos, LDAP, RPC dynamiques, SYSVOL/NETLOGON via SMB.
Reseau_SERVEUR_DISTANTServeur_GLPI / Serveur_NEXTCLOUD / Serveur_ZABBIX / Serveur_WAZUHP_HTTPS + P_ZABBIX + P_WAZUHTCPALLOWAccès services Paris et agents supervision/SIEM depuis infra Lyon.
Reseau_SERVEUR_DISTANTanyP_WEB + P_NTPTCP/UDPALLOWMises à jour + NTP externe en secours si AD Paris indisponible.
****DENY + LOGDEFAULT DENY VLAN 50.

VLAN60 — Clients distants Lyon

Résilience VPN coupé : les règles d'authentification locale via le RODC sont placées en premier. Si le tunnel WireGuard tombe, les postes clients Lyon s'authentifient et résolvent les noms localement sans dépendance à Paris.
SourceDestinationPort / ServiceProtoActionJustification
Reseau_CLIENTS_DISTANTServeur_AD_LOCALP_AD_CORE + P_NTPTCP/UDPALLOWAuth AD locale via RODC — DNS, Kerberos, LDAP. Fonctionne même si VPN coupé.
Reseau_CLIENTS_DISTANTHOST_ADP_AD_CORE + P_SMBTCP/UDPALLOWAuth AD Paris en secours + accès partage de fichiers AD Paris via tunnel.
Reseau_CLIENTS_DISTANTServeur_GLPI / Serveur_NEXTCLOUD / Serveur_RPROXYP_HTTPS + 3478TCPALLOWGLPI helpdesk, Nextcloud (+ Talk TURN), intranet Paris via RPROXY.
Reseau_CLIENTS_DISTANTanyP_WEB + P_NTPTCP/UDPALLOWNavigation Internet via pfSense Lyon + NTP externe en secours.
****DENY + LOGDEFAULT DENY VLAN 60.

Bilan

Difficultés rencontrées et solutions apportées

  • Stabilité pfsync / ordre des règles SYNC — des pertes d’état ont été observées tant que l’interface dédiée n’était pas explicitement exemptée de filtrage strict ; solution : règles dédiées « allow any » entre nœuds uniquement sur SYNC, sans exposition LAN.
  • Conflits CARP (skew, VHID) — mauvais paramétrage du skew ou VHID dupliqué sur deux VLANs ; solution : grille de VHIDs unique par segment et skew 0 / 100 maître-esclave documentée.
  • Complexité des ACL inter-VLAN — oublis initiaux (DNS, temps, flux DMZ) ; solution : matrice source/destination + aliases, revue croisée avec les besoins métiers avant passage en production.
  • Double administration XMLRPC — tentatives de modification sur le secondaire ; solution : procédure interne : édition uniquement sur le primaire, puis vérification de sync et de sauvegarde de configuration.

Déploiement et configuration d'un SIEM Wazuh pour la supervision de la sécurité du SI NexaGroup Documenté

Contexte et enjeux

Cadre NexaGroup

NexaGroup traite des données clients sensibles et fait face à des menaces croissantes : tentatives de connexion abusives, élévations de privilèges suspectes, accès hors profil. La DSI a décidé de déployer un SIEM pour centraliser les journaux, détecter les comportements anormaux en temps réel et disposer d'une capacité structurée de réponse sur incident.

Wazuh a été retenu pour son intégration native avec les agents Windows et Linux, sa corrélation embarquée et son tableau de bord OpenSearch, aligné avec les besoins de supervision sécurité du SI NexaGroup.

Compétences SISR couvertes

Compétences mobilisées : bloc B4 (cybersécurité — détection d'intrusion, analyse de logs, politique de sécurité), bloc B2 (administration des systèmes).

Bloc SISR Compétence Comment cette réalisation la couvre
B4 Cybersécurité — détection d'intrusion, analyse de logs, politique de sécurité Définition de règles de corrélation, seuils d'alerte, catégorisation par sévérité ; exploitation des événements Windows/Linux ; alignement avec la politique de journalisation et les procédures de réponse.
B2 Administration des systèmes Déploiement du manager Wazuh sur SRV-WAZUH, installation et paramétrage des agents sur serveurs AD, BDD, Nextcloud et postes clients ; durcissement des flux (pare-feu, ports agents) et validation de bout en bout.

Indicateurs clés du déploiement

5
Agents déployés
AD01 · AD02 · BDD · Nextcloud · postes VLAN 20
8
Règles personnalisées
Règles métier NexaGroup (SSH, AD, Linux, horaires)
3
Niveaux d'alerte actifs
Critique (12–15) · Élevé (9–11) · Moyen (7–8)
1
Serveur SIEM
SRV-WAZUH · VLAN 10

Architecture Wazuh

Le manager centralise les événements, applique les règles et alimente le dashboard ; les agents collectent les logs et l'état des systèmes sur le périmètre supervisé.

Schéma logique (flux manager ↔ agents)

Composant Hôte / périmètre Réseau
Manager Wazuh (indexation, règles, API) SRV-WAZUH VLAN 10
Agents (collecte) SRV-AD01, SRV-AD02, SRV-BDD, SRV-NEXTCLOUD, serveurs DMZ et site distant VLAN 10 · VLAN 30 · VLAN 50

Flux : SRV-WAZUH VLAN 10 → agents sur SRV-AD01, SRV-AD02, SRV-BDD, SRV-NEXTCLOUD, serveurs DMZ/VLAN 30 et serveurs site distant/VLAN 50 (enrôlement, heartbeats, événements sécurité).

État des agents

SRV-AD01
Agent Wazuh — contrôleur Active Directory
Actif
SRV-AD02
Agent Wazuh — contrôleur Active Directory
Actif
SRV-BDD
Agent Wazuh — serveur de bases de données
Actif
SRV-NEXTCLOUD
Agent Wazuh — collaboration et fichiers
Actif
Postes clients
Agents non déployés sur le parc VLAN 20
À déployer
Ports utilisés : communication agents — 1514 TCP/UDP (enregistrement et envoi des événements vers le manager) ; accès opérateurs au dashboard Wazuh/OpenSearch — 443 HTTPS. Les flux sont restreints par le pare-feu (autorisation explicite depuis les segments autorisés vers SRV-WAZUH).

Règles d'alertes personnalisées

Les règles ci-dessous complètent le catalogue Wazuh pour refléter le contexte NexaGroup (exposition SSH, AD, serveurs Linux).

ID règle Description Niveau de sévérité Déclencheur
NXG-100001 Brute force SSH détectée 10 ≥ 8 échecs d'authentification SSH sur un même hôte en 120 s
NXG-100002 Création de compte administrateur inattendue 12 Événement sécurité Windows : ajout au groupe « Administrateurs » hors fenêtre de changement
NXG-100003 Modification du fichier /etc/passwd 9 Alerte intégrité (Syscheck) ou audit Linux sur chemin critique
NXG-100004 Connexion interactive hors horaires ouvrés 7 Session SSH ou RDP établie en dehors de la plage 07:00–20:00 (jours ouvrés)
NXG-100005 Échecs Kerberos répétés sur compte sensible 8 Seuil d'échecs Pre-Authentication sur comptes du service AD
NXG-100006 Commande sudo hors profil sur serveur Linux 9 Journal auth.log : sudo par utilisateur non autorisé sur l'hôte
NXG-100007 Changement de stratégie de mot de passe AD 11 Audit GPO / événement de modification policy sur contrôleur
NXG-100008 Agent Wazuh déconnecté > 15 minutes 7 Perte de heartbeats : risque de trou de visibilité sur l'hôte
Niveaux de sévérité Wazuh : l'échelle va de 0 (faible) à 15 (maximum). Les niveaux élevés (10–15) doivent déclencher une prise en charge prioritaire ; les niveaux intermédiaires (7–9) relèvent d'une analyse de routine ou d'un affinement des seuils pour limiter le bruit.

Procédure de réponse à un incident

La chaîne ci-dessous formalise le traitement d'une alerte SIEM, de la détection à la remédiation.

Détection de l'alerte

Le manager Wazuh lève une alerte (ex. règle NXG-100001 — brute force SSH) sur SRV-AD01 ; notification dans le dashboard et file d'incidents.

Qualification

L'équipe SOC / IT vérifie la criticité, la source IP, l'historique et écarte les faux positifs (maintenance, scanner autorisé).

Isolation

Si menace confirmée : blocage temporaire à la source (ACL pare-feu), désactivation de compte ou segmentation du serveur concerné selon la matrice de réponse.

Investigation

Analyse des journaux corrélés (auth, Windows Security, commandes), conservation des preuves, recherche d'indicateurs de persistance ou de mouvement latéral.

Remédiation

Correction (patch, durcissement SSH, réinitialisation de compte), mise à jour des règles si besoin, clôture documentée dans le ticket et retour d'expérience.

Tests et validation

Réception des logs agents
Événements visibles sur le manager pour tous les agents enrôlés
✅ OK
Alertes brute force
Scénario de test SSH : alerte NXG-100001 générée conformément au seuil
✅ OK
Dashboard opérationnel
OpenSearch / Wazuh UI accessibles en HTTPS, visualisations à jour
✅ OK
Corrélation d'événements
Règles composites : même attaquant / plusieurs hôtes détectés dans la même fenêtre
✅ OK

Bilan

Difficultés rencontrées et solutions apportées

  • Mémoire JVM / heap OpenSearch — risque d'instabilité lors des pics d'indexation ; solution : dimensionnement du heap (-Xms / -Xmx), monitoring des nœuds et limitation du rétention des index chauds.
  • Intégration Filebeat / parsing des logs — champs mal normalisés pour certains services ; solution : ajustement des modules, grok / decodeurs documentés et jeux de tests sur des échantillons réels.
  • Pare-feu UFW / chemins réseau — agents ne joignant pas le manager malgré service local OK ; solution : règles explicites 1514 TCP/UDP vers SRV-WAZUH, vérification depuis les VLANs VLAN 10 et VLAN 20, traçabilité dans la matrice ACL.