mirror of
https://github.com/deunix-educ/Fail2banMqttActionBanishment.git
synced 2026-08-24 03:11:58 +02:00
First commit
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
# 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.
|
||||
|
||||
```sh
|
||||
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`.
|
||||
|
||||
```sh
|
||||
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).
|
||||
|
||||
```sh
|
||||
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](deployment.md) pour la
|
||||
suite.
|
||||
Reference in New Issue
Block a user