Aller au contenu
VDRVOZit Detection & Response

Journal des versions

Console 1.2.0 et agent 0.3.0 — 21/10/2026

Couverture des analyses élargie (priorités 1, 2 et 3) pour tout type de serveur Linux, et notifications.

Agent 0.3.0

  • Web (nginx, Apache, découverte automatique) : sondage, fichier sensible exposé, injections (SQL, commandes, traversée, Log4Shell, Shellshock, Spring4Shell), webshell, force brute sur pages de connexion — avec bans.
  • Comptes et privilèges : échecs sudo/su, premier sudo d'un compte, création/suppression de compte, mot de passe modifié, ajout à un groupe privilégié, second compte UID 0.
  • Services exposés dans la détection de force brute : messagerie (Postfix, Exim, Dovecot), MariaDB/MySQL, FTP, Gitea/Forgejo.
  • Prévention : inventaire (paquets, mises à jour de sécurité en attente, redémarrage requis, ports en écoute) et 36 contrôles de durcissement avec score (références ANSSI-BP-028 quand elles sont sûres).
  • Hôte : nouveau port en écoute, nouveau fichier SUID, module noyau (rootkits connus, modules masqués), commandes suspectes (shell inversé, téléchargement-exécution, mineurs, effacement de traces, y compris via auditd).
  • Debian/Ubuntu et RHEL/Rocky/Alma/Fedora.

Console 1.2.0

  • Notifications : règles par organisation (canal, destinataires, gravité, scénarios, serveurs, serveurs muets, anti-rafale), e-mail (SMTP), SMS et push via des API HTTP paramétrables (fournisseurs configurés par la plateforme, modèles et clés d'API chiffrées), webhooks Slack / Teams / Mattermost / Discord / JSON. Reprises automatiques, test, historique.
  • Renseignement : réputation des IP (FireHOL niveau 1, Spamhaus DROP, abuse.ch Feodo, nœuds Tor) et pays (db-ip Lite), téléchargés par la console — aucune IP n'est envoyée à un tiers.
  • Corrélation : connexion depuis une IP malveillante, depuis un nouveau pays, attaque sur plusieurs serveurs, compte compromis sur plusieurs serveurs.
  • Prévention : écrans Vulnérabilités et Durcissement, et sections dans la fiche de chaque serveur (mises à jour, ports, contrôles, recherche de paquets).
  • API : POST /api/v1/agent/inventory (ajout compatible du protocole v1).
  • Conformité : nouveaux indicateurs (correctifs en attente, score de durcissement, notifications configurées).
  • « Mon compte » : téléphone et identifiant push.
  • Correction : les plages réservées (documentation, CGNAT…) ne sont plus considérées comme publiques.

À faire après mise à jour

  • Plateforme → Intégrations : configurer le SMTP et les fournisseurs SMS / push, puis les tester.
  • Chaque organisation : créer au moins une règle de notification (alertes critiques et serveurs muets).
  • Mettre à jour les agents (Serveurs → Installer ou mettre à jour l'agent). Derrière un proxy inverse, mettre l'IP du proxy en liste blanche de l'agent.

Agent 0.2.1 — 21/10/2026

Corrections après le premier déploiement réel :

  • Faux positif critique corrigé : « Rootkit par LD_PRELOAD » se déclenchait sur l'unité systemd de Vigie elle-même (UnsetEnvironment=LD_PRELOAD, qui protège justement contre LD_PRELOAD). Seule une affectation (LD_PRELOAD=…) est désormais signalée.
  • Processus suspects : VS Code Remote, Cursor et les extensions qu'ils lancent (Copilot, Claude Code…) ne sont plus signalés par défaut (rootcheck.suspect_exclude).
  • Mise à jour : relancer les commandes d'installation de la console (Serveurs → Installer ou mettre à jour l'agent) ; configuration et jeton sont conservés. Acquitter ensuite dans la console les alertes reçues à tort.

Console 1.1.0 — 21/10/2026

Ajouté

  • Un compte, plusieurs organisations : une même adresse e-mail peut être membre de plusieurs organisations, avec un rôle propre à chacune (ex. administrateur chez A, lecture seule chez B). Un seul mot de passe, une seule double authentification.
  • Sélecteur d'organisation en haut de la console (comptes membres de plusieurs organisations) et page « Mes organisations ». À la connexion, la dernière organisation consultée est rouverte.
  • Ajouter une adresse qui a déjà un compte la rattache simplement (aucun lien à transmettre). Idem à la création d'une organisation depuis l'espace plateforme.
  • « Mon compte » liste ses organisations et ses rôles.
  • Création d'organisation par un super-administrateur : l'administrateur est facultatif. Sans adresse (ou avec un compte plateforme), l'organisation est créée et ouverte directement.
  • Organisation de démonstration maintenue « vivante » (bin/vdr demo:tick, cron chaque minute) ; backup-01 reste muet pour illustrer ce cas.

Modifié

  • L'accès est revalidé à chaque requête pour l'organisation consultée : appartenance, organisation active, restriction IP de cette organisation. Un retrait, une suspension ou une nouvelle restriction IP prennent effet immédiatement.
  • « Désactiver » et « Supprimer » sont remplacés par Retirer de l'organisation : le compte est supprimé seulement s'il n'appartient plus à aucune organisation.
  • Un compte partagé ne peut être réinitialisé (mot de passe + TOTP) que par un super-administrateur (php bin/vdr user:reset EMAIL) : un administrateur d'une organisation ne peut pas prendre la main sur les accès d'une personne ailleurs.
  • Une tentative de connexion échouée est tracée dans le journal de chaque organisation du compte. Suspendre une organisation ne coupe plus que l'accès à celle-ci.
  • bin/vdr users affiche les organisations et rôles de chaque compte.

Migration

  • php bin/install.php applique database/migrations/002_memberships.sql (table memberships, rôle déplacé du compte vers l'appartenance). Les comptes existants gardent leur organisation et leur rôle. Sauvegarde faite avant migration : storage/backups/.

Console 1.0.0 et agent 0.2.0 — 21/10/2026

Première version de VDR (VOZit Detection & Response) : site public, console multi-organisations et API agent.

Ajouté — console

  • Site public : accueil, fonctionnalités, conformité (RGPD, NIS2, ISO 27001), sécurité, documentation, demande de démonstration (enregistrée en base, aucun e-mail envoyé), mentions légales et confidentialité (informations de l'éditeur à compléter).
  • API agent, protocole v1 (/api/v1/agent/heartbeat|alerts|bans|decisions) conforme à la spécification §5 : identité déduite du jeton, envois idempotents, codes 400/401/413/429, limite de 500 éléments et 1 Mo par lot.
  • Console : vue d'ensemble rafraîchie toutes les 30 s, alertes filtrables (export CSV), fiche d'alerte avec MITRE ATT&CK, ISO 27001 et conduite à tenir, fiche IP, bans, décisions, serveurs, incidents, conformité, journal d'audit, utilisateurs, organisation, compte.
  • Multi-organisations : rôles super-administrateur (plateforme), administrateur, analyste, lecture seule ; restriction d'accès par IP par organisation.
  • Bans partagés (étape 4 de la spécification) : un ban bruteforce_lent ou scan_ports crée une décision pour tous les autres serveurs de l'organisation.
  • Incidents : rattachement d'alertes, chronologie, échéances NIS2 (24 h, 72 h, 1 mois) et CNIL (72 h), rapport imprimable.
  • Conformité : indicateurs de posture calculés sur les données, correspondance NIS2 art. 21 et ISO 27001 annexe A, rapport imprimable.
  • Sécurité : mot de passe Argon2id (14 caractères au moins) + TOTP obligatoire avec anti-rejeu, blocage après 5 échecs, sessions en base (30 min d'inactivité, 12 h au plus), CSRF, CSP stricte sans ressource externe, journal d'audit chaîné SHA-256.
  • Numérotation par époque : si la base locale d'un agent est recréée, la rotation du jeton avec « nouvelle numérotation » évite de perdre ses alertes comme doublons ; la console détecte et signale le cas.
  • Commande bin/vdr : création des comptes plateforme, réinitialisation, purge de rétention, vérification de l'audit.

Ajouté — agent 0.2.0

  • Contrôle d'intégrité des fichiers (integrite_fichier), vigie baseline accept|list.
  • Recherche de rootkits et de persistance : rootkit_preload, processus_cache, processus_suspect, connexion_minage, porte_derobee_ssh, journaux_desactives, attribut_immuable, paquet_modifie.
  • Client console (thread séparé) : envoi des alertes et bans, battement de cœur (avec liste blanche et informations système), application des décisions validées localement.
  • Commandes vigie check, vigie console test, vigie status enrichi.

Installation de l'agent (21/10/2026, après mise en ligne)

  • install.sh accepte --console URL, --token-file et --whitelist CIDR : plus d'édition manuelle du JSON. Le jeton est demandé à l'invite (saisie masquée), jamais passé en argument ; il est conservé lors d'une mise à jour.
  • La configuration par défaut ne contient plus d'IP propre à VOZit dans la liste blanche (seulement 127.0.0.0/8 et ::1).
  • Console : la commande d'installation vérifie l'empreinte SHA-256 de l'archive ; encadré permanent « Installer ou mettre à jour l'agent » sur la page Serveurs.
  • Console en ligne sur https://vdr.vozit.dev (certificat Let's Encrypt).

À faire au déploiement

  • Créer l'enregistrement DNS, le certificat, puis le premier compte : php bin/vdr user:add-super EMAIL "Nom".
  • Cron nocturne bin/vdr purge (voir guide administrateur).
  • Compléter les mentions légales et la politique de confidentialité.