Contenu

Installation et configuration de Fail2ban (Debian 8.6)

Fail2ban permet de bloquer automatiquement et pour une durée déterminée un hôte via firewalld en analysant les fichiers de logs.

Installation de Fail2ban

On installe Fail2ban en tapant la commande suivante :

1
# apt-get install fail2ban

Fail2ban est fourni avec un fichier de configuration (fail2ban.conf) qui peut-être remplacer lors de futurs mise à jour. Donc nous n’allons pas le modifier, nous allons créer une copie de ce dernier que nous modifierons. Il ne contiendra que les paramètres globaux. Pour cela nous tapons la commande suivante :

1
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.d/customisation.local

On édite le fichier « jail.local » nouvellement créé via la commande suivante :

1
# vi /etc/fail2ban/fail.d/customisation.local

Dans un premier temps nous allons indiquer à Fail2ban les adresses IP à ne pas bloquer. Pour cela on modifie les valeurs de la variable « ignoreip » comme ci-dessous (ligne 21) :

1
ignoreip = 127.0.0.1/8 XXX.XXX.XXX.XXX YYY.YYY.YYY.YYY

La configuration par défaut de Fail2ban indique qu’un hôte sera bloqué pendant 10 minutes s’il génère 3 erreurs en l’espace de 10 minutes. Si vous souhaitez modifier ces paramètres, voici la liste des variables :

  • Durée de blocage : bantime (ligne 30)
  • Durée d’essai : findtime (ligne 34)
  • Nombre de tentative : maxretry (ligne 35)

Ces valeurs seront appliquées à l’ensemble des services monitorés sauf indications contraires dans la configuration de chaque service. On indique l’adresse mail qui recevra les mails d’alertes envoyés par Fail2ban comme ci-dessous (ligne 63) :

1
destemail = fail2ban@mondomaine.fr

Le serveur d’envoi des mails configuré dans Fail2ban est sendmail. Si vous souhaitez utiliser mail, il faut modifier la valeur de la variable « mta » comme ci-dessous (ligne 85) :

1
mta = mail

Afin de simplifier l’administrateur, je préfère avoir un fichier de configuration  par service. Nous allons désactiver la jail « ssh » dans le fichier « customisation.local ». Pour cela nous modifions la valeur de la variable « enable » comme ci-dessous (ligne 131) :

1
enable = false

Maintenant que nous avons adapter à nos besoins la configuration globale de Fail2ban, nous allons pouvoir configurer une « jail » pour sshd. Pour cela on créer et on édite un fichier « sshd.conf » via la commande suivante :

1
# vi /etc/fail2ban/jail.d/sshd.conf

On y ajoute les lignes suivantes :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Nom de la jail
[ssh]
# Activation de la règle
enabled = true
# nom ou numéro du port
port = ssh
# Nom du filtre à utiliser (règles de détection)
filter = sshd
# Chemin du fichier de logs
logpath = /var/log/auth.log
# Actions à effectuer (Voir fichier /etc/fail2ban/jail.d/customisation.local)
action = %(action_mw)s
# Durée du blocage en seconde
bantime = 3600
# Durée de surveillance en seconde
findtime = 3600
# Nombre de tentative avant blocage
maxretry = 5

# Nom de la jail
[sshd-ddos]
# Activation de la règle
enabled = true
# nom ou numéro du port
port = ssh
# nom du filtre à utiliser (regles de detection)
filter = sshd-ddos
# Chemin du fichier de logs
logpath = /var/log/auth.log
# Actions à effectuer (Voir fichier /etc/fail2ban/jail.d/customisation.local)
action = %(action_mw)s
# Durée du blocage en seconde
bantime = 3600
# Durée de surveillance en seconde
findtime = 3600
# Nombre de tentative avant blocage
maxretry = 5

Maintenant que la jail pour sshd est configurée, nous allons pouvoir paramétrer Fail2ban, pour qu’il se lance au démarrage et on redémarre le service pour prendre en compte les modifications, via les commandes suivantes :

1
2
# systemctl enable fail2ban.service
# systemctl start fail2ban.service

Voici la commande qui permet de voir les jails configurées et actives suite au lancement de Fail2ban :

1
# fail2ban-client status

La commande pour voir les informations d’une jail spécifique, ici sshd :

1
# fail2ban-client status sshd

Et pour finir, la commande permettant de débloquer une ip pour la jail sshd :

1
# fail2ban-client set sshd unbanip 192.168.1.12