Tags : domotique Jeedom Ha Fail2ban
0. Pourquoi Fail2ban ?
Fail2ban est un outil simple qui surveille les tentatives de connexion (SSH, HTTP…) et bloque automatiquement les IP trop insistantes.
Parfait pour éviter les tentatives de forçage de mot de passe ou les accès abusifs à Jeedom. Ma crainte était de me faire bannir moi-même et avec quelques petites modifications, on se débrouille pour empêcher cela !
1. Installer Fail2ban
Connectez-vous en SSH à votre Jeedom et tapez :
sudo apt update
sudo apt install -y fail2ban
Oui, c’est déjà fini…
2. Configuration de base
On édite le fichier principal :
sudo nano /etc/fail2ban/jail.local
Collez ce contenu : 5penser a modifier en 192.168.1.0 si votre ip est différente
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 192.168.0.0/16
bantime = 900
findtime = 600
maxretry = 8
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
[http-jeedom]
enabled = true
port = http,https
filter = jeedom
logpath = /var/www/html/log/http.error
maxretry = 8
ignoreip
empêche Fail2ban de vous bannir depuis votre réseau local. ce qui serait pas mal relou !
3. Créer un filtre Jeedom
sudo nano /etc/fail2ban/filter.d/jeedom.conf
Ajoutez :
[Definition]
failregex = <HOST>.*"(GET|POST).*\/index\.php.*HTTP.*" 401
Ce filtre repère les erreurs 401 (tentatives de connexion échouées à Jeedom ).
4. Redémarrer Fail2ban
sudo systemctl restart fail2ban
Vérifiez que la jail est bien en place :
sudo fail2ban-client status http-jeedom
5. Simuler une IP bannie pour tester
sudo fail2ban-client set http-jeedom banip 192.168.1.42

Vous pouvez vérifier :
fail2ban-client status http-jeedom

Et la débannir :
fail2ban-client set http-jeedom unbanip 192.168.1.42
6. Créer un script pour exposer les IP bannies à Jeedom
Créer le script :
sudo nano /usr/local/bin/ip_bannies.sh
Contenu :
#!/bin/bash
fail2ban-client status http-jeedom | grep 'Banned IP list' | cut -d: -f2- | tr -d ' ' > /tmp/ip_bannies.txt
Le rendre exécutable :
sudo chmod +x /usr/local/bin/ip_bannies.sh
7. Lancer ce script automatiquement
Ajoutez-le au cron :
sudo crontab -e
Ajoutez à la fin :
* * * * * /usr/local/bin/ip_bannies.sh
Le fichier /tmp/ip_bannies.txt
contiendra la liste des IP bannies à jour.
8. Créer un scénario Jeedom pour afficher les IP bannies
Dans Jeedom, créez un scénario.
8.1 Bloc code (PHP) :
$banned = @file_get_contents("/tmp/ip_bannies.txt");
if (trim($banned) == '') {
$banned = "Aucune IP actuellement bannie.";
} else {
$banned = "IP bannies : " . $banned;
}
scenario::setData("ipbannie", $banned);
8.2 Bloc Message :
Envoyez le message via Jeedom Connect ou autre avec :
variable(ipbannie)

8.3 Résultat
- Si des IP sont bannies :
IP bannies : 192.168.0.42
- Sinon :
Aucune IP actuellement bannie.

8.4 Pour vérifier les logs :
tail -f /var/log/fail2ban.log

Conclusion
Un petit article tout simple qui apporte un peu plus de sécurité à notre cher domotique
N’oubliez pas que la vie est une fête
Loïc

