Files
Fail2banMqttActionBanishment/generic/mosquitto/master-acl.conf
T
2026-07-20 11:05:07 +02:00

39 lines
1.9 KiB
Plaintext

# ACL du broker master — %u est le CN du certificat client (cf.
# use_identity_as_username dans mosquitto-master.conf). Chaque noeud ne peut
# publier que sous son propre topic de ban, et ne lire que ses propres
# commandes plus le canal de diffusion générale.
#
# Déployé par install.sh (install-master) vers /etc/mosquitto/master-acl.conf
pattern write fail2ban/%u/ban
# heartbeat (Phase 3, supervision) : chaque noeud publie périodiquement
# pour prouver qu'il est vivant, indépendamment de toute activité de ban.
# ack (Phase 2.b) : accusé de réception publié après exécution réelle d'une
# commande reçue du master (ex. SYNC_BAN), succès ou échec.
pattern write fail2ban/%u/heartbeat
pattern write fail2ban/%u/ack
pattern read fail2ban/%u/action
# Topic fixe (identique pour tous les noeuds) : "topic", pas "pattern" —
# "pattern" est réservé aux entrées substituées par client (%u/%c) et
# mosquitto avertit (pattern ignoré) si on l'utilise sans placeholder.
topic read fail2ban/broadcast/action
# Identité dédiée à l'ingestion/décision côté master
# (banevents.master_listen) : lecture de fail2ban/+/ban (TOUS les noeuds),
# et écriture sur le canal de diffusion (pour publier un SYNC_BAN) — deux
# droits plus larges que ceux d'un noeud pris individuellement (pattern
# ci-dessus, limité à fail2ban/%u/ban). "user <nom>" scope les règles
# suivantes à cette seule identité de certificat — généré via
# scripts/generate-node-cert.sh master-internal.
user master-internal
topic read fail2ban/+/ban
topic read fail2ban/+/heartbeat
topic read fail2ban/+/ack
topic write fail2ban/broadcast/action
# Roster périodique (Phase 3) : liste des noeuds connus + compteurs
# jail/pays globaux, republié localement par chaque noeud (NodeRegistry +
# cache Redis, voir banevents/stats.py) — sans ça la sidebar d'un noeud
# client n'aurait jamais que ses propres données.
topic write fail2ban/broadcast/roster