Aller au contenu

8. Exploitation

Installation (deploy/install.sh)

Prérequis : Linux, Docker, Docker Compose v2 ; 2 vCPU, 4 Go de RAM.

  1. Secrets (.env, droits 600) générés aléatoirement : mot de passe PostgreSQL, clé secrète NetBox, mot de passe et jeton administrateur, jeton Librarian, secret du front. Lancé en root, les services tournent sous l'UID 10001 (jamais root) ; sinon sous l'utilisateur qui installe.
  2. Répertoires montés créés par le script (pas par Docker, qui les créerait au nom de root) ; configuration de départ copiée (auspex.yaml, regles-flux.csv).
  3. Certificat HTTPS autosigné si tls/serveur.crt manque (dossier tls/, droits 700, monté dans le seul front : jamais visible de NetBox) : ECDSA P-256, 825 jours, CN = nom court de la machine (64 caractères au plus), nom complet, localhost et 127.0.0.1 dans subjectAltName. À remplacer par celui de l'organisme.
  4. Construction des images (Auspex, NetBox + plugin, réception, front).
  5. Démarrage de NetBox, création du jeton administrateur, mise en place (auspex netbox setup --apply) : champs, étiquette, compte Librarian et ses permissions.
  6. Démarrage d'Auspex avec le seul jeton Librarian.

Mise à jour et retour arrière (deploy/update.sh)

./update.sh [--netbox vX.Y.Z] [--auspex vX.Y.Z]

  1. Sauvegarde dans deploy/backups/<date>/ : .env, base NetBox (pg_dump -Fc, refus de continuer si vide), état Auspex (auspex backup). Échec → mise à jour annulée avant tout changement.
  2. Versions : .env mis à jour ; pour Auspex, git checkout du tag.
  3. Construction et démarrage ; téléchargement d'images seulement si la version de NetBox change (un site sans Internet se met à jour avec les images présentes). Auspex est toujours recréé.
  4. Contrôles de santé (jusqu'au délai) : NetBox répond et Auspex a réussi un cycle commencé après le redémarrage (le dernier cycle de l'ancienne version ne compte pas).

En cas d'échec à n'importe quelle étape : .env restauré, code revenu au commit précédent, base NetBox restaurée dans une base séparée puis substituée seulement si la restauration a entièrement réussi, images reconstruites, Librarian remis en place, santé recontrôlée. La CI force ce chemin à chaque modification (mise à jour vers une version inexistante).

Sauvegarde et restauration de l'état

  • auspex backup [FICHIER] : archive tar.gz de state/ (flux, inventaire, alertes, règles importées, modules, clés) et config/ (auspex.yaml, auspex.lock, règles), avec manifest.json (version, date, SHA-256 de chaque fichier). Les files d'envoi transitoires sont exclues.
  • auspex restore FICHIER --check : vérifie sans rien changer ; auspex restore FICHIER : vérifie chaque empreinte, refuse les chemins dangereux (absolus, .., liens) et remplace l'état de façon atomique.
  • La base NetBox n'en fait pas partie : pg_dump (fait par update.sh).

Santé

auspex health (vérification de santé Docker du service) : code 0 si le dernier cycle est terminé, réussi et récent (moins de 3 intervalles + 60 s) ; sinon 1 avec la cause (aucun cycle, service bloqué, dernier cycle en erreur). --since DATE exige un cycle commencé après cette date.

Le widget « État du service » affiche le même état dans NetBox, plus les envois SIEM en échec ou en attente et les règles qui expirent.

Journaux

Tous les événements sont des lignes JSON, prêtes pour le SIEM.

Source Commande Événements
service Auspex docker compose logs auspex cycle (avec ok, compteurs, erreur), configuration_invalide, export_audit, export_audit_erreur, tableau_de_bord_erreur, démarrage, arrêt
plugin NetBox docker compose logs netbox auspex_access_*, auspex_mfa_*, auspex_webauthn_*, auspex_sso_*, auspex_auth_local_refused, auspex_carte_*, auspex_audit_download
front HTTPS docker compose logs acces accès en JSON (dont carte_sujet sur le port carte), port carte actif
réception docker compose logs reception connexions SSH des capteurs (sshd, niveau INFO)
capteur (appliance) console et journal systemd lignes auspex: … (démarrage, pare-feu, réseau, analyse, mises à jour)

Les alertes de conformité elles-mêmes partent vers les sorties SIEM configurées (sorties SIEM).

Dépannage

Symptôme Cause probable Action
auspex health : « dernier cycle en erreur » NetBox injoignable, règles invalides, jeton absent lire l'erreur ; auspex validate, auspex plan
analyse suspendue, aucune alerte déploiement non conforme (voulu : jamais d'écarts sans règles) auspex plan montre ce qui manque
tout le monde refusé sauf l'admin local auspex.yaml invalide : verrouillage corriger, relu sans redémarrage ; auspex validate
utilisateur refusé (403) adresse source hors de ses règles, ou proxy non déclaré auspex_access_denied donne l'adresse vue ; trusted_proxies
compte MFA verrouillé / téléphone perdu 5 échecs ; appareil perdu manage.py auspex_mfa unlock / reset
toutes les cartes refusées LCR périmée renouveler config/tls/cartes-lcr.pem ; auspex plan prévient 7 jours avant
capteur : rien n'arrive au central empreinte du central différente, clé non déclarée, allow console du capteur ; auspex capteur liste
capteur : mise à jour non installée MAJ_CLE absente ou différente, version pas plus récente, version écartée console (mise à jour refusée : …), auspex capteur liste
SIEM : envois en attente SIEM injoignable rien n'est perdu (file sur disque) ; auspex alerts test
après modification de auth réglages NetBox lus au démarrage docker compose up -d --force-recreate netbox