fail2ban

fail2ban est une solution d'analyse de logs, son rôle est de bannir automatiquement des adresses IP qui pourraient être en train d'attaquer votre serveur, fail2ban est capable de gérer de nombreux services, comme par exemple SSH, FTP, Apache, etc... Le fonctionnement est simple, si une des règles de fail2ban est violée, l'adresse IP source de cette violation sera bannie par le pare-feu (iptable ou nftables par exemple), par exemple, vous pourriez configurer fail2ban pour bannir automatiquement une adresse IP après x tentatives de connexion SSH infructueuses.

Cependant, contrairement à ce que beaucoup d'utilisateurs de fail2ban pensent, fail2ban n'est PAS une solution de sécurité à proprement parler, par contre, il va être capable de ralentir voir de bloquer certains types d'attaques, notamment les attaques de type bruteforce, une attaque de ce type pourrais essayer plusieurs milliers de combinaisons par seconde, avec ce type de solution, nous pouvons ralentir significativement l'efficacité du bruteforce en la passant à par exemple, 5 essais par jour.

Installation

L'installation est très simple, il n'y a qu'a installer le paquet fail2ban depuis APT:

sudo apt install fail2ban

Bien entendu, selon votre distribution et/ou gestionnaire de paquet la commande d'installation pourra differer, cet article s'adresse au distributions basées sur Debian, comme Ubuntu ou Linux Mint

Ensuite il va falloir démarrer le service qui ne l'est pas par défaut:

sudo systemctl start fail2ban

Puis activer le service afin qu'il démarre automatiquement en même temps que notre serveur:

sudo systemctl enable fail2ban

Comme pour nimporte quel service Linux, vous pouvez également vérifier son état en cas de problème avec la commande:

sudo systemctl status fail2ban

Configuration

La configuration par défaut de fail2ban se trouve dans /etc/fail2ban/jail.conf.

Cependant, il est recommandé de ne pas définir vos règles fail2ban dans ce fichier, pour la simple raison qu'un sudo apt upgrade pourrait effacer votre configuration, si vous devez définir vos propres règles pour fail2ban vous devrez les placer dans le dossier /etc/fail2ban/jail.d/

Dans ce dossier, vous allez pouvoir créer des fichiers .conf qui seront votre configuration pérenne, ces fichiers se seront pas effacés en cas de mise à jour du paquet de fail2ban !

Dans mon cas, je vais donc creer un fichier sshd.conf dans le dossier fail2ban/jail.d/

sudo nano /etc/fail2ban/jail.d/sshd.conf

Ce fichier sera bien entendu vide étant donné qu'il n'existe pas. En suivant la même syntaxe que dans le fichier de configuration de base, jail.conf, vous allez pouvoir définir des règles en fonctions des services, je vais ici prendre pour exemple, sshd, qui est le service SSH sur le quel je vais appliquer des règles de sécurité:

[sshd]
ignoreip = 127.0.0.1
maxretry = 5
bantime = 24h
findtime = 1h

Alors, à quoi correspondent ces variables ?

Et c'est à peu près tout ! 😄 il ne nous reste qu'a redémarrer le service fail2ban pour prendre en compte nos modifications:

sudo systemctl restart fail2ban

Vos règles devraient maintenant être prises en compte, les paramètres montrés au dessus ne sont que pour le service SSH, cependant, ces mêmes règles peuvent être appliquées à n'importe quel service géré par fail2ban.

Pour voir le résultat, vous trouverez ci-dessous un exemple d'attaque sur mon serveur ou nous pouvons voir plusieurs adresses IP faire des tentatives infructueuses de connexion, puis leur bannissement:

2021-02-18 11:56:23,132 fail2ban.filter         [29067]: INFO    [sshd] Found 189.91.239.xxx - 2021-02-18 11:56:07
2021-02-18 11:56:23,132 fail2ban.filter         [29067]: INFO    [sshd] Found 188.166.247.xxx - 2021-02-18 11:56:09
2021-02-18 11:56:23,133 fail2ban.filter         [29067]: INFO    [sshd] Found 222.185.235.xxx - 2021-02-18 11:56:14
2021-02-18 11:56:23,133 fail2ban.filter         [29067]: INFO    [sshd] Found 175.24.50.xxx - 2021-02-18 11:56:23
2021-02-18 11:56:23,262 fail2ban.actions        [29067]: NOTICE  [sshd] Ban 188.166.6.xxx
2021-02-18 11:56:23,363 fail2ban.actions        [29067]: NOTICE  [sshd] Ban 200.46.252.xxx
2021-02-18 11:56:23,392 fail2ban.actions        [29067]: NOTICE  [sshd] Ban 188.166.247.xxx
2021-02-18 11:56:23,409 fail2ban.actions        [29067]: NOTICE  [sshd] Ban 175.24.50.xxx
2021-02-18 11:56:23,430 fail2ban.actions        [29067]: NOTICE  [sshd] Ban 189.91.239.xxx
2021-02-18 11:56:23,448 fail2ban.actions        [29067]: NOTICE  [sshd] Ban 111.229.175.xxx
2021-02-18 11:56:23,471 fail2ban.actions        [29067]: NOTICE  [sshd] Ban 222.187.238.xxx