Cette page est dédiée à Fail2ban, afin de créer des règles, pouvant s'appliquer à des données produites par une application WEB et permettant de bannir des visiteurs par le FIREWALL du serveur.
L'usage "normal" est largement documenté en ligne, là nous ciblons l'usage du Firewall au service d'une application qui serait par exemple en PHP.
Merci de nous contacter pour compléter ce document.
apt-get install fail2ban
Par exemple /home/logs/toban
Un répertoire avec des droits adaptés
mkdir /home/logs/toban
chown 0777 /home/logs/toban
Le fichier de log va ressembler à ceci :
44.88.99.222 [19/Nov/2015:17:25:35 +0100] ERRORFAIL1
44.88.99.222 [19/Nov/2015:17:25:45 +0100] ERRORFAIL1
En php le code d'alimentation ressemblera à ceci :
$sfile = "/home/logs/toban/apache-fail1.log";
$sdate = date("d/M/Y:H:i:s O");
$sip = $_SERVER['REMOTE_ADDR'];
file_put_contents($sfile, "$sip [$sdate] ERRORFAIL1\n", FILE_APPEND);
Définir un filtre,
déclarer l'activation de ce filtre dans le fichier JAIL.
vi /etc/fail2ban/filter.d/apache-fail1.conf
[Definition]
failregex = ^
ignoreregex =
vi /etc/fail2ban/jail.conf
[apache-fail1]
enabled = true
port = http,https
filter = apache-fail1
logpath = /home/logs/toban/apache-fail1.log
maxretry = 3
ban-time = 86000
Redémarrage afin de prendre en compte les nouveaux paramètres.
/etc/init.d/fail2ban restart
rm /home/logs/toban/apache-fail1.log
/etc/init.d/fail2ban restar
vi checklist_ban
#!/bin/bash
#lancer le script en sudo
JAILS=$(fail2ban-client status | grep " Jail list:" | sed 's/`- Jail list:\t//g' | sed 's/,//g')
for j in $JAILS
do
echo "$j $(fail2ban-client status $j | grep " Currently banned:" | sed 's/ |- Currently banned:\t//g')"
done
chmod +x checklist_ban
./checklist_ban
fail2ban-regex /home/logs/toban/apache-fail1.log /etc/fail2ban/filter.d/apache-fail1.conf