9. Référence de configuration
auspex validate liste tous les problèmes d'un coup ; auspex plan
montre ce qu'un changement implique. Les chemins relatifs (règles, ca_file,
métadonnées, autorités) sont relatifs au dossier de auspex.yaml
(deploy/config/). Aucun secret n'est accepté dans auspex.yaml.
Exemple complet : examples/auspex.yaml.example.
auspex.yaml
Général
| Clé |
Défaut |
Valeurs |
version |
— |
1 |
channel |
stable |
stable, edge, offline (site isolé) |
organisation |
— |
nom affiché dans les exports d'audit (≤ 120 caractères) |
state_dir |
state |
données d'exécution |
retention_days |
180 |
conservation des observations (entier ≥ 1) |
fingerprint_rules |
— |
fichiers ou dossiers de règles d'identification supplémentaires |
modules |
[] |
github.com/org/depot@version (version épinglée, une seule fois chacun) |
zones
Liste de {name, class, prefixes}. class : tier0, tier1, tier2,
admin, dmz, other, purdue0 … purdue5, purdue3.5. Noms uniques,
au moins un préfixe ; une adresse appartient au préfixe le plus spécifique.
sensors
| Clé |
Rôle |
name |
nom unique ; avec key : minuscules, chiffres, tirets (dossier logs/<name>/) |
zone |
zone déclarée où écoute le capteur (sert au rapprochement « silencieux ») |
interface |
interface d'écoute (documentaire) |
mode |
passive (défaut) ; active-light refusé en zone OT |
key |
clé publique ssh-ed25519 d'envoi ; unique par capteur |
allow |
adresses ou plages d'origine acceptées (0.0.0.0/0 refusé ; sans key, sans effet) |
flow_rules
file : fichier .csv ou .xlsx (format).
alerts
| Clé |
Défaut |
Rôle |
persistent_after_days |
3 |
un flux non déclaré devient persistant |
unused_rule_after_days |
90 |
fenêtre minimale avant de signaler une règle inutilisée |
check_intra_zone |
false |
exiger aussi des règles à l'intérieur des zones |
scan |
— |
alerte « balayage du réseau », voir ci-dessous |
outputs[] |
— |
sorties SIEM, voir ci-dessous |
Balayages du réseau (alerts.scan)
Une machine qui tente de joindre de nombreuses cibles (adresse et port)
refusées ou sans réponse déclenche une alerte « Balayage du réseau » :
une seule par machine, ouverte pendant le balayage, mise à jour si la gravité
change, résolue d'elle-même quand le balayage cesse (plus de tentative dans la
fenêtre). Le message indique le nombre de cibles et de machines visées, les
zones et les ports les plus visés.
| Clé |
Défaut |
Rôle |
enabled |
true |
false : aucune alerte de balayage |
min_targets |
100 |
nombre de cibles distinctes à partir duquel on parle de balayage (même seuil que le rôle « Balayage de ports » de l'inventaire) |
window_hours |
24 |
seules les tentatives de cette fenêtre comptent |
severity |
high |
gravité ; relevée d'un cran si le tier 0 ou l'atelier (Purdue 0 à 2) est visé : un balayage peut suffire à arrêter un automate |
allowed |
[] |
IP ou préfixes CIDR des scanners autorisés (scanner de vulnérabilités) : aucune alerte |
alerts:
scan:
allowed: [10.9.0.20/32] # scanner de vulnérabilités de l'équipe sécurité
Limites : seuls les balayages TCP sont détectés (tentatives refusées, REJ,
ou sans réponse, S0) ; un balayage UDP ou ICMP, ou un balayage lent étalé
au-delà de la fenêtre, ne déclenche pas l'alerte.
Sortie : type (syslog, webhook, file), url
(udp://, tcp://, tls:// pour syslog ; https:// obligatoire pour
webhook), format (cef par défaut pour syslog, json), min_severity
(info … critical), token_env (variable qui porte le jeton du webhook),
path (fichier JSONL), ca_file.
Sorties SIEM
| Type |
Transport |
Format |
syslog |
udp://, tcp://, tls:// (certificat vérifié, ca_file facultatif) |
RFC 5424, charge CEF ou JSON |
webhook |
HTTPS uniquement, jeton par variable d'environnement (token_env) |
JSON |
file |
fichier local |
JSONL |
- Événement normalisé, aligné sur OCSF (
severity_id 1 à 5) ; gravités
converties pour syslog (2 à 6) et CEF (1 à 10).
- Filtre
min_severity par sortie.
- File d'attente sur disque (
state/outbox/) : un envoi en échec est
conservé et réexpédié au cycle suivant, sans perte ; code de sortie 3 et
compteur visible dans le widget « État du service ».
auspex alerts test envoie un événement factice à chaque sortie.
netbox
| Clé |
Défaut |
Rôle |
url |
— |
HTTPS obligatoire (HTTP seulement pour un nom interne sans point avec allow_http_internal: true) |
token_env |
NETBOX_TOKEN |
variable qui porte le jeton (token refusé) |
silent_after_days |
30 |
seuil de l'écart « actif silencieux » |
ca_file |
— |
autorité interne |
access
| Clé |
Défaut |
Rôle |
default |
deny_if_unlisted |
ou allow_if_unlisted |
trusted_proxies |
[] |
reverse proxys dont on croit X-Forwarded-For (0.0.0.0/0 refusé) |
trusted_hosts[] |
[] |
{user: … , allow: […]} ou {group: …, allow: […]}, exactement un des deux |
auth
Dès que auth est présent, break_glass est obligatoire.
| Clé |
Rôle |
primary |
ldaps, oidc, saml, ou absent (comptes locaux) ; un bloc renseigné sans être primary est refusé |
break_glass |
{user, mfa: totp|webauthn, allow: [...]} |
mfa.methods |
parmi totp, email, webauthn (défaut [totp]) |
mfa.email |
smtp_server, port (587 / 465), security (starttls, tls, none), from, username, ca_file ; mot de passe : AUSPEX_SMTP_PASSWORD |
mfa.webauthn |
domaine (nom, pas une IP), adresse (origine HTTPS exacte, dont le nom finit par domaine), exiger_code (booléen) |
ldaps |
servers (ou server), start_tls, bind_dn, user_search_base, user_attribute (sAMAccountName), group_search_base, group_type (active_directory, group_of_names, posix), require_group, superuser_group, attributes, ca_file ; mot de passe : AUSPEX_LDAP_BIND_PASSWORD |
oidc |
issuer (https://), client_id, label, scopes, groups_claim (groups), require_group, superuser_group, ca_file ; secret : AUSPEX_OIDC_CLIENT_SECRET |
saml |
sp_entity_id, idp_metadata (fichier), label, attributes (permanent_id, username obligatoires, email…), groups_attribute, require_group, superuser_group, contact |
carte |
adresse (https://…:8443), autorites (PEM, AC uniquement), revocation (PEM de LCR), identifiant (upn, upn_court, email, cn), creer_comptes (booléen) |
audit
| Clé |
Défaut |
Rôle |
referentiels |
[] |
nis2, dora, iec62443, iso27001, anssi (exports automatiques) |
frequence |
mensuelle |
quotidienne, hebdomadaire, mensuelle |
periode_jours |
selon la fréquence (1, 7, 30) |
1 à 3660 |
conserver |
24 |
exports gardés par référentiel |
.env (central)
Généré par install.sh, droits 600. Ne jamais le versionner.
| Variable |
Rôle |
NETBOX_VERSION, AUSPEX_VERSION |
versions déployées (changées par update.sh) |
AUSPEX_UID, AUSPEX_GID |
compte des services (jamais 0) |
DB_PASSWORD, NETBOX_SECRET_KEY |
base et clé secrète de NetBox |
NETBOX_ADMIN_PASSWORD, NETBOX_ADMIN_TOKEN, NETBOX_ADMIN_EMAIL |
administrateur local de NetBox |
LIBRARIAN_TOKEN |
jeton du compte de service, seul transmis à Auspex |
AUSPEX_PROXY_SECRET |
secret partagé front ↔ NetBox (64 hexadécimaux) |
AUSPEX_LDAP_BIND_PASSWORD, AUSPEX_OIDC_CLIENT_SECRET, AUSPEX_SMTP_PASSWORD |
secrets des connexions, donnés à NetBox seul |
AUSPEX_INTERVAL |
intervalle du cycle, en secondes (300) |
AUSPEX_HTTPS_BIND, AUSPEX_HTTPS_PORT, AUSPEX_CARTE_PORT |
front HTTPS (0.0.0.0, 443, 8443) |
AUSPEX_SENSOR_BIND, AUSPEX_SENSOR_PORT |
réception des capteurs (0.0.0.0, 2222) |
NETBOX_BIND, NETBOX_PORT |
accès HTTP direct à NetBox (127.0.0.1, 8080) |
AUSPEX_LOGS_DIR, AUSPEX_LOGS_RETENTION_DAYS |
dossier des logs reçus (./logs), purge (30 jours) |
AUSPEX_INTERNAL_SUBNET, AUSPEX_FRONT_IP |
réseau interne (172.31.250.0/24), adresse fixe du front |
capteur.conf (appliance)
Lu clé par clé, jamais exécuté ; une clé inconnue ou une valeur invalide
rend la configuration invalide (le capteur n'écoute ni n'envoie rien).
| Clé |
Obligatoire |
Valeurs |
NOM |
oui |
minuscules, chiffres, tirets (≤ 63) |
ECOUTE_INTERFACE |
oui |
mac:aa:bb:… ou nom d'interface |
CENTRAL |
oui |
adresse IP ou nom, :port facultatif (2222) |
CENTRAL_EMPREINTE |
oui |
SHA256:… (auspex capteur empreinte) |
ADMIN_INTERFACE |
non (auto) |
auto, mac:… ou nom ; doit différer de l'écoute |
ADMIN_ADRESSE |
non (dhcp) |
dhcp ou a.b.c.d/nn (avec ADMIN_PASSERELLE) |
ADMIN_PASSERELLE |
si adresse fixe |
adresse IPv4 |
DNS |
si CENTRAL est un nom |
jusqu'à 3 adresses IPv4 |
NTP |
non |
jusqu'à 4 noms ou adresses |
MAJ_CLE |
non |
MCowBQYDK2VwAyEA…= (auspex capteur cle-maj) ; absente = pas de mises à jour |
MAJ_FREQUENCE |
non (360) |
minutes entre deux vérifications, 1 à 1440 |
MAJ_ESSAI |
non (300) |
secondes d'essai d'une nouvelle version, 30 à 3600 |
Variables du capteur Docker
| Variable |
Rôle |
AUSPEX_CENTRAL |
hôte[:port] du central (active l'envoi) |
AUSPEX_CENTRAL_EMPREINTE |
empreinte épinglée de la clé d'hôte du central |
AUSPEX_SENSOR_RETENTION_HOURS |
purge locale des logs, en heures (48) |
AUSPEX_ENVOI_SECONDES |
intervalle d'envoi (60) |