mirror of
https://github.com/deunix-educ/Fail2banMqttActionBanishment.git
synced 2026-08-24 03:11:58 +02:00
49 lines
2.7 KiB
Plaintext
49 lines
2.7 KiB
Plaintext
# GABARIT réutilisable pour protéger une NOUVELLE appli contre le
|
|
# brute-force applicatif — n'importe quelle appli sur ce VPS, pas
|
|
# seulement ce projet (trouvé utile après un résidu de jail appartenant à
|
|
# une autre appli Django sur ce même serveur partagé, cf. CONTEXT.md).
|
|
# Ce fichier n'est PAS déployé tel quel (extension .template, ignorée par
|
|
# la boucle de copie générique d'install.sh::deploy_fail2ban) : c'est un
|
|
# modèle à copier et adapter. Exemple concret déjà en place :
|
|
# emitter-admin-auth.conf + emitter/banevents/signals.py (Django +
|
|
# django-axes).
|
|
#
|
|
# Mode d'emploi :
|
|
# 1. Faire journaliser à l'appli une ligne EXACTEMENT au format attendu
|
|
# par filter.d/app-auth.conf (générique, partagé par toutes les
|
|
# jails app-auth-*, rien à écrire côté filtre) :
|
|
# Verrouillage <NOM_APPLI> après échecs répétés depuis <IP> (...)
|
|
# <NOM_APPLI> = un seul mot (\S+ côté filtre), ex. "émetteur",
|
|
# "webmail". L'appli décide QUAND verrouiller (son propre seuil
|
|
# applicatif, cf. AXES_FAILURE_LIMIT pour l'exemple django-axes) —
|
|
# fail2ban ne fait que réagir à cette décision déjà prise (d'où
|
|
# maxretry=1 ci-dessous : chaque ligne EST déjà la décision, pas la
|
|
# peine de recompter un 2e seuil derrière).
|
|
# IMPORTANT — timestamp en tête de ligne : marquer explicitement le
|
|
# fuseau (ex. suffixe "Z" ISO 8601, UTC), voir le commentaire dans
|
|
# filter.d/app-auth.conf pour le pourquoi (piège vécu avec Django,
|
|
# TIME_ZONE='UTC' + time.tzset() : sans marqueur, fail2ban ignore
|
|
# silencieusement les lignes fraîches juste après son propre
|
|
# redémarrage si le fuseau système du VPS diffère d'UTC).
|
|
# 2. Copier ce fichier vers jail.d/<nom-appli>-auth.conf, remplacer
|
|
# __APP_NAME__ (nom de la jail, unique) et __APP_AUTH_LOGPATH__
|
|
# (chemin réel du fichier de log).
|
|
# 3. Si ce chemin dépend du VPS (répertoire de déploiement différent
|
|
# d'un serveur à l'autre — le cas courant) : NE PAS le laisser dans
|
|
# la boucle de copie générique d'install.sh::deploy_fail2ban (même
|
|
# piège que coturn.conf/emitter-admin-auth.conf, voir CONTEXT.md).
|
|
# Ajouter plutôt une fonction deploy_<nom>_jail dédiée (sed sur le
|
|
# placeholder), sur le modèle de deploy_emitter_admin_auth_jail.
|
|
# 4. S'assurer que le fichier de log existe déjà (touch) avant le
|
|
# premier démarrage de fail2ban après déploiement — un logpath
|
|
# inexistant fait planter fail2ban au chargement (incident coturn,
|
|
# voir ROADMAP.md Phase 1.b).
|
|
[__APP_NAME__-auth]
|
|
enabled = true
|
|
backend = auto
|
|
filter = app-auth
|
|
logpath = __APP_AUTH_LOGPATH__
|
|
maxretry = 1
|
|
findtime = 1h
|
|
bantime = 24h
|