Installation et configuration de Fail2ban (CentOS 7.2)

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

Le package Fail2ban n’étant pas disponible dans les dépôts CentOS, il faut installer les dépots EPEL. Pour cela vous pouvez suivre la documentation disponible ici.

Installation de Fail2ban

On installe Fail2ban en tapant la commande suivante :

# yum 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 :

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

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

# 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 50) :

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 5 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 59)
Durée d’essai : findtime (ligne 63)
Nombre de tentative : maxretry (ligne 66)

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 130) :

destemail = fail2ban@mondomaine.fr

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

mta = postfix

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 :

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

On y ajoute les lignes suivantes :

# Nom de la jail
[sshd]
# 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/secure
# 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 = 3

# 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/secure
# 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 = 3

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

# 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 :

# fail2ban-client status

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

# fail2ban-client status sshd

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

# fail2ban-client set sshd unbanip 192.168.1.12

Ajouter un Commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *