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énario | Famille | Ce qui le déclenche | MITRE ATT&CK |
|---|---|---|---|
| Force brute rapide | Accès | Au moins 5 échecs d'authentification depuis une même IP en 10 minutes (SSH ou interface Proxmox). | T1110.001 |
| Force brute lente | Accès | Au 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 ports | Reconnaissance | Au 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 échecs | Compromission | Une connexion réussit depuis une IP qui accumulait des échecs : mot de passe probablement trouvé. | T1078, T1110 |
| Chaîne d'intrusion | Compromission | Action 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 passe | Comptes | Mot de passe modifié depuis l'interface Proxmox, hors chaîne d'intrusion. | T1098 |
| Intégrité d'un fichier sensible | Persistance | Fichier surveillé modifié, ajouté ou supprimé (configuration SSH, PAM, comptes, unités systemd, cron, binaires). | T1543.002, T1574.006, T1098.004 |
| Rootkit par LD_PRELOAD | Défense | LD_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éfense | Un processus visible dans /proc par l'agent n'apparaît pas dans ps : il est dissimulé. | T1014, T1564 |
| Processus suspect | Exécution | Binaire supprimé du disque ou lancé depuis /tmp, /dev/shm, /var/tmp ou un dossier caché. | T1036, T1059 |
| Connexion de minage | Impact | Connexion vers un port ou un domaine de pool de cryptominage. | T1496 |
| Porte dérobée SSH | Persistance | sshd utilise un AuthorizedKeysCommand : un tiers peut se connecter sans clé déclarée (cas de pve-02). | T1098.004, T1556 |
| Journaux désactivés | Défense | auth.log, wtmp, btmp ou lastlog redirigés vers /dev/null, ou journald en Storage=none. | T1070.002, T1562.001 |
| Attribut immuable | Persistance | Attribut i ou a (chattr) sur des fichiers système : empêche la suppression d'une persistance. | T1222.002 |
| Paquet système modifié | Défense | dpkg --verify signale un fichier modifié dans un paquet sensible (openssh, PAM, procps, Proxmox). | T1554 |
| Sondage du site web | Reconnaissance | Rafale 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ées | Un fichier sensible (secrets, sauvegarde, dépôt git…) a été servi avec succès par le serveur web. | T1213, T1552.001 |
| Tentative d’injection web | Accès | Requêtes contenant des motifs d’injection (SQL, commandes, traversée de répertoires, Log4Shell…). | T1190 |
| Webshell probable | Persistance | Accè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 connexion | Accès | Nombreux envois vers une page de connexion (WordPress, xmlrpc, /login…) ou nombreuses réponses 401. | T1110.001, T1110.003 |
| Échec d’élévation de privilèges | Privilèges | Échecs de sudo ou su, ou utilisation de sudo par un compte non autorisé. | T1548.003 |
| Premier usage de sudo par un compte | Privilèges | Un compte devient root pour la première fois sur ce serveur. | T1548.003 |
| Compte créé | Comptes | Un compte local a été créé sur le serveur. | T1136.001 |
| Compte supprimé | Comptes | Un compte local a été supprimé. | T1531 |
| Mot de passe système modifié | Comptes | Le mot de passe d’un compte local a été changé. | T1098 |
| Ajout à un groupe privilégié | Privilèges | Un compte a été ajouté à un groupe donnant des droits élevés (sudo, wheel, docker, lxd…). | T1098, T1078.003 |
| Second compte root (UID 0) | Persistance | Un compte autre que root possède l’UID 0 : technique classique de porte dérobée. | T1136.001, T1078.003 |
| Connexion réussie | Accès | Connexion 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 attente | Vulnérabilités | Des correctifs de sécurité publiés par la distribution ne sont pas installés. | |
| Redémarrage requis | Vulnérabilités | Un correctif (souvent le noyau) n’est actif qu’après redémarrage. | |
| Régression de durcissement | Configuration | Un contrôle de durcissement qui était conforme ne l’est plus (ex. connexion root SSH réactivée). | T1562 |
| Nouveau port en écoute | Persistance | Un service s’est mis à écouter sur un nouveau port. | T1205, T1571 |
| Nouveau fichier SUID | Privilèges | Un nouveau programme s’exécute avec les droits de son propriétaire (souvent root). | T1548.001 |
| Module noyau chargé | Défense | Un nouveau module a été chargé dans le noyau (critique s’il correspond à un rootkit connu). | T1547.006, T1014 |
| Commande suspecte | Exécution | Commande 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 malveillante | Compromission | Connexion 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 pays | Compromission | Un compte se connecte depuis un pays où il n’avait jamais été vu. | T1078 |
| Attaque sur plusieurs serveurs | Accès | Une même IP déclenche des alertes sur au moins 3 serveurs en moins d’une heure. | T1110, T1595 |
| Compte compromis sur plusieurs serveurs | Compromission | Le 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 |