Morpheus
Sécurité / Supervision et alerte locale

Auditd & SecOps

Pile SecOps locale: auditd, corrélateur, FIM, Secure Boot, sauvegarde, SSD, Waybar, Dunst, maintenance et rapports.

auditd FIM Secure Boot Waybar Dunst
Pipeline public Auditd et SecOps
Vue expurgée: auditd, ausearch, corrélateur, FIM, Secure Boot, sauvegarde, SSD, Waybar et Dunst.
01

Collecter

Ingestion locale d'événements d'audit et d'états d'intégrité, sans publier les règles privées.

02

Comprendre

Ajout du contexte: boot, maintenance paquets, hooks attendus, latence et état des services.

03

Classer

Séparation explicite entre menace active, événement de sécurité, maintenance et information.

04

Restituer

Résumé compact dans l'interface locale, avec rapport détaillé disponible hors publication.

Contexte

Le problème réel.

Les signaux bas niveau sont utiles mais bruyants. Les maintenances légitimes, les hooks de paquets et les changements d'intégrité attendus peuvent ressembler à une activité suspecte si le contexte n'est pas pris en compte.

Objectifs

Ce que la solution devait garantir.

  • Réduire les faux positifs sans masquer les signaux critiques.
  • Conserver les événements informatifs dans les journaux, mais ne pas les compter comme menace active.
  • Rendre l'état quotidien lisible: OK T0, maintenance attendue, alerte ou incident.
  • Relier audit, intégrité, Secure Boot, sauvegarde et SSD dans une pilule opérateur unifiée.
Architecture publique

Structure documentée, détails exploitables retirés.

Exemples anonymisés

Ce qui peut être montré sans exposer le système réel.

Événement normalisé

Exemple dérivé du chantier post-update: les hooks paquets attendus passent en maintenance, mais un shell root hors contexte reste fort.

famille_evenement     = execution hook paquet
exemples              = systemd-hook, gtk-update-icon, detect-old-perl
correlation           = maintenance_paquet_attendue
classification        = maintenance
niveau                = information
impact_compteur       = exclu des menaces actives

meme_binaire_hors_maintenance
classification        = execution_suspecte
niveau                = eleve

Avant / après documenté

La page publique montre l'effet opérationnel sans publier les journaux bruts.

avant nettoyage
statut       = WARN
menaces      = 16
maintenance  = 39
integrité    = diff paquets

après corrélation et revue de baseline
statut       = OK
menaces      = 0
maintenance  = 0
intégrité    = OK

Sortie opérateur expurgée

Le format Waybar est publiable quand il ne contient ni chemin ni journal brut.

{
  "text": "OK T0",
  "class": "info",
  "tooltip": "Menaces: 0 | Maintenance: 0 | Integrite: OK | Correlateur: ok"
}
Runbook public

Commandes et états attendus issus de la documentation privée.

Les commandes ci-dessous sont volontairement anonymisées: chemins, noms de machines, interfaces, dépôts, périphériques et actions destructrices sont remplacés par des placeholders.

Documentation privée: secops-quickstart + auditd-monitoring

Check quotidien SecOps

Commandes anonymisées

<secops-status-script>
tail -n 30 <operator-state>/audit-security.log
tail -n 30 <operator-state>/audit-events.log
systemctl --user status <audit-correlator-service> --no-pager
systemctl status <audit-collector-service> --no-pager

État attendu

OK T0 reste nominal
les maintenances attendues restent dans l'infobulle
l'état de santé est OK
le heartbeat du corrélateur est à jour
les événements d'information restent dans les journaux sans lever de menace active
Documentation privée: secops-quickstart

Incident rapide

Commandes anonymisées

<secops-status-script>
tail -n 30 <operator-state>/audit-events.log
<secops-report-script> 24
cat <secureboot-status-cache>

État attendu

lire d'abord les événements d'audit, puis le rapport d'intégrité
le rapport montre les résumés critique / élevé / moyen
l'état Secure Boot est lu depuis le cache, pas interrogé interactivement
les événements critiques restent visibles même pendant la maintenance
Documentation privée: journal-sécurité-2026-06-24

Maintenance post-update

Commandes anonymisées

<maintenance-helper> status
<maintenance-helper> on <short-duration> system-update
<package-integrity-check>
<repo-fim-check>
<system-fim-check>
<maintenance-helper> off 0 system-update-done

État attendu

maintenance_paquet_attendue
verdict=action_admin_attendue
risk=maintenance
level=info
le score reste hors des menaces actives
un shell root arbitraire hors contexte reste exécution_suspecte / élevé
Travail réalisé

Décisions techniques publiables.

Bruit après mise à jour

Les hooks de mise à jour ont été classés comme maintenance attendue lorsqu'ils correspondent à une transaction système légitime.

Tolérance de démarrage

Les séquences root attendues au démarrage restent surveillées et sont reconnues même après une reprise retardée, sans autoriser un shell isolé.

Maintenance pacman

Une fenêtre courte et bornée accompagne les transactions de paquets pour éviter de compter le bruit normal comme menace.

Ingestion continue

Le corrélateur consomme le spool dès le boot afin d'éviter qu'une ouverture de session rejoue plusieurs heures d'événements.

Validation

Preuves et contrôles retenus.

Preuves visuelles

Contrôles observables et portée de la preuve.

Résultats publics

Ce que le chantier démontre.

Anonymisation

Ce qui reste privé.

  • Pas de règles audit complètes publiées.
  • Pas de logs bruts exploitables.
  • Pas de chemins de runtime privés.
  • Les exemples sont reformulés en comportements et niveaux de risque.
Sources privées

Documentation d'origine.

  • Guide privé auditd et monitoring SecOps.
  • Guide rapide d'exploitation quotidienne.
  • Journal de correction des faux positifs post-update.
  • Documentation Waybar SecOps et backup.

Supplément de documentation privée anonymisé

Supervision et alerte sécurité - Guide maître

Référence publique du système Auditd & SecOps: architecture, règles, corrélations, instantanés d'incident, Waybar/Dunst, exploitation quotidienne, tests et reprise. Les chemins privés, règles complètes, scripts et journaux bruts sont anonymisés.

Qu'est-ce qu'auditd ?

auditd est le système d'audit du noyau Linux. Il surveille les événements bas niveau: modifications fichiers, appels système, exécutions et changements de sécurité.

OutilTypePortée
auditdSurveillance noyauÉvénements système bas niveau
journaldJournalisation systemdServices et applications
SIEM completCorrélation multi-hôtesCentralisation étendue

Objectifs

  • Détection des modifications sensibles root et user.
  • Corrélation comportementale multi-événements.
  • Notifications Dunst lisibles et persistantes selon criticité.
  • Instantanés incident automatiques sur critique.
  • État quotidien exposé dans Waybar: audit, intégrité, Secure Boot, backup, SSD.

Stack technique

  • Audit: auditd, ausearch, augenrules, pacman -Qk, FIM, Secure Boot check, NVMe health.
  • Alerting: notify-send et Dunst.
  • Orchestration: systemd, systemd --user, scripts Bash et Waybar.

Architecture opérationnelle

Kernel Audit Framework
  -> audit rules
  -> ausearch événements récents
  -> audit_correlator V2
     ingestion + normalisation
     classement + correlation
     anti-spam + anti-rejeu
     journaux structurés
     instantanés d'incident
  -> FIM + Secure Boot + Backup + SSD status
  -> pilule Waybar unifiée
  -> Dunst notifications

Comportement nominal: OK T0. Les maintenances attendues restent comptées dans l'infobulle et les journaux, sans allonger la pilule principale.

Fichiers et emplacements

Repository public anonymisé:

scripts/audit/<AUDIT_RULES>
scripts/audit_correlator.sh
scripts/audit_notify.sh
scripts/audit-report.sh
dotfiles/systemd/user/<CORRELATOR_SERVICE>
dotfiles/waybar/scripts/secops-*.sh
dotfiles/dunst/<DUNST_CONFIG>

Runtime anonymisé:

<STATE_DIR>/audit-security.log
<STATE_DIR>/audit-events.log
<STATE_DIR>/audit-correlator.last_event_id
<STATE_DIR>/audit-correlator.heartbeat
<STATE_DIR>/audit-maintenance.log
<STATE_DIR>/incidents/
<SECUREBOOT_STATUS_CACHE>
<NVME_HEALTH_STATUS_CACHE>

Installation

pacman -S audit
systemctl enable auditd
systemctl start auditd
systemctl status auditd
pacman -S dunst libnotify

Règles auditd

La page publique ne publie pas le fichier complet. Les familles surveillées sont:

  • Identité et privilèges: passwd, shadow, sudoers.
  • Persistance root: systemd, cron, shell global.
  • Boot et réseau: bootloader, nftables.
  • Durcissement: SSH, PAM, audit, Secure Boot, AppArmor, libvirt, preload, modules.
  • Persistance user ciblée: shell, autostart, systemd user, authorized_keys.
  • Exécutions root suspectes: outils réseau et interpréteurs ciblés.
install -Dm640 <REPO_AUDIT_RULES> <TARGET_AUDIT_RULES>
auditctl -D
augenrules --load
auditctl -l
auditctl -l | rg 'secureboot|apparmor|virtualization'

Permissions sudo minimales

Le corrélateur lit uniquement les événements nécessaires avec une commande fixe et limitée.

<OPERATOR> ALL=(root) NOPASSWD: /usr/bin/ausearch -m SYSCALL\,PATH\,EXECVE -ts recent
visudo -cf <SUDOERS_AUSEARCH_FILE>

Corrélateur V2

  • Ingestion SYSCALL/PATH/EXECVE.
  • Anti-rejeu par dernier identifiant d'événement.
  • Classement: information, moyen, élevé, critique.
  • Corrélation execution_suspecte.
  • Corrélations comportementales par acteur.
  • Anti-spam avec cooldown et stack-tag Dunst.
  • Mode maintenance qui ne masque jamais critique.
FamilleNiveau public
shadow, sudo, bootloader, ld preloadcritique
passwdcritique
cron, systemd root, sshd, pam, politique audit, firewallélevé
persistance user/shellmoyen
résiduel contextualiséinformation

Snapshots incident

Sur critique, un instantané capture le contexte volatile: horodatage, scénario, hôte, noyau, uptime, interfaces, ports, processus, connexions et derniers journaux SecOps.

<STATE_DIR>/incidents/<TIMESTAMP>-critical-<SCENARIO>.log

Mode maintenance

NiveauComportement
critiqueToujours notifié
élevéSilencé pendant maintenance
moyenSilencé pendant maintenance
informationSilencé pendant maintenance

Waybar & Dunst

Waybar expose une pilule unifiée audit + intégrité. Dunst affiche les notifications selon criticité.

ActionEffet
Clic gaucheJournal guidé
Clic milieuRapport guidé
Clic droitRésolution guidée des diffs ou état détaillé
text: OK T0
tooltip:
  Audit C:H:M:I + maintenance
  SecureBoot
  Integrity
  Backup
  SSD
  Correlateur

Rapports

  • Rapport guidé SecOps: audit ou intégrité selon contexte.
  • Rapport audit 24h/6h: totaux, top keys, acteurs, combos, incidents récents.
  • Rapport enrichi: global status, Secure Boot, integrity, backups, services, posture, correlation engine, final verdict.
<SECOPS_REPORT_SCRIPT> 24
<AUDIT_REPORT_SCRIPT> 24
<AUDIT_REPORT_SCRIPT> 6

Déploiement

install -Dm640 <REPO_AUDIT_RULES> <TARGET_AUDIT_RULES>
auditctl -D
augenrules --load
install -Dm755 <REPO_CORRELATOR> <TARGET_CORRELATOR>
install -Dm644 <REPO_USER_SERVICE> <USER_SERVICE>
systemctl --user daemon-reload
systemctl --user restart <CORRELATOR_SERVICE>

Les intégrations Secure Boot, Waybar et Dunst suivent la même logique: source repo, cible runtime, reload explicite.

Exploitation quotidienne

systemctl --user status <CORRELATOR_SERVICE> --no-pager
auditctl -l | rg '<CRITICAL_KEYS>'
tail -n 50 <STATE_DIR>/audit-security.log
tail -n 50 <STATE_DIR>/audit-events.log
tail -n 20 <STATE_DIR>/audit-maintenance.log
<SECOPS_STATUS_SCRIPT>
cat <SECUREBOOT_STATUS_CACHE>
cat <NVME_HEALTH_STATUS_CACHE>

Tests de validation

  • Exécution root suspecte.
  • Combo SSH + authorized_keys.
  • Déclenchement d'un instantané critique.
  • État nftables.
  • Persistance user réelle.
  • Test intégrité système contrôlé.
Tests destructifs

Les commandes réelles de modification système et nettoyage post-tests ne sont pas publiées comme recette exécutable. Elles restent dans le runbook privé.

Scénarios de détection

  • Ajout utilisateur malveillant: passwd/shadow critique.
  • Modification sudoers + élévation: critique corrélé.
  • Modification furtive sans shell interactif: changement sensible détecté.
  • Désactivation firewall: élevé, corrélable avec systemctl.
  • Porte dérobée SSH: sshd + authorized_keys critique.
  • Persistance user coordonnée: moyen élevé en élevé.

Analyse des logs audit

ausearch -k <AUDIT_KEY>
ausearch -ts recent -k <AUDIT_KEY>
ausearch -ua <USER>
ausearch -i -k <AUDIT_KEY>
aureport
aureport -f --start today
aureport -x
aureport -au --summary

Performance et optimisation

  • CPU idle généralement faible.
  • Événements nombreux: coût temporaire plus visible.
  • Éviter les watches trop larges comme tout le home.
  • Préférer les fichiers à forte valeur sécurité et -p wa.

Recovery - dérive des règles

install -Dm640 <REPO_AUDIT_RULES> <TARGET_AUDIT_RULES>
auditctl -D
augenrules --load
auditctl -l | wc -l
echo '0' > <LAST_EVENT_ID_FILE>
systemctl --user restart <CORRELATOR_SERVICE>

Limites connues

  • Polling ausearch, pas event-stream natif.
  • Warnings de performance des watch rules attendus.
  • Cooldowns et fenêtres de corrélation à ajuster selon usage.
  • Scope local: pas de centralisation multi-hôtes ni threat intelligence externe.

Commandes de référence rapide

systemctl --user status <CORRELATOR_SERVICE> --no-pager
systemctl --user restart <CORRELATOR_SERVICE>
journalctl --user -u <CORRELATOR_SERVICE> -f
auditctl -l
ausearch -ts recent -i
ausearch -k <AUDIT_KEY> -i
aureport -au --summary
tail -f <STATE_DIR>/audit-security.log
tail -n 50 <STATE_DIR>/audit-events.log
<SECOPS_STATUS_SCRIPT>