Aller au contenu
VDRVOZit Detection & Response
Fonctionnalités

Tout ce qu’il faut pour voir, bloquer et prouver.

Un agent pour les serveurs Linux (Debian, Ubuntu, RHEL, Rocky, Alma, Fedora, Proxmox VE), une console web pour l’équipe, un protocole simple entre les deux.

L’agent

Analyse des journaux

  • journald, fichiers classiques (avec rotation) et journal d’accès de l’interface Proxmox
  • Fenêtres glissantes par IP, corrélation entre événements
  • Rejeu de journaux archivés pour vérifier ce qu’on aurait détecté

Sites et services exposés

  • Journaux nginx et Apache : sondages, fichiers sensibles exposés, injections, webshells, force brute sur les pages de connexion
  • Force brute sur la messagerie, les bases de données, le FTP, en plus de SSH
  • Bannissement automatique des sources

Comptes et privilèges

  • Échecs sudo et su, premier usage de sudo par un compte
  • Création, suppression, ajout à un groupe privilégié, second compte root

Prévention

  • Mises à jour de sécurité en attente et redémarrages requis
  • 36 contrôles de durcissement (SSH, pare-feu, comptes, droits, noyau) avec score
  • Ports en écoute, nouveaux fichiers SUID, modules noyau

Intégrité des fichiers

  • Empreinte SHA-256, droits, propriétaire de chaque fichier sensible
  • SSH, PAM, comptes, sudoers, unités systemd, cron, clés autorisées, binaires système
  • Vérification des paquets système (dpkg --verify) toutes les heures
  • Changement légitime accepté en une commande

Rootkits et persistance

  • LD_PRELOAD déclaré dans un fichier système
  • Processus cachés (comparaison de /proc et de ps)
  • Binaires lancés depuis /tmp ou supprimés du disque
  • Porte dérobée SSH, journaux désactivés, attributs immuables
  • Connexions vers des pools de cryptominage
  • Commandes d’attaque : shells inversés, téléchargement puis exécution

Réponse

  • Bans par ipset avec expiration native, règle remise en place si le pare-feu est rechargé
  • Durée croissante pour les récidivistes : 1 h, 24 h, 7 j, 28 j
  • Liste blanche : vos IP d’administration ne sont jamais bannies
  • Mode observation pour démarrer sans risque

Robuste par conception

  • Python, bibliothèque standard seulement : rien à mettre à jour à côté
  • Lancé sans LD_PRELOAD pour ne pas être aveuglé par un rootkit
  • File d’envoi locale : rien n’est perdu si la console est injoignable
  • Aucun port ouvert, aucune commande à distance

La console

Vue d’ensemble en direct

  • Alertes critiques en tête, état de chaque serveur
  • Serveur muet signalé : premier signe d’un agent coupé
  • Rafraîchissement automatique, tendances sur 14 jours

Traitement des alertes

  • Filtres par serveur, gravité, scénario, IP, période, texte
  • Acquittement commenté et groupé, export CSV
  • Fiche explicative : technique MITRE ATT&CK, mesures ISO 27001, conduite à tenir
  • Fiche IP consolidée sur tous les serveurs

Réponse coordonnée

  • Bans partagés automatiquement entre serveurs de la même organisation
  • Bannir partout ou lever un ban depuis la console, avec suivi de distribution
  • Chaque agent valide les décisions : liste blanche, format, 28 jours au plus

Notifications

  • SMS, push, e-mail, Slack, Teams, Mattermost, Discord
  • Règles par gravité, scénario et serveur ; serveurs muets signalés
  • Anti-rafale et reprises automatiques

Renseignement et corrélation

  • Réputation des IP et pays, sans envoyer vos données à un tiers
  • Connexion depuis une IP malveillante ou un nouveau pays
  • Attaque sur plusieurs serveurs, compte compromis sur plusieurs serveurs

Incidents

  • Regroupement d’alertes, responsable, chronologie
  • Échéances NIS2 (24 h, 72 h, 1 mois) et CNIL (72 h)
  • Rapport d’incident imprimable

Multi-organisations

  • Données cloisonnées par organisation
  • Rôles : administrateur, analyste, lecture seule (auditeur, DPO)
  • Un même compte dans plusieurs organisations, avec un rôle propre à chacune : idéal pour un prestataire ou un DPO commun
  • Restriction de l’accès par IP, par organisation

Gouvernance

  • Indicateurs de posture calculés sur les données réelles
  • Journal d’audit chaîné, vérifiable
  • Durée de conservation par organisation, export JSON complet

Scénarios détectés

Chaque détection est reliée à une technique MITRE ATT&CK.

ScénarioFamilleCe qui le déclencheMITRE ATT&CK
Force brute rapideAccèsAu moins 5 échecs d'authentification depuis une même IP en 10 minutes (SSH ou interface Proxmox). T1110.001
Force brute lenteAccèsAu moins 10 échecs en 24 h : attaque volontairement lente pour passer sous fail2ban (cas de pve-02, 3 essais par heure). T1110.001
Balayage de portsReconnaissanceAu moins 15 ports différents rejetés par le pare-feu en 2 minutes pour une même IP. T1046
Connexion réussie après des échecsCompromissionUne connexion réussit depuis une IP qui accumulait des échecs : mot de passe probablement trouvé. T1078, T1110
Chaîne d'intrusionCompromissionAction sensible (mot de passe changé, shell web, arrêt des journaux) dans l'heure qui suit une connexion suspecte. T1098, T1059.004, T1070.002
Changement de mot de passeComptesMot de passe modifié depuis l'interface Proxmox, hors chaîne d'intrusion. T1098
Intégrité d'un fichier sensiblePersistanceFichier surveillé modifié, ajouté ou supprimé (configuration SSH, PAM, comptes, unités systemd, cron, binaires). T1543.002, T1574.006, T1098.004
Rootkit par LD_PRELOADDéfenseLD_PRELOAD ou variables HIDE_* déclarées dans un fichier système : technique de dissimulation (cas de pve-02). T1574.006, T1014
Processus cachéDéfenseUn processus visible dans /proc par l'agent n'apparaît pas dans ps : il est dissimulé. T1014, T1564
Processus suspectExécutionBinaire supprimé du disque ou lancé depuis /tmp, /dev/shm, /var/tmp ou un dossier caché. T1036, T1059
Connexion de minageImpactConnexion vers un port ou un domaine de pool de cryptominage. T1496
Porte dérobée SSHPersistancesshd utilise un AuthorizedKeysCommand : un tiers peut se connecter sans clé déclarée (cas de pve-02). T1098.004, T1556
Journaux désactivésDéfenseauth.log, wtmp, btmp ou lastlog redirigés vers /dev/null, ou journald en Storage=none. T1070.002, T1562.001
Attribut immuablePersistanceAttribut i ou a (chattr) sur des fichiers système : empêche la suppression d'une persistance. T1222.002
Paquet système modifiéDéfensedpkg --verify signale un fichier modifié dans un paquet sensible (openssh, PAM, procps, Proxmox). T1554
Sondage du site webReconnaissanceRafale d’erreurs 404/403 ou requêtes vers des fichiers sensibles (/.env, /.git…) ou outil de scan reconnu. T1595.002, T1595.003
Fichier sensible exposéFuite de donnéesUn fichier sensible (secrets, sauvegarde, dépôt git…) a été servi avec succès par le serveur web. T1213, T1552.001
Tentative d’injection webAccèsRequêtes contenant des motifs d’injection (SQL, commandes, traversée de répertoires, Log4Shell…). T1190
Webshell probablePersistanceAccès réussi à un script connu de prise de contrôle, ou POST réussi vers un script PHP déposé dans un dossier d’upload. T1505.003
Force brute sur une page de connexionAccèsNombreux envois vers une page de connexion (WordPress, xmlrpc, /login…) ou nombreuses réponses 401. T1110.001, T1110.003
Échec d’élévation de privilègesPrivilègesÉchecs de sudo ou su, ou utilisation de sudo par un compte non autorisé. T1548.003
Premier usage de sudo par un comptePrivilègesUn compte devient root pour la première fois sur ce serveur. T1548.003
Compte crééComptesUn compte local a été créé sur le serveur. T1136.001
Compte suppriméComptesUn compte local a été supprimé. T1531
Mot de passe système modifiéComptesLe mot de passe d’un compte local a été changé. T1098
Ajout à un groupe privilégiéPrivilègesUn compte a été ajouté à un groupe donnant des droits élevés (sudo, wheel, docker, lxd…). T1098, T1078.003
Second compte root (UID 0)PersistanceUn compte autre que root possède l’UID 0 : technique classique de porte dérobée. T1136.001, T1078.003
Connexion réussieAccèsConnexion réussie depuis une IP hors liste blanche (information, utilisée par la corrélation : pays, réputation). T1078
Mises à jour de sécurité en attenteVulnérabilitésDes correctifs de sécurité publiés par la distribution ne sont pas installés.
Redémarrage requisVulnérabilitésUn correctif (souvent le noyau) n’est actif qu’après redémarrage.
Régression de durcissementConfigurationUn contrôle de durcissement qui était conforme ne l’est plus (ex. connexion root SSH réactivée). T1562
Nouveau port en écoutePersistanceUn service s’est mis à écouter sur un nouveau port. T1205, T1571
Nouveau fichier SUIDPrivilègesUn nouveau programme s’exécute avec les droits de son propriétaire (souvent root). T1548.001
Module noyau chargéDéfenseUn nouveau module a été chargé dans le noyau (critique s’il correspond à un rootkit connu). T1547.006, T1014
Commande suspecteExécutionCommande typique d’attaque : shell inversé, téléchargement puis exécution, décodage base64 exécuté, mineur, effacement de traces. T1059.004, T1105, T1027
Connexion depuis une IP malveillanteCompromissionConnexion réussie depuis une IP présente dans une liste de réputation (FireHOL, Spamhaus, abuse.ch) ou un nœud Tor. T1078
Connexion depuis un nouveau paysCompromissionUn compte se connecte depuis un pays où il n’avait jamais été vu. T1078
Attaque sur plusieurs serveursAccèsUne même IP déclenche des alertes sur au moins 3 serveurs en moins d’une heure. T1110, T1595
Compte compromis sur plusieurs serveursCompromissionLe même compte s’est connecté de façon suspecte sur au moins 2 serveurs en 24 heures : mouvement latéral probable. T1078, T1021.004