Ga naar inhoud

Drift detection

Drift detection vergelijkt sha256 van een vooraf gedefinieerde set config files tegen een hub-side baseline. Iedere wijziging die niet binnen 5 minuten van een Emergency Action Token (EAT) heeft plaatsgevonden wordt geflagd als drift.

Default watched paths

Agent v1823+ hash’t deze 8 paden bij elke 6-uur inventory cycle:

/etc/nginx/nginx.conf
/etc/postgresql/main/postgresql.conf
/etc/postgresql/main/pg_hba.conf
/etc/ssh/sshd_config
/etc/sudoers
/etc/sudoers.d/monsys
/etc/systemd/system/monsys-agent.service
/etc/caddy/Caddyfile

Operator override via tenant_settings.drift_watched_paths (Postgres TEXT[] kolom). Agent zal in v1.5 de tenant-specifieke lijst ontvangen via heartbeat-response.

Hub-side flow

agent.config_hashes → ingest_extended handler:
FOR EACH (path, sha256):
- new path: INSERT baseline (authorised, first-sighting)
- same hash: noop
- changed hash + EAT in laatste 5 min: UPDATE baseline (authorised)
- changed hash + GEEN EAT: INSERT drift_events + warning alert

drift_events is een TimescaleDB hypertable (30-day chunks). Per drift event:

veldinhoud
agent_id, pathwat
sha256_old, sha256_newfirst-8-chars getoond in alert
authorised_by_eat_nonceNULL = drift, ingevuld = expected change
detected_atTIMESTAMPTZ
resolved_at, resolution_noteoperator-resolved

Geen file-contents opgeslagen — alleen hashes. Privacy-respecting (we weten dat sshd_config gewijzigd is, niet wat erin staat).

Trust Score integratie

configuration_drift is een 15%-gewogen component in Trust Score. Penalty: -10 per unauthorised drift event in laatste 30 dagen.

Agents op binary < v1823 sturen geen config_hashes — voor die agents blijft de drift component blanked met UI hint “agent on older binary — upgrade to enable drift detection”. Geen valse 100-score.

Auto-resolve

AutoResolveWorker (5-min tick) sluit drift-alerts wanneer:

  • Het onderliggende drift_events.authorised_by_eat_nonce ingevuld is (operator markeerde de change als legitiem), OR
  • drift_events.resolved_at ingevuld is (operator klikte resolve)

Resolution notes: 'auto: drift event authorised or resolved'.

Wat het NIET dekt

  • File-deletion: hash van een niet-bestaand bestand is leeg — baseline behoudt oude hash, geen alert. Geplanned voor v1.5.
  • Directory-tree changes: alleen exacte paden, geen recursieve watch. /etc/nginx/conf.d/*.conf vereist tenant-config van elk pad.
  • Real-time: drift wordt pas gedetecteerd bij de volgende inventory cycle (default 6h). Voor sub-minuut detectie zou inotify nodig zijn — dat is op de roadmap.
  • Windows: v1 is Linux-only. Windows registry monitoring via reg query parse komt in v1.5.