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.
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 10MariaDB (Base de données)
SRV-BDD — VLAN 10Nextcloud & Talk
SRV-NEXTCLOUD — VLAN 10SIEM Wazuh
SRV-WAZUH — VLAN 10GLPI (Helpdesk)
SRV-GLPI — VLAN 10Zabbix (Supervision)
SRV-ZABBIX — VLAN 10Reverse Proxy / Web
SRV-WEB1 / SRV-WEB2 / SRV-RPROXY — VLAN 30VPN site à site
pfSense WireGuard — Interconnexion Paris / LyonRé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 |
Présentation du projet
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 :
- Site principal — Paris : siège social, 55 salariés, hébergeant l’infrastructure principale.
- Site secondaire — Lyon : antenne régionale, 20 salariés, reliée au siège via VPN site-à-site.
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 :
- Assurer la haute disponibilité des services cœur (authentification, données, supervision) via des mécanismes de redondance.
- Renforcer la sécurité par une segmentation fine en VLAN et un contrôle centralisé des flux réseau.
- Améliorer la visibilité et la supervision de l’infrastructure (alertes, tableaux de bord, corrélation d’événements).
- Fournir des services collaboratifs modernes (partage de fichiers, visioconférence, helpdesk) aux équipes internes.
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
- Tout le trafic inter‑VLAN transite par le cluster pfSense (routage + filtrage L3/L4).
- Les flux entre VLAN 20 / 60 (postes) et VLAN 10 (serveurs) sont limités aux ports applicatifs nécessaires.
- La DMZ (VLAN 30) est isolée : aucun accès direct depuis les postes clients ; seuls des flux contrôlés vers les serveurs internes sont autorisés.
- Le site distant (VLAN 50/60) est joint via un tunnel VPN WireGuard chiffré, terminé sur les pare‑feux pfSense.
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.
Cluster Pare-feu HA (pfSense) En production
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)
- IP cible :
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ère | IPsec (IKEv2) | WireGuard | Dé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.
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.
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œud | IP WAN | IP tunnel WireGuard | Routes 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)
| Source | Destination | Ports / Protocole | Objectif |
|---|---|---|---|
| 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 test | Commande / Action | Résultat attendu | Statut |
|---|---|---|---|
| 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
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.pbest 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
| 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
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
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
- Groupe de Volume :
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_installationexé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
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
- Serveur Web : Apache2 + module SSL.
- PHP : apcu, gd, imagick, ldap, mysql, zip, intl
- Certificat SSL : Auto-signé (CN: nextcloud.barrault.pb) — requis pour Talk.
- Service TURN (Coturn) : Coïmplanté sur SRV-NEXTCLOUD, Port 3478, auth: static-auth-secret.
Base de données (sur SRV-BDD)
- Nom :
nextclouddb| Utilisateur :nc_user
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)
- Serveur LDAP :
192.168.10.5(Port 389) - Bind DN :
CN=SVC_Nextcloud,OU=NEXTCLOUD,OU=Groupe SERVICES,DC=barrault,DC=pb - Filtre utilisateurs : Groupe "Nextcloud Users"
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
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
- Stockage dédié : Second disque de 50 Go monté sur
/var/lib/wazuh-indexer. Point persistant via/etc/fstab. - Accès Dashboard :
https://wazuh.barrault.pb(Login: admin). Certificat auto-signé. - Données analysées : Journaux Windows (Sécurité/Système), Intégrité FIM, Vulnérabilités.
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) :
443/tcp: Interface Web (Dashboard)1514/tcp: Remontée des logs agents1515/tcp: Enrôlement des agents55000/tcp: API Wazuh514/udp: Réception Syslog (pfSense)
5. Composants Wazuh (Version 4.9)
| Composant | Rôle | Port |
|---|---|---|
| Wazuh Manager | Cœur de traitement, décodeur et moteur de règles | 1514 / 1515 |
| Wazuh Indexer | Stockage OpenSearch des alertes JSON | 9200 |
| Wazuh Dashboard | Interface web de visualisation | 443 |
Schéma d'architecture SIEM
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
| Source | Contenu | Valeur sécurité |
|---|---|---|
| filterlog | Paquets bloqués/autorisés, IP src/dst, interface | Détection d'intrusion réseau |
| authlog | Connexions GUI/SSH pfSense, succès/échecs | Détection brute-force admin |
| WireGuard | Tunnels VPN up/down, clients connectés | Supervision VLAN 50 et 60 |
| dhcpd | Baux DHCP alloués, adresses MAC | Détection rogue DHCP |
7. Couverture par VLAN
| VLAN | Machines cibles | Agents installés | Couverture |
|---|---|---|---|
| VLAN 10 | AD1, AD2, Zabbix, GLPI, BDD, Nextcloud, Wazuh | 7 / 7 | 100 % |
| VLAN 20 | Postes clients (DHCP) | 0 | 0 % |
| VLAN 30 | SRV-WEB1, SRV-WEB2, SRV-RPROXY | 3 / 3 | 100 % |
| VLAN 40 | PC-Admin-001 | 0 / 1 | 0 % |
| VLAN 50 | AD-Distant, SRV-Local | 3 / 3 | 100 % |
| VLAN 60 | Clients VPN dynamiques | N/A | Via pfSense |
| pfSense | Routeurs 10.0.0.2 / 10.0.0.3 | Via Syslog | Configuré |
8. Matrice de risque
| Zone | Risque | Cause | Impact |
|---|---|---|---|
| Clients | IMPORTANT | Aucun agent déployé | Ransomware invisible |
| IT | IMPORTANT | Aucun agent déployé | Comptes admin non surveillés |
| Serveurs | FAIBLE | Agents déployés sur tous les serveurs | Couverture SIEM élevée |
| DMZ | MODÉRÉ | Zone exposée, mais agents actifs | Risque réduit par monitoring |
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
- Créer l'enregistrement DNS
wazuh→192.168.10.40dans la zonebarrault.pb(sur SRV-AD01). - Accès :
https://wazuh.barrault.pb(certificat auto-signé).
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)
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
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
| Composant | Hôte | Adresse | Port |
|---|---|---|---|
| Frontend GLPI | SRV-GLPI | 192.168.10.25 | 80 / 443 |
| Base de données | SRV-BDD | 192.168.10.30 | 3306 |
| Annuaire LDAP | SRV-AD01/02 | 192.168.10.5 / 192.168.10.10 | 389 |
3. Paramétrage & Configuration
Pile applicative
- Serveur Web : Apache2 avec module PHP
- PHP : Extensions requises (curl, gd, intl, ldap, mysql, xml, zip, mbstring)
- Base de données : Externalisée sur SRV-BDD
(
192.168.10.30)- Base :
glpidb - Utilisateur :
glpi_user - Accès restreint depuis
192.168.10.25uniquement
- Base :
Intégration Active Directory
- Annuaire LDAP configuré vers
192.168.10.5(port 389) - Importation automatique des utilisateurs et groupes AD
- Authentification unique via les identifiants du domaine
barrault.pb
Fonctionnalités activées
- Inventaire automatique du parc (via agent GLPI / FusionInventory)
- Module Helpdesk : création et suivi de tickets par les utilisateurs
- Gestion des contrats, licences logicielles et fournisseurs
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
- Accès à l'interface web vérifié depuis les VLAN 20 et 40.
- Authentification LDAP fonctionnelle avec les comptes du domaine.
- Remontée d'inventaire automatique validée sur les postes clients.
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.
| Composant | Serveur hôte | Adresse IP | Port |
|---|---|---|---|
| Frontend Web | SRV-GLPI | 192.168.10.25 | 80 / 443 |
| Backend BDD | SRV-BDD | 192.168.10.30 | 3306 |
| Annuaire LDAP | SRV-AD01 | 192.168.10.5 | 389 |
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.
- Modules Apache :
mod_ssl,mod_rewrite,mod_headers - Certificat : RSA 2048 bits / SHA-256 — signé par la CA interne pfSense
- Port 80 : Redirection permanente (301) vers HTTPS
- Port 443 : SSLEngine on + HSTS activé (force l'utilisation HTTPS)
- DocumentRoot :
/var/www/html/glpi/public(obligatoire depuis GLPI 10) - Sessions PHP :
session.cookie_httponly = On(prévention XSS)
8. Configuration LDAP détaillée
- Serveur primaire :
192.168.10.5(SRV-AD01) — Port 389 - Serveur secondaire :
192.168.10.10(SRV-AD02) - BaseDN :
DC=barrault,DC=pb - Bind DN :
CN=glpi_bind,OU=Services,DC=barrault,DC=pb - Attribut login :
samaccountname - Filtre : Exclusion des comptes désactivés via
userAccountControl - Synchronisation : CRON quotidien à 03h00 via
glpi:ldap:synchronize_users
9. Inventaire automatisé (Agent GLPI)
- URL de collecte :
https://srv-glpi.barrault.pb/front/inventory.php - Postes clients (VLAN 20) : Déploiement automatisé via GPO (Startup Script)
- Serveurs (VLAN 10/30) : Déploiement via Ansible
- Périmètre : Matériel, logiciel, antivirus, volumes disques
10. Matrice des flux réseau
| Source | Destination | Port | Protocole | Description |
|---|---|---|---|---|
| VLAN 20 / 40 | SRV-GLPI | 443 | TCP | Accès interface Web (HTTPS) |
| SRV-GLPI | SRV-BDD | 3306 | TCP | Connexion base de données |
| SRV-GLPI | SRV-AD01/02 | 389 | TCP/UDP | Authentification LDAP |
| SRV-GLPI | Internet | 443 | TCP | Mises à jour & Marketplace |
Supervision (SRV-ZABBIX) En production
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
| Composant | Hôte | Adresse | Port |
|---|---|---|---|
| Zabbix Server | SRV-ZABBIX | 192.168.10.20 | 10051 |
| Frontend Web | SRV-ZABBIX | 192.168.10.20 | 443 |
| Base de données | SRV-BDD | 192.168.10.30 | 3306 |
3. Paramétrage & Configuration
Architecture
- Serveur Zabbix : Collecteur de métriques et moteur d'alertes
- Frontend Web : Apache2 + PHP (accès via
https://srv-zabbix.barrault.pb) - Base de données : Externalisée sur SRV-BDD
(
192.168.10.30)- Base :
zabbixdb - Utilisateur :
zabbix_user
- Base :
Schéma d'architecture monitoring
É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
- Installe
zabbix-agent2via le dépôt Zabbix correspondant à l'OS détecté. - Configure
/etc/zabbix/zabbix_agent2.conf(Server,ServerActive,Hostname). - Active et redémarre le service
zabbix-agent2(systemctl enable/restart). - Tente l'ajout automatique de l'hôte dans Zabbix via l'API (
hostgroup.get,template.get,host.create).
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)
Server=192.168.10.20(Autorise Zabbix à interroger l'agent)ServerActive=192.168.10.20(Pour les éléments actifs si configurés)Hostname=<FQDN_Machine>(Doit correspondre exactement au nom dans l'UI Zabbix)
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)
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
| Widget | Type | Objectif |
|---|---|---|
| CPU Utilisation | Top hosts by CPU | Classement des hôtes par charge |
| RAM Utilisation | Top hosts by memory | Identifier les saturations |
| Disponibilité hôtes | Host availability | UP / DOWN / Inconnu |
| Problèmes actifs | Problems | Alertes en cours |
| Carte réseau | Map | Topologie + état temps réel |
5. Modèles (Templates) et Déclencheurs (Triggers)
| Cible | Templates appliqués | Exemples de Triggers critiques |
|---|---|---|
| Windows Server (AD) | Windows by Zabbix agent, Active Directory by Zabbix agent | Service AD DS arrêté, CPU > 90% (5m) |
| Linux Server (BDD, Nextcloud) | Linux by Zabbix agent, MySQL by Zabbix agent, Apache by Zabbix | Espace libre / < 10%, MySQL est down |
| pfSense HA | pfSense SNMP | Interface WAN down, Haute disponibilité CARP status = Backup sur nœud principal |
6. Notifications et Alerting
- Média de notification : Email via relais SMTP interne (Postfix)
- Destinataires : Groupe IT (VLAN 40)
- Conditions de déclenchement : Uniquement pour les alertes de sévérité
HighetDisaster.
7. Plan d'Action & Matrice de Risque
| Risque identifié | Impact | Action Corrective (Zabbix) |
|---|---|---|
| Saturation disque de la BDD | Arrêt de la production (GLPI, Nextcloud) | Déclencheur sur espace /var/lib/mysql < 5Go avec escalade par SMS |
| Bascule inattendue pfSense | Indisponibilité temporaire / Split-brain | Supervision SNMP de l'état CARP et interface Heartbeat |
| Service Windows arrêté (AD) | Perte d'authentification | Template Active Directory vérifiant le statut des services clés (NTDS, DNS) |
8. Sécurité & Règles pare-feu
10050/tcp: Agent Zabbix (passif) — ouvert sur chaque hôte supervisé10051/tcp: Zabbix Server (trapper) — ouvert sur SRV-ZABBIX443/tcp: Frontend Web — depuis VLAN 40 uniquement161/udp: SNMP — interrogation des équipements réseau (pfSense)
9. Tests & Validation
- Remontée des métriques vérifiée pour tous les hôtes enregistrés dans l'interface Web.
- Déclenchement de triggers testé (simulation de charge CPU via
stress, espace disque faible). - Notifications par e-mail fonctionnelles reçues sur la boîte IT.
VLAN 20 — Clients Utilisateurs En production
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
| Paramètre | Valeur | Source |
|---|---|---|
| Plage DHCP | 192.168.20.10 → 192.168.20.200 | SRV-AD01 / SRV-AD02 |
| DNS distribué | 192.168.10.5 / 192.168.10.10 | DHCP Options |
| Gateway | 192.168.20.254 | VIP pfSense |
3. Sécurité
- Le trafic vers les autres VLAN est soumis à des ACL strictes dans pfSense.
- Filtrage internet sortant via proxy/pfSense.
Infrastructure Web & Reverse Proxy (DMZ) En production
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)
- VLAN 30 → VLAN 10 (192.168.10.5 + .10) : Port 53 TCP/UDP autorisé (DNS)
Règles pare-feu local
- SRV-RPROXY : Port 80 autorisé depuis réseau client
- SRV-WEB1/WEB2 : Port 80 autorisé UNIQUEMENT depuis
192.168.30.10.
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
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
| Flux | Destination | Ports | Objectif |
|---|---|---|---|
| Postes IT | Serveurs VLAN 10 | 22 / 3389 / 443 | Administration système |
| Postes IT | pfSense / Hyperviseurs | 443 | Gestion des infrastructures |
| Postes IT (RSAT) | Domaine barrault.pb | RPC / LDAP / Kerberos / SMB | Administration 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
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.pbest 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
| Caractéristique | Valeur sur AD-HERO |
|---|---|
| Type de DC | RODC (Read-Only Domain Controller) |
| Réplication | Unidirectionnelle (Paris → Lyon) |
| Cache de mots de passe | Uniquement pour les comptes autorisés (PRP) |
| DNS intégré | Zone barrault.pb répliquée localement |
| Catalogue global | Activé (accélère les authentifications) |
| Rôles FSMO | Aucun (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ètre | Valeur | Justification |
|---|---|---|
-ReadOnlyReplica:$true | Obligatoire | Définit le serveur comme RODC (lecture seule) |
-InstallDns:$true | Activé | Installe le DNS local répliqué depuis Paris |
-NoGlobalCatalog:$false | GC activé | Accélère les authentifications sans requête Paris |
-Force:$true | Redémarrage auto | Redé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é :
| Machine | DNS Primaire | DNS Secondaire | Raison |
|---|---|---|---|
| AD-HERO (RODC) | 127.0.0.1 | 192.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.
- Couper le tunnel WireGuard côté pfSense Lyon (désactiver temporairement le peer).
- Depuis un poste VLAN 60, vérifier la résolution :
nslookup barrault.pb→ doit répondre via 192.168.50.5. - Tenter une ouverture de session avec un compte du domaine → doit fonctionner via le cache RODC.
- 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
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 :
| Option | Avantages | Inconvénients |
|---|---|---|
| pfSense Lyon (retenu) | Fonctionne indépendamment du tunnel WireGuard. Continuité totale en cas de panne VPN. | — |
| SRV-AD01 Paris via DHCP Relay | Centralisé, 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ètre | Valeur | Commentaire |
|---|---|---|
| Enable | ✓ Activé | Activation du service DHCP |
| Range From | 192.168.60.10 | Début plage dynamique |
| Range To | 192.168.60.100 | 91 adresses disponibles |
| Gateway | 192.168.60.254 | Interface pfSense Lyon sur VLAN 60 |
| DNS Primaire | 192.168.50.5 | RODC AD-HERO (local, toujours disponible) |
| DNS Secondaire | 192.168.10.5 | SRV-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
| Port | Rôle | Mode | VLAN |
|---|---|---|---|
| Port 1 | Trunk vers pfSense Lyon | Tagged (trunk) | VLAN 50 + VLAN 60 |
| Port 2 | Access vers RODC AD-HERO | Untagged (access) | VLAN 50 uniquement |
| Port 3 | Access vers postes clients Lyon | Untagged (access) | VLAN 60 uniquement |
| Port 5 | Gestion switch (192.168.88.1) | Non configuré | — |
3.2 Configuration Ingress (Onglet VLAN)
| Paramètre | Port1 (Trunk) | Port2 (RODC) | Port3 (Clients) |
|---|---|---|---|
| VLAN Mode | enabled | enabled | enabled |
| VLAN Receive | only tagged | only untagged | only untagged |
| Default VLAN ID | 1 | 50 | 60 |
| Force VLAN ID | ☐ Non | ☑ Oui | ☑ Oui |
| VLAN Header (Egress) | leave as is | always strip | always 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
| Source | Destination | Chemin | Finalité |
|---|---|---|---|
| VLAN 60 | AD-HERO (VLAN 50) | LAN Lyon direct | Authentification locale (cache RODC) |
| VLAN 60 | SRV-AD01/02 Paris (VLAN 10) | Tunnel WireGuard | Auth AD + DNS (ports 53, 88, 389) |
| VLAN 60 | SRV-GLPI / SRV-NEXTCLOUD (VLAN 10) | Tunnel WireGuard | Helpdesk, fichiers (HTTPS 443) |
| VLAN 60 | SRV-WAZUH / SRV-ZABBIX (VLAN 10) | Tunnel WireGuard | SIEM, supervision (1514, 10050) |
| VLAN 60 | SRV-RPROXY (VLAN 30) | Tunnel WireGuard | Intranet, sites web publiés |
| Any | Any (non listé) | — | Block (deny-by-default) |
5. Diagnostic — Problèmes rencontrés lors du déploiement
| Problème | Symptôme | Cause | Solution |
|---|---|---|---|
| Interface parente incorrecte | Pas de ping vers 192.168.60.254 | VLAN60 configuré sur alc0 (WAN simulé) au lieu de ue1 | Modifier interface parente : alc0 → ue1 |
| Adaptateur USB déconnecté | ue1 : status no carrier | Adaptateur USB→RJ45 mal enfoncé | Débrancher/rebrancher, vérifier status: active |
| RSTP bloque le trafic | Ping intermittent, trames STP en capture | RSTP en phase Learning sur ports access | Dé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é
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.pbest 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
| Solution | Avantages | Inconvénients | Choix 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é :
- Création de la CA (Certificate Authority) interne : Génération d'une racine de confiance appelée "Infrastructure CA NexaGroup" via System > Cert. Manager > CAs.
- Génération des certificats serveurs : Création d'un certificat pour chaque service nécessitant du HTTPS, en signant avec notre CA interne. L'identifiant Common Name (CN) correspond au FQDN du service (ex:
glpi.barrault.pb). - Distribution : La CA Root a été exportée (format
.crt) puis intégrée dans le dépôt Autorités de certification racines de confiance des postes clients via GPO AD, évitant ainsi les alertes de sécurité du navigateur.
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).
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
6. Difficultés rencontrées et remédiation
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
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.
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é
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éthode | Avantages | Inconvénients |
|---|---|---|
| Configuration manuelle poste par poste | Rapide sur 1 poste | Non scalable (75 postes), écrasé au prochain gpupdate, oublis garantis |
| Script PowerShell de déploiement | Scriptable | Nécessite exécution privilégiée, pas de rollback natif |
| GPO de domaine (retenu) | Automatique, centralisé, auditable, rollback simple | Un 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
- Ouvrir
gpmc.mscsur SRV-AD01 (192.168.10.5) - Clic droit sur
barrault.pb→ Create a GPO in this domain - Nommer la GPO :
GPO - Parefeu Regles Entrant - 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 Rules → New Rule
| Paramètre | Valeur |
|---|---|
| Rule Type | Port |
| Protocol | TCP |
| Local Port | 5900 |
| Action | Allow the connection |
| Profile | Domain + Private |
| Name | VNC - Accès distant 5900 |
4. Règle 2 — ICMP Echo Request (ping entrant)
Clic droit sur Inbound Rules → New Rule
| Paramètre | Valeur |
|---|---|
| Rule Type | Custom (pas "Port") |
| Program | All programs |
| Protocol | ICMPv4 |
| ICMP Type | Echo Request (type 8) |
| Action | Allow the connection |
| Profile | Domain + Private |
| Name | ICMP - 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
| Cible | Chemin OU | Usage |
|---|---|---|
| Domaine entier | barrault.pb | Applique les règles à tous les postes et serveurs membres |
| Postes clients uniquement | OU=Ordinateurs,OU=Entreprise,DC=barrault,DC=pb | Recommandé — 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énario | Commande / Action | Résultat attendu |
|---|---|---|
| VNC accessible depuis Paris | Connexion VNC vers IP VLAN 60 depuis VLAN 40 | Connexion établie |
| Ping Paris → Lyon | ping <IP-CLT-Lyon> depuis SRV-AD01 | Réponse < 10ms |
| Règles présentes | Get-NetFirewallRule | 2 règles visibles |
8. Récapitulatif des règles déployées
| Règle GPO | Protocole | Port / Type | Profil | Action |
|---|---|---|---|---|
| VNC - Accès distant 5900 | TCP | 5900 | Domain + Private | Allow |
| ICMP - Echo Request entrant | ICMPv4 | Echo Request (type 8) | Domain + Private | Allow |
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 |
Bilan & Difficultés rencontrées
Compétences mobilisées
Architecture réseau
Segmentation VLAN, routage inter-VLAN, adressage IPSécurité réseau
Pare-feu pfSense, ACL, DMZ, VPN WireGuardHaute disponibilité
CARP, pfsync, DHCP failover, load balancingSupervision & SIEM
Zabbix, Wazuh, alerting, FIMDifficultés rencontrées
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.
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.
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.
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.
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 |
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
Règles ACL principales (extrait représentatif)
| 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 | /td>
| 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.
Tests et validation
Déroulement (jalons)
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.
Configuration XMLRPC depuis le primaire ; contrôle que règles, VIPs et aliases sont identiques sur le secondaire après push.
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.
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.
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 chargesSynchronisation des règles
XMLRPC — règles et aliases alignés sur les deux nœudsIsolation VLAN
Refus par défaut ; exceptions fonctionnelles uniquementJournaux actifs
Traçabilité des décisions de filtrage opérationnelleAliases 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.
Aliases Hosts — Serveurs individuels
| Nom de l'Alias | Type | Contenu | Justification |
|---|---|---|---|
HOST_AD | Host | 192.168.10.5 / 192.168.10.10 | AD01 + AD02 regroupés — toujours ciblés ensemble dans les règles d'authentification. Remplace deux aliases séparés. |
Serveur_WEB | Host | 192.168.30.21 / 192.168.30.22 | WEB1 + WEB2 — backends Apache DMZ, toujours traités ensemble par le load balancer. |
pfsense_SYNC | Host | 10.0.0.2 / 10.0.0.3 | PF01 + PF02 IPs SYNC — utilisé pour les règles CARP, pfsync et XMLRPC entre nœuds HA. |
Serveur_ZABBIX | Host | 192.168.10.20 | SRV-ZABBIX — supervision Zabbix 7.0.23 LTS. |
Serveur_GLPI | Host | 192.168.10.25 | SRV-GLPI — helpdesk et inventaire. Accessible depuis VLAN 20, 40 et 60 avec des règles différentes. |
Serveur_BDD | Host | 192.168.10.30 | SRV-BDD — MariaDB centralisé. Accès très restreint (serveurs applicatifs uniquement, port 3306). |
Serveur_NEXTCLOUD | Host | 192.168.10.35 | SRV-NEXTCLOUD — cloud privé + Talk. Port TURN 3478 spécifique à ce serveur. |
Serveur_WAZUH | Host | 192.168.10.40 | SRV-WAZUH — manager SIEM. Reçoit syslog (514/UDP) + agents (1514/1515). |
Serveur_RPROXY | Host | 192.168.30.10 | SRV-RPROXY — seul point d'entrée Internet exposé. Alias critique pour la règle WAN. |
Serveur_AD_LOCAL | Host | 192.168.50.5 | AD-HERO RODC site Lyon — contrôleur lecture seule. Utilisé dans les règles WG_TUNNEL. |
WG_DISTANT | Host | 10.100.0.2 | pfSense Lyon — IP tunnel WireGuard point-à-point. Source autorisée sur SIM_WAN. |
Aliases Networks — Sous-réseaux
| Nom de l'Alias | Type | Contenu | Justification |
|---|---|---|---|
Reseau_SERVEUR | Network | 192.168.10.0/24 | VLAN 10 — tous serveurs infrastructure Paris. |
Reseau_CLIENTS | Network | 192.168.20.0/24 | VLAN 20 — postes clients utilisateurs Paris. |
Reseau_DMZ | Network | 192.168.30.0/24 | VLAN 30 — zone démilitarisée. |
Reseau_IT | Network | 192.168.40.0/24 | VLAN 40 — département IT / administration réseau. |
Reseau_SERVEUR_DISTANT | Network | 192.168.50.0/24 | VLAN 50 — infrastructure distante Lyon (RODC). |
Reseau_CLIENTS_DISTANT | Network | 192.168.60.0/24 | VLAN 60 — postes clients distants Lyon. |
Reseau_DISTANT | Network | 192.168.50.0/24 + 192.168.60.0/24 | VLANs 50+60 regroupés — tout le site Lyon. Utilisé dans les règles WG_TUNNEL. |
Reseau_SYNC | Network | 10.0.0.0/29 | Réseau SYNC/Heartbeat pfSense HA. |
Reseau_SIM_WAN | Network | 203.0.113.0/29 | Segment WAN simulé VMnet5 — liaison inter-pfSense pour WireGuard. |
Aliases Ports — Services réseau
| Nom de l'Alias | Ports | Justification |
|---|---|---|
P_AD_CORE | 53, 88, 389, 636 | Coeur Active Directory : DNS, Kerberos, LDAP, LDAPS — utilisé dans toutes les règles d'authentification clients vers AD. |
P_AD_REPL | 135, 445, 49152-65535 | Ré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_SMB | 135, 139, 445 | Partage fichiers Windows SMB — RPC Endpoint, NetBIOS Session, SMB. Nécessaire pour l'accès aux partages réseau depuis les postes clients. |
P_HTTPS | 443 | HTTPS uniquement — accès sécurisé aux interfaces web (GLPI, Nextcloud, Zabbix, Wazuh dashboard). |
P_WEB | 80, 443 | HTTP + HTTPS — navigation web et accès intranet via reverse proxy. |
P_SSH_RDP | 22, 3389 | SSH + RDP regroupés — administration distante depuis VLAN IT. Toujours ouverts ensemble. |
P_ZABBIX | 10050, 10051 | Zabbix agent passif (10050) + trapper serveur (10051). |
P_WAZUH | 1514, 1515 | Wazuh agent communication (1514) + enrôlement (1515). |
P_MYSQL | 3306 | MariaDB — accès base de données restreint aux serveurs applicatifs. |
P_NTP | 123 | NTP UDP — synchronisation horloge. Critique pour Kerberos : tolérance maximale de 5 minutes de décalage. |
P_SYSLOG | 514 | Syslog UDP — envoi des logs pfSense vers SRV-WAZUH (intégration SIEM). |
P_WIREGUARD | 51820 | WireGuard UDP — tunnel VPN site-à-site Paris et Lyon. |
P_SNMP | 161 | SNMP UDP — supervision pfSense HA depuis SRV-ZABBIX (état CARP). |
P_VNC | 5900 | VNC — accès bureau distant postes clients (GPO pare-feu déployée). |
Règles pare-feu — pfSense Paris (PF01/PF02)
LAN_SRV — VLAN 10 Serveurs
| Source | Destination | Port / Service | Proto | Action | Justification |
|---|---|---|---|---|---|
Reseau_SERVEUR | Serveur_AD | P_NTP | UDP | ALLOW | NTP tous serveurs VLAN 10 vers AD01. Critique pour Kerberos (moins de 5 min de décalage). |
Reseau_SERVEUR | any | 80, 443, 53 | TCP/UDP | ALLOW | Mises à jour (apt), DNS externe et accès Internet pour les serveurs VLAN 10. |
* | Reseau_SERVEUR | ICMP | ICMP | ALLOW | Ping intra-VLAN 10 — diagnostics et supervision réplication AD. |
Serveur_AD | Serveur_AD_LOCAL | P_AD_REPL | TCP | ALLOW | Réplication AD Paris vers RODC Lyon — inclut les ports RPC dynamiques 49152-65535. |
Serveur_ZABBIX | Reseau_DMZ / Reseau_CLIENTS / Reseau_IT / Serveur_AD_LOCAL | P_ZABBIX | TCP | ALLOW | Zabbix collecte agents sur tous les VLANs (mode passif). |
Serveur_ZABBIX | pfsense_SYNC | P_SNMP | UDP | ALLOW | Supervision pfSense HA via SNMP — état CARP, interfaces, charge CPU. |
Serveur_WAZUH | Reseau_SERVEUR / Reseau_DMZ / Reseau_SERVEUR_DISTANT | P_WAZUH | TCP | ALLOW | Wazuh collecte agents sur VLAN 10, DMZ et VLAN 50 (RODC Lyon). |
Serveur_WAZUH | pfsense_SYNC | P_SYSLOG | UDP | ALLOW | Syslog pfSense PF01+PF02 vers Wazuh SIEM — alimentation temps réel. |
* | * | * | * | DENY + LOG | DEFAULT DENY — tout flux non autorisé depuis VLAN 10 est bloqué et loggé. |
LAN_CLT — VLAN 20 Clients
| Source | Destination | Port / Service | Proto | Action | Justification |
|---|---|---|---|---|---|
Reseau_CLIENTS | HOST_AD | P_AD_CORE | TCP/UDP | ALLOW | Auth AD + DNS depuis postes clients (Kerberos, LDAP, DNS). |
Reseau_CLIENTS | HOST_AD | 67 (DHCP) | UDP | ALLOW | DHCP relay vers contrôleurs de domaine. |
Reseau_CLIENTS | HOST_AD | P_SMB | TCP | ALLOW | Accès serveur de fichiers — SMB (135, 139, 445) nécessaire pour les partages réseau Windows. |
Reseau_CLIENTS | Serveur_NEXTCLOUD | P_HTTPS + 3478 | TCP/UDP | ALLOW | Nextcloud cloud privé + Talk (port TURN 3478 pour la visioconférence). |
Reseau_CLIENTS | Serveur_GLPI | P_HTTPS | TCP | ALLOW | GLPI helpdesk — déclaration de tickets par les utilisateurs. |
Reseau_CLIENTS | Serveur_RPROXY | P_WEB | TCP | ALLOW | Intranet NexaGroup via reverse proxy Nginx. |
Reseau_CLIENTS | Reseau_SERVEUR | * | * | DENY + LOG | Bloquer l'accès direct VLAN 10 non autorisé (Zabbix, Wazuh) — placé avant la règle Internet. |
Reseau_CLIENTS | any | P_WEB | TCP | ALLOW | Navigation Internet via pfSense. |
* | * | * | * | DENY + LOG | DEFAULT 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.
| Source | Destination | Port / Service | Proto | Action | Justification |
|---|---|---|---|---|---|
Reseau_DMZ | Serveur_ZABBIX | P_ZABBIX | TCP | ALLOW | Agents Zabbix sur serveurs DMZ vers serveur Zabbix Paris. |
Reseau_DMZ | Serveur_WAZUH | P_WAZUH | TCP | ALLOW | Agents Wazuh sur serveurs DMZ vers manager SIEM Paris. |
Serveur_RPROXY | Serveur_WEB | P_WEB | TCP | ALLOW | Load balancing RPROXY vers WEB1+WEB2 (algorithme least_conn). |
* | * | * | * | DENY + LOG | DEFAULT DENY — DMZ totalement isolée, aucun autre flux autorisé. |
LAN_IT — VLAN 40 Administration
| Source | Destination | Port / Service | Proto | Action | Justification |
|---|---|---|---|---|---|
Reseau_IT | Reseau_SERVEUR | any | any | ALLOW | Accès complet IT à tous les serveurs VLAN 10 — administration système. |
Reseau_IT | pfsense_SYNC | 22 (SSH) | TCP | ALLOW | SSH pfSense PF01+PF02 depuis VLAN IT. |
Reseau_IT | Reseau_CLIENTS / Reseau_DMZ / Reseau_DISTANT | P_SSH_RDP | TCP | ALLOW | Prise en main distante postes clients (VLANs 20, 30, 50, 60). |
Reseau_IT | Reseau_SYNC | P_HTTPS | TCP | ALLOW | Interface web pfSense — HTTPS uniquement (HTTP 80 supprimé). |
Reseau_IT | Serveur_WAZUH / Serveur_ZABBIX / Serveur_NEXTCLOUD / Serveur_GLPI | P_HTTPS | TCP | ALLOW | Accès dashboards d'administration (Wazuh, Zabbix) et services internes depuis postes IT. |
Reseau_IT | any | P_WEB | TCP | ALLOW | Navigation Internet IT — mises à jour, documentation. |
* | * | * | * | DENY + LOG | DEFAULT DENY — VLAN IT isolé de tout accès entrant non sollicité. |
WG_TUNNEL — Trafic site distant Lyon (VLAN 50 + VLAN 60)
| Source | Destination | Port / Service | Proto | Action | Justification |
|---|---|---|---|---|---|
Reseau_SERVEUR_DISTANT | HOST_AD | P_AD_REPL | TCP | ALLOW | Réplication AD RODC Lyon et AD Paris — ports RPC dynamiques 49152-65535 inclus dans P_AD_REPL. |
Serveur_AD_LOCAL | HOST_AD | P_AD_CORE + P_NTP | TCP/UDP | ALLOW | Auth Kerberos, LDAP et NTP depuis RODC vers AD Paris. |
Reseau_CLIENTS_DISTANT | HOST_AD | P_AD_CORE + P_SMB | TCP/UDP | ALLOW | Auth AD + accès partage de fichiers depuis clients Lyon. |
Reseau_CLIENTS_DISTANT | Serveur_NEXTCLOUD / Serveur_GLPI / Serveur_RPROXY | P_HTTPS + 3478 | TCP | ALLOW | Accès services Paris depuis clients Lyon — Nextcloud, GLPI, intranet. |
Reseau_DISTANT | Serveur_ZABBIX / Serveur_WAZUH | P_ZABBIX + P_WAZUH + P_SYSLOG | TCP/UDP | ALLOW | Agents Zabbix et Wazuh depuis Lyon — supervision et SIEM. |
* | * | * | * | DENY + LOG | DEFAULT DENY — isoler les flux non autorisés depuis le tunnel. |
SIM_WAN et WAN
| Interface | Source | Destination | Port | Proto | Action | Justification |
|---|---|---|---|---|---|---|
| SIM_WAN | WG_DISTANT | Reseau_SIM_WAN | P_WIREGUARD (51820) | UDP | ALLOW | Tunnel WireGuard entrant pfSense Lyon vers Paris. Authentification Curve25519. |
| SIM_WAN | * | * | * | * | DENY + LOG | DEFAULT DENY SIM_WAN — aucun autre flux sur ce segment VMnet5. |
| WAN | any | Serveur_RPROXY | P_WEB (80, 443) | TCP | ALLOW | Seul point d'entrée Internet — reverse proxy Nginx. WEB1/WEB2 jamais exposés directement. |
| WAN | * | * | * | * | DENY + LOG | DEFAULT 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
| Source | Destination | Port / Service | Proto | Action | Justification |
|---|---|---|---|---|---|
Serveur_AD_LOCAL | HOST_AD | P_AD_CORE + P_AD_REPL + P_SMB + P_NTP | TCP/UDP | ALLOW | Réplication AD bidirectionnelle complète — DNS, Kerberos, LDAP, RPC dynamiques, SYSVOL/NETLOGON via SMB. |
Reseau_SERVEUR_DISTANT | Serveur_GLPI / Serveur_NEXTCLOUD / Serveur_ZABBIX / Serveur_WAZUH | P_HTTPS + P_ZABBIX + P_WAZUH | TCP | ALLOW | Accès services Paris et agents supervision/SIEM depuis infra Lyon. |
Reseau_SERVEUR_DISTANT | any | P_WEB + P_NTP | TCP/UDP | ALLOW | Mises à jour + NTP externe en secours si AD Paris indisponible. |
* | * | * | * | DENY + LOG | DEFAULT DENY VLAN 50. |
VLAN60 — Clients distants Lyon
| Source | Destination | Port / Service | Proto | Action | Justification |
|---|---|---|---|---|---|
Reseau_CLIENTS_DISTANT | Serveur_AD_LOCAL | P_AD_CORE + P_NTP | TCP/UDP | ALLOW | Auth AD locale via RODC — DNS, Kerberos, LDAP. Fonctionne même si VPN coupé. |
Reseau_CLIENTS_DISTANT | HOST_AD | P_AD_CORE + P_SMB | TCP/UDP | ALLOW | Auth AD Paris en secours + accès partage de fichiers AD Paris via tunnel. |
Reseau_CLIENTS_DISTANT | Serveur_GLPI / Serveur_NEXTCLOUD / Serveur_RPROXY | P_HTTPS + 3478 | TCP | ALLOW | GLPI helpdesk, Nextcloud (+ Talk TURN), intranet Paris via RPROXY. |
Reseau_CLIENTS_DISTANT | any | P_WEB + P_NTP | TCP/UDP | ALLOW | Navigation Internet via pfSense Lyon + NTP externe en secours. |
* | * | * | * | DENY + LOG | DEFAULT 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
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
SRV-AD02
Agent Wazuh — contrôleur Active Directory
SRV-BDD
Agent Wazuh — serveur de bases de données
SRV-NEXTCLOUD
Agent Wazuh — collaboration et fichiers
Postes clients
Agents non déployés sur le parc VLAN 201514 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 |
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.
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.
L'équipe SOC / IT vérifie la criticité, la source IP, l'historique et écarte les faux positifs (maintenance, scanner autorisé).
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.
Analyse des journaux corrélés (auth, Windows Security, commandes), conservation des preuves, recherche d'indicateurs de persistance ou de mouvement latéral.
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ésAlertes brute force
Scénario de test SSH : alerteNXG-100001 générée conformément au seuil
Dashboard opérationnel
OpenSearch / Wazuh UI accessibles en HTTPS, visualisations à jourCorrélation d'événements
Règles composites : même attaquant / plusieurs hôtes détectés dans la même fenêtreBilan
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
1514TCP/UDP versSRV-WAZUH, vérification depuis les VLANs VLAN 10 et VLAN 20, traçabilité dans la matrice ACL.