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-01reste 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 usersaffiche les organisations et rôles de chaque compte.
Migration
php bin/install.phpappliquedatabase/migrations/002_memberships.sql(tablememberships, 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_lentouscan_portscré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 statusenrichi.
Installation de l'agent (21/10/2026, après mise en ligne)
install.shaccepte--console URL,--token-fileet--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é.