Suivi du TP — Lab pfSense / Proxmox
Document de pilotage : ce qu’il reste à faire, où j’en suis, où je vais. La procédure détaillée est dans Documentation-pfSense.md. Les règles de pare-feu sont dans Matrice-de-flux.md. Les incidents rencontrés sont dans Troubleshooting.md. Les schémas de l’infrastructure sont dans Architecture.md. Les procédures réutilisables : MO-1 Clonage de VM · MO-2 Cluster Galera · MO-3 HAProxy · MO-4 Clés SSH · MO-5 Git et GitHub · MO-6 Windows Server Core · MO-7 Termix · MO-8 Tailscale · MO-9 Comptes Active Directory · MO-10 Pangolin · MO-11 Sauvegarde Proxmox · MO-12 Proxmox Backup Server · MO-13 Prometheus · MO-14 HAProxy local · MO-15 rsyslog · MO-16 Fluent Bit · MO-17 Grafana · MO-18 Ajouter une machine · MO-19 Wazuh et Suricata · MO-20 GPO · MO-22 LogAnalyzer · MO-21 GLPI · MO-23 Alertes → tickets GLPI. Exercice d’incident : fiches réflexes · modèle de rapport. Version diffusable, sans théorie : Tuto Tailscale + pfSense. Dernière mise à jour : 12/11/2026 (soir : étape 76, limitation de débit VISITEURS mesurée (T21, phase 15 terminée) ; étape 75, charte et liste des logiciels autorisés (phase 24 terminée) ; envoi
ac17810au formateur ; relecture de toute la documentation ; étape 74 ; T30 terminé) ; 11/11/2026 (phase 19 terminée : portail GLPI des salariés)
Avancement global
██████████████████░░ 89 % 195 / 218 tâches
Le total passe de 62 à 95 tâches : la phase 10 ajoute la haute disponibilité — cluster Galera à 3 nœuds, répartiteur HAProxy, deux serveurs web. Le pourcentage chute de 84 à 55 %, non pas parce qu’on a reculé, mais parce que le périmètre a grandi. (05/11 : 6.20 close, 139/161 ; puis 4 tâches écartées par Axel : 7.14 (exercice d’incident, préparé pendant les révisions et documenté à part) et 12.1, 12.3, 12.4 (accès externe : l’accès Termix du formateur suffit) → 139/157 ; puis 5.7 et 6.9 supprimées (
poste-debian, jamais créé : inutile pour le lab, décision d’Axel) → 139/155 ; 10.9 constatée faite → 140/155 ; 10.23 → 141/155, phase 10 terminée ; 7.4 et 13.1 → 143/155 ; 9.8 écartée (Pangolin suffit) → 143/154 ; 13.8 → 144/154 ; 6.21 ajoutée et faite (site de GSB) → 145/155 ; phase 11 (GLPI) cadrée : 12 tâches ajoutées, 11.1 faite → 146/167 ; puis 11.2 à 11.8 → 153/167.) (06/11 : phase 17 (LogAnalyzer) cadrée : 8 tâches ajoutées, 17.1 faite → 154/175 ; 13.6 close (restauration depuis la copie du NAS) → 155/175 ; 17.2 → 156/175 ; 17.3 → 157/175 ; 17.4 et 17.5 → 159/175 ; 17.6 → 160/175 ; 17.7 → 161/175 ; 17.8 → 162/175, phase 17 terminée ; 11.11 → 163/175 ; 11.9 → 164/175 ; 11.10 → 165/175 ; 11.12 → 166/175, phase 11 terminée ; phase 18 (Matomo, site en ligne) ajoutée : 10 tâches → 166/185, le pourcentage baisse parce que le périmètre grandit ; le pourcentage passe de 92 à 88 % parce que le périmètre grandit.) (08/11 : compteur recalé à 164 : l’en-tête affichait 166 alors que la somme des tableaux des phases donne 164 (le compteur du haut est tenu à la main, deux tâches y avaient été ajoutées deux fois ; la phase 16 comptait 8 au lieu de 9 tâches faites) → 164/185 ; puis 3 phases ajoutées : 19 portail GLPI (9 tâches, demande du dossier du 07/11), 20 copie hors site immuable (6 tâches, demande du dossier du 08/11), 21 GPO « poste Windows prêt à l’arrivée » (7 tâches, demande d’Axel du 08/11) → 164/207 : le pourcentage passe de 89 à 79 % parce que le périmètre grandit, rien n’a reculé.) *(11/11 : ordre décidé par Axel : phases 19, 20, 21 puis 22.) (10/11 : phase 22 « mise à jour de tout le lab » ajoutée, demande d’Axel : 7 tâches → 164/214, 77 % ; 18.1 → 165/214 ; 18.2 → 166/214 ; 18.3 → 167/214 ; 18.4 → 168/214 ; 18.5 → 169/214 ; 18.6 → 170/214 ; 18.7 → 171/214 ; tâche 18.11 ajoutée (adresse réelle des visiteurs) → 171/215 ; 18.11 → 172/215 ; 18.9 → 173/215 ; 18.10 → 174/215 ; 19.1 → 175/215 ; 19.7 écartée → 175/214, 82 %.) (04/11 : 13.15 close, 138/161.) (Rappel historique : 45 → 53 → 62 → 95 → 102 → 103 → 104 → 105 → 108 → 115 → 116 → 118 → 112 → 119 → 121 → 131 (15/10 : les 10 tâches de la phase 14) → 130 (17/10 : la tâche 13.11 est écartée) → 131 (18/10 : tâche 13.15 ajoutée) → 132 (28/10 : tâche 14.11, compte lecteur et export du tableau de bord) → 136 (29/10 : compteur recalé : l’en-tête affichait 107 / 132 alors que la somme des tableaux donnait déjà 111 / 136) → 144 (29/10 : phase 15, zone « Visiteurs », 8 tâches) → 145 (30/10 : tâche 14.12, alerte « site lent » demandée par le contrat de service) → 147 (30/10 : tâches 15.9 et 15.10, le poste visiteur intégré à la sauvegarde, à Grafana et aux alertes, demande d’Axel) → 148 (30/10 : phase 16, détection d’intrusion, tâche de cadrage) → 150 (30/10 : 7.14 exercice d’incident de la S7, 15.11 qualité de service, demandés pour la R1) → 161 (02/11 : phase 16 détaillée en 12 tâches après le choix Wazuh + Suricata ; le pourcentage passe de 85 à 80 % parce que le périmètre grandit). 108 → 112 le 14/10 : la phase 12 compte désormais 5 tâches au lieu de sa seule tâche de cadrage ; le compteur n’avait pas suivi (la somme du tableau donnait déjà 93 / 112). Le pourcentage passe de 85 à 84 % pour cette raison, pas par recul.) (11/11 : phase 20 arrêtée après l’étude 20.1 (pas de place sur le NAS, décision d’Axel) : 20.2 à 20.6 écartées → 182/210.) (11/11 : phase 23 ajoutée (revue des alertes, 5 tâches, demande d’Axel) → 188/215.) (12/11 : recompte depuis le tableau des phases : total 214 (et non 215) ; 16.6 (décision Wazuh du 11/11) reportée dans la phase 16 → 190/214.) (12/11 : phase 24 ajoutée (charte informatique, 4 tâches, 3 faites) → 193/218.)
| Phase | Intitulé | Avancement | État |
|---|---|---|---|
| 1 | Socle pfSense | ███████ 7/7 | Terminée |
| 2 | Sécurisation minimale | █ 1/1 | Terminée |
| 3 | Trunk et VLAN | ████████ 8/8 | Terminée |
| 4 | Pare-feu et routage | ███████ 7/7 | Terminée |
| 5 | Déploiement des VM | █████░ 5/6 | En cours (+3 VM déjà créées en phase 10) |
| 6 | Services applicatifs | ██████████████████████░ 22/23 | En cours |
| 7 | Tests et validation | ████████████░ 12/13 | En cours |
| 8 | Finalisation | ████░ 4/5 | En cours |
| 9 | (bonus) Accès distant sécurisé | ███████ 7/7 | Terminée (9.8 écartée le 05/11) |
| 10 | Haute disponibilité et répartition | ██████████ 27/27 | Terminée le 05/11 |
| 11 | GLPI (serveurs web + Galera) | ████████████ 12/12 | Terminée le 06/11 (actif/secours, inventaire de 13 machines, alertes → tickets, MO-21 et MO-23) |
| 12 | Accès externe à l’infrastructure (Pangolin) | ██ 2/2 | Arrêtée le 05/11 (décision d’Axel) (le formateur accède aux machines par Termix, étape 57 ; tunnel et ressources Pangolin laissés tels quels ; 12.1, 12.3, 12.4 écartées) |
| 13 | Sauvegarde de toute l’infrastructure | ██████████████ 14/14 | Terminée le 06/11 (06/11 : machine restaurée depuis la copie du NAS (13.6) ; PBS en service le 15/10 : incrémental chaque nuit, 7 jours, restauration testée ; 22-27/10 : VM Windows diagnostiquées (défragmentation, Defender, effet des blocs), disques des VM sur le NAS et datastore sur le stockage de 6 To, notifications par mail, anciens disques supprimés ; reste : 2e copie, export des bases, décision sur le poids des Windows) |
| 14 | Supervision, journaux et alertes | █████████░░░ 9/12 | En service (au 12/11 : 15 machines supervisées, 11 services sondés, 17 règles d’alerte toutes éprouvées (les 3 de la copie hors site par le test T30 des 11-12/11)) ; historique : 23 cibles mesurées le 28/10 (dont les exporteurs PBS et Proxmox, et les sondes Termix et Pangolin) ; journaux de toutes les machines dans Galera, en UTC ; tableau de bord de production terminé le 28/10 ; bruit des journaux réduit (contrôles de santé de Pangolin, annonces CARP) ; alertes par mail : 11 règles, toutes testées (29-30/10) ; journaux : 6 mois, bruit de l’AD filtré à la source, purge chaque nuit (01/11) ; reste : compte lecteur et export en fin de lab (14.11)) |
| 15 | Zone « Visiteurs » (VLAN dédié) | ███████████ 11/11 | 12/11 (VLAN 50, poste-visiteur, supervisé, sauvegardé, documenté le 01/11 ; qualité de service en place et mesurée le 12/11 : 50 Mbit/s par sens, test T21) |
| 16 | Détection d’intrusion et alerte | ██████████░░ 10/12 | En service depuis le 03/11 (Wazuh tout-en-un sur srv-wazuh (6 Gio), 5 agents actifs au 12/11 (3 au 03/11), Suricata en détection sur VISITEURS et USERS, 3 attaques simulées détectées ; documenté le 03/11 (étapes 59-60, MO-19, DAT 1.5) ; mails des intrusions (Wazuh et Suricata) en service le 03/11 ; semaine de mesure terminée, extension décidée le 11/11 (16.6) ; reste : l’extension elle-même (16.7)) |
| 17 | Journaux bruts en direct (LogAnalyzer) | ████████ 8/8 | En service le 06/11 (LogAnalyzer 5.0.2 sur srv-supervision, lecture seule de la base syslog par deux vues, HTTPS 8443, zone ADM seulement) |
| 18 | Mesure d’audience (Matomo) + site en ligne | ██████████░ 10/11 | En ligne depuis le 10/11 (reste 18.8 : les vraies visites, avec le temps) (demande du portfolio, C3 E5 ; prochaine séance) |
| 19 | Portail GLPI pour les salariés de GSB | ████████ 8/8 | Terminée le 11/11 (ajoutée le 08/11) (demande du dossier du 07/11, C2 et C5 E5 ; 4 décisions d’Axel d’abord) |
| 20 | Copie hors site immuable | █ 1/1 | Arrêtée le 11/11 (décision d’Axel) (étude faite : PBS ne gère pas le verrouillage d’objets ; instantanés ZFS possibles mais pas de place sur le NAS : le lab reste en 3-2-1-0) |
| 21 | GPO « poste Windows prêt à l’arrivée » | ██████░ 6/7 | En service le 11/11 sur OU=Ordinateurs (2 GPO : poste prêt (agents, SSH par clé) et sécurisation (LAPS, pare-feu, audit) ; étape 74 écrite le 12/11 ; reste 21.7 : MO et DAT) |
| 22 | Mise à jour de tout le lab | ░░░░░░░ 0/7 | Ajoutée le 10/11 (demande d’Axel : systèmes, pfSense, Windows, applications, puis vérification) |
| 23 | Revue des règles d’alerte (trop de mails) | ░░░░░ 0/5 | Ajoutée le 11/11 (demande d’Axel : « j’ai reçu énormément de mails », à discuter avec lui) |
| 24 | Charte informatique de GSB (preuve E5 C1) | ████ 4/4 | 12/11 (écrite, connue, contrôlée (Wireshark détecté et retiré), liste des logiciels autorisés validée) |
OÙ J’EN SUIS
Position au 12/11 : le lab est complet pour la R1 (38 tests sur 39, reste l’exercice d’incident de janvier). Ce qui reste est de l’exploitation : revoir les alertes trop bavardes (phase 23), étendre Wazuh (16.7), tout mettre à jour (phase 22), finir les MO de la phase 21, laisser venir les vraies visites du site (18.8).
Du 07 au 12/11 : site de GSB en ligne par Pangolin avec mesure d’audience Matomo conforme CNIL (phase 18) ; portail GLPI des salariés (connexion par l’annuaire en LDAPS, tickets, guide, phase 19) ; copie immuable étudiée puis écartée faute de place (phase 20, le lab reste en 3-2-1-0) ; GPO « poste prêt à l’arrivée » (agents, SSH par clé, LAPS, pare-feu, audit), testée sur une VM Windows 11 temporaire puis supprimée (phase 21) ; les 3 alertes de la copie hors site éprouvées (T30 : 17 règles sur 17) ; Wazuh étendu aux serveurs web (5 agents) ; charte informatique écrite, connue (bannière, GLPI, intranet) et contrôlée deux fois (Wireshark, Kudu), avec sa liste des logiciels autorisés (phase 24) ; limitation de débit de la zone VISITEURS prouvée par la mesure (T21, phase 15). Toute la documentation relue et envoyée au formateur le 12/11 (
ac17810).Historique de la position : le socle, la haute disponibilité et l’Active Directory sont en place.
Le domaine
sio.internalest en service surAD-Core-01(Server Core) :poste-win11y est joint et rangé, l’annuaire porte une arborescenceOU=SIO, 6 comptes et des groupes en AGDLP. La chaîne applicative est redondée (cluster Galera à 3 nœuds, répartiteur HAProxy, deux serveurs web), le WAN n’accepte qu’une connexion entrante (l’hyperviseur vers le serveur de sauvegarde), l’accès distant passe par Tailscale. Depuis le 15/10, tout le lab est sauvegardé chaque nuit par un Proxmox Backup Server (incrémental, 7 jours, restauration testée).Depuis le 28/10, la supervision a son tableau de bord de production « Lab BTS — Production » : disponibilité des 6 services sur 30 jours (dont Termix et Pangolin, de bout en bout), cluster Galera, sauvegardes par VM, état des 13 machines (processeur, mémoire et disques réglés dans Proxmox, latence disque), connexions refusées et réussies. Il a déjà servi : le bruit des journaux a été divisé par plus de dix (contrôles de santé, annonces CARP).
Le 28/10, la mémoire a été réduite (34 → 30 Gio) et le disque de
srv-dockerramené de 150 à 32 Gio (étape 53).Du 29/10 au 01/11 : Grafana prévient par mail (11 règles, toutes testées par une panne réelle ou un seuil abaissé, étape 54) ; la zone Visiteurs (VLAN 50, 5ᵉ zone) est en service avec son poste de test, supervisé et sauvegardé (étape 55) ; les journaux sont conservés 6 mois et purgés chaque nuit, le bruit de l’AD filtré à la source (étape 56) ; le formateur ouvre les machines par Termix (étape 57). Tests 7.10 et 7.13 réussis. Le 02-03/11, la détection d’intrusion est entrée en service (phase 16) : un serveur Wazuh tout-en-un sur
srv-wazuh(10.0.30.16, 6 Gio fixes, essai assumé sous le minimum éditeur), 3 agents (srv-ha,ad-core-01,poste-win11) inscrits avec mot de passe, une règle par zone vers le seul serveur, et Suricata sur pfSense en détection seule sur VISITEURS et USERS ; trois attaques simulées détectées en 2 à 3 s (étapes 59 et 60, MO-19). Le 03/11 au soir, la détection prévient par mail : alertes Wazuh de niveau ≥ 10 et créations de comptes (59.8), alertes réseau de Suricata lues par Wazuh puis envoyées par mail (60.6), avec un bandeau « Alertes en cours » et un bloc « Intrusions Wazuh » dans le tableau de production. Chaque maillon prouvé jusqu’au mail reçu. La perte de quorum (7.11) est testée (étape 58). Le 05/11, les deux premières stratégies de groupe sont en service surOU=Ordinateurs(bannière d’avertissement, réponse au ping depuis le lab), posées et prouvées en PowerShell par SSH (étape 61, MO-20) ; les deux points ouverts du poste (SSH en compte du domaine, ping) sont clos. Le 05/11 après-midi, HAProxy ne garde plus que les nœuds Galera synchronisés (sonde du port 9200, étape 62) : la phase 10 est terminée. Le 05/11 en fin de journée : le site WordPress est devenu le site de GSB (public + intranet) ; la copie hors site des sauvegardes est en service sur le NAS d’Axel (14 VM copiées et relues sans erreur, surveillée dans Grafana) ; GLPI est en service sur les serveurs web en actif / secours, base dans Galera, bascule testée (phase 11, 8/12 ; étape 66). Le 06/11 : la nuit est vérifiée (sauvegardes, copie sur le NAS, export SQL avec GLPI) et une machine a été restaurée depuis la copie du NAS (étape 65.3) : la phase 13 (sauvegarde) est terminée. La phase 17 est terminée : LogAnalyzer montre les journaux bruts en direct (HTTPS 8443, lecture seule) ; son premier usage a coupé à la source le bruit de la sonde Galera (77 % des journaux) et fait corriger les sessions de GLPI (H-89). L’après-midi, la phase 11 (GLPI) est terminée : 13 machines s’inventorient seules chaque jour et se rangent dans l’entité de leur zone (étape 69) ; les alertes deviennent des tickets (sécurité tout de suite, le reste après 2 h, résolution automatique, ticket rattaché à la machine : étape 70, test réel réussi) ; MO-21 et MO-23. Aussi : alerte quand HAProxy retire un serveur (étape 68), sonde Galera durcie (H-90), Wazuh dans la ligne des services ; le soir, bruit de routine des journaux coupé (étape 67.4 bis) et faille APT corrigée sur les 12 machines Linux (veille, étape 71). Restent surtout la semaine de mesure de Wazuh (décision le 10/11), puis l’extension des agents (16.7) ; après le BTS blanc : mots de passe SSH, compte collaborateur WordPress (15.11 avancée et faite le 12/11).
PROCHAINES ACTIONS (dans cet ordre)
| # | Action | Où |
|---|---|---|
| 23 | Revoir les règles d’alerte avec Axel (« j’ai reçu énormément de mails ») : relevé des mails reçus (quelles règles, combien), puis seuils, délais, regroupement, niveau d’envoi de Wazuh | Grafana · Wazuh |
| Échange | Temps d’explication (demande d’Axel du 06/11) : l’interface de Wazuh (agents, alertes, intégrité des fichiers, audit de configuration, recherche) et Suricata (règles, alertes, chemin pfSense → Wazuh → mail) | srv-wazuh · pfSense |
| 16.7 | Étendre les agents Wazuh (décision d’Axel du 12/11 : « étendre ») aux machines restantes, une par une, mémoire de srv-wazuh surveillée | srv-wazuh · bastion |
| 21.7 | Finir la phase 21 : modes opératoires et DAT restants (GPO poste prêt, LAPS) | annexes\ |
| 22 | Mettre à jour tout le lab (systèmes, pfSense, Windows, applications), sauvegarde vérifiée avant, non-régression après ; changer les 3 mots de passe sortis en clair dans d’anciens envois ; redémarrer srv-wazuh et PBS | tout le lab |
| 18.8 | Vraies visites du site public (lien partagé par Axel), captures des premières mesures de Matomo | Matomo |
| Poste | Retirer du modèle de poste les logiciels non autorisés livrés avec Windows (jeux, Assistance rapide, Power Automate, Dev Home : liste des logiciels autorisés, §3) | modèle 9997 · GPO |
| T20 | Exercice d’incident (panne provoquée par un tiers) et son rapport, janvier 2027 ; trame et fiches réflexes prêtes | conversation du dossier |
| SSH | (plus tard : après le BTS blanc, décision d’Axel du 06/11) srv-metriques accepte encore le mot de passe SSH (PasswordAuthentication yes, clé du bastion absente) : déposer la clé du bastion puis fermer le mot de passe, et vérifier les autres machines (règle « mot de passe SSH interdit ») | srv-metriques |
| WordPress | (plus tard : après le BTS blanc, décision d’Axel du 06/11 : « c’est du détail ») compte collaborateur de l’intranet INTRALAB (rôle Abonné, registre W-02) | site GSB |
| 5.4 / 6.7 | AD-Core-02, second contrôleur (dette T-8, Server 2025 obligatoire ; reporté sans échéance) | Proxmox |
| 8.4 | Relecture finale de la documentation et des captures | — |
| 14.11 | En fin de lab : compte lecteur formateur dans Grafana, export JSON du tableau de bord dans les annexes ; décider du sort du jeton du compte de service claude (il n’expire jamais) | Grafana |
Rappel pour les VM en IP fixe (VLAN 10, 20, 30) : le DHCP y est désactivé. Chaque machine doit recevoir quatre paramètres saisis à la main — adresse, masque
/24, passerelle10.0.XX.1et DNS10.0.XX.1. Oublier le DNS reproduit exactement la panne rencontrée surposte-win11: adressage correct, résolution de noms impossible.Accès au lab : Termix
http://10.0.30.12:443(port explicite — voir étape 20D) · Portainerhttps://10.0.30.12:9443· pfSensehttps://10.0.40.1— le tout depuis n’importe où via Tailscale.
Légende
| Symbole | Signification |
|---|---|
| Fait et vérifié (capture ou test à l’appui) | |
| En cours | |
| À faire | |
| Bloqué : dépend d’une tâche précédente | |
| Fait, mais configuration temporaire à corriger plus tard |
Phase 1 — Socle pfSense
| # | Tâche | État |
|---|---|---|
| 1.1 | Création de la VM sous Proxmox (VM 103, 2 vCPU, 2 Go, 32 Go, VirtIO) | |
| 1.2 | Installation pfSense (UFS / GPT, clavier FR) | |
| 1.3 | Assignation du WAN sur vtnet0 en DHCP → 10.1.0.86 | |
| 1.4 | Ajout de la 2ᵉ carte réseau → vtnet1 assigné en LAN | |
| 1.5 | Ouverture de l’accès webConfigurator depuis le WAN | (règle temporaire, voir 8.1) |
| 1.6 | Assistant de configuration initiale (wizard) | |
| 1.7 | Mise à jour 2.7.0 → 2.9.0-RELEASE |
Validé : System Information affiche 2.9.0, WAN et LAN en up, uptime 2 jours.
Phase 2 — Sécurisation minimale
| # | Tâche | État |
|---|---|---|
| 2.1 | Changer le mot de passe du compte admin | le 25/09 |
Validation initiale erronée. Cette tâche avait été cochée le 16/09 sur la foi de la disparition du bandeau. La comparaison des quatre sauvegardes XML a montré une empreinte
bcryptidentique du 17/09 au 25/09 : le mot de passe n’avait jamais changé. Corrigé le 25/09. Voir incident H-08 du Troubleshooting.Vérification fiable : System → User Manager, colonne Last Changed du compte
admin— et non la présence ou l’absence du bandeau, qui ne s’affiche pas sur toutes les pages.
Phase 3 — Trunk et VLAN
| # | Tâche | État | Dépend de |
|---|---|---|---|
| 3.1 | Créer les 4 VLAN dans pfSense (tags 10/20/30/40 sur vtnet1) | — | |
| 3.2 | Créer le bridge vmbr1 — VLAN aware, sans port physique | — | |
| 3.3 | Basculer la carte net1 de la VM pfSense vers vmbr1 | 3.2 | |
| 3.4 | Repasser l’interface LAN en 10.0.0.1/24 | — | |
| 3.5 | Assigner les 4 VLAN comme interfaces WEB / BDD / ADM / USERS | 3.2 | |
| 3.6 | Adresser chaque interface : 10.0.10.1 / .20.1 / .30.1 / .40.1 en /24 | 3.5 | |
| 3.7 | Activer le serveur DHCP sur le VLAN 40 (.100 → .199) | 3.6 | |
| 3.8 | Vérifier : les 4 interfaces remontent up avec leur IP | 3.6 |
Validé : Status > Interfaces affiche WEB (opt1, vtnet1.10) → 10.0.10.1,
BDD (opt2, vtnet1.20) → 10.0.20.1, ADM (opt3, vtnet1.30) → 10.0.30.1,
USERS (opt4, vtnet1.40) → 10.0.40.1, toutes en 255.255.255.0 et up.
LAN repassé en 10.0.0.1 / 255.255.255.0.
La logique à comprendre : un VLAN n’existe pas « quelque part », il existe sur tout le chemin. Le tag est posé par pfSense (3.1 ), transporté par le switch virtuel (3.2 / 3.3), puis interprété comme un réseau routé (3.5 / 3.6). Si un maillon manque, rien ne passe — et le symptôme ressemble à « le câble est débranché ».
Phase 4 — Pare-feu et routage
| # | Tâche | État | Dépend de |
|---|---|---|---|
| 4.1 | Rédiger la matrice de flux → Matrice-de-flux.md | — | |
| 4.2 | Créer les 12 alias (LAB_NETS, SRV_WEB, PORTS_DC_AD…) — matrice §2 | 3.8 | |
| 4.3 | Règles du VLAN 40 (USERS) — matrice §4.1 | 4.2 | |
| 4.4 | Règles du VLAN 10 (WEB) — matrice §4.2 | 4.2 | |
| 4.5 | Règles du VLAN 20 (BDD) — matrice §4.3 | 4.2 | |
| 4.6 | Règles du VLAN 30 (ADM) — matrice §4.4 | 4.2 | |
| 4.7 | Vérifier le NAT sortant en mode Automatic | 3.8 |
La matrice a été rédigée avant toute manipulation de l’interface. C’est elle qui justifie chaque règle devant un jury.
Principes retenus : BDD n’initie aucun flux · le bastion (
srv-docker) est la seule machine autorisée à sortir du VLAN 30, en RDP/SSH uniquement · les USERS n’accèdent qu’au site web, au domaine AD et au bastion.
Phase 5 — Déploiement des VM
| # | VM | OS | IP | VLAN | Tag Proxmox | État |
|---|---|---|---|---|---|---|
| 5.1 | srv-web (VM 110) | Debian 13 | 10.0.10.10 | 10 WEB | vmbr1 + Tag 10 | |
| 5.2 | srv-mysql | Debian 13 | 10.0.20.10 | 20 BDD | vmbr1 + Tag 20 | |
| 5.3 | AD-Core-01 (VM 107) | Win Server 2025 Core | 10.0.30.10 | 30 ADM | vmbr1 + Tag 30 | (contrôleur du domaine sio.internal) |
| 5.4 | AD-Core-02 | Win Server 2025 Core | 10.0.30.11 | 30 ADM | vmbr1 + Tag 30 | (second contrôleur — dette T-8) |
| 5.5 | srv-docker (VM 114) | Debian 12 | 10.0.30.12 | 30 ADM | vmbr1 + Tag 30 | |
| 5.6 | poste-win11 (VM 101) | Windows 11 Pro | DHCP → 10.0.40.100 | 40 USERS | vmbr1 + Tag 40 |
Le DHCP n’est activé que sur le VLAN 40. Les VM des VLAN 10, 20 et 30 ne reçoivent aucune adresse au démarrage : l’IP se saisit à la main. Ce n’est pas une panne.
Le champ VLAN Tag fait tout le travail : Proxmox tague et détague pour la VM, qui n’a rien à configurer et croit être sur un réseau ordinaire. C’est un port access. pfSense, lui, est en trunk (champ vide) car il gère les tags lui-même.
Test après chaque VM : dans le VLAN 40, elle doit recevoir une IP en
10.0.40.1xx. Une adresse dans une autre plage = mauvais tag.
Phase 6 — Services applicatifs
Chaîne applicative (WEB + BDD)
| # | Tâche | VLAN | État |
|---|---|---|---|
| 6.1 | Installer Apache 2.4.68 + PHP 8.4 + mariadb-client sur srv-web | 10 | |
| 6.2a | Installer MariaDB 11.8.6 sur srv-mysql et le sécuriser (unix_socket vérifié, aucun compte anonyme, base test absente) | 20 | |
| 6.2b | bind-address = 10.0.20.10 — faire écouter MariaDB sur le réseau | 20 | |
| 6.2c | Créer la base wp_lab et le compte distant [email protected] | 20 | |
| 6.3 | Décocher la règle d’accès Internet du VLAN BDD une fois MySQL installé | 20 | |
| 6.4 | Installer WordPress sur srv-web, DB_HOST = 10.0.20.10 | 10 → 20 |
La tâche 6.4 est le cœur pédagogique du TP. C’est le moment où une application traverse réellement le pare-feu entre deux VLAN. Si WordPress affiche « Erreur de connexion à la base de données », le premier réflexe est de vérifier la règle
SRV_WEB → SRV_MYSQL : 3306.
Active Directory
| # | Tâche | VLAN | État |
|---|---|---|---|
| 6.5 | Promouvoir AD-Core-01 : création de la forêt sio.internal (étape 33) | 30 | |
| 6.6 | Redirecteur DNS de l’AD vers pfSense (10.0.30.1) | 30 | (UseRootHint laissé actif — dette T-11) |
| 6.6b | Déclarer AD-Core-01 autorité de temps du domaine (/reliable:yes) | 30 | |
| 6.6c | Basculer le DNS du DHCP VLAN 40 vers 10.0.30.10 | 40 | |
| 6.7 | Ajouter AD-Core-02 comme second contrôleur de domaine | 30 | (dette T-8 — reporté) |
| 6.8 | Renommer puis joindre poste-win11 au domaine (étape 34) | 40 → 30 | |
| 6.15 | Arborescence de l’annuaire : unité SIO et ses 6 sous-unités (étape 35) | 30 | |
| 6.16 | redirusr / redircmp, puis ranger POSTE-WIN11 dans OU=Ordinateurs (étape 36) | 30 | |
| 6.17 | Créer les 6 comptes utilisateurs, 2 par service (étape 37) | 30 | |
| 6.18 | Groupes en AGDLP : 3 GG- et 1 DL- (étape 38) | 30 | |
| 6.19 | Console graphique RSAT sur poste-win11 (étape 39) | 40 | |
| 6.20 | Stratégies de groupe (GPO) : MO à écrire, puis 1 ou 2 GPO concrètes | 30 | 05/11 : GPO-Ordi-Banniere-Connexion et GPO-Ordi-Pare-feu-Ping (ping depuis 10.0.0.0/16, profils Domaine et Privé) liées à OU=Ordinateurs, posées en PowerShell par SSH sur AD-Core-01 ; preuves sur poste-win11 : registre avant/après gpupdate, gpresult, RSOP/ActiveStore (une seule règle d’écho, celle de la GPO, après désactivation de 3 règles locales, H-82), ping depuis srv-docker 3/3 ; bannière vue à l’écran de connexion (capture 185) ; contre-épreuve (règle rétrécie à 10.0.40.0/24 → ping de 10.0.30.12 refusé à 12:01:41, remise à 10.0.0.0/16 → 3/3, capture 186) ; règles locales d’écho réactivées à 11:38:22 par Axel (commande de retour arrière, H-82), puis désactivées pour de bon à 12:06 (décision d’Axel : la GPO seule source ; ping 3/3 à 12:06:13) ; captures 173-186 ; Documentation étape 61, MO-20 |
| 6.21 | Site WordPress aux couleurs de GSB : partie publique + intranet INTRALAB réservé aux comptes connectés (demande d’Axel du 05/11) | 10 | 05/11 : 4 pages publiques, 3 pages d’intranet privées (contenu tiré de la fiche GSB du formateur), redirection vers la connexion ; contrôle d’accès vérifié sur les 2 serveurs web ; étape 64, captures 196-201 ; en chemin : lsyncd arrêté depuis le 29/10, corrigé (H-84), puis surveillé (13ᵉ règle d’alerte, testée : mail reçu, capture 206) ; retouches : « Espace collaborateur » en bas à droite, 2 illustrations (captures 210-211), habillage aux couleurs de GSB (capture 212) ; reste : un compte collaborateur pour tester l’intranet connecté |
La tâche 6.9 est un vrai bonus SISR. Un Linux membre d’un domaine Active Directory, avec authentification des utilisateurs du domaine, est une compétence peu courante au niveau BTS. Elle n’ajoute aucune règle de pare-feu : SSSD utilise les mêmes ports que Windows (Kerberos, LDAP, DNS), déjà ouverts par la règle
USERS → ADM : PORTS_DC_AD.
Points ouverts sur le poste Windows (constatés le 08/10), clos le 05/11 :
Constat du 08/10 Vérification du 05/11 SSH vers poste-win11enSIO\Administrateur:ECONNRESETaprès ~25 s d’authentificationssh sio.internal\[email protected]→ session PowerShell ouverte (compte du domaine). Cause de l’échec du 08/10 non établie (hypothèse d’Axel : latence de la connexion)Ping srv-docker → 10.0.40.100sans réponseLe poste est en 10.0.40.10depuis le 21/10 (réservation DHCP).ping -c3 10.0.40.10depuissrv-docker→ 0 % de perte (0,5 ms)
Bastion (hôte Docker)
| # | Tâche | VLAN | État |
|---|---|---|---|
| 6.10 | Installer Docker + Docker Compose sur srv-docker | 30 | |
| 6.12 | Déployer Termix — ghcr.io/lukegus/termix + guacd, publié sur 443 | 30 | |
| 6.13 | Vérifier Termix depuis un poste du VLAN 40 | 40 → 30 | |
| 6.14 | Déployer Portainer — publié sur 127.0.0.1:9443, accès par tunnel SSH | 30 |
Un portail unique pour les deux protocoles : Termix ouvre les sessions SSH vers les machines Linux et les sessions de bureau à distance vers les machines Windows. Il tourne sur l’hôte Docker
10.0.30.12, qui devient le bastion unique du lab — un seul point d’entrée, une seule adresse à filtrer, une seule règle à justifier.
Phase 7 — Tests et validation
| # | Test | Résultat attendu | État |
|---|---|---|---|
| 7.1 | Ping entre AD-Core-01 et AD-Core-02 (même VLAN) | passe — intra-VLAN, non filtré | (attend AD-Core-02) |
| 7.2 | srv-web → srv-mysql:3306 | passe — flux autorisé | validé |
| 7.3 | poste-win11 → srv-mysql:3306 | refusé — preuve du cloisonnement | validé — PingSucceeded: True mais TcpTestSucceeded: False |
| 7.4 | Accès Internet depuis chaque VLAN autorisé | passe | 05/11 13:31 : WEB, ADM, USERS, VISITEURS sortent (80/443) ; BDD refusé comme prévu (DNS résolu, connexion en délai) ; capture 192 |
| 7.5 | Résolution DNS : poste-win11 → AD → pfSense → Internet | passe | (08/10 : poste-win11 interroge 10.0.30.10 et obtient la chaîne de download.windowsupdate.com. Ne distingue pas le redirecteur pfSense du repli sur les serveurs racine — dette T-11) |
| 7.6 | Site WordPress accessible depuis le VLAN 40 | passe | validé |
Le test 7.3 vaut autant que les autres. Un pare-feu qui laisse tout passer « fonctionne » aussi. Ce qui prouve qu’il travaille, c’est un flux refusé, journal à l’appui (Status > System Logs > Firewall). Capture obligatoire.
Phase 8 — Finalisation
| # | Tâche | État |
|---|---|---|
| 8.1 | Décocher la règle allow all du WAN (créée en 1.5) | 25/09 — zéro règle entrante sur le WAN |
| 8.2 | POSTE_ADMIN | corrigé |
| 8.3 | Sauvegarder la configuration pfSense (Diagnostics > Backup & Restore → XML) | 25/09 — après validation de la chaîne applicative |
| 8.4 | Relecture finale de la documentation + vérification des captures | |
| 8.5 | Agent QEMU sur pfSense + démarrage automatique par Shellcmd |
La tâche 8.3 est à faire aussi en cours de route, après chaque étape importante. Le fichier XML restaure toute la configuration en une minute. C’est ton filet de sécurité — et c’est un réflexe d’administrateur que le jury remarque.
Phase 9 — Accès distant sécurisé (bonus)
Objectif : joindre le lab depuis n’importe où, sans ouvrir le moindre port entrant sur le réseau de l’établissement.
Solution retenue : Tailscale en subnet router sur pfSense. Un tunnel sortant contourne le NAT de l’établissement ; le mode subnet router expose les réseaux entiers avec un seul nœud enrôlé, au lieu d’un agent par machine.
| # | Tâche | État | Dépend de |
|---|---|---|---|
| 9.1 | Créer un tailnet BTS dédié (identité distincte du réseau personnel) | — | |
| 9.2 | Installer le paquet Tailscale sur pfSense · clé d’auth · Accept DNS décoché | 9.1 | |
| 9.3 | Annoncer les 4 routes, les approuver en console, désactiver l’expiration de clé | 9.2 | |
| 9.4 | Règle de pare-feu sur l’onglet Tailscale — Pass · IPv4+IPv6 · any → any | 9.3 | |
| 9.5 | Client sur le poste de travail + option « Use Tailscale subnets » | 9.3 | |
| 9.6 | Publier Portainer sur le réseau pour le joindre par Tailscale | 9.4 | |
| 9.7 | Retirer les dettes devenues inutiles : T-1, T-2 | 25/09 — les deux décochées. T-5 reste actif délibérément : Termix se connecte à pfSense en SSH sur 10.0.30.1. | 9.5 |
| 9.8 | 443 | Écartée le 05/11 (décision d’Axel) : inutile, Pangolin expose ce qu’il faut | — |
Validé : depuis le poste de travail, ping 10.0.30.12 répond et
ssh [email protected] ouvre une session — sans rebond, sans tunnel manuel, sans port ouvert.
Pourquoi Tailscale sur pfSense et non sur
srv-docker: sur le bastion, le SNAT de Tailscale ferait apparaître tout le trafic comme venant deSRV_BASTION— la règle 4 de l’onglet ADM ne l’autoriserait alors qu’en 22/3389. Sur pfSense, le trafic entre directement dans le routeur, avec sa propre interface et ses propres règles.
Décision à assumer : la règle de l’onglet Tailscale fait du tailnet une zone de confiance ayant accès complet au lab. C’est l’objectif, mais c’est une entrée de plus dans la matrice de flux — au même titre que le WAN.
Ce que la phase 9 permet de supprimer (tâche 9.7) : T-1 (allow all sur le WAN), T-2 (admin pfSense depuis le VLAN 40) et T-5 (SSH exposé sur le WAN) deviennent inutiles. Remplacer une exposition par un accès authentifié est un excellent argument de soutenance.
Phase 10 — Haute disponibilité et répartition de charge
Objectif : passer d’une architecture mono-serveur à une architecture redondée. Un cluster Galera à 3 nœuds pour la base, un répartiteur HAProxy devant deux serveurs web.
10.0 — Les trois idées à retenir avant de commencer
Galera n’est pas une machine, HAProxy en est une.
HAProxy INTERCEPTE le trafic Galera COORDONNE des serveurs ──────────────────────────── ──────────────────────────── client ─► srv-ha ─► srv-web-01 srv-mysql-01 ◄══╗ └─► srv-web-02 srv-mysql-02 ◄══╬══ pair-à-pair srv-mysql-03 ◄══╝ il est SUR le chemin rien au milieu → il lui faut sa propre VM → AUCUNE VM supplémentaireGalera est une bibliothèque (
libgalera_smm.so) livrée avecmariadb-serveret déjà installée. On ne l’installe pas : on l’active par configuration sur chaque nœud.
Le répartiteur RÉDUIT la surface d’accès à la base. Les serveurs web ne joindront plus MariaDB du tout : seul
srv-hale fera. La règleSRV_WEB → SRV_MYSQLdevientSRV_HA → GALERA_NODES. Ajouter une couche restreint les autorisations — argument fort.
Répartir ≠ basculer. Le HTTP se répartit vraiment (
roundrobinsur les deux serveurs web). Galera, non : deux écritures simultanées sur des nœuds différents provoquent un conflit de certification. La configuration canonique est un basculement — tout va sur le nœud 1, les nœuds 2 et 3 sont déclarésbackup.
10.1 — Machines à créer
| # | Machine | Adresse | VLAN | Création | État |
|---|---|---|---|---|---|
| 10.1 | srv-ha — HAProxy | 10.0.10.5 | 10 | installation fraîche, Debian 13 sans bureau | HAProxy 3.0.11 |
| 10.2 | srv-web-02 | 10.0.10.11 | 10 | clone de srv-web-01 | site servi, base jointe |
| 10.3 | srv-mysql-02 | 10.0.20.11 | 20 | clone de srv-mysql-01 | identités régénérées |
| 10.4 | srv-mysql-03 | 10.0.20.12 | 20 | clone de srv-mysql-01 | identités régénérées |
Convention d’adressage complétée :
.1passerelle ·.2–.9points d’entrée et infrastructure ·.10et au-delà serveurs applicatifs. C’est pourquoi le répartiteur prend le.5: son rôle se lit dans son adresse.
10.2 — Renommages préalables
| # | Tâche | État |
|---|---|---|
| 10.5 | srv-web → srv-web-01 (machine, /etc/hosts, Termix, 7 livrables) | |
| 10.6 | srv-mysql → srv-mysql-01 (idem) |
10.3 — Pare-feu
| # | Tâche | État |
|---|---|---|
| 10.7 | Alias SRV_HA (10.0.10.5) et GALERA_NODES (.10, .11, .12) | |
| 10.8 | Alias SRV_WEB étendu à 10.0.10.10 et 10.0.10.11 | |
| 10.9 | Alias PORTS_GALERA (3306, 4444, 4567, 4568) | constaté le 05/11 : l’alias existait déjà (« Replication Galera - information, aucun flux inter-VLAN »), non coché jusque-là ; capture 189 |
| 10.10 | Règle USERS n°5 : destination SRV_WEB → SRV_HA | |
| 10.11 | Règle WEB : nouvelle règle SRV_HA → GALERA_NODES : 3306 ajoutée avant le Reject | (l’ancienne règle 3 reste à décocher) |
| 10.12 | Recocher temporairement la règle BDD n°4 le temps des installations, puis re-décocher | rouverte puis refermée |
Aucune règle n’est nécessaire pour la réplication Galera : les trois nœuds sont dans le même VLAN 20, le trafic est commuté et ne traverse pas pfSense. L’alias
PORTS_GALERAest créé pour documenter les ports et servir si les nœuds étaient un jour répartis. C’est un point à expliciter en soutenance, pas à masquer.
10.4 — Cluster Galera
| # | Tâche | État |
|---|---|---|
| 10.13 | mariadb-backup sur les 3 nœuds + utilisateur SST sur le nœud 1 | |
| 10.14 | 60-galera.cnf sur les 3 nœuds · bind-address → 0.0.0.0 (dette T-7) | |
| 10.15 | Amorçage : galera_new_cluster sur srv-mysql-01 seulement (il détient les données) | |
| 10.16 | Jonction des nœuds 2 puis 3 → SST automatique depuis le nœud 1 | + enable réactivé |
| 10.17 | Validation : wsrep_cluster_size = 3 et wsrep_local_state_comment = Synced partout | + Primary sur les 3 |
10.5 — HAProxy
| # | Tâche | État |
|---|---|---|
| 10.18 | Certificat auto-signé, clé + certificat concaténés dans un .pem | SAN : nom + FQDN + IP |
| 10.19 | Frontend HTTPS :443 · redirection 80 → 443 · en-tête X-Forwarded-Proto | |
| 10.20 | ACL : /wp-admin et /wp-login.php → srv-web-01 seul · le reste en roundrobin | |
| 10.21 | listen galera en mode TCP : nœud 1 actif, nœuds 2 et 3 en backup | + timeouts à 1 h |
| 10.22 | Page de statistiques sur :8404 (jointe par Tailscale, sans règle supplémentaire) | admin / <mot-de-passe> (Bitwarden) |
| 10.23 | (canonique) Sonde clustercheck en remplacement de option mysql-check | 05/11 : sonde écrite pour le lab (scripts/galera/, systemd sur 9200, réservée à srv-ha, sans compte MySQL) sur les 3 nœuds ; règle pfSense WEB SRV_HA → GALERA_NODES : 9200 (Axel) ; HAProxy en option httpchk + check port 9200 ; test : srv-mysql-03 désynchronisé → DOWN (MariaDB répondait toujours), resynchronisé → UP, WordPress 200 tout du long ; étape 62, captures 190-191 |
10.6 — WordPress et synchronisation
| # | Tâche | État |
|---|---|---|
| 10.24 | DB_HOST → 10.0.10.5 · WP_HOME / WP_SITEURL → https://www.sio.internal | sur les 2 serveurs |
| 10.25 | Détection du HTTPS relayé dans wp-config.php | prouvé par le HTTP/2 200 |
| 10.26 | Host Override pfSense : www.sio.internal → 10.0.10.5 | |
| 10.27 | lsyncd de srv-web-01 vers srv-web-02, sens unique, sur wp-content | clé confinée par rrsync, démon actif |
Pourquoi le sens unique, et pourquoi l’épinglage de
/wp-adminvont ensemble.lsyncdest unidirectionnel par nature ; synchroniser dans les deux sens crée des boucles. En épinglant toute l’administration sur le nœud 1, on garantit que seul lui écrit des fichiers — exactement la même logique que le « un seul écrivain » de Galera. Les deux décisions se tiennent.
Phase 7 (suite) — Tests de haute disponibilité
| # | Test | Résultat attendu | État |
|---|---|---|---|
| 7.7 | Rafraîchir le site et observer le nœud servant | alternance 01 / 02 | validé — alternance stricte sur 8 requêtes |
| 7.8 | Arrêt d’un serveur web | le site reste debout | validé — arrêt de web-01 : le site tient · arrêt des deux : coupure · redémarrage : reprise immédiate |
| 7.9 | INSERT sur le nœud 2, SELECT sur le nœud 3 | donnée présente | validé — lecture immédiate |
| 7.10 | systemctl stop mariadb sur srv-mysql-01 | WordPress continue | 29/10 : MariaDB arrêté 5 min sur srv-mysql-01, sonde du site à 1 chaque minute, nœud revenu Synced (étape 54.4, capture 120) |
| 7.11 | Perdre 2 nœuds sur 3 (cartes réseau débranchées : un arrêt propre ne suffit pas) | cluster en non-Primary, écritures refusées | 02/11 13:24-13:28 : srv-mysql-01 seul, non-Primary, wsrep_ready OFF, CREATE DATABASE refusé (ERROR 1047) ; site en 503 ; cartes rebranchées : cluster reformé seul en < 10 s, 3 / Primary / Synced (étape 58, capture 145). Constat : Grafana tombe avec le cluster (sa base y est) : une seule alerte, mal nommée (H-66) ; règle reformulée et risque accepté par Axel (T-16) |
| 7.12 | Téléverser un média, le chercher sur srv-web-02 | fichier synchronisé | validé — présent sur le nœud 2 et servi en 200 |
| 7.13 | Rejouer le test 7.3 : poste-win11 → 10.0.20.10:3306 | toujours refusé | 30/10 : Test-NetConnection vers 10.0.20.10, .11 et .12 port 3306 : TcpTestSucceeded False sur les trois nœuds |
| 7.14 | prêt à temps | Sortie du suivi le 05/11 (décision d’Axel) : préparée pendant la période de révision et documentée à part, hors de la documentation du lab. Les fiches réflexes et le modèle de rapport écrits le 02/11 restent en place, inchangés |
Le 7.11 est le test le plus formateur du TP. Avec deux nœuds arrêtés, le survivant refuse délibérément d’écrire au lieu de continuer seul. C’est contre-intuitif : on s’attend à ce qu’un système « tienne » le plus longtemps possible. Or un cluster préfère s’arrêter plutôt que risquer deux moitiés qui divergent — le split-brain. C’est la définition même du quorum, et pouvoir l’expliquer vaut des points.
Le 7.13 n’est pas une redite. Après avoir ajouté trois machines, un répartiteur et assoupli le
bind-address, il faut re-prouver que le cloisonnement tient toujours. Vérifier qu’une évolution n’a pas ouvert de brèche, c’est ce que fait un test de non-régression.
Phase 11 — GLPI sur les serveurs web, base dans le cluster Galera (cadrée le 05/11, terminée le 06/11)
Mission « Assistance » de GSB : un outil de gestion de parc et de tickets. Avis du formateur (29/10) : interface via HAProxy et les deux serveurs web, base sur le cluster Galera. Une seconde application sur le même cluster prouve qu’il s’agit d’un service mutualisé. WordPress reste le site public de GSB (étape 64).
Décisions d’Axel (05/11) : GLPI sur
srv-web-01/02(aucune nouvelle VM : l’hyperviseur n’a que 11 Gio libres sur 62) · actif / secours (tout sursrv-web-01,srv-web-02en relève, fichiers recopiés parlsyncd) · fonctions : parc et tickets, alertes Grafana → tickets, inventaire automatique (agent GLPI). Non retenus pour l’instant : connexion par l’AD, notifications par mail. Faits relevés : Debian 13, Apache 2.4.68, PHP 8.4.24, 2 Gio de RAM par serveur web, MariaDB 11.8.6 ; GLPI 11 demande PHP ≥ 8.2 et MariaDB ≥ 10.6 (compatibilité avec 11.8À VÉRIFIER).
| # | Tâche | État |
|---|---|---|
| 11.1 | Cadrage : architecture, décisions, tâches (plan validé par Axel le 05/11) | 05/11 |
| 11.2 | Base glpi (utf8mb4) et compte glpi@10.0.10.5 (droits sur glpi seulement + SELECT sur mysql.time_zone_name), mot de passe dans Bitwarden ; fuseaux horaires chargés sur chaque nœud | 05/11 : base et compte créés par Axel (mot de passe Bitwarden, réenregistré une fois : le premier ne correspondait pas), droits vérifiés sur les 3 nœuds ; fuseaux chargés une seule fois, recopiés par Galera (486 sur chaque nœud : l’hypothèse « à charger sur chaque nœud » était fausse) ; connexion depuis srv-web-01 par HAProxy OK ; capture 213 |
| 11.3 | GLPI 11 sur srv-web-01 : extensions PHP, archive officielle + somme de contrôle, arborescence hors racine web (/etc/glpi, /var/lib/glpi, /var/log/glpi), virtualhost glpi.sio.internal, installation en ligne de commande, cron | 05/11 : GLPI 11.0.12 (archive GitHub, SHA-256 conforme), PHP passé à 8.4.27 + bcmath/bz2/opcache, arborescence hors racine web, site Apache, 17 prérequis OK, tables créées par Axel (442 tables InnoDB à clé primaire sur les 3 nœuds), install.php retiré, cron systemd, droits de /etc/glpi resserrés ; connexion à la base sans TLS comme WordPress (choix assumé) ; capture 215 |
| 11.4 | Comptes par défaut (glpi, tech, normal, post-only) changés ou désactivés | 05/11 : les 4 changés par Axel (Bitwarden) entre 17:10 et 17:12, vérifié dans glpi_users ; accès depuis le PC d’Axel par son fichier hosts ; données de démonstration du tableau de bord à désactiver ; captures 217-219 |
| 11.5 | srv-web-02 en secours : même code, lsyncd étendu à /var/lib/glpi (clé confinée dédiée), cron sur srv-web-01 seulement | 05/11 : PHP et code identiques, /etc/glpi recopié sans affichage (empreintes identiques), lsyncd 2e bloc avec clé confinée rrsync -wo /var/lib/glpi (témoin en 10 s), backend glpi web-01 + web-02 backup UP ; incident H-86 (WordPress 503 ~43 s, corrigé) ; étape 66, captures 220-221 |
| 11.6 | HAProxy : ACL glpi.sio.internal → backend glpi (srv-web-01 + srv-web-02 backup), certificat étendu | 05/11 : certificat dédié glpi.pem (SNI), ACL avant les règles WordPress, backend contrôlé par /status.php (avec X-Forwarded-Proto https : sinon 400, cookies secure) ; web-02 ajouté en 11.5 ; poste-win11 → page de connexion 200 ; capture 216 |
| 11.7 | DNS glpi.sio.internal → 10.0.10.5 (même endroit que www) | 05/11 : zone AD : glpi et www ajoutés (www manquait : depuis 6.6c, le poste ne résolvait plus le site GSB) ; Host Override glpi dans pfSense posé par Axel (17:33, capture 223) → |
| 11.8 | Bascule testée : Apache arrêté sur srv-web-01 → GLPI servi par srv-web-02, session et pièce jointe retrouvées | 05/11 17:36-17:37 : web-01 retiré en 7 s, srv-web-02 sert (journal), Axel toujours connecté, ticket n°2 et sa pièce jointe affichés (même sha1 sur les 2 serveurs) ; retour à 17:37:32 ; captures 225-226 |
| 11.9 | Inventaire automatique : agent GLPI déployé par script depuis le bastion, flux vers SRV_HA:443 là où il manque | 06/11 : agent 1.21 (SHA-256 vérifiée, minuteur quotidien, pas de service permanent) ; une entité par zone créée au besoin par glpi-entite-zone.py (API REST, compte api-lab, API filtrée dans HAProxy) ; règle pfSense ADM → SRV_HA:443 (Axel) ; scripts Linux (bastion) et Windows testés : srv-metriques (GSB > ADM, lancé par Axel) et poste-win11 (GSB > USERS) ; srv-ha, srv-web-01/02 dans GSB > WEB ; H-91, H-92 ; étape 69, MO-18 §4.4 et §5.6, capture 237 ; puis Axel, depuis le bastion : srv-docker, srv-pbs, srv-supervision, srv-wazuh (GSB > ADM) : puis AD-Core-01 (Windows, GSB > ADM) et les 3 nœuds BDD (règle pfSense permanente BDD → SRV_HA:443 + règle temporaire, créées par Axel ; entité GSB > BDD créée par le script) : 13 machines inventoriées, 4 entités ; hors inventaire : poste-visiteur (exclu) et pfSense ; capture 237 |
| 11.10 | Alertes Grafana → tickets : relais webhook → API GLPI (ouverture à firing, solution à resolved) | 06/11 : règle d’Axel (d’après 62 alertes en 8 jours, 57 finies en < 30 min) : sécurité → ticket tout de suite, autres → ticket si encore active après 2 h, solution automatique au retour à la normale ; relais Python sur srv-supervision (127.0.0.1:9095, compte système, état JSON, sans doublon), compte GLPI api-alertes (Technicien) ; webhook ajouté au point de contact mail-axel ; essais : tickets 5 et 8, alerte courte sans ticket ; chemin réel : 6 connexions SSH refusées → ticket 11 ouvert à 15:39:13, résolu à 15:44:13 ; puis rattachement du ticket à la fiche de la machine (ticket 14 ↔ srv-metriques, machine inconnue : ticket sans lien) ; étape 70, MO-23, captures 240-241 |
| 11.11 | Intégration au lab : base dans l’export SQL nocturne, sonde HTTPS et alerte, mémoire des serveurs web suivie | 05/11 : sonde HTTPS (probe_success 1, 51 ms), ligne « GLPI » dans le bloc Services, courbe de temps de réponse, alerte « Service injoignable » (toutes sondes) ; capture 224 ; base glpi ajoutée à l’export SQL nocturne (essai 17:33 : 120 Ko compressé) ; reste : mémoire des serveurs web à suivre ; 06/11 : H-89 corrigé (sessions GLPI jamais effacées, 590 connexions lsyncd/h : ménage toutes les 15 min, délai lsyncd 30 s, panneaux Grafana sans la recopie ; capture 235) ; 06/11 : mémoire relevée (Prometheus) : disponible 1 152 → ≈ 1 100 Mio en moyenne (GLPI ≈ 50 à 65 Mio), minimum 916 Mio sur 7 jours, swap ≤ 7 Mio : 2 Gio suffisent, pas de passage à 3 Gio ; capture 239 |
| 11.12 | Documentation : étapes, MO-21 GLPI + wiki, Troubleshooting, matrice, DAT, schéma, adressage, registre ; message au dossier | 06/11 : étapes 66, 69, 70 ; MO-21 GLPI (installation, actif/secours, HAProxy, DNS, bascule, entretien, renvois vers MO-18 et MO-23) + wiki ; MO-23 (alertes → tickets) ; H-86, H-89, H-91, H-92 ; matrice (règles ADM et BDD vers SRV_HA:443) ; DAT ; registre (D-13, G-10 à G-18) ; adressage ; message LAB → DOSSIER |
Phase 12 — Rendre l’infrastructure accessible au formateur, puis aux examinateurs (arrêtée le 05/11 : l’accès Termix du formateur suffit, décision d’Axel)
Étape décidée le 08/10 : que le formateur puisse constater l’infrastructure, et, à terme, que des examinateurs le puissent aussi. Avant la phase 12, le lab n’était joignable que par Axel : le WAN n’accepte aucune connexion entrante, et l’accès distant repose sur un tailnet privé qui est une zone de confiance totale (dette T-6).
Suivi détaillé de cette phase :
TP - SISR\Pangolin\SUIVI-PROJET.md(dossier de travail de Pangolin, créé le 14/10). Les tâches 12.x ci-dessous restent la référence ; le zoom les découpe en sous-tâches. La documentation reste celle du TP : étapes 40 à 42, incidents H-17 et H-18, MO-10.Solution retenue le 13/10 : Pangolin auto-hébergé chez Axel (voir « Décision » plus bas). Les questions du tableau suivant restent utiles pour 12.1 (le besoin réel des publics).
| # | Tâche | État |
|---|---|---|
| 12.1 | Écartée le 05/11 (décision d’Axel) : la phase s’arrête, le formateur accède aux machines par Termix (étape 57), ce qui suffit | |
| 12.2 | Vérifier la faisabilité chez Axel pour héberger le serveur : adresse publique (pas de CGNAT), redirection des ports TCP 80 et 443 et UDP 51820, adresse fixe ou DNS dynamique | Vérifié le 13/10. Pas de CGNAT (des services sont déjà joignables par redirection de ports). Adresse dynamique gérée par un script. Conflit des ports 80 et 443 contourné : Nginx Proxy Manager reste devant et renvoie le nom de Pangolin vers son Traefik, avec la prise en charge des WebSockets (sans elle, le connecteur échoue en « bad handshake »). UDP 51820 prouvé : le connecteur Newt, dans Docker sur srv-docker, a établi son tunnel depuis le réseau de l’école (« Tunnel connection to server established successfully »). Cause du retard : la redirection UDP manquait sur la box d’entrée, dont la zone « DMZ » pointait vers un autre équipement que le routeur de l’infrastructure personnelle ; il fallait une règle explicite vers ce routeur |
| 12.3 | Écartée le 05/11 (décision d’Axel) : la phase s’arrête, le formateur accède aux machines par Termix (étape 57), ce qui suffit | |
| 12.4 | Écartée le 05/11 (décision d’Axel) : la phase s’arrête, le formateur accède aux machines par Termix (étape 57), ce qui suffit | |
| 12.5 | Publier l’interface de Proxmox comme ressource (« éventuellement ») | 14/10 : ressource « Sain » et « Protégé » ; page de connexion affichée par le nom de domaine et connexion réussie (après un premier refus « authentication failure (401) » renvoyé par Proxmox lui-même). Hyperviseur de l’école, partagé : à traiter comme les autres ressources d’essai (dette T-12) |
Questions à trancher ensemble
| Sujet | Ce qu’il faut établir |
|---|---|
| Le besoin | Qu’attend le formateur ? Qu’attendent les examinateurs : voir l’infrastructure fonctionner, la manipuler, ou lire sa documentation ? Une épreuve orale se contente souvent de la documentation et d’une démonstration : à confirmer auprès du formateur |
| Le calendrier | Le formateur d’abord, les examinateurs « à terme » : à quelle date, et pour combien de temps ? |
| La forme | Accès réel au lab, démonstration en direct depuis le poste d’Axel, enregistrement vidéo, environnement de démonstration séparé, ou documentation seule |
| La contrainte réseau | Le lab est derrière le réseau de l’école : aucune entrée possible. Un accès réel suppose un tunnel sortant, donc Tailscale, ou un autre moyen à identifier |
| Le niveau de droits | Lecture seule ou administration ? Des comptes dédiés et nominatifs, avec une date d’expiration, jamais un partage de compte |
| Le risque | Aujourd’hui le tailnet donne l’accès complet aux quatre VLAN. Y inviter un tiers exige de restreindre ce qu’il peut atteindre (ACL Tailscale, option C de la dette T-6) |
| Les secrets | Le registre des mots de passe ne se transmet jamais. Qui reçoit quoi, par quel canal, et la rotation après la remise |
| La fiabilité le jour J | Le lab dépend du réseau de l’école et de l’hyperviseur partagé. Quel plan de repli ? Captures, vidéo, documentation à jour |
| Les données | Rien de personnel dans le lab, ou à anonymiser avant tout accès extérieur |
| La réversibilité | Comment révoquer l’accès à la fin, et vérifier qu’il l’est |
Constats d’Axel et pistes à étudier (12/10) — rien n’est décidé ni construit
| Constat ou contrainte | Détail |
|---|---|
| Droits du jury | Le formateur a indiqué que le jury doit avoir un accès avec possibilité de modification. À confirmer par écrit : modifier quoi (les machines du lab, ou la documentation) ? Dans le doute, Axel veut que ce soit possible. Un accès utile à Axel lui-même |
| Budget | Nul : aucune dépense |
| Tailscale | Écarté pour le partage |
| Piste 1 : Pangolin | Plateforme open source, connecteurs sortants (aucun port à ouvrir côté lab), accès par ressource, SSO, OTP par e-mail, accès navigateur à SSH, RDP, VNC, journaux d’accès. L’auto-hébergement exige un serveur public et un domaine (donc un coût). L’offre Cloud « Basic » est gratuite, sans carte bancaire (page tarifaire officielle, lue le 13/10) : 5 utilisateurs, 5 sites, 15 ressources publiques, accès SSH/RDP/VNC dans le navigateur, 2FA. Mais : un seul rôle (pas de RBAC), pas de SSO externe, journaux de requêtes HTTP conservés 3 jours et sans journal de session. Non indiqué : la durée de la gratuité, la bande passante |
| Piste 2 : l’école | Le lab tourne déjà sur le Proxmox de l’école : des comptes limités à ton pool pour la commission, créés par l’école. Gratuit, sans tunnel. Piste non suivie : Axel a abandonné les questions au formateur le 14/10. |
| Décision (13/10) | Serveur Pangolin auto-hébergé sur le Proxmox personnel d’Axel, avec un domaine qu’il possède déjà. Le lab reste sur le Proxmox de l’école et se connecte vers ce serveur (tunnel sortant). Le Cloud devient un repli. Prérequis : tâche 12.2 |
| UDP sortant depuis l’école | Prouvé le 13/10 : les paquets UDP vers le port 51820 traversent pfSense et le réseau de l’école, et le tunnel est établi |
| Ressource de test publiée | 13/10 : l’interface de Termix est atteignable par un nom propre, de bout en bout (DNS « DNS seul » en wildcard, Nginx Proxy Manager avec WebSockets, Pangolin, tunnel, srv-docker). Protection vérifiée en navigation privée : un visiteur non connecté arrive sur l’écran d’authentification de Pangolin, pas sur Termix. Certificat joker et entrée joker dans Nginx Proxy Manager : plus aucune entrée à créer par nom (une ressource créée seulement dans Pangolin répond). Cinq ressources publiées au 14/10 (Termix, pfSense, statistiques HAProxy, Portainer, Proxmox de l’école), toutes protégées par Pangolin. Statistiques de HAProxy publiées (règle ADM 4 bis SRV_BASTION → SRV_HA : 8404, contrôle de santé retiré car la page répond 401 : incident H-18, étape 42). Interface de pfSense publiée en essai : l’écran de connexion s’affiche après avoir déclaré le nom dans Admin Access → Alternate Hostnames (étape 41, incident H-17). Un défaut de configuration a été corrigé en route : le « domaine de base » du serveur contenait https://, d’où des noms de ressources malformés |
| Reste à faire | (1) srv-docker atteint : borner par des règles pfSense avant tout accès tiers. (5) |
Un accès en modification pour un tiers change le risque. Le jury pourrait casser le lab : instantanés Proxmox avant chaque ouverture, comptes dédiés à durée limitée, jamais le coffre Termix ni le registre des mots de passe, et journal des accès.
Phase 13 — Sauvegarde de toute l’infrastructure (cadrée le 14/10, terminée le 06/11)
Sujet ajouté le 09/10 : sauvegarder l’ensemble du lab sur le NAS de l’établissement, qui dispose de beaucoup de place (information d’Axel, non vérifiée). Démarré le 14/10 : Axel met l’accès externe (phase 12) en pause pour ne pas être surpris par une perte de données. Objectif posé par Axel : une sauvegarde complète, automatique et testée.
Ne rien commencer avant d’en avoir parlé ensemble. Ce qui suit pose le contexte et les questions, pas des réponses.
| # | Tâche | État |
|---|---|---|
| 13.1 | Cadrer le sujet avec Axel : périmètre, outil, destination, chiffrement, test de restauration. Les tâches suivantes en découleront | (périmètre, outil (PBS), destination, rétention 7 jours décidés ; chiffrement non retenu le 15/10 ; restauration testée (13.x) ; close le 05/11 : la 2ᵉ copie est suivie par sa propre tâche, 13.6) |
| 13.2 | Sauvegarde manuelle d’une VM (srv-web-01) vers Syno | 14/10 : TASK OK, 10 min 58 s, archive 3,58 Go |
| 13.3 | Test de restauration de cette sauvegarde vers une nouvelle VM | 14/10 : 3 min 20 s, la copie démarre, WordPress présent ; copie supprimée, VM d’origine relancée |
| 13.4 | Tâche planifiée pour tout le pool SIO2527_Axel : 02:00, Syno, snapshot, zstd, 7 quotidiennes + 4 hebdomadaires | créée le 14/10 ; basculée vers PBS le 15/10 (voir 13.9) |
| 13.5 | Contrôler la première exécution automatique : 11 archives, aucune erreur, espace consommé | 15/10 : journal lu, TASK OK, 11 VM, ≈ 75 Go, 2 h 25 ; reste à voir les archives dans Syno → Backups et la rétention après 7 jours |
| 13.6 | Deuxième copie hors du NAS (règle 3-2-1) : NAS personnel d’Axel, à décider selon la taille réelle | 05/11 : en service : datastore S3 s3-maison du PBS vers SeaweedFS sur le TrueNAS d’Axel (quota 200 Gio), synchronisation chaque nuit à 04:00 (dernière sauvegarde de chaque VM), 3 conservées ; essai VM 105 + vérification 0 erreur ; étape 65, H-85, captures 202-207 ; copie complète des 14 VM le 05/11 (15:33 → 16:17, 0 erreur), 66,4 Gio, puis relecture complète depuis le NAS 0 erreur (16:17 → 17:29, capture 222), place réelle mesurée chaque heure et accès vérifié toutes les 5 min (65.2, capture 214) ; Grafana : colonne « Copie sur le NAS » par VM, ligne « Copie hors site (NAS) », 16ᵉ règle « injoignable », jauge du cache S3 (pbs_used d’un datastore S3 = cache local, pas le bucket), 2 règles d’alerte, capture 208 ; 06/11 : nuit vérifiée (sauvegardes 14 × OK, copie 04:00 OK, nettoyage 05:00 et 05:30 OK) ; srv-web-02 restaurée depuis la copie du NAS dans une VM neuve 128 (125 s), démarrée, données présentes, puis supprimée ; stockage Proxmox pbs-s3-axel gardé (décision d’Axel) ; règle « VM absente » réactivée (H-87) ; étape 65.3, MO-12 §13.4.7, captures 227-228 |
| 13.7 | Notifications d’échec : une cible dédiée (pas root@pam, compte partagé) | 23/10 : notifications envoyées par PBS (rien sur l’hyperviseur partagé) : cible SMTP mail-assistant (Gmail, 587 STARTTLS, mot de passe d’application) + matcher vers-assistant, default-matcher désactivé ; mails Prune, GC, Verify et sécurité reçus. Documenté : étape 49.3, H-43, H-44. Le suivi des sauvegardes elles-mêmes viendra d’une alerte « VM non sauvegardée depuis 26 h » (14.8) |
| 13.8 | Export logique des bases du cluster (chiffrement des archives : non retenu, décision d’Axel le 15/10 ; export logique des bases : à décider) | 05/11 : mariadb-dump de wp_lab et grafana chaque nuit à 01:30 sur srv-mysql-03 (timer systemd), 7 jours, emporté par PBS à 02:00 ; syslog exclue (décision d’Axel) ; restauration testée (12 tables identiques) ; étape 63, capture 195 ; 1re exécution automatique à vérifier le 06/11 |
| 13.9 | Mettre en place Proxmox Backup Server (PBS) : sauvegardes incrémentales dédupliquées ; chiffrement côté client non retenu (décision d’Axel le 15/10, pour éviter une clé à perdre). Décidé le 15/10 ; plan arrêté ci-dessous | 15/10 : VM 137 srv-pbs (10.0.30.13), PBS 4.2.8, datastore sio2527-lab (500 Go sur Syno), jeton DatastoreBackup, redirection pfSense testée (200) ; sauvegarde VM 110 en 1 min 33 puis 2 s (incrémental) ; restauration testée (100,75 s, TASK OK) ; Prune 05:00 (7 jours), GC 06:00, Verify samedi ; tâche Save Pool Axel vers pbs-lab-axel, « Keep all backups ». Documenté : MO-12, étape 44 |
| 13.10 | Migrer les disques de toutes les VM vers storage-images (défait les 22-23/10 : disques revenus sur Syno, datastore de PBS sur storage-images, étape 49.2) (pool ZFS storage, 2 disques de 6 To), VM par VM, sans sauvegarde supplémentaire (filet : le vzdump de la nuit du 15/10), anciens disques conservés en « Unused Disk » jusqu’à vérification | 15/10 : les 10 VM sont migrées, TASK OK pour chaque disque ; la VM 107 a des instantanés qui ne sont pas déplacés (avertissement Proxmox). Lab rallumé et testé (Galera redémarré à froid : H-19). Reste : supprimer les anciens disques « Unused » (13.12) |
| 13.12 | Supprimer les anciens disques « Unused » (Syno et local) après redémarrage/test de toutes les VM et une sauvegarde réussie sur les nouveaux disques ; décider avant du sort des instantanés de la VM 107 | 27/10 : instantané de la VM 107 supprimé (24/10) ; tous les disques « Unused » supprimés après 3 nuits réussies (erreurs passées au 2e essai, H-41) ; VM 113 et 128 (sans rôle) supprimées ; pool : 12 VM ; groupe vm/128 supprimé dans PBS le 27/10. Documenté : étape 49.5 |
| 13.13 | Contrôler la première nuit de sauvegarde vers PBS (16/10) : TASK OK, durée, un groupe par VM dans Content, espace du datastore, Prune et GC passés | 16-17/10 : nuit 1 : 11 VM sur 12 en 36 min (VM 137 en échec → sortie du pool, H-21), Prune , GC , Content 11 groupes, Summary 75,95 Go ; nuit 2 (journal lu) : 11 VM, TASK OK, 16 min 37 s, VM 137 absente : correction confirmée ; toutes incrémentales (≈ 31 Gio modifiés, dont 23,2 pour le poste Windows) ; 1er Verify (54 min 52 s) ; datastore 104,94 Go (+29 Go) |
| 13.14 | Supprimer les anciennes archives vzdump de Syno (seulement celles des VM d’Axel), après 13.13 réussie | 17/10 : 11 archives de la nuit du 15/10, 33 fichiers (.vma.zst, .log, .notes), ≈ 75 Go, supprimés après vérification du nombre et de la taille ; l’archive d’une VM 101 datée de janvier 2025 (4,4 Go, pas à Axel) a été laissée : le numéro de VM ne suffit pas à désigner ses fichiers sur un NAS partagé, il faut aussi la date. NAS après suppression : 822 Go utilisés sur 2,7 To (31 %), 1,9 To libres (le gain exact n’est pas isolable : le NAS est partagé et il porte aussi le disque du datastore PBS, qui grossit) |
| 13.11 | Écartée le 17/10 (décision d’Axel) : pour un laboratoire, l’historique de configuration de pfSense (Diagnostics → Backup & Restore → Config History) et la sauvegarde nocturne de la VM suffisent. Limites connues : cette sauvegarde est « cohérente après plantage » seulement (le gel du système de fichiers échoue) et reste dans l’école ; pistes non retenues : le service intégré Auto Config Backup (gratuit en CE, chiffré, hébergé chez Netgate) ou une copie planifiée vers srv-docker | |
| 13.15 | Comprendre pourquoi les VM Windows écrivent autant (poste : 23,2 puis 9,5 Gio/jour ; AD : 5 à 6 Gio/jour, alors qu’il est presque inutilisé) : sur le poste, Get-ScheduledTask -TaskName ScheduledDefrag | Get-ScheduledTaskInfo (l’optimisation du disque a-t-elle tourné ?) et Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 5 (mises à jour installées) ; sur AD-Core-01, la seconde commande | 04/11 : niveau accepté par Axel (mesuré la nuit du 26/10, après émulation SSD, Discard, TRIM et agent invité : poste 8,1 Gio (avant 9,5 à 11, 23,2 le jour de la défragmentation), AD 5,8 Gio (inchangé) ; les pics ont disparu, il reste un fond (Defender, journaux, effet des blocs ≈ 2,3). Gel des systèmes de fichiers : désactivé sur le poste et pfSense, conservé sur l’AD (H-47, H-48). Documenté : étapes 49.1 et 49.4. 04/11 : poste 12,5 Gio, AD 6,5 Gio par nuit ; datastore stable 166-180 Gio sur 491 (≈ 36 %) ; analyse de Defender passée de quotidienne à tous les 15 jours (décision d’Axel ; tâche \Lab\ le samedi 04:00, temps réel et signatures inchangés, H-81) ; effet à mesurer sur les nuits suivantes. plus de décision en attente) |
| MO de la phase : MO-11 Sauvegarde Proxmox · MO-12 Proxmox Backup Server · documentation : étapes 43, 44 et 49, dette T-13 · incidents H-19, H-20, H-21, H-39 à H-44, H-47, H-48 | — |
Pourquoi c’est important
| Constat | Source |
|---|---|
| L’annexe II.E exige une solution de sauvegarde (ligne 6, obligatoire). Un environnement non conforme peut coûter jusqu’à −15 points | Cours du formateur, mon-laboratoire.md |
| Aujourd’hui : export pfSense manuel (tâche 8.3) et instantanés Proxmox manuels. Aucune sauvegarde planifiée ni externalisée | DAT §8.4 ( ENF-7) |
| Le cluster Galera n’est pas une sauvegarde : une erreur se réplique sur les 3 nœuds en quelques millisecondes | DAT §8.4 |
| La compétence 8 (« assurer la continuité des services ») attend une preuve de sauvegarde ou de haute disponibilité | Grille E6 |
Plan PBS arrêté avec Axel (15/10) — réalisé le 15/10 (tâche 13.9)
| Point | Décision |
|---|---|
| Emplacement réseau | VM PBS dans le VLAN ADM, adresse fixe 10.0.30.13, validée par Axel le 15/10 : elle est dans le bloc « serveurs à IP fixe » (.10 → .49) du plan d’adressage, non utilisée dans les documents, et ADM n’a pas de DHCP ; à vérifier qu’elle ne répond pas au ping avant de l’attribuer. Le pare-feu de l’hyperviseur n’atteignant pas l’ADM, une redirection de port TCP 8007 sur pfSense (WAN → PBS), limitée à la source 10.1.0.253, sera nécessaire : première exception à « aucune connexion entrante sur le WAN », à documenter |
| Pourquoi pas dans le réseau de l’école | l’adresse WAN de pfSense (10.1.0.197) est imposée par le formateur, écrite en dur : pas d’adresse supplémentaire à attendre |
| Ressources de la VM | 4 vCPU ; RAM 6 Gio avec ballooning, minimum 2 Gio (l’hyperviseur manque de RAM et il est partagé) ; la documentation de PBS recommande 4 Gio + 1 Gio par To : le minimum de 2 Gio est en dessous de la recommandation |
| VM créée | VM 137 SIO2527-srv-PBS-Axel (nom d’hôte srv-pbs), sortie du pool SIO2527_Axel le 16/10 (laissée dans le pool, elle faisait échouer la tâche de sauvegarde chaque nuit : voir H-21), démarrage automatique, 1 socket × 4 cœurs, 6 Gio avec ballooning (min 2 Gio), carte réseau dans le VLAN ADM (même bridge que la VM 114, étiquette 30 à vérifier). Le disque de données de 500 Go doit avoir « Backup » décoché, sinon une sauvegarde de la VM recopierait le datastore dans lui-même |
| Disques | système 32 Gio sur storage-images ; données : 500 Go, « thin », sur Syno (le NAS, dont Axel dit les disques répliqués : non vérifié), formaté en ext4 |
| Tâche | pool SIO2527_Axel, 02:00, rétention PBS : 7 quotidiennes, pas d’hebdomadaires (7 jours maximum, décidé par Axel le 15/10), chiffrement côté client non retenu |
| Ordre (modifié par Axel le 15/10) | 1. migrer d’abord les disques des VM vers storage-images (13.10), sans sauvegarde supplémentaire : le filet est la sauvegarde vzdump de la nuit du 15/10 sur Syno · 2. installer PBS · 3. le relier à Proxmox · 4. première sauvegarde · 5. test de restauration · 6. supprimer les anciennes archives vzdump de Syno, une fois PBS bien en place |
| pfSense | pas besoin de sauvegarde PBS dédiée : configuration exportée à la main (13.11) |
| Estimation d’espace | mesuré le 16/10 : 75,95 Go sur 500 après la 1re nuit (11 disques, 795 Gio provisionnés, déduplication ×11,75). L’indication « Estimated Full : 3 j 14 h » de PBS n’est pas fiable (elle prolonge la croissance de la 1re copie complète) ; à relever après 2 ou 3 nuits pour connaître l’augmentation quotidienne réelle ; nuit 3 (18/10) : 11 min 16 s, ≈ 17,9 Gio modifiés (poste Windows 23,2 puis 9,5 ; AD 5,1 puis 5,7), soit un plateau estimé à ≈ 190-200 Go à 7 jours (hypothèse) ; nuit 4 (19/10) : 12 min 21 s, ≈ 17,4 Gio (poste 10,9 ; AD arrêtée donc sauvegardée en mode « stop », ≈ 4 Gio de nouveau) |
Constats vérifiés dans le Proxmox de l’école (14/10) (captures d’Axel, connecté en root@pam)
| Constat | Détail |
|---|---|
| Le NAS est déjà déclaré comme stockage | Syno, type NFS, chemin /mnt/pve/NAS-01, partagé, actif ; contenu autorisé : sauvegardes, disques, ISO, conteneurs, snippets, modèles |
| Place disponible | 766,33 Go utilisés sur 2,87 To (26,7 %) : environ 2,1 To libres. Le NAS est partagé avec d’autres usages de l’école |
| Aucune tâche de sauvegarde planifiée | Datacenter → Backup est vide : ni sauvegarde de l’école ni la nôtre |
| Hyperviseur partagé | pools d’autres élèves visibles (SIO2527_Alienis, SIO2527_Tommy) : toute sauvegarde doit être limitée au pool SIO2527_Axel |
Pool storage (stockage ZFS storage-images) | miroir de 2 disques de 6 To (sda, sdb), ONLINE, 0 erreur ; dernier contrôle (scrub) le 11/10 : 0 octet réparé ; 546 Go utilisés, 4,79 To disponibles ; les volumes sont fins (seul l’espace écrit est consommé) |
Pool rpool (système de Proxmox et stockage local) | miroir de 2 NVMe dont l’un est « REMOVED » : il tourne sur un seul NVMe, sans redondance ; 89 Go utilisés, 139 Go disponibles ; dernier scrub du 09/08 sans erreur |
| Santé des disques (SMART, avis global) | sda, sdb et le NVMe restant : PASSED. Ce verdict ne dit rien de l’usure : les attributs détaillés (heures, secteurs réalloués) ne sont pas relevés |
| Compte | la console web est ouverte en root@pam, alors que le registre dit un compte limité au pool : à clarifier |
Premier essai : sauvegarde manuelle de srv-web-01 (VM 110), 14/10, journal vzdump d’Axel
| Mesure | Valeur |
|---|---|
| Commande lancée (journal) | vzdump 110 --mode snapshot --compress zstd --storage Syno |
| Résultat | Backup job finished successfully, TASK OK |
| Durée | 10 min 58 s ; 32 Go lus à 50 Mo/s en moyenne ; 72 % du disque vide |
| Archive | 3,58 Go (vma.zst) dans /mnt/pve/NAS-01/dump |
| Gel du système de fichiers | fs-freeze et fs-thaw appelés : l’agent invité fonctionne sur cette VM ; la VM n’est pas coupée |
| Le disque de la VM est sur le même NAS | Syno:110/vm-110-disk-0.qcow2 : la donnée et sa sauvegarde partagent un support. Panne du NAS = perte des deux. Non vérifié pour les autres VM. À traiter (règle 3-2-1) |
| Notifications | l’envoi échoue : root@pam n’a pas d’adresse e-mail. Une sauvegarde qui échouerait ne préviendrait personne |
| Estimation pour les 11 VM | ≈ 40 Go par passe, ≈ 440 Go pour 11 versions : extrapolation d’une seule mesure (les VM Windows et les bases seront plus grosses) |
| Test de restauration | 14/10 : l’archive de la VM 110 restaurée en VM 136 (storage-images) en 3 min 20 s, TASK OK. La copie démarre, hostname = srv-web-01, Apache actif, les fichiers de WordPress présents (/var/www/wordpress). Non testé : la connexion à la base (réseau débranché ou VM d’origine éteinte) ; la copie de test est à supprimer |
Questions à trancher ensemble
| Sujet | Ce qu’il faut établir |
|---|---|
| Le périmètre | Que sauvegarder : les 11 VM entières, ou seulement ce qui ne se reconstruit pas ? Candidats : configuration pfSense, bases (export logique depuis un nœud), wp-content, volume Termix ( coffre de secrets), état système d’AD-Core-01, documentation |
| Qui pilote | L’hyperviseur appartient à l’école et Axel n’a que le pool SIO2527_Axel. Peut-il planifier des sauvegardes de ses VM vers le NAS, ou faut-il passer par l’école ? |
| Le NAS | Quel protocole (NFS, SMB, autre), quel compte, quel quota ? Le NAS est-il joignable depuis le VLAN concerné ? (une règle de pare-feu serait à créer) |
| L’outil | Les exemples du cours : BorgBackup, Proxmox Backup Server. À comparer à ce que l’école permet |
| Les secrets | Une sauvegarde contient mots de passe et clés privées : chiffrement obligatoire, et gestion de la clé de chiffrement |
| La règle 3-2-1 | Trois copies, deux supports, une hors site. Le NAS de l’école est-il « hors site » par rapport à l’hyperviseur ? |
| La rétention | Combien de temps, à quelle fréquence |
| La restauration | Une sauvegarde jamais restaurée n’est pas une sauvegarde. Quel test, et sur quelle machine, sans casser le lab ? |
| Le jour de l’épreuve | Que montrer à la commission : la configuration, un journal, une restauration réussie ? |
Réponses retenues au 15/10 : périmètre = toutes les VM du pool ; pilotage = tâche planifiée par Axel sur son pool ; NAS =
Syno(NFS, déjà déclaré) ; outil = Proxmox Backup Server ; chiffrement non retenu ; rétention 7 jours ; restauration testée (VM 136 envzdump, VM 139 en PBS). Ouvert : la règle 3-2-1 (pas de copie hors site, 13.6), ce qu’on montre le jour de l’épreuve.
Vue d’ensemble du chemin
[1-4] Socle, VLAN, pare-feu ...............
[5-6] VM et services ...................... tout en service ; reste AD-Core-02 (reporté)
[7] Tests de validation ................. 12 sur 13 (7.1 attend AD-Core-02)
[8] Finalisation ........................ reste la relecture finale (8.4)
[9] Accès distant (Tailscale) ...........
[10] Haute disponibilité .................
[11] GLPI ................................
[12] Accès externe (Pangolin) ............ arrêtée (Termix suffit)
[13] Sauvegarde .......................... restauration depuis la copie hors site prouvée
[14] Supervision et journaux ............. reste la fin de lab (14.10, 14.11) et 14.1 (dossier)
[15] Zone « Visiteurs » .................. reste la qualité de service (après le BTS blanc)
[16] Wazuh + Suricata .................... mesure jusqu'au 10/11, puis extension
[17] LogAnalyzer .........................
[18] Matomo + site en ligne .............. ← tu es ici (prochaine séance, après l'échange Wazuh/Suricata)
[19] Portail GLPI des salariés ...........
[20] Copie hors site immuable ............
[21] GPO « poste Windows prêt » ..........
[22] Mise à jour de tout le lab ...........
Le TP s’est joué en deux temps. La phase 3 était le premier point de bascule : sans VLAN opérationnels, rien n’était testable. La phase 10 est le second : elle ne construit plus l’infrastructure, elle la rend résiliente.
Ce qui change de nature en phase 10. Jusqu’ici, chaque étape répondait à « est-ce que ça marche ? ». Désormais la question devient « est-ce que ça continue de marcher quand une machine tombe ? ».
C’est un autre métier : on ne vérifie plus qu’un service répond, on vérifie qu’il survit. Les tests 7.7 à 7.13 sont conçus pour ça — ils commencent tous par arrêter quelque chose.
Phase 14 — Supervision, centralisation des journaux et alertes (cadrée le 15/10, en construction depuis le 19/10)
Demandée par le formateur le 15/10 : la solution doit s’appuyer sur le cluster MySQL (Galera). La mission N4 du cours sert d’inspiration (éléments à superviser, agents déployés par script, alertes à plusieurs niveaux, panne provoquée) ; ses livrables ne sont pas remplis ici. Cadrage d’Axel du 02/10 : la supervision fait voir, les journaux font prévoir. Périmètre : le BTS et le lab (OMB hors sujet).
Décisions du cadrage (15/10)
| Sujet | Décision |
|---|---|
| Interface | un seul écran : Grafana ; pas d’usine à gaz |
| Montage | Prometheus (métriques) · rsyslog → Galera (journaux) · Grafana (écran et alertes, sa base dans Galera). La contrainte du formateur est tenue par des données réelles (les journaux) dans le cluster |
| Machines | 2 VM dans le VLAN 30 : srv-metriques 10.0.30.14 (Prometheus, sondes) et srv-supervision 10.0.30.15 (Grafana, rsyslog, HAProxy local) ; 2 vCPU, 2 Gio en ballooning, 32 Gio chacune ; hyperviseur à 48 / 64 Go de RAM |
| Accès au cluster | une seule VM parle à Galera (srv-supervision), par un HAProxy local vers les 3 nœuds (bascule si un nœud tombe, indépendant de srv-ha) |
| Alertes | 1. écran · 2. e-mail · 3. Telegram en option, plus tard |
| Rétention | recommandation CNIL 2021-122 (6 mois à 1 an) : authentification 1 an, autres journaux 6 mois, métriques 30 jours ; à confirmer après 48 h de mesure |
| Stockage | estimation non mesurée : ≈ 20 Go par nœud Galera (6 à 60 Go) ; Prometheus ≈ 1,5 Go |
| Outils écartés | Zabbix seul (journaux faibles), Graylog (MongoDB + OpenSearch, lourd), Loki (journaux hors du cluster), Centreon et Icinga (pas de journaux ; Icinga exige Redis), Uptime Kuma (disponibilité seulement) |
Schéma du projet (provisoire, hors annexes) : LAB\travail\Projet-Supervision.drawio. Il passera dans
Infrastructure-TP.drawio une fois le projet construit et testé (14.10).
| # | Tâche | État |
|---|---|---|
| 14.1 | Dossier de choix (≥ 2 outils comparés) + contrat de service et indicateurs/seuils | (traité dans une autre conversation à la demande d’Axel ; celle-ci ne gère que l’infrastructure) |
| 14.2 | pfSense : alias SRV_METRIQUES, SRV_SUPERVISION, PORTS_EXPORTERS, PORTS_SYSLOG ; règles ADM SRV_SUPERVISION → GALERA_NODES : 3306, ADM SRV_METRIQUES → LAB_NETS : PORTS_EXPORTERS, WEB et BDD → SRV_SUPERVISION : PORTS_SYSLOG | 16/10 : 4 alias et 4 règles posés, relevés sur captures 79 à 83 (règle BDD corrigée : port manquant, 84, B-04) ; USERS volontairement non fait (outil Windows à choisir) ; flux non testés (VM inexistantes) ; adresses .14 et .15 vérifiées libres le 18/10 (aucune réponse au ping ni au SSH depuis le poste d’administration, alors que .12 et .13 répondent) |
| 14.3 | VM srv-metriques + Prometheus (30 jours) + sondes (site, DNS, PBS) | 19-20/10 : VM 139 (Debian 13 installée à la main, 4 vCPU, 2 Gio, 32 Gio), à jour, accès par clé et par Termix ; Prometheus 2.53.3 (conservation 30 jours vérifiée, écoute limitée à 10.0.30.14) ; blackbox exporter 0.26.0 (127.0.0.1:9115) ; 4 sondes à probe_success = 1 : sauvegarde PBS, DNS de l’AD, DNS de pfSense, site web ; règle pfSense SRV_METRIQUES → SRV_HA : 443 ; la sonde de la base (3306) est abandonnée (limite du blackbox avec MariaDB, connexions non authentifiées : H-23), remplacée par mysqld_exporter en 14.4. Documenté : étape 46, H-22 et H-23 |
| 14.4 | Script de déploiement des exporteurs (Linux, Windows, nœuds Galera ; pfSense à vérifier) | (Documenté le 21/10 : étape 47, MO-13, incidents H-24 à H-30, scripts dans annexes/scripts/supervision/. 20/10 : node_exporter sur les 10 machines Linux ; script ajouter-machine.sh lancé depuis le bastion srv-docker (IP + compte ; zone déduite, nom lu sur la machine) ; zone BDD : règle Internet rouverte ~20 min puis refermée, test ferme ; 15 cibles up ; 21/10 : mysqld_exporter sur les 3 nœuds Galera (compte prometheus@localhost par unix_socket, sans mot de passe, droits de statistiques seulement ; port 9104 ; mysql_up 1, cluster 3, Synced) ; job mysql dans Prometheus → 18 cibles up ; windows_exporter 0.31.9 sur AD-Core-01 et poste-win11 (pare-feu Windows : 9182 pour srv-metriques seul, vérifié bloqué depuis srv-docker ; poste passé en réservation DHCP 10.0.40.10) ; job windows → 20 cibles up ; pfSense : paquet node_exporter (1.11.0), écoute sur l’interface ADM seule 10.0.30.1:9100, aucune règle ajoutée → 21 cibles up le 21/10) |
| 14.5 | VM srv-supervision + HAProxy local + rsyslog → base syslog (tables générale et authentification) ; transfert depuis Linux, pfSense, Windows | (21/10 : HAProxy 3.0 local 127.0.0.1:3306 → Galera (mysql-01 principal, 02/03 secours, sonde [email protected]) ; bases syslog (journaux 6 mois / journaux_auth 1 an) et grafana, comptes rsyslog (INSERT), grafana_lecture (SELECT), grafana ; rsyslog : TCP 514 (Linux, Windows) + UDP 514 réservé à pfSense, files d’attente sur disque ; 10 Linux (rsyslog ajouté à ajouter-machine.sh, 2e fenêtre BDD), pfSense (RFC 5424), AD-Core-01 et poste-win11 par Fluent Bit 5.1.3 (NXLog CE abandonné : téléchargement sous compte), règle USERS ajoutée ; blackbox passé en warn (36 063 lignes effacées) ; horloges WEB/BDD réparées (NTP vers pfSense). Documenté le 21/10 : étape 48, MO-14/15/16, incidents H-31 à H-38, matrice §4.1) |
| 14.6 | Mesure du volume pendant 48 h, rétention figée, purge automatique | 30/10-01/11 : volumes mesurés (≈ 60 Mo/jour dont 32 Mo pour l’AD) ; rétention 6 mois (CNIL 6 mois-1 an, ANSSI §3.4.5, R24/R25/R26+) ; bruit de l’AD réduit à la source (filtre Fluent Bit : comptes machine, −50 % mesuré) ; purge automatique : compte dédié purge_journaux (SELECT, DELETE sur syslog), script purger-journaux.sh par paquets de 5 000 avec mode simulation, timer systemd chaque nuit à 04:30 ; testé (simulation 180 j : 0 ; 10 j : 98 179 + 37 511 ; suppression en transaction annulée ; exécution manuelle OK) |
| 14.7 | Grafana (base dans Galera), tableau de bord lisible par un non-technicien | (23-27/10 : Grafana en service, tableau d’exercice construit par Axel (étape 50). 27-28/10 : tableau « Lab BTS — Production » pour l’administrateur (décision d’Axel : pas de version non technique), 3 sections (Services, Machines, Journaux et sécurité), chaque bloc validé par Axel ; exporteurs PBS (10.0.30.14:10019) et Proxmox VE (:9221, lecture seule sur le pool) ; sondes Termix et Pangolin (chaîne complète) ; test SSH et Windows (4625) de bout en bout. Documenté le 28/10 : étape 52, MO-13, MO-17, MO-10, H-50 à H-55, captures 107 à 117. Compte lecteur et export JSON : 14.11) |
| 14.8 | Alertes : écran puis e-mail ; niveaux de gravité, escalade ; alerte si la base ou srv-metriques tombe | 29-30/10 : envoi SMTP (STARTTLS), point de contact mail-axel, chemins critique (10 s, rappel 1 h) / avertissement (5 min, rappel 24 h), 8 règles toutes testées : mail [FIRING] puis [RESOLVED] reçus (étape 54, captures 118 à 125). Absence de données = alerte : la chute de srv-metriques n’est pas silencieuse |
| 14.9 | Tests : pannes provoquées (service arrêté, nœud Galera, échecs de connexion) et alerte reçue | 29-30/10 : service arrêté (Termix), exporteur muet, vrai arrêt de VM (srv-web-02), nœud Galera, rafale de mots de passe faux, Prometheus arrêté : mail [FIRING] puis [RESOLVED] reçu à chaque fois (étape 54, captures 118 à 128) ; correction de la supervision aveugle (H-62) |
| 14.10 | Documentation (MO, étapes, matrice, DAT, schémas, adressage) | (au fil de l’eau : étapes 46 à 52, MO-13 à MO-17, DAT, schémas, adressage ; reste la synthèse en fin de phase) |
| 14.11 | En fin de lab : compte lecteur formateur (rôle Viewer, mot de passe dans Bitwarden, registre des comptes) et export JSON du tableau de production, relu sans secret, dans annexes/grafana/ | (reporté par Axel le 28/10) |
| 14.12 | Alerte « site lent » : temps de réponse de la sonde HTTPS du site > 2 s pendant 5 min (engagement du contrat de service), testée | 30/10 : règle créée (avertissement, attente 5 min), testée en abaissant le seuil : [FIRING:1] à 11:51:34 (étape 54, capture 129) |
Points à vérifier en chemin : clés primaires exigées par Galera sur les tables des journaux ; charge d’écriture
répliquée ; métriques de pfSense ; outil de transfert des journaux Windows ; compte d’envoi e-mail (secret dans
Bitwarden). Disque de srv-mysql-01 relevé le 15/10 (df -h) : 96 Go, 2 Go utilisés, 90 Go libres (les deux
autres nœuds, clones, non relevés).
Phase 15 — Zone « Visiteurs » (VLAN dédié) (demandée par Axel le 29/10)
Contexte : GSB a une zone « Visiteurs » (VLAN 150 chez GSB) : invités et visiteurs, accès Internet seul, qui peuvent seulement interroger le DNS et le DHCP. Elle manque au lab. Elle sert à deux réalisations : l’extension qualité de service de la mission N4 (limitation de débit de cette zone, mesures avant et après avec iperf3) et le VPN des visiteurs de la mission N1 (un visiteur n’atteint que l’application). Sources : conventions-gsb §2, lettres de mission N4 et N1 (dossier de rendu). Le VLAN 50 n’est cité nulle part dans la documentation du lab (vérifié le 29/10).
Décisions à confirmer
| Sujet | Proposition |
|---|---|
| VLAN et réseau | VLAN 50, 10.0.50.0/24 (règle du lab : le 3ᵉ octet reprend le numéro de VLAN), passerelle 10.0.50.1, DHCP de .100 à .199 |
| Droits (modèle GSB) | DNS et DHCP (pfSense) et sortie Internet ; tout le reste rejeté et journalisé. L’accès à l’application (HTTPS vers le répartiteur) n’est ajouté que pour le VPN des visiteurs (réalisation 2), à décider |
| # | Tâche | État |
|---|---|---|
| 15.1 | Confirmer le numéro de VLAN et le réseau (proposition : VLAN 50, 10.0.50.0/24) | 30/10 : validé par Axel : VLAN 50, 10.0.50.0/24, passerelle 10.0.50.1 |
| 15.2 | vmbr1 (VLAN aware) : vérifier qu’il transporte le VLAN 50 ; pfSense : VLAN 50 sur vtnet1, interface VISITEURS en 10.0.50.1/24 | 30/10 : VLAN 50 sur vtnet1, interface VISITEURS (opt5, vtnet1.50) en 10.0.50.1/24, sans passerelle, statut up ; configuration sauvegardée avant |
| 15.3 | DHCP du VLAN 50 : plage .100 à .199, DNS = la passerelle (comme le VLAN 40) | 30/10 : ISC DHCP sur VISITEURS, plage 10.0.50.100 → .199, DNS 10.0.50.1 seul, pas de domaine |
| 15.4 | Alias et règles pfSense : DNS et NTP vers la passerelle, rejet journalisé vers toutes les zones internes (placé avant la règle de sortie, comme dans les autres zones), sortie Internet | 30/10 : alias RESEAUX_PRIVES (RFC 1918 : 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, type Network), LAB_NETS + 10.0.50.0/24 ; 5 règles : DNS/NTP vers la passerelle, journaux du poste vers srv-supervision, refus journalisé de pfSense (This Firewall), refus journalisé de tout le privé, sortie HTTP/HTTPS (capture 130) |
| 15.5 | poste-visiteur : VM permanente du pool SIO2527_Axel (Debian 13, 1 vCPU, 1 Gio, 16 Gio), carte sur vmbr1 étiquette 50, réservation DHCP 10.0.50.200 ; accès SSH par le bastion (Termix) | 30/10 : VM SIO2527-poste-visiteur-Axel (Debian 13, sans interface graphique ; installée sur le VLAN 40 faute de règles Visiteurs, puis passée en VLAN 50), réservation DHCP 10.0.50.200 (MAC bc:24:11:a0:bb:34), alias LAB_NETS + 10.0.50.0/24, hôte Termix par clé SSH (ipfixe-termix-lab), SSH par mot de passe interdit (/etc/ssh/sshd_config.d/10-cle-seulement.conf ; clé dédiée des scripts du bastion déposée ; test : Permission denied (publickey)), agent QEMU actif et vu par Proxmox (IP affichée dans Summary) |
| 15.6 | Tests : adresse reçue en DHCP ; Internet joignable ; accès refusé vers WEB, BDD, ADM et USERS, journal du pare-feu à l’appui (capture) | 30/10 : DNS résolu, HTTP/2 200 vers Internet ; 6 cibles internes refusées (pfSense, HAProxy, Galera, Termix, RDP du poste Windows, hyperviseur de l’école) ; 6 refus dans le journal du pare-feu avec la description des règles (capture 131) |
| 15.7 | Supervision : ajouter-machine.sh (exporteur + journaux) ; règle VISITEURS « journaux du poste vers srv-supervision » (poste-visiteur seul → SRV_SUPERVISION:514, avant les refus) ; mesures par srv-metriques (déjà permis : LAB_NETS contient le VLAN 50) | 30/10 : ajouter-machine.sh (zone VISITEURS ajoutée au script) : prometheus-node-exporter sur 10.0.50.200:9100, rsyslog vers srv-supervision:514 ; Prometheus : up{host="poste-visiteur", zone="VISITEURS"} = 1 ; 11 lignes de journaux reçues dans la base dans l’heure |
| 15.9 | Sauvegarde : poste-visiteur dans la sauvegarde de nuit (le travail de sauvegarde porte sur le pool) et dans le bloc Sauvegardes du tableau de bord ; une nuit réussie vérifiée | 01/11 : sauvegardé automatiquement par la tâche de nuit du pool (dernière sauvegarde SIO2527-poste-visiteur-Axel le 01/11 à 02:13) ; PBS compte maintenant 13 VM ; la règle « Sauvegarde trop ancienne » le couvre |
| 15.10 | Grafana et alertes : zone VISITEURS dans les filtres du tableau de production, poste-visiteur dans les blocs Machines et Journaux ; vérifier qu’il est couvert par les règles d’alerte (machine injoignable, disque, mémoire…) | 30/10 : sans aucune modification du tableau : filtre Zone = VISITEURS, poste-visiteur en ligne, mémoire réglée 2 Gio / vue 1,93 / utilisée 0,25, connexions SSH « clé » visibles, courbe de volume des journaux (captures 132 à 135) ; alerte « Machine injoignable » : 14 machines dont le poste. Limite constatée : le bloc Journaux (requêtes SQL) ne suit pas les filtres Zone et Machine |
| 15.8 | Documentation : étape dans la documentation, matrice de flux, plan d’adressage (aussi dans le cerveau), schéma ; table de correspondance GSB du dossier de rendu mise à jour | 01/11 : étape 55 de la documentation, matrice de flux (§4.4 bis, alias RESEAUX_PRIVES), DAT 1.4 (5 zones, 14 machines), schéma draw.io page 1 + nouvelle page 7 « Supervision, journaux et alertes » (captures 142 et 143), plan d’adressage du cerveau ; table GSB : tenue par la conversation du dossier |
| 15.11 | Qualité de service (mission N4, lot 4 « extension ») : limiter le débit de la zone Visiteurs pour protéger le service, mesuré avant et après (test n° 7 du plan de tests R1) | 12/11 (prévue « après le BTS blanc », avancée à la demande d’Axel) : limiteurs de 50 Mbit/s par sens sur la sortie de la zone ; sous la charge d’iperf3 (2,43 Gbit/s sans limite), le site passe de 138 à 344 ms ; avec limite, poste plafonné à 48,5 Mbit/s et site à 136 ms, dans les deux sens (étape 76, capture 281, H-102) |
Validé : une machine du VLAN 50 obtient une adresse, sort sur Internet et se voit refuser toutes les autres zones, journal du pare-feu à l’appui.
La logique à comprendre : c’est le même principe que la zone USERS, en plus fermé. Une zone se définit par ce qu’elle peut atteindre : ici, le DNS, le DHCP et Internet, rien d’autre. La règle de rejet doit précéder la règle de sortie large, sinon elle ne sert à rien (voir la matrice de flux).
Phase 16 — Détection d’intrusion et alerte (demandée par Axel le 30/10 ; cadrée le 02/11 : Wazuh + Suricata)
Objectif : être prévenu d’une intrusion (ou d’une tentative) sur le lab, pas seulement d’une panne. Les alertes de la phase 14 voient les pannes et les rafales de mots de passe faux ; elles ne voient ni une attaque réseau, ni un fichier système modifié, ni un compte créé en douce.
| # | Tâche | État |
|---|---|---|
| 16.1 | Cadrer et choisir l’outil (dossier de choix, ≥ 2 solutions comparées) : Wazuh, Suricata, CrowdSec ; critères : ce qu’il détecte, ressources (hyperviseur partagé), intégration à l’existant, effort | 02/11 : comparatif présenté ; décision d’Axel : Wazuh (serveur tout-en-un) + Suricata (paquet pfSense), CrowdSec écarté (doublon de Wazuh) ; VM de 6 Gio (minimum officiel 8 : essai assumé, sans ballooning), Ubuntu Server 24.04 (Debian hors de la liste supportée), Suricata sur VISITEURS + USERS d’abord ; dossier de choix ; formateur non prévenu des 6 Gio (décision d’Axel, 03/11) |
| 16.2 | VM srv-wazuh (Axel, Proxmox, pool SIO2527_Axel) : Ubuntu Server 24.04 sans interface graphique, 2 vCPU (4 si possible), 6144 / 6144 Mio (pas de ballon), 60 Go, vmbr1 tag 30, IP fixe 10.0.30.16/24, passerelle et DNS 10.0.30.1, agent QEMU, compte ipfixe, mises à jour | 02-03/11 : VM 113 SIO2527-srv-wazuh-Axel, 4 vCPU, 6144 Mio fixes (ballon désactivé), disque 64 Go sur le NAS, VLAN 30, 10.0.30.16/24 ; installée depuis l’ISO 22.04.5 présente sur pve-01 puis montée en 24.04.5 par do-release-upgrade (03/11) ; racine agrandie de 31 à 61 Go (lvextend + resize2fs : l’installeur ne donne que la moitié du disque à LVM) ; agent QEMU actif après activation de l’option dans Proxmox et arrêt/démarrage (un reboot ne suffit pas) ; adresse vue par Proxmox |
| 16.2 bis | Intégrer la VM à l’environnement (règle pour toute nouvelle machine, comme poste-visiteur) : (a) hôte Termix par clé SSH, mot de passe SSH interdit ; (b) ajouter-machine.sh (exporteur + journaux) ; (c) up{host="srv-wazuh"} = 1 dans Prometheus et le tableau de production ; (d) alertes : couverte par les règles par machine, sonde HTTPS du tableau Wazuh dans « Service injoignable » ; (e) sauvegarde PBS la nuit suivante ; (f) adressage du cerveau, registre des comptes, §2.1 de la documentation, schéma | 03-04/11 : (a) clé Termix (identifiant ipfixe) et clé du bastion déposées, hôte Termix créé et partagé au formateur, mot de passe SSH interdit (sshd -T : no ; test depuis srv-metriques : Permission denied (publickey)) ; (b) ajouter-machine.sh ; (c) up{host="srv-wazuh", zone="ADM"} = 1, 39 lignes de journaux dans l’heure ; (f) adressage, registre, §2.5 ; (d) « Machine injoignable » : 15 instances dont srv-wazuh (capture 146) ; (e) sauvegardée par PBS dans la nuit du 03 au 04/11 (≈ 02:10, 14 VM dans PBS, âge lu dans Prometheus) ; schéma à jour ; MO-18 écrit |
| 16.3 | Installer Wazuh tout-en-un (wazuh-install.sh -a, option pour ignorer le contrôle matériel À VÉRIFIER) ; avant le premier démarrage : tas Java de l’indexeur réduit (-Xms1500m -Xmx1500m), bootstrap.memory_lock: true ; mot de passe admin dans Bitwarden ; tableau https://10.0.30.16 | 03/11 : installeur officiel 4.14 (wazuh-install.sh -a, 215 Ko, en-tête vérifié avant de lancer), aucun blocage sur la RAM ; wazuh-manager, wazuh-indexer, wazuh-dashboard actifs ; mot de passe admin dans Bitwarden (Wazuh - admin), archive des mots de passe internes déplacée dans /root (600 root) ; dépôt apt Wazuh désactivé (#deb, recommandation officielle) ; tas Java de l’indexeur déjà réglé à 1 Gio par l’installeur (-Xms1024m -Xmx1024m, gardé : moins que les 1,5 Gio prévus) ; mémoire juste après : 2,2 Gio utilisés sur 5,8, java 1,24 Go, 265 Mio de swap (à suivre en 16.6) ; tableau de bord publié par Pangolin (wazuh.pangolin.<domaine>, cible https 10.0.30.16:443, contrôle de santé TCP, état Sain, protégé ; vérifié en navigation privée : page « Authentification requise » de Pangolin) ; capture du tableau à faire (sans le domaine réel) |
| 16.4 | pfSense : alias SRV_WAZUH, PORTS_WAZUH (1514, 1515) ; règles « agents → Wazuh » sur WEB, BDD (exception assumée), USERS, VISITEURS (poste-visiteur seul), avant les rejets | 03/11 : alias SRV_WAZUH et PORTS_WAZUH (description par port) ; règles WEB, BDD, USERS (X subnets) et VISITEURS (10.0.50.200 seul, après correction d’une source erronée USERS subnets : refus immédiat du rejet) ; 1514 et 1515 ouverts depuis srv-web-01, srv-mysql-01, poste-visiteur et poste-win11 ; matrice de flux à jour ; captures 147 à 152 |
| 16.5 | Agents par script : ajouter-agent-wazuh.sh (Linux, depuis le bastion) et installer-wazuh-agent.ps1 (Windows, MSI vérifié) ; d’abord 3 machines : srv-ha, AD-Core-01, poste-win11 | 03/11 : mot de passe d’inscription exigé par le serveur (/var/ossec/etc/authd.pass, 640 root:wazuh, saisi par read -rsp, dans Bitwarden ; <use_password>yes</use_password>, copie ossec.conf.avant-authd ; journal : « Using password specified on file ») ; scripts écrits dans scripts/securite/ : ajouter-agent-wazuh.sh (bastion), installer-wazuh-agent.sh (version figée 4.14.9-1 = celle du serveur, dépôt désactivé après installation), installer-wazuh-agent.ps1 (empreinte SHA-512 officielle vérifiée) ; le mot de passe d’inscription n’est demandé qu’une fois par lancement (plusieurs machines possibles), transmis par SSH dans un fichier temporaire 600 effacé aussitôt ; scripts déposés par l’agent QEMU (empreintes vérifiées) ; deux corrections au premier essai : attente de la connexion trop courte (lecture de l’état officiel wazuh-agentd.state, jusqu’à 60 s) et empreinte .sha512 reçue en binaire sous Windows ; 3 agents actifs : srv-ha (001), ad-core-01 (002), poste-win11 (003) (agent_control -l) |
| 16.6 | Semaine de mesure : mémoire et swap de srv-wazuh, place de /var/ossec, charge de pve-01 ; décision : étendre, ou repli CrowdSec + Suricata | Bilan du 11/11 (03/11 → 11/11, Prometheus et relevé direct) : mémoire 2,5 Gio en moyenne et 2,7 Gio au plus sur 5,8 ; swap 1,0 Gio au plus (0,8 le 11/11) mais 0,7 page/s d’échanges en moyenne (pages anciennes, pas de saturation) ; processeur 1,4 % en moyenne, pointe 75 % (analyses périodiques) ; disque / 29 Gio sur 61, stable sur 8 jours ; /var/ossec 16 Gio dont 14 Gio de base de vulnérabilités (taille fixe) et 99 Mio d’alertes ; 7 agents ; pve-01 : pas d’historique (l’exporteur Proxmox ne voit que le pool d’Axel), 12 Gio libres sur 62 le 11/11 ; srv-wazuh lui coûte 1 % de processeur. Décision d’Axel (11/11) : étendre (16.7) ; à surveiller : le bruit des mails de vulnérabilités (phase 23) et le swap une semaine après l’extension |
| 16.7 | Extension à toutes les machines (nœuds Galera, pfSense : agent ou syslog À VÉRIFIER), groupes d’agents par zone | |
| 16.8 | Suricata sur pfSense : paquet, règles ET Open, VISITEURS puis USERS en mode détection, journal EVE JSON ; mémoire de pfSense relevée avant/après ; test : balayage depuis poste-visiteur → alerte ; puis extension à tout le lab si la mémoire tient | 03/11, VISITEURS fait : paquet installé (configuration sauvegardée avant), ETOpen seul, mise à jour toutes les 12 h, interface VISITEURS (vtnet1.50) en détection (Block Offenders décoché), EVE JSON en fichier, 7 catégories ; test depuis poste-visiteur (uid=0(root) envoyé à un service d’écho : testmynids.org a expiré) → 3 alertes en 2 s (2019284, 2100498) ; mémoire libre de pfSense 1 477 → 827 Mo, processus suricata 396 Mo, swap 0 (captures 154 à 162) ; USERS fait (interface dupliquée, 22 996 règles chargées en ≈ 50 s, test depuis poste-win11 → 2 alertes en 2 s) ; mémoire libre 674 Mo, ≈ 370 à 400 Mo par interface : les 3 autres zones ne tiennent pas ; décision d’Axel (03/11) : on s’arrête à VISITEURS + USERS (option A) ; plus tard (option B) : tester un seul Suricata sur le trunk vtnet1 pour couvrir les 5 zones ; si la mémoire manque, Axel peut ajouter un peu de RAM à pfSense, mais au-delà de 2 Gio de plus on passe à B (captures 163, 164) |
| 16.9 | Suricata → Wazuh : les alertes de Suricata lues par Wazuh ; test de bout en bout | 03/11 : pas d’agent sur pfSense ; Suricata « Send Alerts to System Log » (format court, LOCAL1) → journal de pfSense → srv-supervision (base des journaux) → copie des seules lignes suricata vers srv-wazuh:514/udp (réception syslog depuis 10.0.30.15 seul) → décodeur local suricata-fast + règles 100200 (niveau 6) et 100201 (niveau 10, priorité 1 ou 2) testés avec wazuh-logtest → mail ; le JSON (EVE) écarté : pfSense coupe ses messages à 480 octets ; test depuis poste-visiteur à 18:51:44 → alerte 100201 à 18:51:45 → [FIRING:1] … fw-01 (Suricata) à 18:54:16 (capture 171) ; incidents H-78 (option prise en compte au redémarrage seulement) et H-79 (format non décodé) |
| 16.10 | Alertes par mail : envoi par Wazuh (niveau ≥ 10) ou règle Grafana sur l’indexeur, un seul canal ; tests : fichier modifié, compte créé, rafale SSH | 03/11 : détection prouvée (fichier modifié → 550 niv. 7, compte créé → 60109 niv. 8, force brute SSH → 5712 niv. 10, capture 153) ; mail : Wazuh envoie ses alertes de niveau ≥ 10 en syslog (syslog_output, wazuh-csyslogd) au rsyslog local de srv-wazuh (127.0.0.1:514, rien d’ouvert au réseau), qui les transmet à srv-supervision avec le reste du journal → base des journaux (6 mois) → règle Grafana « Intrusion détectée (Wazuh) » (critique, requête SQL par agent et par règle) → circuit de mails existant ; l’indexeur (9200) n’écoute qu’en local : pas exposé ; test : force brute SSH à 18:19:47 → [FIRING:1] reçu à 18:21:16 dans les deux boîtes (capture 167) ; décision d’Axel : seuil 10 gardé, plus les créations de comptes (2e syslog_output : règles 60109 Windows et 5902 Linux, niveau 8) ; 1er test : srv-ha sans [FIRING] (fenêtre de 5 min plus courte que l’envoi groupé, H-77), fenêtre portée à 15 min → [FIRING:3] à 18:33:15 (poste-win11 60109, srv-ha 5902 et 5712) (capture 168) ; un fichier système modifié (niveau 7) reste visible dans le tableau Wazuh seulement ; tableau de production (v. 63) : bandeau « Alertes en cours » en haut, case « Intrusions Wazuh (24 h) » et tableau « Dernières intrusions » (vérifié à l’écran : 5 intrusions, bandeau Firing ; captures 169, 170)* |
| 16.11 | Documentation : étapes 59-60, MO-19 Wazuh + wiki, Troubleshooting, matrice, DAT 1.5, schéma, adressage, registre, coordination ; envoi au prof sur « envoie » | 03/11 : étapes 59 et 60 (captures 146 à 164), dettes T-17 et T-18, MO-19 Wazuh et Suricata + copie wiki, Troubleshooting H-68 à H-76, matrice (03/11), DAT 1.5, schéma (page 1 et page 7), adressage, dossier de choix 1.1, message à DOSSIER ; registre des comptes À VÉRIFIER (entrées Wazuh) ; envoyé au formateur le 03/11 (commit 929025e, 37 fichiers) |
Validé : une attaque simulée (scan de ports, modification d’un fichier système ou création d’un compte, selon l’outil retenu) produit une alerte reçue par mail, preuve à l’appui.
Phase 17 — Journaux bruts en direct : LogAnalyzer (demandée, cadrée et mise en service le 06/11)
Objectif : un écran simple pour voir tous les journaux stockés, bruts et en direct, sans rien chercher, faire des recherches faciles, et repérer ce qui choque pour affiner ou ajouter des règles (filtres rsyslog, Wazuh, alertes Grafana). Grafana reste l’écran central (ce que ses requêtes choisissent) ; LogAnalyzer est la loupe. Limite : le bruit jeté à la source par rsyslog (étape 56) n’arrive jamais en base, LogAnalyzer ne le voit pas.
| # | Tâche | État |
|---|---|---|
| 17.1 | Cadrage : LogAnalyzer 5.0.2 (28/09/2026, repris par l’équipe rsyslog, correctifs de sécurité) sur srv-supervision (pas de nouvelle VM) ; lecture par deux vues au format MonitorWare ; pas de base d’utilisateurs LogAnalyzer, accès protégé par Apache + pare-feu | 06/11 : plan validé par Axel |
| 17.2 | Vues et compte : la_journaux, la_journaux_auth dans syslog (type de facilite/gravite relevé d’abord) ; compte loganalyzer@10.0.30.15, SELECT sur les 2 vues seulement, mot de passe par Axel (Bitwarden) | 06/11 : facilite/gravite déjà numériques ; vues au format MonitorWare (heure de Paris, Checksum calculé pour que LogAnalyzer n’écrive jamais), lecture des 50 derniers par l’index ; compte créé par Axel (D-14), recopié sur les 3 nœuds ; vue lue, table refusée (ERROR 1142) ; capture 229 |
| 17.3 | Apache + PHP 8.4 sur srv-supervision : site HTTPS 8443 seul, certificat auto-signé, mot de passe Apache (Bitwarden) ; mémoire relevée avant/après | 06/11 : Apache 2.4.69, PHP 8.4.27 ; écoute *:8443 seule (port 80 fermé, site par défaut désactivé), certificat auto-signé jusqu’au 08/02/2029, ServerTokens Prod ; sans mot de passe 401 ; compte web ipfixe créé par Axel (bcrypt, Bitwarden) et essai réussi ; mémoire disponible 976 → 947 Mio, apache2 113 Mio ; capture 230 |
| 17.4 | LogAnalyzer 5.0.2 : archive GitHub (taille et empreinte annoncées), src/ dans /var/www/loganalyzer, installeur web (2 sources MySQL natives, comptage des lignes désactivé), puis config.php en lecture seule et install.php supprimé | 06/11 : archive GitHub vérifiée (6 875 678 octets, SHA-256 identique à celle publiée), 580 fichiers ; installeur fait par Axel depuis son PC (200 caractères par message, résolution DNS des IP désactivée, pas de base d’utilisateurs, comptage des lignes désactivé) ; 2e source « Authentification » ajoutée dans config.php sans afficher le mot de passe ; config.php en 640 root:www-data, install.php supprimé ; lien de l’installeur affiché en texte brut (H-88) ; capture 231 |
| 17.5 | Pare-feu : administration → SRV_SUPERVISION:8443 (comme Grafana 3000) ; rien depuis USERS, WEB, VISITEURS | 06/11 : aucune règle à ajouter : le PC d’Axel arrive par l’onglet Tailscale (Pass any → any, comme pour Grafana) ; depuis USERS (poste-win11) et WEB (srv-web-01), 8443 bloqué (témoin : 3000 bloqué aussi) |
| 17.6 | Usage : vue en direct (rafraîchissement), filtres enregistrés, recherche ; un cas réel → règle ajustée | 06/11 : cas réel fait : la 1re page de LogAnalyzer montrait la sonde Galera (10.23) partout, mesurée à 77 % des journaux (10 315 lignes sur 13 402 en 1 h) ; LogLevelMax=notice + SyslogLevel=warning dans [email protected] sur les 3 nœuds : 60 → 0 ligne par minute et par nœud, erreurs du script toujours journalisées (essai), sonde 200 Synced, HAProxy 3 nœuds UP ; capture 232 ; recherche severity:warning par Axel : fait ressortir l’essai, 3 échecs simultanés de la sonde à 05:50:46 sans retrait par HAProxy (cause À VÉRIFIER), des 401 sur PBS (essais du stockage, page restée ouverte) ; capture 233 ; 06/11 soir : bruit de routine coupé sur 3 autres machines (recopie GLPI par une seule connexion SSH, tâches minute de srv-web-01, interface Wazuh) : srv-web-02 1 270 → 70, srv-web-01 453 → 70, srv-wazuh 645 → 125 lignes/h ; étape 67.4 bis, capture 242 |
| 17.7 | Intégration : sonde blackbox 8443, ligne « LogAnalyzer » dans l’état des services, règle « Service injoignable » ; mémoire suivie | 06/11 : module blackbox http_401_insecure (401 attendu : Apache répond et demande le mot de passe, la supervision n’a pas besoin du mot de passe), job sonde_loganalyzer (service="loganalyzer"), probe_success 1 ; tableau v71 : nom « LogAnalyzer » ; règle « Service injoignable » (probe_success) le couvre d’office ; copies blackbox.yml / prometheus.yml des annexes remises à jour (elles n’avaient pas suivi GLPI) ; mémoire : 947 Mio disponibles après Apache (17.3) ; capture 234 |
| 17.8 | Documentation : étape 67, MO-22 (+ wiki à la demande), Troubleshooting, matrice, DAT, schéma, adressage, registre, captures, LAB → DOSSIER | 06/11 : étape 67 (67.1 à 67.5), MO-22 + copie wiki, H-88 et H-89, DAT 1.8 (exigence « lecture des journaux bruts », port 8443), matrice (note ADM : aucune règle ajoutée), schéma page 7 + PDF du wiki, adressage du cerveau, registre (D-14, W-03), captures 229-235, message LAB → DOSSIER |
Validé : depuis le PC d’Axel, les derniers messages des deux sources s’affichent et se rafraîchissent seuls ; un
logger de test apparaît en quelques secondes ; poste-win11 est refusé ; le compte loganalyzer ne peut pas lire
les tables.
Phase 18 — Mesure d’audience du site de GSB (Matomo), site mis en ligne (demandée le 06/11 par la conversation portfolio, compétence C3 de l’E5 ; montage choisi par Axel ; à démarrer à la prochaine séance)
Objectif : mesurer l’audience du site public de GSB, en conformité RGPD (dispense de consentement selon le guide de la CNIL), avec de vraies visites : le site est mis en ligne par Pangolin. Matomo est une application à part sur les serveurs web (actif / secours, base dans Galera, comme GLPI) : troisième usage du cluster mutualisé.
| # | Tâche | État |
|---|---|---|
| 18.1 | Cadrage : réglages exacts du guide CNIL (anonymisation IP, cookies, conservation, fonctions exclues), version de Matomo, ce qui est exposé / ce qui reste fermé, risques acceptés | 10/11, plan validé par Axel : Matomo 5.14.2 (support long ; PHP 8.4.27 et extensions déjà présents sur les serveurs web) ; écran Conformité CNIL de Matomo (IP masquée 3 octets, données brutes 744 j, journal des visites, profils, identifiant utilisateur, e-commerce coupés) + lien d’opposition ; suivi par le nom public du site (/stats/matomo.js et matomo.php relayés par HAProxy : l’interface de Matomo n’a pas de nom public) ; WordPress accepte deux noms (interne et public : la page d’accueil contient 19 liens absolus vers www.sio.internal, une simple réécriture du nom dans Pangolin les casserait) ; sécurité en couches (refus /wp-admin, /wp-login.php, xmlrpc.php, liste des comptes, intranet, interface Matomo ; limite de débit ; WordPress à jour ; agents Wazuh sur les serveurs web ; coupure en un clic dans Pangolin) ; site signalé comme fictif (bandeau, mentions légales, pas d’indexation) ; en ligne le plus longtemps possible ; limite : Suricata ne voit pas ce trafic (tunnel chiffré) |
| 18.2 | Base matomo dans Galera, compte limité à 10.0.10.5 (mot de passe par Axel, Bitwarden) | 10/11 : base matomo (utf8mb4) et compte matomo@10.0.10.5 créés par Axel sur srv-mysql-01 (mot de passe par read -rsp, Bitwarden, registre D-15), droits sur matomo.* seulement ; présents sur srv-mysql-02 et -03 (vérifié par Claude) |
| 18.3 | Matomo sur srv-web-01 (stats.sio.internal), archive vérifiée, compte administrateur par Axel | 10/11 : archive matomo-5.14.2.tar.gz (22 705 938 octets) empreinte SHA-256 identique à celle publiée ; /var/www/matomo, site Apache stats.sio.internal (WordPress et GLPI intacts, capture 244) ; HAProxy : certificat dédié stats.pem, acl est_stats, backend matomo (srv-web-01 seul pour l’instant), nom dans l’annuaire (Claude) et dans pfSense (Axel) (capture 245) ; installeur passé par Axel (vérification du système entièrement verte, MariaDB, 34 tables InnoDB avec clé primaire recopiées par Galera, super utilisateur admin dans Bitwarden, site n° 2 « Site GSB » fuseau Paris, sans e-commerce, IP masquées, géolocalisation dbip) ; config.ini.php en 640, config/ et tmp/ refusés (403) ; calcul des rapports chaque heure par matomo-archivage.timer (plus par les visites) ; extensions IA désactivées (capture 246) |
| 18.4 | Secours srv-web-02, HAProxy (nom, certificat), DNS pfSense + annuaire | 10/11 : nom stats dans pfSense (Axel) et l’annuaire (Claude) ; HAProxy : certificat dédié, backend matomo en actif / secours (srv-web-02 backup, contrôle /matomo.php) ; srv-web-02 : site Apache, clé lsyncd dédiée et confinée (rrsync -wo /var/www/matomo) ; lsyncd : 3ᵉ bloc /var/www/matomo (sans tmp/, délai 30 s, connexion SSH gardée ouverte) : 11 899 fichiers identiques ; bascule réelle : Apache arrêté 9 s sur srv-web-01, Matomo, site et GLPI à 200, servis par srv-web-02 (journal) ; témoin recopié en moins d’une minute ; calcul des rapports sur srv-web-01 seul (captures 245, 247) ; incident : agent invité de srv-web-02 bloqué pendant un premier essai qui attendait 50 s dans l’agent (H-93, 3ᵉ fois), relancé par Axel |
| 18.5 | Réglages CNIL dans Matomo ; code de suivi sur les pages publiques de WordPress (pas l’intranet) ; page d’opposition dans les mentions légales | 10/11 : règle CNIL de Matomo appliquée par Axel au site n° 2 (CnilPolicy … cnil_v1_policy_enabled = 1) : tous les critères « conforme » (IP masquée 2 octets, minimum de la règle ; données détaillées gardées 180 jours ; journal des visites, profils, identifiant utilisateur, résolution d’écran, modèle d’appareil coupés ; e-commerce restreint ; segments arrondis) ; seul « désinscription » est à faire hors de Matomo → case d’opposition sur la page des mentions (capture 249) ; extension maison mu-plugins/gsb-lab.php : bandeau « site fictif », code de suivi pour les visiteurs non connectés seulement, commentaires fermés ; page « Mentions légales et confidentialité » (éditeur : un étudiant en BTS SIO) ; pas d’indexation ; HAProxy : /stats/matomo.js et /stats/matomo.php relayés vers Matomo, tout autre /stats/… refusé (404), option forwardfor ; Matomo lit l’adresse ajoutée par HAProxy (une adresse inventée par le client est ignorée) ; visite simulée enregistrée, adresse masquée (capture 248) |
| 18.6 | Justification RGPD écrite (finalité, base légale, données, durées, opposition) pour de vrais visiteurs | 10/11 : Justification-RGPD-Matomo.md : responsable, finalité, base légale (art. 82 loi Informatique et Libertés + lignes directrices CNIL du 17/09/2020 pour le traceur ; intérêt légitime, art. 6.1.f RGPD, pour les données), tableau des conditions de la dispense → réglage réel → preuve (captures 246 à 249), données et durées (180 j, cookies 13 mois, sauvegardes), sécurité, droits, limites |
| 18.7 | Mise en ligne par Pangolin (ressources créées par Axel) : site GSB pages publiques seulement (/wp-admin, /wp-login.php, xmlrpc.php, intranet refusés dans HAProxy pour le nom Pangolin) ; Matomo : seulement matomo.php / matomo.js ; adresse du site dans WordPress à vérifier ; WordPress et extensions mis à jour avant | 10/11 : site en ligne (capture 248 et tests depuis Internet : pages publiques 200, administration / connexion / XML-RPC / API / comptes / intranet 403, POST 405, 130 requêtes rapides → 429) ; WordPress à deux noms, ménage (2 extensions, 3 thèmes), nom public ajouté à Apache ; règles HAProxy du nom public ; ressource Pangolin « GSB » créée par Axel (H-95 : hôte www.sio.internal/ et port 80 du contrôle de santé) ; agents Wazuh sur srv-web-01 et srv-web-02 (capture 250, compte créé → alerte en 2 s) ; Traefik : confiance accordée à Nginx Proxy Manager. adresse réelle des visiteurs non transmise (TrueNAS) : tâche 18.11 |
| 18.8 | Vraies visites (lien partagé par Axel : amis, collègues, téléphone en 4G) → captures des premières mesures | |
| 18.9 | Intégration : sondes et lignes Grafana (dont le site public par Pangolin), alertes, export SQL, surveillance des accès venus d’Internet | 11/11 : sondes site-public (par Internet) et matomo : 11 services, tableau de production en version 74 ; alerte « Service injoignable » générique ; base matomo dans l’export SQL nocturne ; mod_remoteip (adresse réelle dans les journaux Apache) ; agents Wazuh sur le journal de WordPress : XSS, injection SQL et scan détectés avec l’adresse de l’appelant ; mentions légales : journaux techniques (14 jours) ; nom d’Axel retiré de tout le site, pages d’auteur refusées (capture 252) |
| 18.10 | Documentation : étape, MO-24, captures, réponse à la conversation portfolio | 11/11 : étape 72 (72.1 à 72.4) ; MO-24 + copie wiki ; H-94, H-95, H-96, T-20 réglée ; Justification-RGPD-Matomo.md ; captures 244 à 252 ; réponse « livré » à la conversation portfolio et message à la conversation du dossier ; reste 18.8 (vraies visites) qui se fait avec le temps |
| 18.11 | Adresse réelle des visiteurs (dette T-20, H-96) | 11/11 : le journal de Nginx Proxy Manager montre qu’il voit la vraie adresse ; Traefik la remplaçait (réglage de confiance sans effet, raison non trouvée) ; solution sans toucher aux 38 hôtes : en-tête X-Client-Real-IP (more_set_input_headers, Advanced de l’hôte *.pangolin…, fait par Axel ; proxy_set_header n’avait pas marché : pas d’héritage au niveau du site) lu par HAProxy (copie haproxy.cfg.avant-ip-reelle-1111) : limite par visiteur à 100 req. / 10 s, X-Forwarded-For pour Matomo ; visite depuis Internet : 81.255.0.0, pays fr (capture 251) |
Validé : des visites réelles venues d’Internet apparaissent dans Matomo avec des adresses anonymisées ; les réglages CNIL sont prouvés ; l’administration de WordPress et de Matomo est refusée depuis Internet.
Phase 19 — Portail GLPI : les salariés de GSB ouvrent eux-mêmes leurs tickets (demandée le 07/11 par la conversation du dossier, compétences C2 et C5 de l’E5 ; ajoutée au suivi le 08/11)
Objectif : aujourd’hui, un ticket GLPI naît d’une alerte (étape 70) ou d’une saisie de l’administrateur ; aucun salarié ne peut en ouvrir. On ouvre l’interface simplifiée de GLPI (profil Self-Service : ouvrir un ticket, le suivre, répondre, rien d’autre), avec si possible la connexion par les comptes du domaine
sio.internal.
| # | Tâche | État |
|---|---|---|
| 19.1 | Cadrage : 4 décisions d’Axel | 11/11, recommandations suivies : connexion par l’annuaire (comptes du domaine, compte de liaison en lecture seule) ; règle pfSense étroite WEB → AD-Core-01, ports LDAP seulement (3ᵉ exception à « la base n’initie rien » : ici c’est le serveur web qui interroge l’annuaire) ; pas d’accès depuis la zone Visiteurs (USERS et ADM seulement) ; pas de mails de suivi (suivi dans le portail) |
| 19.2 | Compte de liaison en lecture seule dans l’AD (mot de passe par Axel, Bitwarden, registre) et règle pfSense WEB → AD-Core-01 | 11/11 : compte CS_glpi_ldap (OU Comptes de service, aucun groupe) ; le contrôleur refuse le LDAP en clair (signature obligatoire, H-97) → LDAPS : certificat auto-signé de 5 ans (aussi dans les autorités racines du contrôleur), installé sur les 2 serveurs web, TLS 1.3 vérifié ; règle pfSense WEB → 10.0.30.10 636 ; bind testé par Axel : code 0 (capture 253). Rappel certificat : 11/2031 |
| 19.3 | Annuaire dans GLPI : connexion testée, règles d’habilitation (profil Self-Service, entité de la zone) | 11/11 : extension php8.4-ldap installée sur les 2 serveurs web ; nom AD-Core-01.sio.internal ajouté dans pfSense (certificat émis à ce nom) ; annuaire « Annuaire sio.internal » en ldaps://, port 636, test GLPI en 5 étapes réussi, 6 entrées (capture 254) ; règle « Root » de GLPI désactivée (elle aurait donné l’entité racine à tous) et règle 287 « Salariés du domaine » : critère annuaire = Annuaire sio.internal → entité GSB > USERS, profil Self-Service, non récursif (captures 255, 256) ; les 6 comptes importés ont lu en base : Self-Service, GSB > USERS seulement (capture 261) |
| 19.4 | Interface simplifiée réglée : catégories de tickets, ce que voit le salarié et rien d’autre | 11/11 : 6 catégories créées par l’API (glpi-categories-tickets.py, racine, récursives, incident et demande seulement, jamais problème ni changement) visibles dans « Signaler un incident » (capture 258) ; 4 tuiles de la page d’accueil traduites en français (capture 259) ; aucun menu d’administration pour le salarié (capture 257) |
| 19.5 | Test depuis le poste avec un compte du domaine : connexion réussie ; un compte hors de l’OU est refusé | 11/11 : a.gouirand entre sur le portail Self-Service, GSB > USERS (capture 257) ; Administrateur (hors de l’OU des salariés) : « Identifiant ou mot de passe incorrect » (capture 260). Mots de passe des 6 comptes réinitialisés par Axel sur le contrôleur (jamais vus par Claude), rangés dans Bitwarden |
| 19.6 | Ticket réel traité de bout en bout : ouvert par le salarié, pris en charge, suivi, solution, clôture (captures à chaque étape) | 11/11 : ticket 44 « utilisateur non reconnu » ouvert par a.gouirand sur le portail (12:50, GSB > USERS, catégorie Application métier (GSB), capture 262) ; pris en charge et suivi public par glpi (12:58, capture 263) ; solution posée à 13:04 (statut Résolu) ; acceptée par le salarié à 13:05 → statut Clos (capture 264) ; aucune notification par mail, comme décidé |
| 19.7 | Écartée le 11/11 (décision d’Axel) : suivi dans le portail seulement | |
| 19.8 | Guide d’une page pour les salariés : « ouvrir et suivre un ticket » | 11/11 : documentation/Guide-salaries-ouvrir-un-ticket.md (connexion avec le compte du domaine, 6 catégories, suivi, réponse, validation de la solution ; pas de mail, donc à consulter dans le portail) ; bouton « Refuser » testé ensuite (ticket 47 rouvert, capture 265) |
| 19.9 | Documentation : étape, MO-21 complété, Troubleshooting, matrice de flux, registre des comptes ; réponse à la conversation du dossier | 11/11 : étape 73 de Documentation-pfSense.md ; MO-21 § 12 (+ copie wiki) ; H-97 ; dette T-21 (certificat LDAPS auto-signé, expire 11/2031) ; matrice de flux ligne 3 quater ; registre A-06 et A-07 ; guide du salarié ; captures 253 à 264 ; réponse + nouveau message dans COORDINATION-LAB-DOSSIER.md. Schéma .drawio et DAT : à reporter par la conversation du dossier |
Validé : un salarié se connecte avec son compte du domaine depuis son poste, ouvre un ticket, le voit traité et clos ; il ne voit rien d’autre de GLPI ; le guide d’une page est écrit.
Phase 20 — Copie hors site immuable (le second « 1 » de 3-2-1-1-0) (arrêtée le 11/11 après l’étude, décision d’Axel : pas de place sur le NAS) (demandée le 08/11 par la conversation du dossier, fiche RP03 ; ajoutée au suivi le 08/11)
Objectif : aujourd’hui, la copie hors site (S3 sur le NAS, étape 65) est en ligne : quelqu’un qui a les clés peut l’effacer, et un rançongiciel aussi. Une copie immuable ne peut pas être supprimée, même avec les clés, tant que sa durée de rétention n’est pas écoulée.
| # | Tâche | État |
|---|---|---|
| 20.1 | Étude : version de SeaweedFS et prise en charge du verrouillage d’objets (Object Lock, rétention « écrire une fois, lire souvent ») À VÉRIFIER ; compatibilité avec PBS, dont le ménage supprime les sauvegardes au-delà de 3 conservées (la rétention immuable doit rester plus courte) ; sinon une alternative (versionnage du compartiment avec des clés de suppression séparées, ou disque débranché) ; choix d’Axel | 11/11 : étude faite. PBS ne gère pas le verrouillage d’objets sur un datastore S3 (réponse de Proxmox, forum, 08/08/2025) : avec la déduplication, un morceau verrouillé ne peut pas être effacé par le ramasse-miettes, et un vieux morceau encore utilisé perd son verrou à l’expiration. SeaweedFS annonce l’Object Lock (version installée À VÉRIFIER : le S3 ne la donne pas, TrueNAS l’affiche). Piste recommandée : instantanés ZFS en lecture seule du dataset PataCloud/pbs-lab sur le NAS (les clés du lab ne peuvent pas les toucher). Décision d’Axel (11/11) : phase arrêtée, le NAS n’a pas la place d’accueillir plus de sauvegardes (instantanés compris) : le lab reste en 3-2-1-0 |
| 20.2 | Écartée le 11/11 (décision d’Axel) | |
| 20.3 | Écartée le 11/11 (décision d’Axel) | |
| 20.4 | Écartée le 11/11 (décision d’Axel) | |
| 20.5 | Écartée le 11/11 (décision d’Axel) | |
| 20.6 | Écartée le 11/11 (décision d’Axel) |
Validé : une suppression faite avec les bonnes clés est refusée pendant la rétention ; les sauvegardes de la nuit continuent sans erreur.
Phase 21 — GPO « poste Windows prêt à l’arrivée sur le domaine » (demandée par Axel le 08/11)
Objectif : aujourd’hui, une nouvelle machine Windows est intégrée à la main en suivant le MO-18 (§5) : exporteur de mesures, journaux, agent Wazuh, agent GLPI, accès SSH par clé, pare-feu. Le but : qu’un poste qui rejoint le domaine et arrive dans la bonne unité d’organisation reçoive tout seul ce qui se pose sur la machine, par des stratégies de groupe (GPO), comme les deux GPO de l’étape 61.
Ce qu’une GPO ne peut pas faire (elle n’agit que sur le poste) : le déclarer dans Prometheus, dans Termix, dans la sauvegarde PBS, dans la note d’adressage. Ces étapes restent côté serveurs (script du bastion ou geste d’Axel).
| # | Tâche | État |
|---|---|---|
| 21.1 | Cadrage avec Axel : liste exacte de ce qui est posé (d’après MO-18 §5) ; méthode (script de démarrage qui lance les installeurs déjà écrits, ou installation de logiciels par MSI) ; où sont rangés les installeurs (partage en lecture seule pour les ordinateurs du domaine, empreintes vérifiées) ; le mot de passe d’inscription Wazuh (jamais en clair dans un partage) ; l’OU visée ; la machine de test (l’hyperviseur partagé est presque plein) ; volet sécurisation (mot de passe administrateur local unique par Windows LAPS, stratégie d’audit, pare-feu) | 11/11, décisions d’Axel : script de démarrage unique (preparer-poste.ps1, compte SYSTEM, relançable, installeurs vérifiés pris sur un partage caché d’AD-Core-01, rien téléchargé au démarrage) ; secret d’inscription Wazuh dans un fichier lisible seulement par les ordinateurs du domaine et les administrateurs ; sécurisation : pare-feu (9182 depuis srv-metriques, RDP et SSH depuis ADM), LAPS, audit des connexions, SSH par clé (Defender renforcé non retenu) ; ciblage : OU de test (VM 141 temporaire, Windows 11, créée par Axel) puis OU=Ordinateurs (poste-win11 ne doit rien réinstaller) |
| 21.2 | Partage de déploiement : installeurs vérifiés (empreintes), droits en lecture seule | 11/11 : C:\Deploiement sur AD-Core-01, partage caché Deploiement$ (lecture : Ordinateurs du domaine ; contrôle total : Admins du domaine ; NTFS sans héritage, aucun droit pour les utilisateurs) ; 4 installeurs aux mêmes versions que poste-win11 (windows_exporter 0.31.9, agent GLPI 1.21, Fluent Bit 5.1.3, agent Wazuh 4.14.9), empreintes officielles toutes conformes ; configuration Fluent Bit ; secret d’inscription Wazuh déposé par Axel (secret\wazuh-inscription.txt, 12 octets, droits vérifiés sans l’ouvrir) ; scripts scripts/gpo/ |
| 21.3 | GPO « Supervision » : exporteur de mesures, journaux, agent GLPI (entité de la zone), agent Wazuh | 11/11 : preparer-poste.ps1 + GPO GPO-Ordi-Poste-Pret (script de démarrage, attendre le réseau), liée à OU=Postes-test. Test réel : la VM 141 POSTE-TEST-GPO jointe au domaine → au démarrage suivant, en 3 min et sans aucun geste : windows_exporter, Fluent Bit, agent GLPI (GSB > USERS), agent Wazuh (agent 006 Active), journaux reçus en base (capture 266). Incident : barres obliques \\ réduites à une seule par le terminal de Claude (scripts.ini faux), H-98 |
| 21.4 | GPO « Sécurisation » : règles de pare-feu (mesures depuis srv-metriques seul, SSH et bureau à distance depuis la zone ADM), SSH par clé, et ce qui est retenu en 21.1 | 11/11 : schéma de l’AD étendu pour LAPS par Axel (Update-LapsADSchema, 7 attributs, droit des ordinateurs sur OU=Ordinateurs) ; GPO GPO-Ordi-Securisation (scripts/gpo/creer-gpo-securisation.ps1), liée à Postes-test : LAPS (compte admin-laps créé par Windows, mot de passe de 16 caractères sauvegardé chiffré dans l’AD), bureau à distance avec NLA, pare-feu dans la GPO (9182 ← srv-metriques, 22 et 3389 ← ADM ; port 22 refusé depuis USERS), audit de 7 sous-catégories ; SSH par clé dans preparer-poste.ps1 (OpenSSH, clé termix-lab, mot de passe et keyboard-interactive coupés, règle locale « depuis partout » désactivée) : connexion Termix par clé réussie (captures 267, 268). Corrigé en route : extension « Registre » de GPO-Ordi-Poste-Pret mal tapée (…CF2B au lieu de …CFA2). échéance du mot de passe LAPS vérifiée le 12/11 : 30 jours (11/12/2026) ; la « 24 h » venait d’une date lue au format américain (H-101) |
| 21.5 | Côté serveurs : la déclaration dans Prometheus et les alertes, par un script du bastion (une commande) | *11/11 : script du bastion ajouter-poste-windows.sh (scripts/supervision/) lancé par Axel en une commande : mesures lues depuis srv-metriques (200), fichier de cible cibles/windows/poste-test-gpo.yml, poste « up » dans Prometheus ; règles d’alerte génériques (« Machine injoignable » sur `up{job=~“node |
| 21.6 | Test réel : une machine rejoint le domaine → sans autre geste, elle apparaît dans Grafana, Wazuh, GLPI (bonne entité) et les journaux | 11/11 : la VM 141 POSTE-TEST-GPO rejoint le domaine → sans installation à la main : Wazuh (agent 006 Active), GLPI (ordinateur 53, GSB > USERS), journaux en base, Grafana (bloc « Machines », après la commande du bastion), sécurisation appliquée (captures 266 à 269). Deuxième passage du script : rien réinstallé. Étendu le 11/11 à OU=Ordinateurs (décision d’Axel) : poste-win11 reçoit les 4 GPO, admin-laps créé, pare-feu et audit appliqués, script de démarrage à 17:25 (rien réinstallé, SSH par clé seulement : publickey), toujours « up » dans Prometheus ; VM 141 supprimée proprement (cible Prometheus, agent Wazuh, GLPI, compte AD, VM) |
| 21.7 | Documentation : étape, MO-20 complété, MO-18 (renvoi vers la GPO), Troubleshooting, DAT, règle de CLAUDE.md mise à jour |
Validé : une machine Windows qui rejoint le domaine est supervisée, inventoriée et surveillée par Wazuh sans qu’on se connecte dessus ; seule la déclaration côté serveurs reste à lancer.
Phase 22 — Mise à jour de tout le lab (demandée par Axel le 10/11)
Objectif : passer tout ce qui peut l’être à la dernière version stable (systèmes, pare-feu, Windows, applications), sans casser le service : une machine à la fois pour les paires (serveurs web, nœuds Galera), sauvegarde de la nuit vérifiée avant, tableau de production et tests de non-régression après. Reprend aussi le rappel du 27/10 « mettre à jour Grafana et tout ce qui peut l’être ».
| # | Tâche | État |
|---|---|---|
| 22.1 | Inventaire : version installée et version disponible de chaque élément (systèmes, pfSense et ses paquets, Windows, applications), ordre de passage, ce qui demande un redémarrage ; sauvegarde de la nuit vérifiée | |
| 22.2 | pfSense : configuration sauvegardée (XML) avant, mise à jour du système et des paquets (Suricata, Tailscale) | |
| 22.3 | Linux : apt full-upgrade sur toutes les machines, redémarrage si le noyau change, une machine à la fois pour les paires (srv-web-01/02, nœuds Galera) | |
| 22.4 | Windows : AD-Core-01, poste-win11, poste-visiteur (Windows Update) | |
| 22.5 | Applications : WordPress et extensions, GLPI, Matomo, Grafana, Prometheus et exporteurs, Wazuh (serveur et agents), Termix, Portainer, LogAnalyzer, agents GLPI | |
| 22.6 | Non-régression : tableau de production vert, site, GLPI, bascule d’un serveur web, Galera synchronisé, une alerte de test reçue, inventaire GLPI à jour | |
| 22.7 | Documentation : étape, versions dans le DAT, Troubleshooting |
Phase 23 — Revue des règles d’alerte : moins de mails, mais les bons (demandée par Axel le 11/11)
Objectif : Axel reçoit beaucoup trop de mails d’alerte. Une alerte qu’on reçoit trop souvent finit par ne plus être lue, et la vraie panne passe inaperçue (« fatigue d’alerte »). On garde la détection, mais chaque mail doit appeler une action. Deux sources envoient des mails : les règles d’alerte de Grafana (17 règles) et Wazuh (toute alerte de niveau 10 ou plus, par exemple les vulnérabilités « High » d’un poste neuf, 11/11).
| # | Tâche | État |
|---|---|---|
| 23.1 | Relevé : sur 7 jours, nombre de mails par règle (Grafana) et par règle Wazuh, règles qui oscillent (alerte puis retour à la normale en boucle), heures d’envoi | |
| 23.2 | Décisions avec Axel, règle par règle : garder, changer le seuil ou la durée avant alerte, passer en « tableau de bord seulement » (sans mail), regrouper les mails, intervalle de rappel ; niveau d’envoi des mails de Wazuh (vulnérabilités à part ?) | |
| 23.3 | Application (Grafana par l’API, ossec.conf de Wazuh), avec copie de la configuration avant | |
| 23.4 | Mesure : une semaine après, nombre de mails comparé au relevé, et une vraie panne provoquée toujours signalée | |
| 23.5 | Documentation : étape, MO-17 (Grafana) et MO-19 (Wazuh) complétés, tableau des règles et de leur raison d’être |
Phase 24 — Charte informatique de GSB : l’écrire, la faire connaître, contrôler son respect (demande de la conversation du dossier, 11/11 ; preuve E5 C1, fiche RP11)
| # | Tâche | État |
|---|---|---|
| 24.1 | Écrire la charte (1 à 2 pages, chaque règle reliée à un réglage réel du lab) | 12/11 : documentation/Charte-informatique-GSB.md v1.0, validée par Axel |
| 24.2 | La faire connaître : bannière de connexion, portail GLPI, intranet | 12/11 : bannière (GPO), article n° 2 de la foire aux questions de GLPI, bouton « Ouvrir le portail d’assistance » sur l’intranet (captures 273 à 275) |
| 24.3 | Contrôler son respect : logiciel interdit → inventaire → ticket → retrait | 12/11 : Wireshark (empreinte vérifiée) installé sur poste-win11, détecté par l’inventaire GLPI (162 logiciels), ticket n° 95, retiré, inventaire vérifié (161), ticket clos ; 12:00 → 12:06 (capture 276) ; CCleaner écarté (empreinte invérifiable) |
| 24.4 | Liste des logiciels autorisés (à partir de l’inventaire de référence de poste-win11), puis mise à jour de la charte et de l’article GLPI | 12/11 : documentation/Liste-logiciels-autorises.md v1.0 validée par Axel (161 logiciels : 137 autorisés, 12 tolérés, 12 non autorisés dont Kudu, un nettoyeur système, retiré le 12/11 : ticket n° 98, inventaire vérifié à 160, capture 278) ; charte et article GLPI n° 2 mis à jour (en-tête « service informatique de GSB »). Reste hors tâche : retirer les non autorisés du modèle de poste |
Validé : tout est à jour (liste des versions avant / après), aucun service interrompu plus que prévu, le tableau de production est vert et les tests de non-régression passent.
