Installer et Configurer Fail2ban

⇑ Aller au dossier complet : Une histoire de Pirates !

Installer et Configurer Fail2ban

Fail2ban est un outil particulièrement intéressant pour sécuriser un serveur.

 

Principe

 

Fail2ban va régulièrement lire les logs de connexion ou d’accès de votre machine et va, en fonction de règles prédéfinies (Regex),  et d’un nombre de tentatives de connexions définies à l’avance, bannir  pour un temps donné, les IP impliquées dans votre pare-feux iptables et, si vous le souhaitez, vous envoyer un mail.

Le programme fonctionne donc en modules « prisons » appelés « jail » pour chaque service que vous souhaitez surveiller tel que ssh ou apache etc…

 

Installation

 

sudo apt-get update
sudo apt-get install fail2ban

 

Configuration

 

La configuration de base se fait dans le fichier /etc/fail2ban/jail.local

Vous remarquerez sûrement que ce fichier est presque vide au départ (voir n’existe pas). En réalité le fichier de conf est le fichier jail.conf mais il est préférable d’effectuer les modifications personnelles dans un autre fichier. Copiez donc le contenu de jail.conf dans le fichier jail.local (creez-le ci besoin)

Dans ce fichier vous retrouvez donc des sections de paramètre qui vont appeler un autre type de fichier de configuration, les « filtres »

Ces fichiers de filtres se trouvent dans /etc/fail2ban/filter.d. Vous y trouverez les filtres comportant les regex nécessaires à la bonne lecture des log.

EDIT :

« Dans les dernières versions de fail2ban (celles incluses par défaut à partir de Debian 8 et Ubuntu 16.04), il ne faut plus modifier le fichier jail.conf. Tout se passe dans /etc/fail2ban/jail.d/.
Il faudra ajouter les modifications dans le fichier defaults-debian.conf de ce même répertoire. Il est cependant possible que cela puisse varier en fonction des distributions. »

1/ Configuration par defaut

La section [DEFAULT] du fichier jail.local donne quelques parametres qui s’appliquerons quelques soit la prison.

Il est très important dans cette section de renseigner votre ip afin d’éviter de vous auto-bannir.

ignoreip = 127.0.0.1/8 192.168.1.0/24

Ceci va empêcher n’importe quelle machine de mon réseau de se faire bannir.

Vous pouvez cependant restreindre un peu plus en précisant les ip particulières de chaque machine autorisée.

 

findtime = Il définit en seconde jusqu’ou dans le temps doit remonter fail2ban lors de sa lecture ou relecture des logs. 3600 = 1h  86400= 1 journée 604800= 1semaine

bantime = Il définit en secondes combien de temps doit être bannie l’ip : 3600 = 1h  86400= 1 journée 604800= 1semaine

Vous pouvez définir ces valeurs par défaut pour toute les prison.

 

2/ Structure des Prisons

[sshd]

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

 

Cette section définit une prison pour les ip tentant de se connecter via ssh

enabled = état actif ou inactif de la prison : true (actif) false (inactif)

port =   les alias de port pour le service à surveiller. Ici on aurait pu mettre « 22 ». attention de bien préciser votre propre port si vous l’avez changé dans la configuration ssh

filter = le nom du filtre tiré du dossier /etc/fail2ban/filter.d (nom de fichier sans le .conf)

logpath = le chemin du ou des fichiers de log à lire. (Important : Si plusieurs fichier, lire la doc fail2ban)

maxretry = le nombre d’essai infructueux autorisés avant banissement.

findtime = si ce paramètre n’est pas configuré il prend alors la valeur par défaut indiquée dans la section [DEFAULT]

bantime = si ce paramètre n’est pas configuré il prend alors la valeur par défaut indiquée dans la section [DEFAULT]

 

La Jail sshd est active par défaut, pas les autres. Il faudra les activer en fonction de vos besoins en les passant à « true ».

Rappelez vous également que le loglevel de SSHD doit absolument être positionné sur DEBUG, sans quoi, Fail2ban ne bloquera rien concernant SSH (voir article ssh).

 

3/ Exemple de filtres

Par défaut fail2ban est « livré » avec beaucoup de filtre pré-écrits.

Voici la forme que prend un filtre.

Par exemple ici le filtre apache-proxy.conf qui surveille les tentatives d’utilisation de votre serveur apache comme un proxy.

# Fail2Ban configuration file
#
# Author: James Roe
# Use in apache access logs
[Definition]
# Matches lines such as:
# 192.168.1.1 - - "GET http://www.infodownload.info/proxyheader.php ...
failregex = ^(?:(?![0-9\.]* - .*? \[.*\] "([A-Z]* /.* HTTP/1\.[0-9]|-)")<HOST>)

ignoreregex =

 

Avec les failregex vous bannissez donc une ip qui appairait dans une ligne de log correspondantes à la regex.

Notez cependant, qu’il est possible de créer des regex particulières nommées « ignoreregex ». Ces dernières vont alors comparer le fichier de log et ignorer la ligne si la regex « match ». Cela peut en outre être très pratique pour éviter de « matcher » inutilement certaines lignes de log.

Même vide, ce paramètre doit néanmoins être présent dans votre fichier de filtre sinon fail2ban renverra une erreur.

 

4/ créer une prison personnalisée

Si vous êtes familier des Regex il est donc tout à fait possible de créer un filtre personnalisé.

Par exemple je m’en suis créer une pour les tentatives de connexions ratées à mes sessions Owncloud ( si elle vous intéresse veillez à régler le niveau de log owncloud).

[Definition]
failregex = {"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}
ignoreregex =

 

Mise en garde sur les regex : Depuis apache 2.4, le fonctionnement des logs n’est pas tout à fait le même. Ce qui était écrit auparavant dans le error.log (type erreur 404 etc) va désormais être écrit dans le access.log. Il faudra non seulement faire pointer la jail fail2ban vers le bon fichier mais également adapter la syntaxe de la regex à la structure de ce fichier. J’ai remarqué du coup que les regex glanées ici et là ne fonctionnent pas pour la plupart avec un serveur apache 2.4.

 

5/ Paramétrer l’envoie de rapport par mail

Cette fonctionnalité peut-être bien pratique pour surveiller un peu ce qui se passe sur votre serveur.

Votre système devra néanmoins être configuré correctement afin de pouvoir envoyer des mails : voir article ssmtp

  • Editez dans le fichier /etc/fail2ban/jail.local la ligne destemail = « votre adresse mail »
  • Puis dans ce même fichier rendez-vous à la section « ACTION »
  • Enfin en fonction du type de rapport que vous souhaitez paramétrez la ligne  : action = %(action_)s

Pour envoyer un mail contenant le whois, modifiez comme suit :

action = %(action_mw)s

Pour envoyer un mail avec le whois ET aussi les logs, modifiez comme suit :

action = %(action_mwl)s

Commandes principales

 

  • Gérer le service
sudo service fail2ban {start/stop/restart/status}
  • Recharger après modification d’une configuration
sudo fail2ban-client reload
  • Status des prisons
sudo fail2ban-client status
  • Gérer une prison particuliere
sudo fail2ban-client {status/start/stop/reload} "nom de la prison"
  • Tester une Regex
sudo fail2ban-regex /chemin/ver/les/log /chemin/vers/le/filtre

 

⇑ Aller au dossier complet : Une histoire de Pirates !

Plus d’infos ICI

5 réflexions sur “Installer et Configurer Fail2ban

  • janvier 2, 2018 à 2:24
    Permalien

    erreur de ta part.

    pour envoyer les notifs avec la variable action , faut ajouter « action = %(action_mwl)s » dans « /etc/fail2ban/jail.d/default-debian.conf »

    Répondre
    • janvier 2, 2018 à 3:21
      Permalien

      Bonjour et merci du retour.
      Je ne voit pas où tu detecte une erreur.. veux tu dire que j’ai fait une erreur dans la modification de la variable ? ou dans le dossier de destination ? dans ce dernier cas, cela dépend de ta configuration personnelle et de ta distribution.
      Pour ce qui suit je vais parler pour mon cas seulement.

      (ci dessous le contenu de l’en-tête de mon fichier jail.local
      ==>ligne 15 : Provide customizations in a jail.local file or a jail.d/customisation.local

      Il m’est donc tout à fait possible de modifier cette variable dans un fichier customisé contenu dans le dossier jail.d mais pour ma part le dossier jail.d est entièrement vide et ne contiens pas le fichier dont tu me parle (default.debian.conf)
      jusqu’à présent modifier simplement le fichier jail.local étais tout à fait suffisant et cela fonctionne parfaitement. En ce qui me concerne je reçoit tout mes rapport d’erreur.

      Cependant après quelques recherches il semblerais que depuis les dernières versions cela fonctionne comme tu le dis :

      « Dans les dernières versions de fail2ban (celles incluses par défaut à partir de Debian 8 et Ubuntu 16.04), il ne faut plus modifier le fichier jail.conf. Tout se passe dans /etc/fail2ban/jail.d/.
      Sur Ubuntu, et Debian j’imagine, il faudra ajouter les modifications dans le fichier defaults-debian.conf de ce même répertoire. Il est cependant possible que cela puisse varier en fonction des distributions. »

      Merci donc de ton commentaire je vais pouvoir me mettre à jour 😉

      Répondre
  • septembre 28, 2020 à 12:24
    Permalien

    Bonjour

     

    J’ai bêtement effacé les fichiers /etc/fail2ban/*

    La réinstallation du package ne me les remet pas en place.

    Serait-il possible de m’en envoyer une copie compressée ?

     

     

    Répondre

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Show Buttons
Hide Buttons