Définir un bannissement avec Fail2ban

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.

Installation de fail2ban

apt-get install fail2ban

Créer le répertoire qui reçoit les logs à analyser

Par exemple /home/logs/toban
Un répertoire avec des droits adaptés

mkdir /home/logs/toban
chown 0777 /home/logs/toban

Alimenter le fichier de log

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);

Definir le filtre

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 = ^ .*ERRORFAIL1.*
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

Mise en service

Redémarrage afin de prendre en compte les nouveaux paramètres.

/etc/init.d/fail2ban restart

Actions de maintenance

Reset des bannissements

rm /home/logs/toban/apache-fail1.log
/etc/init.d/fail2ban restar

Liste des services et bannissement

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

Valider le filtre sur un fichier log pre-existant

fail2ban-regex /home/logs/toban/apache-fail1.log /etc/fail2ban/filter.d/apache-fail1.conf

Service édité par Telanode SAS - http://www.telanode.fr
Service édité par Telanode SAS, http://www.telanode.fr
Responsable commercial : Pascal THOMAS
Tel : 09 72 50 86 00
Email : p.thomas @ telanode • fr
Fax : 09 72 32 18 97