First commit

This commit is contained in:
2026-07-20 11:05:07 +02:00
commit b592ab669f
159 changed files with 10294 additions and 0 deletions
@@ -0,0 +1,32 @@
[Unit]
Description=Fail2banActionBanisher - émetteur : relais vers le master (master_client, SYNC_BAN)
After=network.target mosquitto.service
Requires=mosquitto.service
[Service]
Type=simple
User=__EMITTER_USER__
Group=__EMITTER_GROUP__
WorkingDirectory=__EMITTER_DIR__
EnvironmentFile=__ENV_FILE__
Environment=DJANGO_SETTINGS_MODULE=config.settings.production
Environment=PYTHONUNBUFFERED=1
ExecStart=__EMITTER_DIR__/.venv/bin/python manage.py master_client
Restart=on-failure
RestartSec=5
# Pas de NoNewPrivileges=true ici, contrairement aux autres services de
# l'émetteur : ce process a structurellement besoin d'escalader via sudo
# (execute_sync_ban -> `sudo fail2ban-client set master-sync banip <ip>`,
# cf. master_client.py). NoNewPrivileges bloque tout mécanisme de gain de
# privilège au niveau execve, y compris le setuid de sudo lui-même — sudo
# échoue alors avec "the 'no new privileges' flag is set", quels que soient
# les droits sudoers. Repéré seulement en conditions réelles (le premier
# vrai SYNC_BAN reçu d'un autre noeud) : les tests précédents mockaient
# subprocess.run, donc n'exerçaient jamais cette interaction avec systemd.
ProtectSystem=strict
PrivateTmp=true
ReadWritePaths=__EMITTER_DIR__
[Install]
WantedBy=multi-user.target