3.2 KiB
Installation
Prérequis
- VPS Debian 13, accès root (ou un compte avec
sudo). - Le dépôt cloné dans le
$HOMEd'un utilisateur non-root dédié à ce projet (ex.banisher) —install.sh/make installdé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èssudocomplet (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.