Contrer les attaques de brute-force avec fail2ban

Fail2ban est un programme qui surveille les logs des services en place et détecte les tentatives d'attaques brute-force. Il mets automatiquement en quarantaine les IP attaquantes.

Installation


root@atom:/home/ericadmin# apt install fail2ban
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
The following additional packages will be installed:
  python3-pyinotify python3-systemd whois
Paquets suggérés :
  monit python-pyinotify-doc
Les NOUVEAUX paquets suivants seront installés :
  fail2ban python3-pyinotify python3-systemd whois
0 mis à jour, 4 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 423 ko dans les archives.
Après cette opération, 1 897 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o
Réception de:1 http://deb.debian.org/debian stretch/main i386 fail2ban all 0.9.6-2 [288 kB]
Réception de:2 http://deb.debian.org/debian stretch/main i386 python3-pyinotify all 0.9.6-1 [26,9 kB]
Réception de:3 http://deb.debian.org/debian stretch/main i386 python3-systemd i386 233-1 [34,4 kB]
Réception de:4 http://deb.debian.org/debian stretch/main i386 whois i386 5.2.17~deb9u1 [73,8 kB]
423 ko réceptionnés en 0s (1 996 ko/s)
Sélection du paquet fail2ban précédemment désélectionné.
(Lecture de la base de données... 31956 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../fail2ban_0.9.6-2_all.deb ...
Dépaquetage de fail2ban (0.9.6-2) ...
Sélection du paquet python3-pyinotify précédemment désélectionné.
Préparation du dépaquetage de .../python3-pyinotify_0.9.6-1_all.deb ...
Dépaquetage de python3-pyinotify (0.9.6-1) ...
Sélection du paquet python3-systemd précédemment désélectionné.
Préparation du dépaquetage de .../python3-systemd_233-1_i386.deb ...
Dépaquetage de python3-systemd (233-1) ...
Sélection du paquet whois précédemment désélectionné.
Préparation du dépaquetage de .../whois_5.2.17~deb9u1_i386.deb ...
Dépaquetage de whois (5.2.17~deb9u1) ...
Paramétrage de fail2ban (0.9.6-2) ...
Created symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service → /lib/systemd/system/fail2ban.service.
Paramétrage de whois (5.2.17~deb9u1) ...
Paramétrage de python3-systemd (233-1) ...
Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u1) ...
Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
Paramétrage de python3-pyinotify (0.9.6-1) ...
root@atom:/home/ericadmin#

Paramétrage de fail2ban

Pour fail2ban, il n'a rien à configurer pour l'instant. Seul ssh est surveillé.


Ici, pour l'utilisation avec ufw.

Avec Debian, le fichier à configurer est: /etc/fail2ban/jail.d/defaults-debian.conf

Par défaut, il contient


[sshd]
enabled = true

Il va falloir l'éditer (n'oubliez pas de faire une sauvegarde avant!), pour obtenir ceci:


[sshd]
enabled = false

[ssh-with-ufw]
enabled = true
port = 22
filter = sshd
action = ufw[application="OpenSSH", blocktype=reject]
logpath = /var/log/auth.log
maxretry = 3

En effet, fail2ban fonctionne par défaut avec iptables. Il faut donc activer le fonctionnement avec ufw.

On crée une nouvelle règle, appelée [ssh-with-ufw]. L'action ufw existe déjà par défaut dans l'installation.