8. Exploitation¶
Installation (deploy/install.sh)¶
Prérequis : Linux, Docker, Docker Compose v2 ; 2 vCPU, 4 Go de RAM.
- 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. - 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). - Certificat HTTPS autosigné si
tls/serveur.crtmanque (dossiertls/, 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,localhostet127.0.0.1danssubjectAltName. À remplacer par celui de l'organisme. - Construction des images (Auspex, NetBox + plugin, réception, front).
- Démarrage de NetBox, création du jeton administrateur, mise en place
(
auspex netbox setup --apply) : champs, étiquette, compte Librarian et ses permissions. - 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]
- 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. - Versions :
.envmis à jour ; pour Auspex,git checkoutdu tag. - 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éé.
- 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 destate/(flux, inventaire, alertes, règles importées, modules, clés) etconfig/(auspex.yaml,auspex.lock, règles), avecmanifest.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 parupdate.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 |