Installer et configurer Fail2Ban
Fail2ban est un outil très utile pour protéger vos serveurs contre les attaques par force brute en surveillant les fichiers journaux de services comme SSH, Apache, Nginx, etc. Il détecte les tentatives de connexion suspectes et bloque les IP des attaquants.
sudo apt install fail2ban
sudo apt install rsyslog
Fail2ban est configuré à l’aide de fichiers situés dans le répertoire /etc/fail2ban/
. Les deux fichiers principaux sont :
/etc/fail2ban/jail.conf
: Le fichier de configuration principal.
/etc/fail2ban/jail.local
: Un fichier où vous pouvez personnaliser votre configuration sans modifier le fichier original jail.conf.
Ne modifiez jamais directement jail.conf car ce fichier peut être remplacé lors des mises à jour. Il est préférable d’utiliser jail.local pour vos configurations personnalisées.
Vous pouvez créer le fichier /etc/fail2ban/jail.local
en copiant le fichier jail.conf
:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
On va maintenant pouvoir l’éditer, de nombreux paramètres vont permettre la configuration de notre Fail2Ban
sudo vim /etc/fail2ban/jail.local
On retrouve à partir de la ligne 100 la durée pendant laquelle une IP sera bannie,
le temps pendant lequel Fail2ban doit détecter les échecs de connexion avant d’agir
et le nombre de tentatives autorisées
sudo sed -n '100,109p' jail.local
# "bantime" is the number of seconds that a host is banned.
bantime = 10m
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 10m
# "maxretry" is the number of failures before a host get banned.
maxretry = 5
Nous pouvons aussi configurer un jail spécifique pour différents services, comme ssh dans /etc/fail2ban/jail.d
où on va créer le fichier sshd.conf
vim sshd.conf
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3
bantime = 1h
findtime = 600
Après avoir modifié la configuration, redémarrez Fail2ban pour appliquer les changements
sudo systemctl restart fail2ban
Vérifier les jails actives avec
sudo fail2ban-client status
Status |- Number of jail: 1
- Jail list: sshd