Installation de fail2ban
Comment installer fail2ban
Comme dit sur https://github.com/fail2ban/fail2ban, Fail2Ban analyse les fichiers journaux tels que /var/log/auth.log et bloque les adresses IP effectuant un nombre excessif de tentatives de connexion infructueuses. Pour ce faire, il modifie les règles du pare-feu système afin de bloquer les nouvelles connexions provenant de ces adresses IP, pendant une durée configurable. Cela permet de bloquer la plupart des attaques de déni de service (DDOS) et la récupération des mots de passe par brute force.
La procédure d'installation par OS est donnée sur https://github.com/fail2ban/fail2ban/wiki/How-to-install-fail2ban-packages
donc globalement pour une base RedHat ou Ubuntu faire
#Sur base RedHat
yum update -y && yum install epel-release -y
yum install fail2ban
#Sur base Debian
apt update && apt upgrade
apt install fail2ban
Lien vers le fichier : cliquez ici
Activer et lancer le service avec
systemctl start fail2ban
systemctl enable fail2ban
Lien vers le fichier : cliquez ici
Comme indiqué sur https://github.com/fail2ban/fail2ban/wiki/Proper-fail2ban-configuration ou https://doc.ubuntu-fr.org/fail2ban
il est recommandé de ne pas travailler sur le fichier de configuration d'origine mais sur un fichier nommé jail.local
jail.local est automatiquement lu lors de l'initialisation de fail2ban.
Pour cela tapez les commandes suivantes :
cd /etc/fail2ban
sudo cp jail.conf jail.local
Lien vers le fichier : cliquez ici
Pour l'éditer on va utiliser nano a avec la commande
sudo nano jail.local
sudo nano /etc/fail2ban/jail.local
Lien vers le fichier : cliquez ici
Vous pouvez lire le contenu du fichier pour prendre connaissance de divers paramètres, voir ce que vous voulez éventuellement modifier, le noter à part puis tout effacer pour ne mettre que vos paramètres customisés
Exemple où ici on passe le bantime à 1H
Le paramètre findtime définit la fenêtre de temps pendant laquelle Fail2ban compte les tentatives. Si un hôte dépasse maxretry tentatives durant ce laps de temps, il est banni pendant la durée définie par bantime. Les deux paramètres sont indépendants, mais on choisit généralement un bantime supérieur au findtime.
ignoreip permet de paramétrer des exclusions. Typiquement si votre serveur est chez un fournisseur type OVH, cloudwatt etc.. et que vous le gérez de chez vous, il faut mettre une exclusion sur votre ip publique afin de ne pas vous bloquer vous même.
entrez plusieurs ip en les séparant avec un espace. Votre ip publique peut être récupérée par exemple sur whatismyipaddress.com, il faudra y accoler /32 pour que l'exclusion correspond exactement à cette adresse ip. Dans ces exclusions il est recommandé de mettre également 127.0.0.1/8 et ::1. qui correspondent respectivement aux adresses loopback IPv4 et IPv6.
Le seul service (jail) monitoré est ici sshd
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd
ignoreip = 127.0.0.1/8 ::1 27.12.42.18/32
[sshd]
enabled = true
Lien vers le fichier : cliquez ici
Les services / jails disponibles sont visibles avec
ls /etc/fail2ban/jail.d
ls /etc/fail2ban/filter.d
Lien vers le fichier : cliquez ici
Typiquement on voit ici tout ce qui est disponible pour Apache
Si on veut activer apache-auth.conf, et ajuster des paramètre, on peut par exemple ajouter
[apache-auth]
enabled = true
port = http,https
logpath = /var/log/apache2/error.log
maxretry = 5
Lien vers le fichier : cliquez ici
Les paramètres spécifiques des jails sont visibles dans /etc/fail2ban/jail.conf qu'on peut voir avec par exemple
grep -A10 apache-auth /etc/fail2ban/jail.conf
Lien vers le fichier : cliquez ici
Les paramètres globaux sont eux dans /etc/fail2ban/jail.conf dans la section [DEFAULT] dont on peut voir le début par exemple avec
grep -A60 ^.DEFAULT /etc/fail2ban/jail.conf
Lien vers le fichier : cliquez ici
Votre fichier de configuration modifié, relancez le service avec la commande
sudo systemctl restart fail2ban
Lien vers le fichier : cliquez ici
Vous pouvez vérifier si les prisons sont correctement lancées avec la commande
sudo fail2ban-client status
Lien vers le fichier : cliquez ici
Résultat
Vous pouvez contrôler une prison spécifique avec par exemple ici sshd
fail2ban-client status sshd
Lien vers le fichier : cliquez ici
Vous pouvez arrêter une prison avec un stop. Exemple
sudo fail2ban-client stop ssh
Lien vers le fichier : cliquez ici
Résultat
Un
sudo fail2ban-client start ssh
doit normalement le faire repartir mais cela n'a pas fonctionné dans mon cas.
Aussi j'ai dû effecter un reload :
sudo fail2ban-client reload
Lien vers le fichier : cliquez ici
Suite à quoi un status indique bien que le jail de SSH est reparti
Les lignes ci-dessous permettent de créer un script qui regarde les ip bannies sur tous les jails
sudo nano 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
Lien vers le fichier : cliquez ici
Pages Web
| Site Web | Description |
|---|---|
| It-connect.fr | Protéger un serveur Linux avec CrowdSec |
Article(s) suivant(s)
Article(s) précédent(s)
Article(s) en relation(s)