Aller au contenu

Fail2Ban

Fail2ban est un service de surveillance des journaux qui détecte les comportements suspects, comme les échecs répétés d’authentification, et bloque automatiquement les adresses IP fautives.

Apprise s’intègre à Fail2ban comme action de notification, ce qui vous permet de recevoir des alertes via n’importe lequel des services pris en charge par Apprise, y compris l’e-mail, les notifications push, les plateformes de discussion et les webhooks.

Ce guide suppose :

  • Une installation récente de Fail2ban
  • systemd est disponible
  • Une configuration sur un seul hôte
  • sshd est le premier service surveillé

Les chemins propres à chaque distribution et les configurations avancées de prison sont volontairement laissés de côté.

Avant de commencer, assurez-vous que les éléments suivants sont installés :

  • Fail2ban
  • Apprise (CLI)
  • API Apprise est facultative (si la configuration est centralisée)

Vérifiez que les deux sont disponibles :

Fenêtre de terminal
fail2ban-client --version
apprise --version

Sur la plupart des systèmes, Fail2ban est disponible via le gestionnaire de paquets du système.

Activez et démarrez le service :

Fenêtre de terminal
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Vérifiez qu’il est en cours d’exécution :

Fenêtre de terminal
sudo systemctl status fail2ban

Assurez-vous d’être à l’aise avec les fichiers de configuration Apprise et de savoir quels services vous comptez utiliser. Ici, nous choisissons d’attribuer le tag fail2ban à tous les points de terminaison que nous souhaitons notifier lorsqu’un événement se produit :

/etc/fail2ban/apprise.conf
# Définissez ici le tag de configuration fail2ban et assignez-le, par exemple,
# à un webhook Discord pour les besoins de ce guide. Vous pouvez toutefois
# utiliser n'importe quel service de notification pris en charge.
fail2ban=discord://4174216298/JHMHI8qBe7bk2ZwO5U711o3dV_js

:::

Ajoutez ce qui suit à /etc/fail2ban/jail.local

/etc/fail2ban/jail.local
[DEFAULT]
# ignoreip agit comme une liste d'autorisation ; les requêtes provenant de ces
# IP ne seront pas surveillées par Fail2Ban. Chaque entrée est séparée par un
# espace (' ').
# Indiquez uniquement des points d'accès de confiance :
# - 127.0.0.1/8 : localhost (ce poste) ; cela évite que Fail2Ban ne bloque
# des requêtes internes. Le suffixe `/8` peut être conservé.
# - YOUR_IP/32 : si vous accédez à distance au serveur exécutant Fail2Ban,
# remplacez 'YOUR_IP/32' ci-dessous par votre adresse IP
# réelle. Ajoutez `/32` pour une adresse IPv4 ou `/128` pour
# une adresse IPv6.
# IPv6 address.
ignoreip = 127.0.0.1/8 YOUR_IP/32
# how far back to look
findtime = 5m
# ban if we trigger on 4 failed authenticate within the findtime
maxretry = 4
# ban time; how long do we restrict this user from our system for?
bantime = 1d
#
# Now we define our Apprise Action
#
# - Read from /etc/fail2ban/apprise.conf
# - Only notify end points tagged with 'fail2ban'
#
action = apprise[config="/etc/fail2ban/apprise.conf", args="--tag fail2ban"]
#
# Now we will define our jails
#
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
# Optionally over-ride our defaults above
maxretry = 5
findtime = 10m
bantime = 1h
# The below entry is not nessisary as it's defined in the [DEFAULT] section above
# but this is to show that you could also define another entry here as well
# and assign it a different set of tags.
action = apprise[config="/etc/fail2ban/apprise.conf", args="--tag fail2ban"]

Redémarrez Fail2ban :

Fenêtre de terminal
sudo systemctl restart fail2ban

Vérifiez que la prison est active :

Fenêtre de terminal
sudo fail2ban-client status sshd

Déclenchez un bannissement de test en dépassant le nombre de tentatives d’authentification, ou simulez-le manuellement :

Fenêtre de terminal
sudo fail2ban-client set sshd banip 203.0.113.10

Vous devriez recevoir une notification Apprise immédiatement.

Affichez les journaux Fail2ban :

Fenêtre de terminal
journalctl -u fail2ban

Augmentez la verbosité des actions Apprise (en ajoutant -vv) et testez pour voir ce qui se passe :

Fenêtre de terminal
apprise -vv --tag fail2ban --config /etc/fail2ban/apprise.conf \
--body "fail2ban trigger test"

Vérifiez les URL Apprise séparément avant de déboguer Fail2ban.

Fail2ban est formidable, mais peut parfois être fastidieux à utiliser. Avoir quelques pense-bêtes sous la main peut aider au dépannage :

Fenêtre de terminal
# See all jails:
fail2ban-client status
# Look into the status of one of the specific jails
fail2ban-client status sshd
# quick and dirty way to unban an IP (regardless of which jail banned it)
fail2ban-client unban 1.2.3.4
Questions ou commentaires ?

Documentation

Vous avez repéré une faute de frappe ou une erreur ? Signalez-la ou proposez une correction .

Problèmes Techniques

Vous rencontrez un problème avec le code ? Ouvrez un ticket sur GitHub :

Conçu avec amour depuis le Canada