Aller au contenu
VDRVOZit Detection & Response

Installer et exploiter l'agent

L'agent Vigie (nom technique conservé : paquet vigie, configuration /etc/vigie, sets vigie4 / vigie6) tourne en service systemd sur chaque serveur surveillé. Il fonctionne seul ; la console est un ajout.

Prérequis

Debian 11 ou 12 (Proxmox VE compris), Python 3.9 ou plus, ipset et iptables pour le mode protection. Aucune autre dépendance.

Le paquet

Archive vigie-0.3.0.tar.gz, téléchargeable depuis la console : https://vdr.vozit.dev/telechargement/agent. Son empreinte SHA-256 est affichée dans la console (Serveurs). Elle contient le code (vigie/), le script install.sh, l'unité systemd et la configuration par défaut.

Installation et mise à jour

sh install.sh                                          # agent seul (sans console), mode observation
sh install.sh --console https://vdr.vozit.dev          # relié à la console : le jeton est demandé
              [--token-file FICHIER]                   # jeton lu dans un fichier (automatisation)
              [--whitelist 203.0.113.10/32] …          # IP à ne jamais bannir, option répétable

Le script :

  • copie le code dans /opt/vigie et la commande vigie dans /usr/local/sbin ;
  • crée /etc/vigie/vigie.json s'il n'existe pas (jamais écrasé), puis y ajoute la section console et les plages --whitelist ;
  • écrit le jeton dans /etc/vigie/console.token (droits 600) ; le jeton n'est jamais passé en argument ;
  • crée la base locale /var/lib/vigie/vigie.db, active et démarre le service en mode observation ;
  • affiche vigie status et le résultat de vigie console test.

Relancé sur un serveur déjà équipé, il met l'agent à jour en conservant configuration, jeton et historique.

Configuration utile

{
  "mode": "observation",
  "whitelist": ["127.0.0.0/8", "::1/128", "IP_ADMIN/32"],
  "console": { "url": "https://vdr.vozit.dev", "token_file": "/etc/vigie/console.token" },
  "integrity": { "paths": [ … ], "exclude": [ … ] },
  "rootcheck": { "suspect_exclude": ["/root/.vscode-server/*", "/opt/mon-outil/.bin/*"] }
}

rootcheck.suspect_exclude : binaires à ne pas signaler comme « processus suspect » (motifs). Par défaut, les serveurs distants de VS Code et Cursor (.vscode-server, .vscode-server-insiders, .cursor-server, sous /root et /home/*). Une liste dans la configuration remplace la liste par défaut : recopiez-la pour la compléter.

ca_file (facultatif dans console) : autorité de certification dédiée. Sans lui, le magasin du système est utilisé. La vérification TLS ne peut pas être désactivée.

Commandes

CommandeRôle
vigie statusmode, alertes 24 h, bans, état de l'envoi vers la console
vigie alerts --since 7j --min hautealertes locales
vigie bans / vigie unban IPbans en cours / lever un ban
vigie checklance une fois intégrité et recherche de rootkits
vigie baseline list / vigie baseline accept [CHEMIN]empreintes de référence ; accepter un changement légitime
vigie console testenvoie un battement de cœur et affiche la réponse
vigie replay FICHIERS…rejoue des journaux archivés, sans rien bannir

Après une mise à jour du système

Une mise à jour de paquets modifie des fichiers surveillés : des alertes integrite_fichier apparaissent. Vérifiez qu'elles correspondent à la mise à jour, puis vigie baseline accept.

Ce que l'agent surveille

Journaux d'accès (SSH, Proxmox, messagerie, bases de données, FTP), journaux web nginx et Apache, comptes et privilèges, intégrité des fichiers, rootkits et persistance, ports en écoute, fichiers SUID, modules noyau, commandes suspectes, mises à jour de sécurité et durcissement. Le détail des scénarios et des réglages est dans le README.md de l'archive.

Réglages utiles :

CléUsage
web.paths, web.excludejournaux web à suivre (découverte automatique des emplacements nginx et Apache usuels)
web.webshell_ignorescripts légitimes à ne pas prendre pour des webshells (ex. un adminer.php voulu)
privileges.privileged_groupsgroupes dont l'ajout déclenche une alerte
services.pathsjournaux de services hors journald
sca.excludecontrôles de durcissement à ignorer (sans objet sur ce serveur)
hostwatch.suid_excludedossiers exclus du parcours des fichiers SUID

Proxy inverse : si le serveur web est derrière un proxy, les journaux portent l'IP du proxy. Mettez-la en liste blanche, ou faites journaliser l'IP réelle (mod_remoteip pour Apache, real_ip pour nginx) : sinon le proxy serait banni.

Faux positifs

  • Un changement légitime de fichier surveillé : vigie baseline accept CHEMIN.
  • Un outil légitime lancé depuis un dossier caché : ajoutez son chemin à rootcheck.suspect_exclude, puis systemctl restart vigie.
  • Dans la console, acquittez les alertes concernées avec un commentaire (« faux positif : … ») : il reste tracé.

Réinstallation

Si /var/lib/vigie/vigie.db est supprimée, la numérotation des alertes repart de zéro. Dans la console, changez le jeton en cochant « l'agent a été réinstallé ».

Dépannage

SymptômePiste
Serveur « jamais vu »vigie console test ; vérifier l'URL, le jeton, le pare-feu sortant (443)
401jeton révoqué ou mal recopié, ou IP source hors des IP autorisées du serveur
Serveur « muet »systemctl status vigie, journalctl -u vigie -n 50
Écart d'horloge signaléactiver NTP (timedatectl set-ntp true)