Sur toutes les machines, il convient d’installer le paquet fail2ban.

A Savoir:

Ce genre d’opération peut s’effectuer sur l’ensemble des machines, d’un seul coup, en utilisant cette astuce.

En pratique, comme l’authentification par mot de passe est désactivée, on ne risque pas de se faire bruteforce une clé SSH. Ceci étant, ce bannissement permet d’alléger les requêtes faites au serveur et les potentiels autres actes malveillants provenant de la même IP.

Cet outil permet d’analyser les logs de différents services et de bannir temporairement une IP en cas d’abus détecté.

Note:

fail2ban supporte une grande variété de services (SSH, nginx, Postfix…).

A Savoir:

fail2ban n’interagit pas du tout avec les services concernés ; il se contente de parser leurs journaux et de récupérer les IP provoquant une erreur (exemple : trop de 404 pour un serveur HTTP).

Dans notre cas, la configuration est un peu modifiée afin d’être intégrée à la centralisation des logs, quelques extraits :

/etc/fail2ban/fail2ban.conf :

loglevel = INFO
logtarget = SYSOUT

On retrouve donc les logs de ban/unban dans journalctl (sudo journalctl -u fail2ban) ou dans Grafana.

/etc/fail2ban/jail.d/defaults-debian.conf :

[sshd]
enabled = true

Seul les logs SSH sont analysés par défaut lors de l’installation. Au bout de quelques essais ratés, l’IP concernée est bannie pour 10 minutes par défaut. Ce délai est configurable via l’option bantime.

Il est ensuite possible de faire des statistiques sur les IP bannies avec la commande :

sudo zgrep -h "Ban " /var/log/fail2ban.log* | awk '{print $NF}' | sort | uniq -c | sort -n
  • technique/adminsys/secu/fail2ban.txt
  • de rdelaage