Aller au contenu

Detection & Reporting

Le module Detection & Reporting de monsys observe ce qui se passe sur vos hôtes au niveau de l’authentification + IP source, et signale les patterns suspects avec contexte complet. Le système n’agit pas automatiquement — le sysadmin garde la main via les Emergency Actions existantes (TOTP-gated, signées Ed25519).

C’est un choix délibéré : les features auto-block (style CrowdStrike) sont spoofables (l’attaquant peut faire bloquer des IPs légitimes) et ne correspondent pas à la séparation-des-devoirs NIS2. monsys fournit la preuve, l’humain décide.

  1. Sidebar → Security → Detection (sous OBSERVATION)
  2. Tuiles KPI en haut : events ouverts / acquittés / fenêtre
  3. Filtre : fenêtre temporelle (1h/24h/7j/30j) + statut + type de règle
  4. Cliquez sur un event dans la liste de gauche → panneau contexte à droite :
    • Hôte + IP source + pays + RIR + user cible + count + fenêtre
    • MITRE ATT&CK TTPs (par ex. T1110.001 pour brute force SSH)
    • “Étapes suivantes suggérées” — guide avec pointeur explicite vers l’Emergency Action manuelle pour l’escalade
    • “Auth-events liés (même IP)” — qu’a encore tenté cette IP dans la même fenêtre
    • “Findings similaires cette semaine (même IP)” — cette IP a-t-elle touché d’autres hôtes de votre flotte ?
  5. Cliquez Acquitter une fois investigué (event sort de la vue “open”)
Type de règleConfig par défautMITRE TTP
auth_brute_force (par user)>10 échecs en 5minT1110.001
auth_brute_force (par src_ip)>20 échecs en 5minT1110.001
auth_invalid_user>10 users uniques inexistants depuis 1 IP en 10minT1589.002
auth_new_countrylogin réussi depuis pays non vu pour user en 30jT1078
geo_blocked_countrytoute connexion depuis pays configuré opérateurT1078

Au premier déploiement, les 4 règles par défaut sont seedées par tenant. Modifiez/ajoutez via /security/detection/rules (v2 — pour l’instant via API : POST /api/v1/detection/rules).

Ce que les hôtes doivent faire (opt-in par agent)

Section intitulée « Ce que les hôtes doivent faire (opt-in par agent) »

La détection requiert que l’agent lise /var/log/auth.log (ou /var/log/secure sur RHEL) et envoie les events parsés au hub. C’est désactivé par défaut car usernames + IPs sources sont des PII.

Activer par hôte dans /etc/monsys/agent.toml :

auth_event_shipping_enabled = true

Redémarrer agent : sudo systemctl restart monsys-agent. Events expédiés dans la minute. Confidentialité : tout reste dans le scope tenant (RLS) et seuls les signals agrégés remontent au niveau event sur le hub (pas de raw log lines stockées).

Pour le mapping pays, monsys utilise les fichiers RIR delegated stats (RIPE/ARIN/APNIC/AFRINIC/LACNIC). Listes publiques, rafraîchies quotidiennement directement par le registry allocant. Pas de licence MaxMind, pas d’attribution, EU-pull-friendly, et plus précis au niveau pays que les bases commerciales (c’est par définition la source de vérité pour l’allocation IP).

Limitation : pays + ASN uniquement, pas de city/lat-lng. Pour l’impossible-travel à coordonnées exactes, source séparée nécessaire (plus tard).

Le GeoIPWorker sur le hub télécharge les 5 fichiers RIR toutes les 24h (~25 MB total), les parse en ranges, peuple geoip_country_ranges. Le détection worker fait un seul index seek par IP source pour chercher pays + RIR.

  • Pas de blocks iptables automatiques ni usermod -L
  • Pas d’EATs pré-émis qui s’auto-déclenchent sur signaux de détection
  • Pas d’inspection de paquets niveau réseau (nous lisons logs, pas paquets)
  • Pas de ML / sequence detection (commencer par règles, ML uniquement quand les baselines sont stables pendant des mois)
  • Pas d’intégration avec SIEMs externes (nous SOMMES la source de preuves, pas un agent-feeder vers Splunk/Datadog)

Les detected events ne se ferment pas automatiquement. Le sysadmin acquitte explicitement via le bouton “Acquitter” — par design pour maintenir l’audit trail (“le 2026-05-21 14:23 alice@acme.com a dismissé l’event X comme bénin”). Les events plus anciens que 30 jours sont purgés par la chunk-retention policy TimescaleDB (configurable dans mig 097).

Fenêtre de terminal
# Liste events ouverts dernières 24h
curl 'https://app.monsys.ai/api/v1/detection/events?since=24h&ack=open' \
-H "Authorization: Bearer $TOKEN"
# Détail avec related + similar findings
curl https://app.monsys.ai/api/v1/detection/events/<id> \
-H "Authorization: Bearer $TOKEN"
# Acquitter après investigation
curl -X POST https://app.monsys.ai/api/v1/detection/events/<id>/acknowledge \
-H "Authorization: Bearer $TOKEN"
# Ajouter une règle pays-bloqué
curl -X POST https://app.monsys.ai/api/v1/detection/rules \
-H "Authorization: Bearer $TOKEN" \
-d '{
"name": "Block KP traffic",
"rule_kind": "geo_blocked_country",
"config": {"countries": ["KP"]},
"severity": "high",
"enabled": true
}'