Fail2ban est un service analysant en temps réel les journaux d’évènement de divers services (SSH, Apache, FTP, entre autres) à la recherche de comportements malveillants et permet d’exécuter une ou plusieurs actions lorsqu’un évènement malveillant est détecté.
1. Installation
sudo apt install fail2ban
1.1. Sauvegarde du fichier de configuration
sudo cp /etc/fail2ban/jail.local /etc/fail2ban/jail.local.bak
1.2. Modification du fichier de configuration
(Par défaut, Fail2ban bloquera déjà pendant 10 minutes après 5 essais ratés)
sudo nano /etc/fail2ban/jail.local
Contenu du fichier :
[DEFAULT] # Paramètres globaux bantime = 1440m # Durée de bannissement : 24 heures (1440 minutes) findtime = 600s # Fenêtre de détection d'échecs : 10 minutes (600 secondes) maxretry = 3 # Nombre maximum de tentatives échouées avant le bannissement allowipv6 = false # Désactive IPv6 si non utilisé, sinon mettre "true" loglevel = INFO # Niveau de log (INFO pour informations générales) logtarget = /var/log/fail2ban.log # Fichier de log de Fail2Ban dbfile = /var/lib/fail2ban/fail2ban.sqlite3 # Fichier base de données pour Fail2Ban dbpurgeage = 1d # Durée de conservation des logs dans la base de données (1 jour) dbmaxmatches = 10 # Nombre maximal d'entrées pour chaque adresse IP dans la base de données # Configuration spécifique au service SSH [sshd] enabled = true # Active le filtrage pour SSH port = ssh # Port utilisé pour SSH (par défaut 22) logpath = /var/log/auth.log # Fichier des logs d'authentification SSH maxretry = 5 # Nombre d'essais autorisés avant bannissement bantime = 10m # Durée du bannissement (10 minutes) findtime = 10m # Fenêtre de détection des échecs (10 minutes) action = iptables-multiport[name=SSH, port="ssh", protocol=tcp] # Action utilisant iptables # Configuration spécifique au service Samba (SMB) [smb] enabled = true # Active le filtrage pour Samba port = 137,138,139,445 # Ports utilisés pour Samba logpath = /var/log/samba/log.smbd # Fichier des logs Samba maxretry = 3 # Nombre d'essais autorisés avant bannissement bantime = 10m # Durée du bannissement (10 minutes) findtime = 10m # Fenêtre de détection des échecs (10 minutes) action = iptables-multiport[name=Samba, port="137,138,139,445", protocol=tcp] # Action utilisant iptables
Redémarrer Fail2ban
sudo systemctl restart fail2ban
2. Commandes
2.1. Lister les prisons
Tout d’abord, vous pouvez afficher la liste des jails de fail2ban avec Fail2ban avec l’option status :
sudo fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd
2.2. Vérifier la configuration d’une prison
Lorsque vous spécifiez le nom d’un jail dans status, on obtient des informations supplémentaires sur ce dernier.
Par exemple les journaux Linux qui sont parcourus par fail2ban et les actions avec le nombre total d’IP bannies et la liste quand celle-ci est courte.
sudo fail2ban-client status sshd
2.3 Bannir une @IP
Par exemple pour bannir l’adresse IP 1.1.1.1 dans la jail ssh :
sudo fail2ban-client set sshd banip 1.1.1.1
Si cela réussi, cela retourne 1 sinon 0.
2.4. Lister les @IP bannies
Pour lister l’intégralité des adresses IP dans les différents jail de fail2ban :
sudo fail2ban-client banned
[{‘sshd’: [‘1.1.1.1’, ‘126.77.170.137’, ‘179.43.187.37’, ‘116.105.164.98’, ‘59.29.227.55’, ‘176.111.173.238’]}, {‘nginx-limit-req’: []}, {‘ban1day’: []}, {‘ssh-reflection’: [‘180.253.92.146’, ‘221.131.165.56’, ‘185.220.103.4’, ‘162.247.72.199’, ‘23.154.177.5’, ‘185.100.87.202’, ‘151.115.60.113’, ‘162.247.74.27’, ‘185.220.103.8’, ‘107.189.14.165’, ‘45.153.160.2’, ‘91.132.147.168’, ‘23.129.64.130’, ‘216.186.250.53’, ‘171.25.193.25’, ‘162.247.74.200’, ‘198.98.62.74’, ‘62.102.148.69’, ‘198.98.60.97’, ‘103.167.53.253’, ‘101.96.76.241’]}]
Si vous désirez afficher que les @IP bannies sur un jail en particulier :
sudo fail2ban-client get sshd banned
[‘126.77.170.137’, ‘179.43.187.37’, ‘116.105.164.98’, ‘59.29.227.55’, ‘176.111.173.238’]
2.5. Débannir une @IP
Ainsi, par exemple pour retirer l’adresse IP 1.1.1.1. de la prison sshd :
sudo fail2ban-client set sshd unbanip 1.1.1.1
2.6. Débannir toutes les @IP
Il est aussi possible de supprimer l’intégralité des adresses IP bannies sur fail2ban.
Pour cela, on utilise l’option unban avec l’option –all :
sudo fail2ban-client unban --all
2.7. Afficher la configuration d’une prison (jail)
L’option -d permet de faire un dump de la configuration.
Vous obtenez alors la configuration complète de fail2ban :
sudo fail2ban-client -d
On peut utiliser grep pour filtrer la sortie et ne lister qu’une prison en particulier, par exemple pour sshd :
sudo fail2ban-client -d|grep "'sshd', "
Enfin un pour une sortie en mode “human readable”, utilisez l’option –dp :
sudo fail2ban-client --dp
Enfin pour lister les fichiers de configuration, passez en mode verbose avec l’option -v :
sudo fail2ban-client --dp -v