4. Configuration de Fail2Ban

Mise en place & configuration de Fail2Ban

Installation 

sudo apt-get install fail2ban


Configuration

Le fichier /etc/fail2ban/jail.conf contient l'ensemble des plugins que vous pouvez activer pour protéger les services de votre serveur. Pour chaque plugin les actions possibles sont commentées dans le fichier.

Mais vous ne devez pas modifier ce fichier directement. Car lors des mises à jour de votre serveur Debian, le fichier peut être remplacé à tout moment avec une version plus récente.

En fait, Fail2ban charge les configurations dans cet ordre :

On crée donc notre fichier de config perso : 

sudo nano /etc/fail2ban/jail.local

Voici un exemple de configuration standard : 

[DEFAULT]
# 1 jour de bannissement pour tous les plugins
bantime = 86400

# A host is banned if it has generated "maxretry" during the last "findtime" in seconds.
findtime  = 600
ignoreip = 127.0.0.1/8 123.456.789.123

# "maxretry" is the number of failures before a host get banned.
maxretry = 5

[sshd]
enabled = true
# 3 mots de passe erronés consécutifs et c'est le bannissement direct en SSH
maxretry = 3


Activation du service

sudo service fail2ban start

Pour vérifier le bon fonctionnement du service : 

sudo service fail2ban status

Il est possible que sous certaine distribution fail2ban ne démarre pas avec cette configuration. Il faudra rajouter la ligne suivante dans le fichier jail.local dans la partie [DEFAULT]

sshd_backend = systemd

puis redémarrer fail2ban.

 


Commandes Fail2Ban

Liste des commandes utiles pour Fail2Ban

Logs Fail2Ban

Pour savoir si fail2ban fonctionne on peut allez voir le fichier de logs :

sudo nano /var/log/fail2ban.log

Lister les prisons 

sudo fail2ban-client status

Lister les bannis d'une prison

sudo fail2ban-client status <JAILNAME>

Mettre la sortie de la commande dans un fichier :

sudo fail2ban-client status <JAILNAME> > <FILENAME>

# Exemple 
sudo fail2ban-client status sshd > ipban.txt

Filtrer les ip dans un fichier : 

grep -n -w --color "<KEYWORD>" <FILENAME>

# Exemple 
grep -n -w --color "192" ipban.list

Il est aussi possible de faire les 2 manipulations précédentes en une seule fois : 

sudo fail2ban-client status <JAILNAME> | grep -n -w --color "<KEYWORD>"

# Exemple rechercher une chaine de caractère commençant par "192"
sudo fail2ban-client status sshd | grep -n -w --color "192"

Avec grep il est possible de faire des recherches avancés que ça soit dans le traitement d'une sortie de commande ou dans un fichier : 

# Recherche REGEX avec grep 
# Il est important de rajouter l'option -E pour signaler que c'est une recherche regex

# Exemple rechercher une chaine de caractère au format IPV4 -> "XX.XX.XX.XX"
grep -n -w --color -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" <FILENAME>

# Exemple rechercher une chaine de caractère au format IPV4 commençant par 192 -> "192.XX.XX.XX" 
sudo fail2ban-client status sshd | grep -n -w --color -E "192([\.][0-9]{1,3}[0-9]){3}"

Dé bannir une IP

sudo fail2ban-client set <JAILNAME> unbanip <IPBAN>