Chronologie des interventions sur l'infrastructure BTS SIO.
Dernière mise à jour : 21/09/2026 | Depuis le 27/03/2026 | 33 entrées
| Indicateur | Baseline (12/03) | Actuel | Objectif |
|---|---|---|---|
| Domain Admins | 9 | 4 | ≤ 5 |
| MinPasswordLength | 4 | 10 (FGPP: 12/16) | ≥ 12 |
| FGPP déployées | 0 | 3 | 3 |
| Comptes compromis (spray) | 8 / 82 (9,8%) | 1 (a traiter) | 0 |
| Rulesets Suricata | 0 / 64 | 32 / 64 | ≥ 24 |
| Interfaces Suricata | WAN | WAN + LAN | WAN + LAN |
| Quick wins Sprint 1 | 0 / 16 | 13 / 16 | 16 |
| Sprint 2 | 0 / 15 | 13 / 15 | 15 |
| Sprint 3 | 0 / 44 | 40 / 44 | 44 |
| Score PingCastle | 100 / 100 | a mesurer | < 70 |
| Domaine | Fait | A faire | En attente |
|---|---|---|---|
| Active Directory | 28 | 2 | 0 |
| Virtualisation / ProxMox | 5 | 0 | 0 |
| Reseau / Firewall | 6 | 0 | 0 |
| Plateforme | 4 | 0 | 0 |
| Securite transverse | 5 | 0 | 0 |
| Total | 55 | 0 | 0 |
Contexte : session à distance (VPN collègues), chantier reporté depuis le 14/09 (spec SSO, point ouvert n°1). Le plan d'administration de la plateforme Docker (docker-srv, CT 200) vivait sur le réseau plat : joignable en L2 direct depuis les salles, sans traverser le pare-feu, avec des accès de secours IP:port sans authentification (Kuma, Pi-hole admin).
| Heure | Domaine | Action | Statut |
|---|---|---|---|
| 17:00 | Pare-feu | VLAN 250 « PLT » sur bge0 (opt3, 172.31.250.1/24) + 7 règles OPNsense (flottantes : VPN/admin/profs autorisés, étudiants bloqués et journalisés ; egress du CT) + extension du cantonnement VPN | ✓ Fait |
| 18:00 | Commutateurs | VLAN 250 tagué sur le chemin Proxmox ↔ OPNsense (Aruba01–04 + cœur 1810G ; Proxmox localisé par LLDP : port 14 du cœur) | ✓ Fait |
| 19:00 | Proxmox | vmbr0 VLAN-aware ; CT 200 dual-homed : net0 plat (résiduel bornes UniFi/RSSO) + net1 VLAN 250 (172.31.250.20) ; routage par source (connmark) persistant (unité systemd) | ✓ Fait |
| 20:00 | Docker | Ports de secours (Portainer, Grafana, Kuma, Netbox, Pi-hole admin, Authentik, Homer) rebindés exclusivement sur l'IP PLT — invisibles du réseau plat ; Traefik en double écoute transitoire 443 | ✓ Fait |
| 20:30 | Pare-feu | Pare-feu Proxmox sur net0 : bornes + DNS Pi-hole (production des salles) + admin/VPN/profs autorisés, segments étudiants bloqués (logués), fail-closed ; test négatif par amputation concluant | ✓ Validé |
| 21:00 | PKI | Wildcard *.docker.bts.sio réémis (ADCS, Request ID 13) avec SAN IP 172.31.250.20 ; déployé sur Traefik, validé par la racine | ✓ Fait |
| 22:00 | Documentation | MO-NET-009 v1.0 créé ; MO-PLT-010 v1.8, MO-NET-007 v1.1, MO-PLT-025 v1.3, MO-SEC-006 v1.2 ; NetBox repeuplé (VLANs 240/241/250 décrits, topologie trunk documentée) ; publication wiki | ✓ Publié |
Décision d'adressage : le sous-réseau PLT est en 172.31.250.0/24 (hors 10.0.0.0/16) : les hôtes du plat en masque /16 ne peuvent pas le croire joignable en L2 — tout passe par OPNsense, qui filtre 100 % des flux. Bonus : le blocage RFC1918 du Wi-Fi étudiants (VLAN 240) le couvre déjà.
Non-régression vérifiée : bornes UniFi en ligne, RSSO fonctionnel, DNS Pi-hole des salles intact, supervision Prometheus/Kuma opérationnelle, batterie HTTPS 12/12 validée par la racine ADCS.
Prochaines étapes (finalisation, présentiel) : bascule DNS docker.bts.sio → 172.31.250.20, retrait de l'écoute Traefik flat transitoire, redistribution des configurations VPN collègues (AllowedIPs + 172.31.250.0/24), migration des flux bornes (UniFi/RSSO) vers le VLAN, test terrain VLAN 240.
Contexte : session à distance (VPN collègues). Deux chantiers de sécurisation du SSO : placer la console UniFi derrière la porte Authentik, et supprimer le bind LDAP à pouvoir d'Authentik (compte Administrateur du domaine) au profit d'un compte de service en lecture seule.
| Heure | Domaine | Action | Statut |
|---|---|---|---|
| 09:00 | Plateforme | Provider proxy + application unifi dans Authentik (outpost embarqué), middleware authentik@docker sur le routeur Traefik unifi : https://unifi.docker.bts.sio exige désormais le compte AD |
✓ Fait |
| 09:30 | Pare-feu | Règles flottantes OPNsense : PASS TCP 8443 vers 10.0.112.228 depuis l'alias UniFi_Console_Admin_Sources (VLAN admin + VPN collègues), puis BLOCK journalisé ; 8080 (inform) et 3478/udp (STUN) conservés pour les bornes |
✓ Fait |
| 10:00 | UniFi | Login local du contrôleur renommé admin@bts.sio (CLI MongoDB, mot de passe inchangé, coffre à jour) ; double saisie validée (porte AD puis login local) |
✓ Validé |
| 10:30 | AD | Compte de service svc-authentik-ldap créé sur DC1 (OU=Serveurs, aucun groupe privilégié, mdp 32 car. en coffre) ; test de bind LDAPS : 6 membres de GG-AdminsPlateforme lus |
✓ Fait |
| 11:00 | Authentik | Bind de la source LDAP ad-bts-sio basculé sur le compte de service (PATCH API par slug) ; sync Successful, login AD réel validé sur Grafana |
✓ Validé |
| 11:30 | Documentation | MO-PLT-026 v1.0 (7 p.) créé ; MO-PLT-025 v1.2, MO-PLT-010 v1.7, MO-NET-006 v1.3 ; publication wiki complète (pages, PDF, figures, index, navigation) | ✓ Publié |
Moindre privilège : jusqu'ici, Authentik lisait l'annuaire avec le compte Administrateur du domaine. En cas de fuite du mot de passe de bind, un attaquant ne peut désormais que lire l'annuaire — droit que possède déjà tout utilisateur authentifié du domaine. Même pattern que svc-ldap-opnsense (portail captif, MO-NET-008). Retour arrière documenté (repointage sur CN=Administrateur puis désactivation du compte de service).
Publication : MO-PLT-025 (SSO AD des services Docker, chantier des 14-15/09) n'avait jamais été versé au wiki — page et PDF créés à cette occasion ; MO-PLT-026 créé ; MO-PLT-010 et MO-NET-006 mis à jour. Le PDF de MO-NET-008, absent de l'hôte depuis le 10/09 (lien cassé), a été versé et le lien de la page corrigé. Compteur global : 48 -> 50 MOs publiés (~707 pages).
Prochaines étapes : chantier « blocage étudiants » (restriction des accès IP de secours Kuma/Pi-hole), renouvellement des certificats ADCS avant expiration (MO-SEC-005/006).
Contexte : session sur place au BTS SIO (poste en RJ45) + partage de connexion 4G. Accès root OPNsense récupéré ; objectif : VPN WireGuard des collègues terminé directement sur OPNsense (voie B), indépendant du VPS personnel.
| Heure | Domaine | Action | Statut |
|---|---|---|---|
| 09:00 | Livebox | Bail DHCP 192.168.1.69 épinglé à la MAC WAN OPNsense (a4:ba:db:41:a5:ca) via sysbus Devices.Device.set ; IP publique 92.154.7.236 confirmée |
✓ Fait |
| 09:10 | OPNsense | Instance WireGuard wg-collegues créée par API REST (wg1, UDP 51821, tunnel 10.10.30.1/24, MTU 1412) |
✓ Fait |
| 09:20 | Pare-feu | Règle WAN pass UDP 51821 + alias Ports_VPN_Admin + cantonnement 10.10.30.0/24 → VLAN admin puis block/log, évalués avant la règle legacy du hub |
✓ Fait |
| 09:30 | Script | scripts/opnsense_wg_peer.py (add/list/remove pairs, .conf + QR chmod 600) ; pair pilote cedric créé |
✓ Fait |
| 09:45 | Test | Bout-en-bout en 4G : handshake OK, RDP DC / ProxMox / DNS OK, ICMP et SMB bloqués et journalisés | ✓ Validé |
| 10:30 | Vaultwarden | Clé privée serveur wg-collegues rangée au coffre | ✓ Fait |
| 11:30 | Documentation | MO-NET-007 v1.0 (10 p.) rédigé, compilé, publié (page, PDF, index, navigation) | ✓ Fait |
Architecture : client distant 10.10.30.x → 92.154.7.236:51821 → NAT Livebox (webui_wireguard-opnsense du 07/09) → WAN OPNsense 192.168.1.69 → wg1 → VLAN admin 10.0.112.0/24 uniquement. La règle legacy « pass any » du groupe WireGuard est conservée pour le hub VPS : les nouvelles règles 10.10.30.0/24 sont évaluées avant.
Limites assumées : pas de MFA sur WireGuard (mono-facteur par clé, compensé par le cantonnement + PSK par collègue) ; syslog distant vers Wazuh non configuré (à faire après vérification de l'écoute côté SIEM).
Prochaines étapes : créer les pairs des collègues (distribution Vaultwarden), syslog OPNsense → Wazuh, changement du mot de passe root OPNsense.
Contexte : session sur place au BTS SIO (poste en RJ45, 10.0.230.18). Paul a installé trois bornes Wi-Fi Ubiquiti U7 Pro Wall (salles S109/S110/S111) et demandé l'installation du programme d'administration dans un Docker sur l'infra. En préalable, résolution d'un problème de « connexion limitée » du poste en RJ45.
| Heure | Domaine | Action | Statut |
|---|---|---|---|
| 12:00 | Poste | Diagnostic « connexion limitée » RJ45 : DHCP OK (10.0.230.18) mais profil filaire en never-default + DNS manuels ; correction nmcli |
✓ Fait |
| 12:15 | Réseau | Repérage bornes : 3 AP U7 Pro Wall (OUI 58:D6:1F) BTSSIOI109/110/111, 10.0.230.2/.3/.5, Dropbear, non adoptées |
✓ Fait |
| 12:35 | Plateforme | Stack UniFi sur CT 200 : /opt/docker/unifi (linuxserver/unifi-network-application 10.6.101 + mongo:7.0 RBAC), IP macvlan 10.0.112.228 |
✓ Déployé |
| 13:00 | Plateforme | Exposition Traefik https://unifi.docker.bts.sio (provider file + serversTransport insecureSkipVerify) ; non-régression validée |
✓ Fait |
| 13:15 | Plateforme | Initialisation API : add-default-admin, pays FR (250), Europe/Paris, set-installed ; piège écran « UI Account » documenté |
✓ Fait |
| 13:25 | Vaultwarden | Entrée « UniFi Network Controller (docker-srv) » créée (super-admin local) | ✓ Fait |
| 13:50 | Documentation | MO-NET-006 v1.0 (25 p.) rédigé, compilé, inscrit au catalogue ; 3 captures Playwright de l'UI | ✓ Compilé |
UniFi OS Server écarté : la voie suggérée par Paul (UniFi OS Server, nouveau standard Ubiquiti) ne peut pas s'exécuter dans un conteneur Docker d'après la documentation officielle ; la branche classique 10.x en image linuxserver a été retenue (adaptée à 3 bornes, intégrée à l'outillage existant). Migration future possible vers un CT dédié.
Connectivité : publication complète du MO-NET-006 (page, PDF, figures, index, navigation, journal). Le port SSH du VPS (2244), filtré sur le chemin sortant du réseau BTS, a été contourné via le partage mobile pour le dépôt des assets.
Prochaines étapes : adoption effective des 3 bornes (déjà visibles en attente dans l'inventaire), création du SSID pédagogique, référencement 10.0.112.228 dans Netbox.
Contexte : session sur place au BTS SIO (RJ45 direct, poste en 10.0.230.4). Le switch Huawei S5700-28TP-PWR-LI-AC (don Auchan) de la salle I110 était verrouillé (mot de passe console inconnu). Manu a changé le serveur physique OPNsense et redémarré Proxmox en cours de session ; le DHCP (tombé par un problème d'horodatage) a été rétabli.
| Heure | Domaine | Action | Statut |
|---|---|---|---|
| 09:30 | Réseau | Reprise de main BootROM (Ctrl+B, mdp défaut Admin@huawei.com, option 7 clear console password, option 1 boot) |
✓ Fait |
| 09:50 | Réseau | Retour usine : reset saved-configuration + reboot (réponse n à la sauvegarde) — config Auchan purgée |
✓ Fait |
| 10:00 | Réseau | Config plug-and-play : sysname SW-i110, console protégée, Vlanif1 statique 10.0.112.227/16, route 10.0.112.1, compte web d'usine supprimé | ✓ Fait |
| 10:40 | Réseau | Vérifs : ping 10.0.112.227 OK depuis le réseau, config sauvegardée (vrpcfg.zip), HTTP inactif | ✓ Fait |
| 11:10 | Documentation | MO-NET-005 v1.1 (20 p.) : dialogues BootROM exacts, politique mdp VRP (8+ / 2 catégories), dhcp enable global, IP statique |
✓ Compilé |
| 11:30 | Vaultwarden | Entrée « SW-i110 — Switch Huawei » créée (dossier Réseau, mdp console) via script Playwright | ✓ Fait |
| 11:45 | Netbox | SW-i110 référencé via ORM : constructeur Huawei, type S5700-28TP-PWR-LI-AC, IP 10.0.112.227/16 sur Vlanif1 | ✓ Fait |
| 12:00 | Wiki.js | Page MO-NET-005 publiée + index (procédures, home, phases, indicateurs) + nav + journal | ✓ Publie |
Diagnostic console : premier adaptateur USB/série hors service ; le second (PL2303, ATEN UC-232A) se fige après inactivité — débrancher/rebrancher côté PC et refaire stty + ACL après chaque rebranchement (pattern documenté dans le dépannage du MO).
Compteur global : 44 -> 45 MOs publiés (~626 pages).
En cours : VPN d'accès distant sur le nouvel OPNsense (architecture WireGuard : hub VPS existant + OPNsense client, compatible script bts et collègues).
Forward-S110 validée sur le collecteur DC1 (Srv2022) — remontée confirmée par lecture du journal ForwardedEvents (événements du poste DELLS110P16, dont PowerShell ScriptBlock 4104).GpoApply ciblé ; objets fantômes i5S110* et postes désactivés exclus, parade MS16-072 préservée).Forward-S110 créée et active — canaux remontes : System, Microsoft-Windows-Sysmon/Operational et PowerShell 4104 (ScriptBlock).SEC - WEF Event Forwarding liée a l'OU Postes_S110, filtrée en mode test sur le seul poste DELLS110P16 : aucun autre poste n'est impacté.gpupdate du poste, dans la semaine. Opération entièrement réversible (souscription, GPO et journal peuvent être retirés sans effet de bord).grafana.docker.bts.sio et prometheus.docker.bts.sio.ahamadi et cserra pour les examens du 15/06 (changement de mot de passe au premier logon, expiration le 19/06). Credentials dans Vaultwarden.wazuh.bts.sio, dashboard opérationnel.jlb réactivé sur DC1 (désactivé depuis 04/05 par cleanup inactifs >90j)Jean-Luc BAPTISTE revient enseigner le SISR. Besoin d'accès Domain Admin pour administrer l'AD.
m.tourneur (Maxime Tourneur) sur DC1| MO | Titre | Pages |
|---|---|---|
| MO-AD-009 | Diagnostic échec connexion RDP | 14 |
| MO-AD-010 | Gestion du groupe Protected Users | 11 |
| MO-AD-011 | Jonction poste au domaine AD | 9 |
40 modes opératoires publiés (~546 pages) couvrant 4 domaines : Plateforme (21), Active Directory (11), Sécurité (4), Réseau (4). Périmètre opérationnel intégralement couvert.
| MO | Titre | Pages |
|---|---|---|
| MO-NET-003 | Gestion des VLANs sur switches Aruba Instant On 1930 | 15 |
| MO-NET-004 | Routage inter-VLAN et filtrage sur OPNsense | 15 |
Bilan MOs : 40 modes opératoires publiés (~546 pages), domaine Réseau passe de 2 à 4 MOs.
Reste 4 tâches bloquées : T33 (Manu), T39/T46 (HyperV console), T49 (Manu)
| Finding | Risque |
|---|---|
| SAN P2000 credentials par défaut | Critique |
| iLO credentials faibles | Élevé |
| PKI intermédiaire BTSSIO expirée (10/2024) | Moyen |
| 16 ghost objects AD dans S110 | Faible |
| PSU 2 HyperV en défaut depuis 2019 | Moyen |
Contexte : Session sur site (après-midi). Manu présent. Objectif : hardening NAS Scotty + vérification cohérence Sprint 3.
| Heure | Domaine | Action | Ref audit | Statut |
|---|---|---|---|---|
| 14:00 | NAS | T30 — SMB Signing active sur NAS Scotty (server signing = mandatory) | F-NAS-002, R-NAS-002 | ✓ Fait |
| 14:15 | NAS | T66 fix — NTLMv1 désactivé côté serveur (ntlm auth = no) | F-NAS-003, R-NAS-003 | ✓ Fait |
| 14:30 | NAS | T62 — Scan fichiers sensibles : 2 dumps SQL FOG avec MDP AD en clair identifiés, ACL Backups-AD restreintes (chmod 700) | F-NAS-004, R-NAS-004 | ✓ Fait |
| 15:00 | NAS | T38 — SMB anonyme : risque accepte par Manu (intentionnel pour portables étudiants) | F-NAS-001 | ⚠ Accepte |
| 15:15 | Plateforme | T6 — AnyDesk DC2 : annule (Manu utilise pour administration a distance) | F-PLT-003, R-PLT-003 | ❌ Annule |
| 15:30 | Diagnostic | Health check DC1+DC2 : sains, réplication OK, 0 erreurs 24h | — | ✓ OK |
| 15:45 | Diagnostic | HyperV (.4) toujours DOWN — Manu a reset le MDP, diagnostic physique a planifier | — | ⚠ Bloqué |
T30 — SMB Signing NAS Scotty : Activation server signing = mandatory dans smb.conf. Empêche les attaques relay NTLM via partages NAS.
T66 fix — NTLMv1 NAS : ntlm auth = no dans smb.conf. Le fix précédent (NTLMv2 force côté client) ne bloquait pas les négociations NTLMv1 entrantes. Corrige côté serveur.
T62 — Fichiers sensibles : 2 fichiers SQL dans Backups-AD contenaient des hashs MDP AD en clair (dumps FOG). ACL restreintes a root (chmod 700 sur le répertoire). Pas de suppression (sauvegardes historiques).
T38 — SMB anonyme : Manu confirme que le partage anonyme est intentionnel pour les portables étudiants (pas de jonction domaine). Risque accepte, documenté.
T6 — AnyDesk DC2 : Manu utilise AnyDesk pour administration distante. Tache annulée.
Vérification post-reboot DC1 : Tous les changements Sprint 3 (GPO RDP, WinRM HTTPS, HASP off, Protected Users, FGPP) confirmés actifs. Aucune régression.
Avancement Sprint 3 : ~95% (38/~40). 2 taches bloquées par HyperV DOWN.
Contexte : Session sur site (RJ45 direct, lundi matin). Manu absent. Objectif : taches nécessitant un accès physique.
| Heure | Domaine | Action | Ref audit | Statut |
|---|---|---|---|---|
| 11:15 | Diagnostic | Inventaire infra : DC1/DC2 UP, HyperV DOWN, NAS .11/.12 DOWN | — | ✓ OK |
| 11:20 | Réseau | T32 — Désactivation règle SSH WAN OPNsense (service déjà off, règle résiduelle désactivée) | F-SEC-003, R-SEC-003 | ✓ Fait |
| 11:20 | Réseau | T33 — Open_Bar = 10.0.0.0/16 constaté. Reporté a Manu (impact étudiants) | F-SEC-004, R-SEC-004 | ⚠ Reporté |
| 11:28 | Maintenance | Reboot DC1 (48j uptime, RAM 0.8→2.6 GB, patches mars 2026) | — | ✓ Fait |
| 11:30 | AD | T55 — Désactivation 12 machines inactives >90j (S109/S110/S111 + EGGSY) | F-AD-011, R-AD-011 | ✓ Fait |
| 11:30 | AD | T56 — Désactivation 4 comptes inactifs (3 profs + NasUser). 7 étudiants exclus. | F-AD-011, R-AD-011 | ✓ Fait |
| 11:33 | AD | T57 — GPO Proxy vide constatée (ProxyServer=""). Proxy = transparent OPNsense. | F-NET-007, R-NET-007 | ⚠ Documenté |
T32 — SSH WAN : Service SSH déjà désactivé (enablesshd off). Règle firewall WAN "Autorise la connexion a SSH" (any → self:Port_SSH/49222) désactivée. Backup config avant modification. Diff : seule cette règle modifiée sur 15.
T33 — Open_Bar : Alias = 10.0.0.0/16 (tout le réseau). Bypass proxy pour tout le monde. Modification reportée : risque de forcer tous les élèves a passer par le proxy. A définir avec Manu (sous-réseaux profs vs élèves vs serveurs).
DC1 Reboot : 48j uptime (boot 17/03). RAM 802 MB → 2612 MB (+225%). Total RAM visible 3.85 → 4.19 GB. Services NTDS/DNS/Netlogon/DFSR OK. Réplication re-sync en cours.
T55 — Machines inactives : 12 machines (dsquery -inactive 13). Désactivées via dsmod, description "Désactivé 2026-05-04". Réversible (Enable-ADAccount). EGGSY (Serveurs) a vérifier avec Manu.
T56 — Comptes fantômes : 4 comptes (3 profs + NasUser). Étudiants Sio1/Sio2_2025 exclus (stage potentiel). Réversible.
T57 — GPO Proxy : GPO "Proxy" liée a Profs + Stratégies SIO mais ProxyServer vide. Le proxy fonctionne au niveau OPNsense (redirection transparente 3128/3129). A discuter avec Manu.
Contexte : Accès physique RJ45 direct VLAN 112. Manu absent. Pas de VPN. WinRM vers DC1/DC2, API OPNsense, SSH ProxMox.
| Heure | Domaine | Action | Ref. audit | Status |
|---|---|---|---|---|
| 11:20 | Réseau | T32 — Règle SSH WAN OPNsense désactivée. Backup config capturée avant modification. | F-SEC-003, R-003 | ✓ Fait |
| 11:28 | AD | Reboot DC1 (48 jours uptime). RAM passe de 0.78 a 2.6 GB (+225%). Services DNS, NTDS, DFSR opérationnels. | — | ✓ Fait |
| 11:30 | AD | T55 — 12 machines inactives (>90j) désactivées dans AD. 7 salles (S109, S110, S111 + EGGSY serveur). | F-AD-023, R-023 | ✓ Fait |
| 11:35 | AD | T56 — 4 comptes fantômes désactivés (3 profs + NasUser). 7 comptes étudiants préservés (stages potentiels). | F-AD-024, R-024 | ✓ Fait |
| 11:40 | AD | T57 — GPO Proxy analysée : ProxyServer vide, AutoDetect=0. Proxy réel = transparent OPNsense (NAT ports 3128/3129). Documenté, reporté pour décision Manu. | F-NET-006 | ✓ Documenté |
| 12:00 | NAS | T66 — NAS QNAP scotty (10.0.112.5) : AFP désactivé (port 548 fermé), rsync désactivé, NTLMv2 force. Via rétro-ingénierie API web QTS 4.2.6. | F-NAS-003, R-003 | ✓ Fait |
| 12:15 | NAS | T38 découverte critique : accès anonyme SMB total. smbclient -N liste .ssh, Certificats, Backups-AD. map to guest non modifiable via API (nécessite SSH). | F-NAS-001, R-001 | ⚠ Bloqué |
Découverte critique : Accès anonyme SMB NAS sans authentification — backups AD, clés SSH et certificats exposés en lecture libre. Nécessite SSH NAS (filtre) pour corriger.
| Heure | Domaine | Action | Ref. audit | Status |
|---|---|---|---|---|
| 14:05 | AD | Vérification réplication post-reboot : 0 échecs / 5, delta 6m22s. DNS stabilisé. | — | ✓ OK |
| 14:08 | AD | T31 — NLA DC2 corrigé (0 → 1). GPO « Sécurité - Restriction RDP » créée : NLA obligatoire, TLS, chiffrement High. Liée OU Domain Controllers. | F-AD-017, R-017 | ✓ Fait |
| 14:12 | Réseau | T34 — OPNsense 26.1.5 : groupe « firewall-ops » créé (63 privilèges opérationnels). Comptes nominatifs clegrand + mmartinez. MDP Vaultwarden. | F-SEC-006, R-006 | ✓ Fait |
| 14:20 | AD | T39 — Scan DC1+DC2 : aucun dump FOG. Serveur FOG sur HyperV (10.0.112.4, DOWN >4j). | F-SUP-004 | ⚠ Bloqué |
| 14:25 | AD | T59 — WinRM HTTPS (5986) active sur DC1 + DC2. Certificats existants réutilisés. Firewall rules ajoutées. HTTP 5985 maintenu en transition. | F-AD-021, R-021 | ✓ Fait |
| 14:30 | AD | T60 — Sentinel LDK (hasplms) v27.0.1 désactivé et arrêté sur DC1. Aucune clé USB, service inutile. DC2 non affecté. | F-SEC-010, R-010 | ✓ Fait |
| 14:32 | AD | T61 — Certificats RDP vérifiés : DC1 CN=Srv2022.bts.sio (exp 2031), DC2 CN=Srv2022Phy.bts.sio. | F-AD-029, R-029 | ✓ Fait |
| 14:40 | Infra | T65 — ProxMox : ordre de démarrage configure pour 4 CTs critiques. WG(1) → Docker(2, 60s) → Vaultwarden(3) → Wazuh(4). | F-VIRT-005, R-005 | ✓ Fait |
Sprint 3 cumul 04/05 : 34 / ~40 (85%). 6 taches restantes bloquées par dépendances externes (SSH NAS, HyperV DOWN, décisions Manu).
Vikunja : 102 / 182 taches terminées (56%).
Contexte : Suite session sur site. NAS QNAP TS-439 (scotty, 10.0.112.5). QTS 4.2.6 EOL. SSH filtre. Accès via rétro-ingénierie API web QTS.
| Heure | Domaine | Action | Ref audit | Statut |
|---|---|---|---|---|
| 12:00 | NAS | T66 — AFP (AppleTalk) désactivé. Port 548 fermé. | F-NAS-003, R-NAS-003 | ✓ Fait |
| 12:00 | NAS | T66 — rsync config désactivée. Daemon bloqué connexions (protocol startup error). | F-NAS-003, R-NAS-003 | ✓ Fait |
| 12:00 | NAS | NTLMv2 force sur SMB NAS (samba3NTLMv2Only: 0→1). Option msadset. | — | ✓ Fait |
| 12:00 | NAS | T30 — SMB Signing : non exposé dans API QTS 4.2. Nécessite SSH. | F-NAS-001, R-NAS-001 | ⚠ Bloqué |
| 12:00 | NAS | T38 — Accès anonyme SMB total confirmé (Partage NAS + images). map to guest non modifiable via API. | F-NAS-002, R-NAS-002 | ⚠ Critique |
T66 — AFP/rsync : API découverte par analyse JS QTS (winMacNfs.js, backupserver.js). AFP via POST net/networkRequest.cgi?subfunc=apple_net. rsync via POST backup/backupRequest.cgi?subfunc=bak_server. NTLMv2 via option=msadset (pas msset). Incident mineur : SMB désactivé 30s par checkbox manquante, rétabli immédiatement.
T38 — Accès anonyme SMB : smbclient -N accède sans authentification aux partages. Données sensibles exposées : .ssh, Certificats, Backups-AD, ISOs, VMs. Configuration Samba "map to guest" non accessible via API web. Nécessite SSH ou intervention manuelle web UI. Priorité haute.
T30 — SMB Signing : QTS 4.2.6 ne propose pas ce paramètre dans l interface web. Modification smb.conf requise via SSH (filtre). Prérequis : activer SSH dans panneau Telnet/SSH du NAS.
| Heure | Domaine | Action | Ref. audit | Status |
|---|---|---|---|---|
| 09:30 | AD | Diagnostics complets DC1+DC2 via WinRM. RAM DC1 0.78/3.52 GB (critique). LAPS confirmé 25/59 (42.4%). Réplication 0% échecs. DFSR sain. | — | ✓ OK |
| 09:40 | AD | Events 2889 analyses : 152 events, source unique Authentik (10.0.112.20). Bind LDAP plain avec domain admin. | F-AD-019 | ✓ OK |
| 09:50 | Docker | Authentik bascule de ldap:// vers ldaps://10.0.112.2:636. TLS 1.3 confirmé. Synchro 5 pages, 0 erreur. Events 2889 post-bascule : ZÉRO. | F-AD-019 | ✓ OK |
| 09:57 | AD | LDAPServerIntegrity=2 (Require) appliqué sur DC1 puis DC2. LDAP signing enforce. | F-AD-019 / R-020 | ✓ OK |
Découvertes clés :
Impact : Finding H2 fermé. Action #28 du plan de remédiation fermée. PingCastle A-DCLdapSign devrait disparaître au prochain scan.
Sprint 3 cumul 01/05 : 24 / ~40 (+T24 LDAP Signing).
Contexte : Session a distance (VPN WireGuard). 3 taches Sprint 3 exécutées sur DC1/DC2/OPNsense.
| Heure | Domaine | Action | Ref audit | Statut |
|---|---|---|---|---|
| 20:30 | AD | T24 — LDAP Signing : activation audit (Events 2889) sur DC1+DC2. 315 unsigned binds détectés (Event 2887, 14/04). Phase 2 après 48h. | F-AD-019 / R-AD-019 | ▲ En cours |
| 20:45 | AD | T36 — Sysmon v15.20 déployé sur DC1 (Srv2022) et DC2 (Srv2022Phy). Config SwiftOnSecurity, services Running. | F-AD-023 / R-AD-023 | ✓ OK |
| 21:00 | Réseau | T40 — HTTPS active sur OPNsense. 3 certs expirés remplacés (nouveau cert CN=opnsense.bts.sio, CA racine, 10 ans). HTTP redirigé vers HTTPS. Zabbix non traité (HyperV down). | F-NET-017 / R-NET-017 | ✓ OK |
Microsoft-Windows-Sysmon/Operational (64 Mo max).Sprint 3 après cette 1re session : 11 / ~40. T24 en cours (phase audit). Voir sessions suivantes.
Contexte : Session a distance (VPN WireGuard). Batch de 6 taches de durcissement AD + vérification de 5 taches antérieures sur DC1+DC2.
| Heure | Domaine | Action | Ref audit | Statut |
|---|---|---|---|---|
| 19:38 | AD | T50 — 5 admins ajoutés au groupe Protected Users | F-AD-010, R-AD-010 | ✓ Fait |
| 19:38 | AD | T51 — AccountNotDelegated=True sur 5/5 comptes admin (built-in corrigé) | F-AD-010 | ✓ Fait |
| 19:41 | AD | T52 — Hardened Paths corrigés via GPO (RequireMutualAuthentication+Integrity) | F-AD-022 | ✓ Fait |
| 19:38 | AD | T54 — AdminCount GGPROFS : héritage ACL restauré | F-AD-002 | ✓ Fait |
| 19:38 | AD | T63 — Event logs augmentes a 256 Mo (5 logs x 2 DCs via WinRM) | F-AD-022 | ✓ Fait |
| 19:38 | AD | T64 — Audit failure active (auditpol, 60/60 sous-catégories DC1+DC2) | F-AD-022 | ✓ Fait |
| 19:38 | AD | Vérifications : T27 machineAccountQuota=0, T44 Corbeille AD, T45 DNS, T47 TEMPLATEDU, T58 Schéma Admins vide | — | ✓ Confirme |
Impact : Protected Users élimine le cache de credentials et force Kerberos AES (pas de NTLM). AccountNotDelegated bloqué l'impersonation des comptes admin. Event logs 256 Mo et audit failure 60/60 complètent la télémétrie de sécurité.
Sprint 3 : 17 / ~40 après ce batch.
Contexte : Session a distance (VPN WireGuard). Deux taches majeures du Sprint 3.
| Heure | Domaine | Action | Ref audit | Statut |
|---|---|---|---|---|
| 20:19 | AD | T41 — LDAPS 636 active sur DC1 et DC2. Certificats auto-signés RSA 2048 (5 ans), importes Trusted Root CA. TLS 1.2/1.3. Auth LDAPS vérifiée. | F-AD-019, R-020 | ✓ Fait |
| 20:19 | AD | T42 — DFSR SYSVOL DC2 réparé. DC2 offline depuis ~septembre 2023 (1046 jours). Procédure D4/D2 non-authoritative. 20/20 GPOs répliquées. Partages SYSVOL+NETLOGON restaurés. | F-AD-030, R-017 | ✓ Fait |
Découvertes clés :
Impact : LDAPS élimine le trafic LDAP en clair (F-AD-019 critique). DFSR restauré la résilience AD : SYSVOL et NETLOGON accessibles depuis les deux DCs.
Sprint 3 cumul 30/04 : 23 / ~40 (3 sessions VPN). T24 LDAP Signing en phase audit (Events 2889).
Contexte : Session sur place au BTS SIO (poste 10.0.232.29, VLAN pédago). Paul présent et validant T16. Objectif : publier MO-PLT-021 (T14 + T16 + 2FA TOTP), puis audit de cohérence Wiki.js et Vikunja.
| Heure | Domaine | Action | Ref audit | Statut |
|---|---|---|---|---|
| 10:28 | Plateforme | T16 — Harmonisation ACL /pool/icad via groupe PVEAdmin |
F-VIRT-002 / F-VIRT-005 | ✓ Fait |
| 10:52 | Documentation | MO-PLT-021 v1.0 (16 pages, T14 + T16 + 2FA TOTP via pvesh) |
— | ✓ Publie |
| 11:09 | Suivi | Vikunja : T14, T16, T21 marquées done (bucket Terminé) |
— | ✓ Fait |
| 11:21 | Wiki.js | Audit cohérence 8 pages index (home, procédures, journal, phases, phase-1, indicateurs, architecture, phase-4) | — | ✓ MAJ |
| 11:28 | Infra | Incident : cache nginx-proxy (206 entrées obsolètes) purge | — | ✓ Résolu |
| 11:35 | Wiki.js | Sidebar nav MO-PLT-021 + entrée journal 16/04 | — | ✓ Fait |
T16 — Harmonisation pool/icad : trois comptes étudiants (dbalmigere, lbonet, mboyer) étaient individuellement Administrator sur /pool/icad (42 privilèges chacun). ACL remplacée par pveum acl modify /pool/icad --groups icad --roles PVEAdmin puis retrait des 3 ACL utilisateurs Administrator. Sept privilèges sensibles retirés : Permissions.Modify, Sys.Modify, Realm.Allocate, Mapping.Modify, Sys.AccessNetwork, Sys.Incoming, Sys.PowerMgmt. Modèle désormais aligné sur les pools ksav et publicom (groupe PVEAdmin). Script reproductible : audit/remediation/sprint2/T16_hardening_pool_icad.sh.
MO-PLT-021 (16 pages) : (1) création des comptes nominatifs ProxMox clegrand@pve et manu@pve (realm PVE, role PVEAdmin, ACL /), (2) remédiation T16 avec baseline ACL avant/après, (3) inscription 2FA TOTP via pvesh — agnostique application (Aegis, Authy, Google Authenticator, FreeOTP, bw) et conforme RFC 6238. Exemple complet d'un login en deux étapes (NeedTFA ticket partiel puis ticket complet via pvesh create /access/ticket). Douze captures pseudo-terminal générées via scripts/render_terminal_capture.py.
Audit cohérence : huit pages index Wiki.js remises a jour pour refléter 33 MOs publiés / environ 442 pages / 82 taches done / 180 taches totales / 46 % / date 16/04. Vikunja : T14, T16, T21 déplacées vers le bucket Terminé (id 9), label En attente (id 12) retiré de trois taches (16, 20, 26). Pages Wiki.js auditées : home (357), procedures (351), journal-de-bord (352), phases (358), phase-1-securisation (354), indicateurs (353), architecture (16), phase-4-automatisation (7).
Incident cache nginx : après les MAJ psql des huit pages, les compteurs obsolètes (34 MOs / 20 MOs) restaient affiches malgré Ctrl+Shift+R. Diagnostic : 206 entrées obsolètes dans /var/cache/nginx/proxy du conteneur nginx-proxy. Purge totale (find /var/cache/nginx/proxy -type f -delete) + nginx -s reload + docker restart wikijs ont restauré les compteurs a jour. Pattern documenté en mémoire pour les prochaines sessions.
Finitions Wiki.js : (1) insertion de l'entrée nav-moplt021 — MO-PLT-021 — Comptes + 2FA — dans navigation.config après nav-moplt020, (2) création de la présente entrée journal 16/04, (3) re-render de /fr/journal-de-bord via GraphQL + nouvelle purge du cache nginx proxy.
Compteur global : 32 → 33 MOs publiés (~442 pages).
Connectivité sur place (10.0.232.29) : Zabbix (10.0.112.190) débloqué sur toutes les interfaces, docker-srv (10.0.112.20) et Gitea externe OK. OPNsense 2 (10.0.112.101), Ferme HyperV (10.0.112.4) et SuluCisco Wifi (10.0.112.6) toujours injoignables (ICMP + TCP ports 22/80/443 fermé) — vérification physique de la baie a planifier.
Git : commit 2bbc2f6 pousse sur origin/main (17 fichiers, +735 lignes).
Prochaines étapes : (1) démarrer le mémoire CNAM (priorité 1, chantier principal non entame), (2) MO-SEC-004 Suricata si l'IPS est stable (vérification via Zabbix désormais accessible on-site), (3) MO-AD-004 LAPS après T25 (extension du schéma AD requise).
Contexte : Session après-midi sur place au BTS SIO (poste 10.0.232.29, VLAN pédago, gateway 10.0.112.1). Manu et Paul absents l'après-midi. Objectif : exploiter l'accès on-site pour interroger l'API Suricata d'OPNsense, rédiger MO-SEC-004 (TP cybersécu) et clore la tache Vikunja #164 (trafic STUN suspect sur ce poste).
| Heure | Domaine | Action | Statut |
|---|---|---|---|
| 13:05 | Investigation | Tache #164 STUN sur 10.0.232.29 : ss/lsof/journalctl, 0 listener UDP STUN dédié, hypothèse Brave/WebRTC confirmée | ✓ Faux positif |
| 13:15 | OPNsense | Découverte état Suricata via API REST authentifiée : mode IDS (PCAP), 32/68 rulesets, WAN+LAN, service running | ✓ Stable |
| 13:25 | Captures | Génération 7 PNG (Playwright sur OPNsense UI : Settings, Rules, User defined, Alerts) + 2 réutilisées de MO-SEC-002 | ✓ Générés |
| 13:30 | Documentation | MO-SEC-004 v1.0 (19 pages) : préparation pre-TP, désactivation/suppress, surveillance parallèle, restauration, cas types Nmap/Hydra/Metasploit/Wireshark/DVWA | ✓ Compile |
| 14:00 | Wiki.js | Page MO-SEC-004 publiée + 4 indexes (procédures, home, phases, indicateurs) MAJ + sidebar nav (nav-mosec003 oublié ajouté + nav-mosec004) | ✓ Publie |
| 14:10 | Vikunja | Tache #82 Suricata IDS/IPS conteneurisé -> bucket Terminé | ✓ Fait |
| 14:30 | Documentation | MO-SEC-002 v1.1 publie : correction origine STUN (Brave/WebRTC, non AnyDesk), 64->68 rulesets, ajout section Origines courantes du STUN + Voir aussi (renvoi MO-SEC-004) ; 15->19 pages | ✓ Publie |
| 14:35 | Documentation | MO-AD-008 v1.1 publie : note de synchronisation post-rotation OPNsense (ancien-mdp obsolète depuis 16/04, items résiduels via MO-SEC-003) | ✓ Publie |
Investigation #164 STUN : snapshot UDP du poste 10.0.232.29 a montre 0 listener sur les ports STUN dédiés (3478, 5349, 19302, 3479) et 0 socket UDP établi vers ces ports. Les seuls flux UDP actifs étaient DHCP, mDNS, KDE Connect (LAN) et QUIC HTTP/3 vers Cloudflare/Google/Fastly via Brave (32 processus). L'alerte Suricata ET INFO STUN Binding Request (SID 2033078) concerne donc des candidats ICE WebRTC dormants émis par Brave/Firefox lors de visites de pages contenant du WebRTC, pas un usage P2P malveillant. Recommandation Suricata : whitelister 10.0.232.29 sur cette règle ou ajuster a >50 binding/min pour ne déclencher que sur volumétrie anormale.
Découverte état Suricata : mot de passe ancien-mdp rejeté (mémoire 9 jours obsolète), récupéré le mdp courant via Vaultwarden CLI (bw unlock --raw + bw get password 80150c52). Login OPNsense réussi via curl + CSRF token. Endpoints API utiles confirmés : /api/ids/service/status (running), /api/ids/settings/get (mode pcap = IDS, interfaces lan, wan, homenet 10.0.0.0/8 + 192.168.0.0/16 + 172.16.0.0/12), /api/ids/settings/listRulesets (68 rulesets disponibles, 32 actifs dont abuse.ch/Feodo, abuse.ch/SSL Fingerprint, abuse.ch/ThreatFox, abuse.ch/URLhaus). Le mode IDS confirmé : MO-SEC-004 traite uniquement la lisibilité des alertes pendant TP, pas le risque de blocage.
MO-SEC-004 (19 pages) : structure en trois temps (avant/pendant/après TP) + cas types pour les 5 ateliers cybersécu standards. Snapshot des rulesets actifs en début de séance, désactivation ciblée ou suppression par SID via User defined, surveillance parallèle de l'onglet Alerts avec filtre !10.0.232.0/24, restauration et entrée obligatoire dans le journal de bord. Sept captures Playwright générées automatiquement via scripts/capture_mo_sec_004.py (login Vaultwarden + Chromium headless). Renvoi vers MO-SEC-002 pour la consultation quotidienne et MO-NET-001 pour le cadre de validation.
**Compteur global : 33 -> 34 MOs publiés (~465 pages après MAJ SEC-002 v1.1).
MOs mis a jour suite a l'investigation #164 STUN : MO-SEC-002 v1.1 corrige une affirmation erronée de la v1.0 (le trafic STUN du poste 10.0.232.29 était attribué a AnyDesk alors qu'il s'agit en réalité de Brave/WebRTC) et enrichit la documentation d'une section Origines courantes du trafic STUN avec démarche d'investigation. MO-AD-008 v1.1 ajoute une note traçant la rotation OPNsense effective du 14/04 (obsolescence de ancien-mdp). Pas de nouveau MO requis -- les découvertes infrastructurelles (mode Suricata IDS confirmé, pattern API OPNsense, asset path Wiki.js) sont consignées en mémoire.
Reste un seul MO planifié (MO-AD-004 LAPS, bloqué T25).**
Connectivité sur place (rappel matin) : Zabbix (10.0.112.190) et tous les CTs/PVE accessibles. OPNsense 2 (10.0.112.101), Ferme HyperV (10.0.112.4), SuluCisco Wifi (10.0.112.6) toujours injoignables (extinction physique probable, diagnostic baie a planifier).
Prochaines étapes : démarrer le mémoire CNAM (priorité 1, chantier principal non entame, répertoire memoire/rapport/ a créer en parallèle de memoire/proposition/), MO-AD-004 LAPS après T25 (extension schéma AD requise), TOTP réel clegrand@pve (5 min avec smartphone), diag physique baie tant qu'on est sur place.
Contexte : Suite de la session après-midi sur place. Après MO-SEC-004 (14h00) et corrections SEC-002 v1.1 + AD-008 v1.1 (14h35), exécution de T25 (Windows LAPS) puis rédaction et publication de MO-AD-004. Plus aucun MO en attente après cette publication.
| Heure | Domaine | Action | Statut |
|---|---|---|---|
| 14:25 | T25 pre-flight | Audit non destructif via WinRM : OS Server 2022, Update-LapsADSchema dispo, OUs S109/S110/S111 OK (72 postes), backup wbadmin du 12/04, schéma master = DC1 | ✓ Tous feux verts |
| 14:28 | T25 élévation | Ajout temporaire BTSAdministrateur a Schéma Admins (RID 518) + Enterprise Admins (RID 519). Token NTLM rafraîchi via nouvelle session WinRM | ✓ Privilèges OK |
| 14:30 | T25 schéma | Update-LapsADSchema : 4 attributs ms-LAPS-* déjà présents (extension partielle KB5025230 antérieure) + ajout extended right ms-LAPS-Encrypted-Password-Attributes + classe computer mise a jour | ✓ Idempotent OK |
| 14:31 | T25 ACL OUs | Set-LapsADComputerSelfPermission + Set-LapsADReadPasswordPermission sur S109/S110/S111 (Admins du domaine) | ✓ OK 3/3 |
| 14:34 | T25 GPO | Création GPO "LAPS - Rotation MDP admin local" + 6 valeurs registry (BackupDirectory=AD, AgeDays=30, Length=20, Complexity=4, PostAuthActions=5, PostAuthDelay=24h) | ✓ Créé |
| 14:34 | T25 lien GPO | Liaison GPO -> 3 OUs (POSTES_S109/S110/S111). 72 postes désormais cibles. | ✓ Lie |
| 14:35 | T25 nettoyage | Retrait BTSAdministrateur de Schéma Admins + Enterprise Admins (best practice : ces groupes restent vides en routine) | ✓ OK |
| 14:50 | MO-AD-004 v1.0 | 17 pages avec 9 captures pseudo-terminal générées via render_terminal_capture.py. Sections : objet, théorie LAPS legacy vs natif, chaîne ACL, procédure 9 étapes, vérifications, dépannage, rollback | ✓ Compile |
| 15:05 | Wiki.js | Page MO-AD-004 publiée + 4 indexes (procédures 34->35, home, phases, indicateurs) MAJ + sidebar nav-moad004 + journal PM2 | ✓ Publie |
Découverte clé : Update-LapsADSchema exige a la fois Schéma Admins (RID 518) pour écrire dans CN=Schéma et Enterprise Admins (RID 519) pour créer le extended right ms-LAPS-Encrypted-Password-Attributes dans CN=Configuration. Domain Admins ne suffit pas. Le token NTLM étant figé a l'authentification, rouvrir une nouvelle session WinRM après l'ajout aux groupes est obligatoire pour que le token reflète les nouvelles appartenances.
Choix de design : GPO entièrement créée par script (New-GPO + Set-GPRegistryValue) sans passage par la console graphique. Six valeurs registry HKLMSoftwareMicrosoftWindowsCurrentVersionLAPSConfig suffisent : BackupDirectory=2 (AD), PasswordAgeDays=30, PasswordLength=20, PasswordComplexity=4 (full), PostAuthenticationActions=5 (reset+logoff), PostAuthenticationResetDelay=24h.
Validation différée : Invoke-GPUpdate -Computer S109HP09 échoue car le Task Scheduler a distance est désactivé sur les postes étudiants (durcissement attendu). La rotation des MDP locaux se déclenchera au prochain cycle gpupdate naturel (90 min ± 30 min de jitter Microsoft) ou au prochain démarrage. Vérification recommandée : sondage Get-LapsADPassword sur un échantillon dans 2h, puis sur les 72 postes le lendemain (postes éteints excludes).
Compteur global : 34 -> 35 MOs publiés (~482 pages). Plus aucun MO en attente. Sprint 2 : 13/15 taches done après T25.
Bilan journée 16/04 (matin + après-midi) : T16 pool/icad + MO-PLT-021 (16p) le matin, MO-SEC-004 (19p) + MO-SEC-002 v1.1 + MO-AD-008 v1.1 + MO-AD-004 (17p) l'après-midi. Total : 4 nouveaux MOs + 2 MAJ + T16 + T25 exécutés en une journée on-site.
Prochaines étapes : mémoire CNAM (priorité 1, chantier principal), TOTP réel clegrand@pve, diag physique baie, DNS BTS pour vikunja.legrand-tech.fr.
Contexte : Suite de la session sur place BTS SIO après publication de MO-AD-004. 35 MOs couvrent 100% du périmètre opérationnel. Session orientée Sprint 3 : durcissement protocoles d'authentification legacy (T28, T29) via WinRM DC1+DC2, et clôture définitive de T14 (2FA TOTP sur clegrand@pve) via l'API REST ProxMox.
| Heure | Domaine | Action | Ref audit | Statut |
|---|---|---|---|---|
| 16:25 | T29 LLMNR | GPO Securite - Desactiver LLMNR (id 71b49218-c951-4198-af46-e10fb7931ed1) créée sur DC1, EnableMulticast=0 dans HKLM PoliciesMicrosoftWindows NTDNSClient, liée a DC=bts,DC=sio |
F-NET-005, R-NET-005 | ✓ Créé et lie |
| 16:25 | T28 DC1 | Registre Lsa : LmCompatibilityLevel null->5 (NTLMv2 only, refuse LM+NTLM) + NoLMHash=1 (déjà idempotent) |
F-AD-018, R-AD-018 | ✓ OK |
| 16:26 | Monitoring DC1 | DC1/DC2/NAS ping UP, events 4625 récents antérieurs au changement | -- | ✓ Pas de régression |
| 16:27 | T28 DC2 | Registre Lsa identique sur SRV2022PHY (DC2) | F-AD-018, R-AD-018 | ✓ OK |
| 16:28 | Verif finale | DC1 : LmCompat=5, NoLMHash=1, GPO LLMNR liée. DC2 : LmCompat=5, NoLMHash=1 (GPO LLMNR non visible en local - faux-négatif connu lie a ADWS casse, F-AD-030 / T42 a venir) | -- | ✓ OK |
| 16:32 | T25 validation | 14/72 postes (19,4%) ont publie l'attribut ms-LAPS-Password : S109 3/23, S110 5/32, S111 6/17. Config GPO id 953af54d-... + ACLs OUs valides côté DC |
-- | ⏳ Partiel |
| 16:36 | T14 clôture (TOTP) | Enrôlement TOTP clegrand@pve 100% via API REST (aucune UI). Secret base32 généré en Python stdlib (20 octets). POST /access/tfa/clegrand@pve avec totp URI + value (code validation) + password. TFA id 493082dd-5e66-4827-b8c8-d8415562476b. Login 2FA complet valide (phase 1 user+pwd -> ticket partiel, phase 2 challenge+code -> ticket final) |
T14 | ✓ Actif |
| 16:48 | Git | Commit 169dc5b pushe (3 scripts, 607 insertions : preflight + execute 8-stages + validate) | -- | ✓ Pushe |
| 16:53 | T25 revalidation | Toujours 14/72 (stagnation depuis 16h32) : postes éteints en fin d'aprem + PostAuthDelay 24h | -- | ⏳ A revalider demain 9h |
Découverte clé (IPs DC1/DC2) : L'IP 10.0.112.10 n'est PAS un DC, c'est Vaultwarden accessible en HTTPS 443 depuis le VLAN pédago. Les vraies IPs sont DC1 = 10.0.112.2 (SRV2022 HyperV) et DC2 = 10.0.112.3 (SRV2022PHY).
Découverte clé (ProxMox 8.4 TOTP) : pveum user tfa add n'existe pas en CLI. L'enrôlement TOTP passe exclusivement par l'API REST POST /access/tfa/{userid} avec type=totp, totp (URI provisioning complète), value (code TOTP courant), description, password (mdp user pour confirmation identité). Le serveur accepte un secret fourni par le client. Login 2FA = ticket TFA partiel phase 1 puis challenge avec password=totp:<code> phase 2.
Découverte clé (WinRM DC2) : WinRM DC2 fonctionne pour opérations purement locales (registre, services) même si ADWS casse. Set-ItemProperty HKLM:SYSTEMCurrentControlSetControlLsa passe, mais Get-ADDomain, Get-GPO, Get-GPRegistryValue retournent vide. GPOs visibles via PDC=DC1 uniquement. T42 (réparation WMI+DFSR DC2) toujours en attente.
Impact analyse :
| Finding | Avant | Après | Criticité résiduelle |
|---|---|---|---|
| F-AD-018 (LM hashes + NTLMv1 sur DCs) | Critique | Corrige (DC1 + DC2) | Faible (prise d'effet LSA au prochain reboot nocturne) |
| F-NET-005 (LLMNR attaques Responder/relay) | Élève | Corrige via GPO domaine | Faible (postes actifs au prochain gpupdate) |
| T14 (2FA ProxMox clegrand@pve) | Absent | Actif | 0 |
Prochaines étapes :
python3 scripts/T25_validate_laps.py --full après réveil des postes étudiants. Viser > 80% ; si < 50%, investiguer KB Windows (cumulative update 2023+) sur echantillon.Compteurs finaux 16/04 fin de journee : 35 MOs (~482 p) | Sprint 2 : 13/15 | Sprint 3 : 3/~40 | Vikunja : 86/183 (47%) | 6 commits pushes (2bbc2f6, 3e81681, 85647e7, 82cce72, 647a3bc, 169dc5b) | TFA ProxMox : clegrand@pve OK.
Contexte : Session a distance (VPN WireGuard). Objectif : exécuter la seconde rotation du compte krbtgt (T21 phase 2) après fenêtre d'attente de plus de 12 heures post phase 1 (14/04 13:02:38). Garde-fou Microsoft : interdiction de deux rotations rapprochées (< 10 h) qui invalideraient tous les TGTs en vol.
| Heure | Domaine | Action | Ref audit | Statut |
|---|---|---|---|---|
| 18:48 | AD | Garde-fou pre-Phase 2 (delta > 10 h) | — | ✓ 29,77 h |
| 18:52 | AD | T21 phase 2 — Rotation krbtgt (2e passe) | F-AD-009, R-015 | ✓ Fait |
| 18:54 | AD | repadmin /syncall /AdeP + propagation DC2 |
— | ✓ OK |
| 18:55 | AD | Vérification PasswordLastSet DC1 = DC2 |
— | ✓ Identique |
T21 phase 2 — Rotation krbtgt : Génération MDP aléatoire 32 caractères ASCII 33-126 (identique au protocole phase 1), Set-ADAccountPassword -Identity krbtgt -Reset. Réplication déclenchée immédiatement via repadmin /syncall /AdeP : le DC2 répond l'erreur 110 chronique (RPC port 5722, DFSR casse depuis 27/03) mais la réplication principale via ports 135/389/636 propage correctement la nouvelle clé. PasswordLastSet = 2026-04-15 18:52:21 identique sur Srv2022 et Srv2022Phy. Delta Phase 1 → Phase 2 : 29,81 heures — au-delà des 12 heures recommandées, dans la fenêtre de 10 a 48 heures. Clé N-1 (celle de la phase 1) officiellement écartée au profit de N-2 (jetée par AD). Tout Golden Ticket forgé avec l'ancien hash krbtgt (antérieur au 14/04) est désormais rejeté par les KDCs.
Validation utilisateurs : test de connexion interactive sur un poste du VLAN administratif (logon standard OK) puis sur un poste pédagogique avec compte élève (klist purge + gpupdate /force + logon, TGT frais visible via klist tgt, nouveau kvno observé). Tache planifiée T43 (backup SystemState dimanche 3h) vérifiée : service planificateur ne requiert pas de re-authentification, pas d'impact.
Documentation : publication MO-AD-002 v1.0 (14 pages). Mode opératoire dédié au compte krbtgt et a la mécanique N / N-1. Contient : théorie Golden Ticket (rôle krbtgt, mécanique de signature TGT, nécessite de la double rotation), procédure détaillée Phase 1 et Phase 2 (génération aléatoire, Set-ADAccountPassword, repadmin /syncall), fenêtre d'attente, vérifications post-rotation (klist, kvno, tests VLAN admin + pédagogique), dépannage (erreur RPC 110 DC2, utilisateurs déconnectés, Set-ADAccountPassword unwilling to process, DFSR), automatisation via T21_rotation_krbtgt.ps1 avec garde-fou intégré, rollback (restauration authoritative DSRM).
Compteur global : 32 -> 33 MOs publiés (380 -> 394 pages).
Wiki.js synchronise : page 380 (MO-AD-002) créée, index procedures (351), home (357), phases (358), indicateurs (353), architecture (16), phase-1 (354), phase-4 (7) et journal (352) mis a jour ; sidebar nav : ajout de l'entrée nav-moad002 entre MO-AD-001 et MO-AD-003.
Vikunja : tache T21 phase 2 marquée done. Sprint 2 (10/10) désormais complet.
Git : commit unique MO-AD-002 v1.0 : rotation krbtgt (double rotation Golden Ticket) pousse sur origin/main.
Impact sécurité : attaque Golden Ticket neutralisée. Le compte krbtgt était la vulnérabilité la plus ancienne de l'infrastructure (1 404 jours d'inaction au 14/04), et la plus sévère (PingCastle A-Krbtgt #37). Sa double rotation clôture le Sprint 2 de la Phase 1 (rotation des credentials critiques). Prochaine rotation planifiée automatiquement pour 2026-10-14 (6 mois, cible ANSSI).
Prochaines étapes : enclencher Sprint 3 (25 taches restantes, durcissement AD et réseau), activer T14 ProxMox nominatifs (15 min, validée Manu), programmer rotation OPNsense 2 des que le firewall HA est réactivé.
Contexte : Après la session T21 phase 2 et la création de MO-AD-002, audit de cohérence des MOs existants et formalisation du traitement des items Vaultwarden résiduels (4 items ancien-mdp bloqués par injoignabilité ou divergence).
| Heure | Domaine | Action | Statut |
|---|---|---|---|
| 19:00 | Documentation | MAJ MO-AD-005 v1.1 (nuance RPC 110/5722 false-positive + Voir aussi) | ✓ Fait |
| 19:05 | Documentation | MAJ MO-AD-006 v1.3 (renvois MO-AD-002 rollback DSRM + MO-AD-008 sec.5.5 nas.cred + Voir aussi) | ✓ Fait |
| 19:10 | Documentation | MAJ MO-AD-007 v1.2 (sec.4.6 audit krbtgt seuils 90/180 jours + capture PowerShell + grille Comptes critiques) | ✓ Fait |
| 19:25 | Documentation | NOUVEAU MO-SEC-003 v1.0 (14 pages, Investigation items Vault bloqués/divergents) | ✓ Publie |
| 19:30 | Tooling | scripts/render_terminal_capture.py (Python PIL) — utilitaire de captures pseudo-terminal | ✓ Fait |
Renumérotation : Suricata initialement prévu en MO-SEC-003 devient MO-SEC-004 (le code SEC-003 est réattribué aux items Vault).
Renvois croises : MO-AD-005/006/007 référencent maintenant MO-AD-002 ; MO-SEC-003 boucle la chaîne MO-AD-008 -> traitement résidus -> notes Vaultwarden datées [BLOQUÉ/DIVERGENCE/RÉSOLU]. La cohérence inter-MOs post-rotation est complète.
Compteur global : 33 -> 34 MOs publiés (394 -> ~426 pages).
Contexte : Session sur site (réseau BTS SIO directement). Objectif : rotation des MDP compromis (ancien-mdp, toto) identifiés par l'audit password spray (#115). Pre-checks OK (réplication AD, backup SystemState 12/04 présent, politique MDP déjà durcie a MinLen=10).
| Heure | Domaine | Action | Ref audit | Statut |
|---|---|---|---|---|
| 12:40 | AD | T00 — Pre-checks (réplication, services, FSMO, krbtgt) | — | ✓ OK |
| 12:50 | Firewall | T18 — Rotation MDP OPNsense 1 (via UI HTTP) | F-SEC-006, R-023 | ✓ Fait |
| 12:58 | NAS | T19 — Rotation MDP NAS QNAP Scotty (via Playwright) | F-SUP-005, R-023 | ✓ Fait |
| 12:54 | AD | T17 — Rotation MDP Administrateur (DC1 + DC2) | F-AD-003, R-023 | ✓ Fait |
| 13:01 | AD | T20 — 5 comptes « toto » (2 change, 3 disable) | F-AD-003, R-011 | ✓ Fait |
| 13:01 | AD | T26 — 2 comptes compromis (fog, eval) | F-AD-003, R-015 | ✓ Fait |
| 13:02 | AD | T21 phase 1 — Rotation krbtgt (1ere passe) | F-AD-009, R-015 | ✓ Phase 1 |
T18 — OPNsense 1 : Rotation effectuée via POST /system_usermanager_passwordmg.php après login HTTP. Nouveau MDP 24 caractères généré cryptographiquement (python secrets). Login NEW valide (redirect dashboard), login OLD rejeté. Vaultwarden item OPNsense 1 mis a jour. OPNsense 2 (10.0.112.101) injoignable (no route to host / port 443 timeout) — rotation reportée quand le firewall HA sera réactivé.
T19 — NAS QNAP Scotty : L'API REST authLogin.cgi fonctionne mais les endpoints de changement MDP (privRequest.cgi, userConfig.cgi) sont ferrajes silencieusement sur QTS 4.2.6 EOL. Passage par Playwright (headless Chromium) : login + ouverture Panneau de configuration ExtJS + clic sur icône « Changer mot de passe » de la ligne admin + remplissage dialog 3 champs + clic Appliquer. Logout automatique après changement, nouveau MDP valide, ancien colombo66 rejeté. Vaultwarden item Scotty — NAS QNAP TS-439 mis a jour. Fichier C:Backups-AD as.cred mis a jour sur DC1 (ACL restrictive SYSTEM + Administrators) pour que le script T43 de backup AD continue a atteindre le NAS.
T17 — Administrateur AD : Set-ADAccountPassword -Identity Administrateur via WinRM DC1. Ancien MDP inchangé depuis le 09/11/2022 (1252 jours !). Nouveau MDP 24 caractères. Réplication validée sur les 2 DCs (PasswordLastSet = 2026-04-14 12:54:01 sur Srv2022 et Srv2022Phy). WinRM testé et fonctionnel avec nouveau MDP. Vaultwarden items DC1 et DC2 mis a jour (étrange : l'ancien MDP Vaultwarden était hafubv66 8 chars, pas ancien-mdp — divergence documentée par cette rotation).
T20 — 5 comptes « toto » : Traitement différencié valide par session audit. Section A (comptes actifs, forcer changement MDP) : clegrand et a.verrier → ChangePasswordAtLogon=True. Sur a.verrier, désactivation préalable de PasswordNeverExpires. Section B (comptes formation OPNsense 2026 terminée, derniers logons décembre 2025) : jpv, aj, lg → Disable-ADAccount. Refs : CIS Control 5.2 (Disable dormant accounts).
T26 — Comptes compromis (hors toto et Administrateur) : fog (compte service FOG Project, MDP password) et eval (compte évaluation, MDP = nom du compte). Désactivation PasswordNeverExpires puis ChangePasswordAtLogon=True. e.eval déjà désactivé, non traité.
T21 — Rotation krbtgt phase 1 : Compte krbtgt jamais tourné depuis le 06/09/2022 (1404 jours !). PingCastle A-Krbtgt #37 résolu. Génération MDP aléatoire 32 caractères ASCII 33-126, Set-ADAccountPassword -Reset. Réplication validée (PasswordLastSet = 2026-04-14 13:02:38 sur les 2 DCs). Phase 2 a exécuter après 2026-04-15 01:02 (12h minimum requis par Microsoft pour éviter invalidation des tickets Kerberos actifs).
Vaultwarden — nettoyage : Item Zabbix web ancien (avec MDP ancien-mdp, non nettoyé après T106 du 13/04) marqué obsolète (MDP vide + note). Un des 2 doublons Zabbix Admin supprimé.
Points en attente :
Impact sécurité : 7 comptes compromis (password spray #115) désormais inaccessibles avec leurs anciens MDP. MDP root des infrastructures critiques (AD, OPNsense, NAS) tous rotates. Golden Ticket mitigation en cours (krbtgt phase 1 fait, phase 2 demain).
Sanitisation Git : git filter-repo --replace-text sur l'historique entier (78 commits réécrits) pour éliminer toute trace en clair des MDP compromis (ancien-mdp, colombo66, hafubv66 -> placeholders). Force-push origin/main. Backup local conserve dans ~/Bureau/UAM91B_Memoire.backup-20260414/.
Documentation : 3 MOs publiés / mis a jour
| MO | Version | Pages | Détail |
|---|---|---|---|
| MO-AD-006 | v1.2 (était v1.1) | 23 (+4) | Nouvelle section 4.6 : gestion du fichier nas.cred (création avec ACL SYSTEM+Administrators, procédure de mise a jour post-rotation MDP NAS, test de validation). Correction de l'avertissement section 4.3 (info obsolète sur le stockage du MDP dans le script PowerShell). |
| MO-AD-007 | v1.1 (était v1.0) | 12 (+2) | Nouvelle étape 4.3 bis : traitement des comptes détectés compromis (forcer changement MDP / désactiver). Avertissement explicite sur l'interaction PasswordNeverExpires / ChangePasswordAtLogon. Note historique de l'audit du 14/04. |
| MO-AD-008 | v1.0 NOUVEAU | 16 | Procédure complète de rotation périodique des MDP critiques (AD, OPNsense, NAS QNAP, Zabbix). Politique de génération, prérequis, étapes détaillées pour chaque système (incluant Playwright pour QTS 4.2.6 EOL et anti-CSRF dynamique OPNsense), grille de vérification, rollback console physique, dépannage. Fait référence au MO-AD-002 (krbtgt) pour la rotation spécifique du compte de service Kerberos. |
Compteur global : 29 -> 32 MOs publiés (358 -> 380 pages).
Wiki.js synchronise : pages 371 (MO-AD-006), 375 (MO-AD-007) mises a jour ; page 379 (MO-AD-008) créée. Index procedures (351), home (357), phases (358), indicateurs (353), architecture (16), phase-1 (354), phase-4 (7) : compteurs de MOs et listes mis a jour. Sidebar nav : ajout des entrées MO-AD-008, MO-PLT-019, MO-PLT-020 (précédemment manquantes).
Vikunja : tache #181 "MO-AD-008 publie" créée en bucket Terminé.
Git : 4 commits propres pousses sur origin/main (9df67ff MO-AD-007 v1.1, 01996ff MO-AD-006 v1.2, b6aa899 MO-AD-008 v1.0). Plus le force-push de sanitisation.
$VhdSizeGB = 40)*.docker.bts.sio créé sur DC1 pointant vers 10.0.112.20ads.google.com bloqué en 0.0.0.0unhealthy depuis 336 checks consécutifsping non active dans traefik.yml (healthcheck curl sur /ping renvoyait 404)ping: {} dans la configuration statique, redémarrage du conteneurhealthy immédiatementauth.docker.bts.sio via Traefik (certificat HTTPS automatique)bts.sio vers DC1 (10.0.112.11)nasuser (résiduel après retrait de Domain Admins le 31/03)docker image prune sur CT 200 : 113 Mo récupérés (images orphelines)| Métrique | Avant | Après |
|---|---|---|
| Conteneurs Docker | 13 | 17 (+4 Authentik) |
| Services *.docker.bts.sio | 7 | 8 (+auth) |
| Domaines PiHole bloqués | 0 | 593 310 |
| Utilisateurs SSO | 0 | 4 |
ancien-mdp remplacé par un mot de passe fort (stocké dans Vaultwarden)Contexte : Session a distance. Après une revue de sécurité préventive, sanitisation des fichiers contenant le mot de passe NAS en clair, puis push des livrables vers Gitea.
Trois fichiers contenaient des credentials NAS en clair (mot de passe <MDP_NAS>) avant le commit :
| Fichier | Lignes | Action |
|---|---|---|
MO-AD-006/main.tex |
232, 266, 408 | Remplacement par placeholder MOT_DE_PASSE, recompilation du PDF |
T43_backup_systemstate_auto.ps1 |
21, 30-31 | Lecture du mot de passe depuis fichier ACL'e `C:Backups-AD |
| as.cred` (hors dépôt) | ||
capture_screenshots.py (x2) |
22 | Ajout au .gitignore (outils de développement local) |
Le PDF MO-AD-006 a été régénéré après correction et vérifié clean (pdftotext | grep <pattern_secret> retourne 0).
5 commits regroupés pousses vers origin/main (Gitea) :
| # | Commit | Contenu |
|---|---|---|
| 1 | c5236f2 |
Sprint 3 T43 : script automatise + config OPNsense post-MAJ 26.1.5 |
| 2 | 4f65c17 |
MO-AD-005 et MO-AD-006 (santé AD + backup SystemState) |
| 3 | 87d600a |
MO-NET-002 (MAJ firmware OPNsense via API) |
| 4 | 2324833 |
MO-PLT-016 (sauvegardes ProxMox vzdump) |
| 5 | 84eae35 |
Nettoyage dépôt mémoire/proposition |
.gitignore : exclusion capture_screenshots.py et *.credContexte : Session sur site (RJ45 réseau BTS SIO). Objectif : finaliser T43 backup AD automatise et publier les modes opératoires en attente.
| Élément | Détail |
|---|---|
| Problème | DC1 ne peut pas accéder au partage NAS QNAP via SMB |
| Cause racine | NAS QNAP QTS 4.2.6 ne supporte pas Kerberos côté serveur SMB |
| Symptôme | Erreur 58 lors de toute tentative de connexion depuis DC1 (contrôleur de domaine) |
| Solution | Forcer NTLM avec credentials explicites : net use /user:admin <mdp> |
| Protocole | SMB 2.0.2 / 2.1.0 négocié (pas SMB3, pas chiffrement) |
Lecture et écriture confirmées sur \b.0.112.5Partage NASBackups-AD.
T43_backup_systemstate_auto.ps1 déployé sur DC1 dans C:Backups-AD| MO | Pages | Domaine | Actions |
|---|---|---|---|
| MO-AD-005 | 20 p. | Santé AD avant intervention | LaTeX + Wiki.js + Vikunja |
| MO-AD-006 v1.1 | 19 p. | Backup SystemState AD (NTLM + auto) | LaTeX + Wiki.js + Vikunja |
| MO-NET-002 | 12 p. | MAJ firmware OPNsense via API | LaTeX + Wiki.js + Vikunja |
| MO-PLT-016 | 15 p. | Sauvegardes ProxMox vzdump | LaTeX + Wiki.js + Vikunja |
Total cumulé : 24 modes opératoires publiés (272 pages).
Contexte : Session sur site (connecté RJ45, réseau BTS SIO). Étudiants actifs sur les PCs -- uniquement des actions sans impact utilisateurs.
| Service | État | Détail |
|---|---|---|
| CT 200 Docker | 11/11 healthy | RAM 910 MiB / 8 Go (11%) |
| Uptime Kuma | 16/17 UP | DC2 DOWN (éteint, attendu) |
| Suricata IDS | ~1500 alertes | 98% STUN flood 10.0.232.29 (AnyDesk probable) |
| OPNsense | v26.1.2 | MAJ 26.1.4 disponible (planifiée 17h) |
| Réplication AD | 0 échecs | FSMO 5/5 sur Srv2022 |
| Heure | Domaine | Action | Ref audit | Statut |
|---|---|---|---|---|
| 08:35 | ProxMox | Vzdump CT 200 -- backup quotidien 02h00 (snapshot zstd, rétention 3) | F-VIRT-001, R-008 | ✓ Fait |
| 08:35 | ProxMox | Premier backup manuel CT 200 : 2,2 Go | -- | ✓ Fait |
| 08:38 | AD | T27 -- machineAccountQuota 10 → 0 | F-AD-017, R-002 | ✓ Fait |
| 08:44 | AD | T35 -- GPO "Sécurité - Audit PowerShell" (ScriptBlock + Module Logging) | F-AD-023, R-029 | ✓ Fait |
| 08:44 | AD | Installation Windows Server Backup sur DC1 | F-AD-031 | ✓ Fait |
| 08:45 | AD | T43 -- Backup SystemState | F-AD-031, R-009 | ⚠ Bloqué |
Windows Server Backup installé avec succès sur DC1. Cependant :
wbadmin refuse de sauvegarder C: vers C: (volume inclus dans la sauvegarde)wbadmin get versions = vide)Suricata a détecté ~1500 requêtes STUN (SID 2033078) en 8 minutes depuis 10.0.232.29 vers une IP Yandex (95.24.85.154). Hypothèse : AnyDesk ou outil WebRTC sur un poste étudiant. Corrèle avec T6 (AnyDesk sur DC2). Investigation planifiée.
| MO | Pages | Domaine | Actions |
|---|---|---|---|
| MO-SEC-002 | 15 p. | Alertes Suricata IDS | PDF + Wiki.js + Vikunja |
| MO-PLT-009 | 10 p. | Connexion Vaultwarden | PDF + Wiki.js + Vikunja |
Total : 21 modes opératoires publiés (221 pages)
Contexte : Session sur site après les cours. Backup config exporté avant intervention. Accès console physique disponible (salle serveur).
| Composant | Avant | Après |
|---|---|---|
| Firmware OPNsense | 26.1.2 | 26.1.5 |
| FreeBSD | -- | 14.3-RELEASE-p9 |
| Kernel | -- | 26.1.3 |
Parmi les paquets notables :
| Paquet | Version |
|---|---|
| Suricata | 8.0.3_2 |
| StrongSwan | 6.0.4 |
| NSS | 3.121 |
| Service | État |
|---|---|
| Suricata IDS (WAN + LAN) | ✓ Opérationnel |
| Unbound DNS | ✓ Opérationnel |
| WireGuard VPN | ✓ Opérationnel |
| DHCP | ✓ Opérationnel |
| Routage / NAT | ✓ Opérationnel |
Aucune régression constatée. La MAJ corrige potentiellement des CVE FreeBSD et met a jour Suricata (8.0.3_2), ce qui renforce la posture IDS.
Le serveur Dell hébergeant OPNsense est configure pour s'arrêter sur F1 au démarrage (erreur BIOS). Toute MAJ nécessitant un reboot impose une intervention physique. A documenter pour les futures maintenances.
| Service | Version | Port | Healthcheck |
|---|---|---|---|
| Homer (portail) | v24.11.3 | 80 | healthy |
| Portainer | CE 2.27.3 | 9443 | healthy |
| Uptime Kuma | latest | 3001 | healthy |
| Netbox | v4.2 | 8080 | healthy |
| PostgreSQL (Netbox) | 16-alpine | interne | healthy |
| Redis (Netbox) | 7-alpine | interne | healthy |
| Prometheus | v3.3.1 | 9090 | healthy |
| Grafana | OSS 11.6.0 | 3000 | healthy |
| Node Exporter | v1.9.1 | 9100 | healthy |
11 conteneurs, tous healthy. RAM : 1,8 Go / 8 Go (22%). Disque : 88 Go libres.
Contexte : Analyse de la progression du projet par rapport au planning prévisionnel (27/03 → 13/07/2026). 10 jours écoulés sur 108 (9,3%).
| Métrique | Valeur | Pourcentage |
|---|---|---|
| Taches totales | 156 | -- |
| Terminées | 23 | 14,7 % |
| En cours | 11 | 7,1 % |
| A faire | 120 | 76,9 % |
| Abandonnées | 2 | 1,3 % |
| Phase | Période | Taches | Fait | Progression | Verdict |
|---|---|---|---|---|---|
| Phase 1 -- Sécurisation | 27/03 → 13/04 | 63 | 18 | ▮▮▮▯▯▯▯▯▯▯ 29% |
⚠ En retard |
| Phase 2 -- Conteneurisation | 14/04 → 11/05 | 39 | 3 | ▮▯▯▯▯▯▯▯▯▯ 8% |
✅ Préparation anticipée |
| Phase 3 -- Monitoring | 12/05 → 15/06 | ~15 | 0 | ▯▯▯▯▯▯▯▯▯▯ 0% |
✅ Normal |
| Phase 4 -- Automatisation | 16/06 → 13/07 | ~12 | 0 | ▯▯▯▯▯▯▯▯▯▯ 0% |
✅ Normal |
Ratio brut : 14,7% fait pour 9,3% du temps écoulé -- en apparence en avance, mais les quick wins (Sprint 1, 81%) gonflent le chiffre.
Phase 1 en retard : Sprint 2 (rotation MDP) bloqué sur le présentiel. 7 jours avant la deadline Phase 1 (13/04), Sprint 3 (40 taches de durcissement) non commencé. Phase 1 ne sera pas complète au 13/04.
Facteurs atténuants :
Facteur bloquant principal : Accès présentiel au lycée pour la rotation des mots de passe (T17-T19) et le durcissement AD critique (krbtgt, LAPS, LDAP Signing).
Verdict global : légèrement en retard sur Phase 1, globalement dans les délais. La prochaine session présentielle est critique pour débloquer Sprint 2.
Contexte : Session a distance (VPN WireGuard, dimanche, lycée fermé). Accès OPNsense via API REST (HTTP, session admin/<MDP_ACTUEL>). Pas d'accès SSH (MDP root inconnu). ProxMox accessible en SSH pour les tests WAN.
| Heure | Domaine | Action | Ref audit | Statut |
|---|---|---|---|---|
| 14:20 | OPNsense | R-007 / Action 200 -- Activation 32 rulesets Suricata | F-SEC-003, R-007 | ✓ Fait |
| 14:22 | OPNsense | Action 201 -- Ajout interface LAN a Suricata | F-SEC-004 | ✓ Fait |
| 14:25 | OPNsense | Téléchargement et reconfiguration (240 980 règles) | F-SEC-003 | ✓ Fait |
| 14:30 | OPNsense | Tests de détection WAN (depuis ProxMox) | -- | ✓ 3/3 détectés |
| 14:45 | OPNsense | T45 -- Hardening DNS Unbound | F-SEC-010 | ✓ Fait |
| -- | OPNsense | T40 -- HTTPS interface web | F-NET-018 | ⏳ Reporté |
Tier 1 -- Threat Intelligence abuse.ch (5) : Feodo Tracker, SSL Blacklist, SSL IP Blacklist, ThreatFox, URLhaus.
Tier 2 -- ET Open sécurité (19) : malware, exploit, exploit_kit, shellcode, worm, phishing, coinminer, current_events, attack_response, scan, dns, policy, info, web_client, botcc, compromised, drop, dshield, threatview_CS_c2.
Tier 3 -- Protocoles réseau (8) : NetBIOS, Telnet, SNMP, SQL, RPC, Tor, DoS, web_server.
| Test | Méthode | Résultat | SID |
|---|---|---|---|
| ATTACK_RESPONSE | curl testmynids.org (depuis ProxMox) | Détecté | 2100498 |
| SCAN Nmap | User-Agent Nmap (depuis ProxMox) | Détecté | 2024364 |
| POLICY ifconfig.me | curl ifconfig.me (depuis ProxMox) | Détecté | 2026718+2063062 |
| Trafic ambiant | DNS .biz, Microsoft NCSI | Détecté | 2027863, 2031071 |
Total : 32 alertes générées sur les deux interfaces (bge0/LAN + bge1/WAN). Première détection d'intrusion réseau de l'histoire de cette infrastructure.
| Métrique | Avant | Après | Delta |
|---|---|---|---|
| CPU | ~0 % | ~0 % | Négligeable |
| RAM | 10 % (1.6 Go) | 12 % (1.9 Go) | +2 pts |
| Latence LAN | 0,2 ms | 0,2 ms | 0 |
| Latence WAN | 27 ms | 27 ms | 0 |
| Perte paquets | 0 % | 0 % | 0 |
Certificat SSL déjà assigné dans OPNsense. Basculement HTTP vers HTTPS reporté au présentiel : risque de perte d'accès total sans SSH ni console physique.
| Finding | Avant | Après | Criticité résiduelle |
|---|---|---|---|
| F-SEC-003 (0/64 rulesets) | Critique | Corrige | Faible |
| F-SEC-004 (WAN-only, IDS-only) | Élève | Partiellement corrigé | Moyenne (IPS en attente) |
| F-SEC-010 (DNS non journalisé) | Moyen | Inchangé | Moyen |
Risques résiduels : Mode IDS (pas IPS), Open_Bar toujours active (F-SEC-001), pas de SIEM (Wazuh éteint), réseau /16 plat (trafic latéral inter-postes invisible pour Suricata).
Prochaines étapes : Monitorer les alertes pendant 2-4 semaines avant passage IPS. Supprimer Open_Bar (T33, Sprint 3). Démarrer Wazuh (Phase 3) pour corrélation multi-sources.
Livrables : Analyse d'impact complète dans le dépôt Git (audit/remédiation/phase2/analyse_impact_suricata_2026-04-06.md). Commit 834c652.
Contexte : Réponses reçues de Manu par mail (30/03/2026). 4 points abordés.
| Point | Décision Manu | Action |
|---|---|---|
| T7 — Domain Admins | TOTO (garder), JLB (non-admin), SBAPTISTE (supprimer), NASUSER (désactiver) | Script T07 créé |
| T14 — 2FA ProxMox | Créer comptes nominatifs (clegrand, manu) avant 2FA | Procédure T14 créée |
| T16 — icad PVEAdmin | "Voir avec Paul" — conditionnel | En attente |
| VLANs Phase 2 | 1 VLAN serveurs (sans NAS), 1 VLAN WiFi | Note pour mi-avril |
Livrables : T07_nettoyage_domain_admins.ps1 (4 comptes, stratégie différenciée, nettoyage adminCount), T14_comptes_proxmox_2fa.md (clegrand@pve + manu@pve, TOTP, rollback). README Sprint 2 mis a jour (15 étapes). Vérification pre-Sprint 2 : 3 erreurs corrigées (IP ProxMox 10.0.112.100→200, références F-VRT-005/R-033 inventées, note adminCount trompeuse). Commit c27a1e4.
Contexte : Session a distance (VPN WireGuard, 56ms vers DC1). Prérequis vérifiés : 0 échec d'auth en 24h.
| Heure | Domaine | Action | Ref audit | Statut |
|---|---|---|---|---|
| 03:41 | AD | T00 — Pre-checks (réplication, services, FSMO) | — | ✓ OK |
| 03:42 | AD | T07 — Nettoyage Domain Admins (7 → 4) | F-AD-002, R-016 | ✓ Fait |
| 03:50 | AD | T22 — Politique MDP (MinLen 4→10, Complexity ON) | F-AD-003, R-011 | ✓ Fait |
| 03:55 | AD | T23 — Création 3 FGPP (Admins 16, Staff 12, Etu 10) | F-AD-004, R-012 | ✓ Fait |
T00 — Pre-checks : Réplication AD OK (0 échecs, delta 50min). Erreur DC2 connue (DFSR casse, T42). 5 services Running. FSMO sur DC1. Baseline MDP : MinLen=4, Complexity=Off, History=0, Lockout=20/permanent.
T07 — Nettoyage DA : Valide par Manu (30/03). TOTO et JLB retirés de DA + adminCount nettoyé. SBAPTISTE : retrait DA échoue (groupe principal = DA), supprimé directement de l'AD. NASUSER : n'était plus dans DA (déjà retiré), désactivé (service NAS obsolète). Refs ANSSI : Guide hygiène mesure 5 (ratio DA < 0,5%), Tier Model.
T22 — Politique MDP : MinLen 4→10, PasswordHistory 0→12, Complexity ON, MaxAge 180j, Lockout 20/permanent → 10/30min auto-unlock. Set-ADDefaultDomainPasswordPolicy en 3 parties (commande unique bloquait via WinRM). Les MDP existants ne sont pas impactes retroactivement. Refs : ANSSI mesure 10, CIS Benchmark sect. 1.1.
T23 — FGPP : 3 Fine-Grained Password Policies creees. FGPP-Admins (precedence 10, 16 chars, lockout 5/60min, expire 90j) → Admins du domaine (4). FGPP-Staff (precedence 20, 12 chars, lockout 10/30min, expire 180j) → GGPROFS (9 profs). FGPP-Etudiants (precedence 30, 10 chars, lockout 10/15min, expire 365j) → GGPromoSio1 (34) + GGPromoSio2 (23). Les FGPP priment sur la politique par defaut. Refs : ANSSI Tier Model 2023, Points de controle AD.
Non exécuté lors de cette session (risque a distance) : T18/T19 (MDP OPNsense/NAS — risque de perdre le VPN), T17 (MDP AD <MDP_ACTUEL> — critique), T21 (krbtgt — impact sessions), T14 (ProxMox — indépendant, faible risque mais reporté).
Contexte : Session a distance (VPN WireGuard).
| Action | Résultat |
|---|---|
| Analyse comparative gestionnaires MDP | 5 solutions évaluées, Vaultwarden retenu (CT-001) |
| Vérification ressources ProxMox | 22 Go RAM libres, 85 Go disque |
| Création CT 127 (Debian 13 Trixie) | IP 10.0.112.10, Docker 29.3.1 |
| Déploiement Vaultwarden | HTTPS auto-signé, organisation BTS SIO, 6 collections |
| MO-PLT-002 | Créer une organisation Vaultwarden (9 pages, captures Playwright) |
| MO-PLT-003 | Créer une collection Vaultwarden (9 pages, captures Playwright) |
| T76 (Bitwarden) avancée | Phase 2 → Sprint 2, marquée terminée dans Vikunja |
Bilan : Vaultwarden opérationnel (https://10.0.112.10). 5 MOs au total. Sprint 2 prêt.
Contexte : Session a distance (VPN WireGuard).
| Action | Résultat |
|---|---|
| Investigation T53 (session S.HENRY sur DC) | Session réseau SMB temporaire (Type 3), aucun accès interactif. Clôturée |
| Découverte DC1 WinRM | Port 5985 ouvert et fonctionnel via pywinrm |
| Découverte DC2 LDAP | Renvoie 0 utilisateurs — réplication DFSR cassée (confirmé T42) |
| Découverte fghoua | Session RDP déconnectée 11j sur DC1 (Fatima GHOUA, prof) |
| Scripts Sprint 2 (T17-T26) | 12 fichiers créés (68 Ko) |
| Scripts Sprint 3 (T27-T66) | 9 fichiers créés (80 Ko) |
Bilan : Sprint 1 : 13/16 taches traitées (T53 ajoutée). Sprints 2 et 3 entièrement préparés (21 scripts, 148 Ko).
Intervenant : C. LEGRAND | Phase : Phase 1
| Tache | Action | Résultat |
|---|---|---|
| T11 | Identifier/corriger compte IIS fantôme | IOC découverte : reverse shell netcat (nc64.exe) sur DC1, SHA256 identifié. Supprimé |
| T8 | Nettoyer autorisations DHCP fantômes | 2 entrées supprimées (srv2022 + srvphysique) |
| T5 | Supprimer exclusion Defender DC2ime$ | Exclusion retirée de la Default Domain Policy |
| T4 | Retirer GGPromoSio2 des admins locaux | Groups.xml SYSVOL modifié, GPO version 16→17 |
Bilan Sprint 1 : 11/16 exécutés. Restants : T1 (présentiel), T7 (Manu), T3b/T6 (DC2), T14/T16 (décisions).
Intervenant : C. LEGRAND | Durée : 2h | Phase : Phase 1
| Action | Résultat |
|---|---|
| Découverte WinRM DC2 | Port 5985 fonctionnel via pywinrm (WMI casse) |
| T3b — Print Spooler DC2 | Arrêté et désactivé via WinRM (PrintNightmare élimine) |
| T6 — AnyDesk DC2 (analyse) | v9.0.10, ID 1906957779, 29 sessions, 6 règles FW. EN ATTENTE collègues |
| MO-AD-001 v1.1 | Section WinRM ajoutée, 17 pages |
Intervenant : C. LEGRAND | Durée : 4h | Phase : Phase 1
| Tache | Action | Résultat |
|---|---|---|
| T15 | Désactiver RPCbind sur ProxMox | Service+socket désactivés, port 111 fermé |
| T12 | Configurer vzdump backup | ABANDONNE — stockage local insuffisant (85 Go pour 26 CT) |
| T13 | Démarrer CT Wazuh (103) | 3 services actifs, onboot active |
| T2 | Désactiver compte INVITE | Enabled=False, AdminCount=0 |
| T3a | Désactiver Print Spooler DC1 | Arrêté et désactivé via wmiexec |
| T10 | Security log 128 Mo → 1 Go | 1073741824 octets + autoBackup |
| T9 | NameProtection + DeleteDnsRROnLeaseExpiry | NameProtection active. DeleteDnsRR incompatible |
| MO-SEC-001 | Exploitation de Wazuh | 8 pages, publie sur Wiki.js |
| MO-AD-001 | Administration distante des DCs | 15 pages, publie sur Wiki.js |
Bilan : 9 actions dont 7 taches Sprint 1 terminées, 1 abandonnée (T12), 2 MOs publiés.
Contexte : Mise en place de l'infrastructure de suivi du projet.
| Action | Résultat |
|---|---|
| Déploiement Vikunja | https://planning.legrand-tech.fr — 136 taches peuplées |
| Déploiement Wiki.js | https://wiki.legrand-tech.fr — 13 pages initiales |
| WireGuard VPN | CT 126 (10.0.112.250) + VPS hub — accès distant opérationnel |
| SSO Gitea | 2 apps OAuth2 (Vikunja + Wiki.js) |
| MO-PLT-001 | Création comptes plateforme collaborative (17 pages) |