Fail2ban : Installation et configuration

Fail2ban : Installation et configuration

Table of Contents

Introduction

Le service Fail2ban va permettre de protéger un serveur Linux des attaques de brute-force et automatiques en surveillant les logs. Des que les conditions sont réunies (nombres de tentative dans un intervalle de temps), l'adresse IP suspecte est bannie durant un temps déterminé. Le ban est réalisé à l'aide du système de parefeu.

Cet article traite de l'installation ainsi que la configuration de fail2ban sur une Debian 10. Le service SSHD servira d'exemple. Des commandes pour interagir avec le service fail2ban sont également présentées.

Installation

  • Fail2ban est présent dans les dépôts de Debian 10 :

    sudo apt install fail2ban
  • C'est tout !

Configuration

Création des fichiers de configuration

  • Par défaut fail2ban est installé avec 2 fichiers de configuration : /etc/fail2ban/jail.conf et /etc/fail2ban/jail.d/defaults-debian.conf .

    Ces fichiers ne doivent pas être modifié. Ils seront écrasés à la prochaine mise à jour de fail2ban.

  • Fail2ban lit les fichiers de configurations dans cet ordre :

    • Les fichiers .conf
    • Les fichiers .local

    Chaque directive définit dans le fichier de configuration .local, écrase la directive contenue dans son homologue .conf.

    Ce fichier de configuration .local peut uniquement contenir les directives nécessaires pour compléter et/ou écraser de celles définies dans le fichier .conf.

  • Créer les fichiers de configuration adéquat en se basant sur ceux présents :

    sudo cp /etc/fail2ban/jail.{conf,local}
  • Editer le fichier jail.local :

    sudo vi /etc/fail2ban/jail.local

Paramétrage

  • Il est utile d'indiquer des IPs en liste blanche pour éviter de s'auto-ban lors d'un retour de vacance.

  • Décommenter la ligne commençant par ignoreip et ajouter les adresses IPs séparées d'un espace :

    ignoreip = 127.0.0.1/8 ::1 123.123.123.123 192.168.1.0/24
  • Il y a 3 directives importantes à connaitre :

    • bantime : La durée de ban d'une adresse IP.

    Par défaut si aucun suffixe n'est spécifié, la durée est exprimée en secondes. Pour un ban permanent, indiquer un nombre négatif.

    • findtime : La durée pour comptabiliser le nombre de tentatives maximales (maxretry) avant de déclencher un ban.

    • maxretry : Le nombre de tentative durant la période indiquée dans findtime avant de ban une ip.

  • Exemple :

    bantime  = 1d
    findtime  = 10m
    maxretry = 5

    Si 5 échecs d'authentification sont détectés dans un intervalle de 10 minutes, l'adresse IP sera ban pendant 24h.

  • Pour être notifié par email, modifier la ligne commençant par action :

    action = %(action_mw)s
    • Pour avoir les logs dans l'email, indiquer %(action_mwl)s.

    • Un serveur SMTP doit être installé sur le serveur (non abordé).

  • Modifier l'adresse de destinataire et d'expéditeur :

    destemail = admin@linuxize.com
    sender = root@linuxize.com

Les jails

Fail2ban utilise un concept de jails (prisons). Une jail décrit un service et comprend des notions de filtres ainsi que d'action. Lorsque les données sont écrites dans les logs, fail2ban va compter les patterns recherchés du service à surveiller pour y appliquer une action quand ça match.

Fail2ban est fournit avec plusieurs jails pour différents services. Une jail peut être définie manuellement.

  • Pour activer une jail, il faut ajouter la directive enabled = true juste après le titre.

  • Exemple pour le service sshd (toujours dans le fichier jail.local) :

    [sshd]
    enabled   = true
    maxretry  = 3
    findtime  = 1d
    bantime   = 4w
    ignoreip  = 127.0.0.1/8 192.168.1.0/24
    • Les adresses IP 127.x.x.x et 192.168.1.x sont en liste blanche.
    • Toutes autres adresses IP sera ban, en cas de 3 échecs d'authentification au service ssh dans un laps de temps de 24h, pour une durée de 4 semaines.

Fail2ban client

Fail2ban est fournit avec un outil en ligne de commande : fail2ban-client. Celui va permettre d'interagir avec le service fail2ban.

  • Pour voir toutes les options disponibles :

    fail2ban-client -h
  • Voici quelques exemples :

    • Connaitre le status du service :
    sudo fail2ban-client status
    • Vérifier le status de la jail sshd :
    sudo fail2ban-client status sshd
    • Unban une adresse IP :
    sudo fail2ban-client set sshd unbanip 11.22.33.44
    • Ban une adresse IP :
    sudo fail2ban-client set sshd banip 11.22.33.44

1 commentaire pour l’instant

Fail2ban : Protéger l’authentification WordPress sous Nginx Publié le2h43 - 26 octobre 2021

[…] Cet article fait suite à Fail2ban : Installation et configuration. […]

Les commentaires sont fermés.

Les commentaires sont fermés.