Files
Fail2banMqttActionBanishment/docs/installation.md
T
2026-07-20 11:05:07 +02:00

3.2 KiB

Installation

Prérequis

  • VPS Debian 13, accès root (ou un compte avec sudo).
  • Le dépôt cloné dans le $HOME d'un utilisateur non-root dédié à ce projet (ex. banisher) — install.sh/make install déterminent cet utilisateur à partir du propriétaire réel du dépôt (stat -c '%U' <dépôt>), jamais codé en dur. Contrepartie assumée : l'utilisateur reçoit un accès sudo complet (NOPASSWD:ALL), à réserver à un compte strictement dédié à ce projet.
git clone <url-du-dépôt> ~/Fail2banMqttActionBanisher
cd ~/Fail2banMqttActionBanisher

Développement (sans fail2ban/iptables réels)

Nécessite un Redis accessible (channel layer Django Channels), par exemple docker run -p 6379:6379 redis.

make run       # tableau de bord + carte, http://127.0.0.1:8000/
make mqtt      # dans un second terminal : ingestion MQTT
make worker    # dans un troisième terminal : géolocalisation asynchrone

Ces cibles créent automatiquement le venv Python (emitter/.venv) et installent les dépendances au premier lancement.

Variables d'environnement (MQTT_BROKER_HOST, MQTT_BROKER_USERNAME, MQTT_BROKER_PASSWORD, REDIS_HOST, REDIS_PORT, ...) : copier .env.example vers .env à la racine du dépôt et l'éditer — chargé automatiquement par Django (python-dotenv), rien à exporter à la main.

Premier noeud en production

!!! warning "À adapter impérativement avant make install" generic/firewall/firewall-filters.conf et les fichiers de generic/fail2ban/jail.d/ proviennent du serveur de référence (miraceti-vps1, un master) et contiennent des règles qui lui sont propres (OpenVPN, Coturn, WireGuard, Portainer, IP publique codée en dur, DOCKER-USER...). Sur un simple noeud, ne garder que ce qui est réellement exposé (typiquement SSH + 80/443) — les sections superflues réfèrent des interfaces ($VPN_IF, $WG_IF) absentes d'un noeud, ce qui produit des erreurs iptables silencieuses (le script continue, mais la règle voulue n'est jamais posée). Vérifier aussi ETH_IF dans generic/firewall/firewall-launcher.sh (nom réel de l'interface : ip -o link show) et désactiver ufw s'il est présent (coexister avec les règles iptables posées ici casserait l'un des deux jeux de règles de façon imprévisible).

sudo make install
sudo make status

Déploie et active : paquets système (fail2ban, iptables, mosquitto, Redis), pare-feu, jails fail2ban personnalisées, broker Mosquitto local, et les quatre services de l'émetteur Django (web, ingestion MQTT, worker Celery, relais vers le master). Idempotent : relancer sudo make install après un git pull réapplique dépendances/migrations et redémarre les services concernés.

Éditer /etc/fail2ban/mqtt.conf (identifiants MQTT réels, copié depuis generic/fail2ban/mqtt.conf.example s'il n'existe pas encore) avant le premier déploiement.

Un noeud fraîchement installé fonctionne déjà en autonome (détection et ban locaux) ; le relais vers un master (fail2ban-emitter-master-client) tentera de se connecter en boucle tant qu'aucun certificat de noeud n'a été obtenu — voir Déploiement en production pour la suite.