Détection des attaques et Blocages avec Fail2Ban

  Linux, Sécurité, Système

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

 

 

Laisser un commentaire