Ajouter un commentaire

Debian 10 Buster : sécuriser votre serveur avec Fail2ban

C'est quoi Fail2ban ?

Fail2ban lit des fichiers de log présents sur votre serveur pour détecter les adresses IP essayant d'accéder à vos services en générant de nombreux échecs lors de l'authentification.
Fail2ban bannit ces adresses IP suspectes en mettant à jour les règles du pare-feu pour rejeter ces adresses.

Ces règles peuvent être définies par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur nginx.

 

Installation de Fail2ban

On commence par installer le paquet.

sudo apt-get install fail2ban

Le fichier /etc/fail2ban/jail.conf contient l'ensemble des plugins que vous pouvez activer pour protéger les services de votre serveur.
Mais vous ne devez pas modifier ce fichier directement. Car lors des mises à jour de votre Debian, il peut être remplacé à tout moment avec une version plus récente.

nano /etc/fail2ban/jail.conf

Fail2ban permet de surveiller et de protéger de nombreux services sur votre serveur : SSH, nginx, postfix, FTP...
La configuration de chaque service est contenu dans une section spécifique [sshd] pour le service SSH qui est le seul actif par défaut.

Pour activer la surveillance d'un service, il faut placer la variable enabled à true dans la section du service.
Si vous avez modifier le port par défaut de SSH (pour ne pas utiliser 22), pensez de l'indiquer ici dans la variable port.

Pour activer et configurer les plugins de votre choix, vous devez spécifier vos paramètres personnes dans le fichier /etc/fail2ban/jail.local

En fait, Fail2ban charge les configurations dans cet ordre : 

  • /etc/fail2ban/jail.conf
  • puis /etc/fail2ban/jail.d/defaults-debian.conf
  • et enfin /etc/fail2ban/jail.local

On crée donc notre fichier de config perso:

sudo nano /etc/fail2ban/jail.local

Et on commence par coller le bout de configuration ci-dessous pour activer le plugin sshd.

[sshd]
enabled = true

Ce plugin surveille les tentatives de connexions SSH sur votre serveur.
Par défaut, si Fail2ban détecte 5 tentatives de connexion erronées durant les 600 dernières secondes (soit 10 minutes), l'IP ayant essayé de se connecter sera bloquée 600s (10 min).

Ces constantes sont définies de manières globales pour tous les plugins.

# "bantime" is the number of seconds that a host is banned.
bantime  = 600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 5

Mais depuis votre fichier jail.local, vous pouvez les sur-définir au niveau de la configuration d'un plugin.

[sshd]
enabled = true
# 1 jour de bannissement
bantime  = 86400

Ou de manière globale pour tous les plugins

[DEFAULT]
# 1 jour de bannissement pour tous les plugins
bantime = 86400

 

Ne pas vous faire bannir de votre serveur !

Je vous recommande d'exclure votre adresse IP personnelle du scope de Fail2ban. Cela vous évitera de vous faire bannir de votre propre serveur !
Pour cela, ouvrez à nouveau le fichier de configuration /etc/fail2ban/jail.local

sudo nano /etc/fail2ban/jail.local

Et ajouter la variable ignoreip  dans la section [DEFAULT] du fichier.
Remplacez 123.456.789.123 par votre adresse IP (ou vos adresses).

[DEFAULT]
ignoreip = 127.0.0.1/8 123.456.789.123

 

Ca fonctionne ?

Après quelques heures ou jours de fonctionnement de Fail2ban, allez jeter un coup d'oeil dans son fichier de log

sudo nano /var/log/fail2ban.log

Vous serez très surpris de voir le nombre de connexions SSH bloquées par fail2ban...
Il y a plein de robots sur Internet qui scannent les serveurs à la recherche de vulnérabilités

2019-09-24 14:16:52,587 fail2ban.actions[698]: WARNING [ssh] Ban 181.22.18.162
2019-09-24 14:22:09,770 fail2ban.actions[698]: WARNING [ssh] Unban 114.241.70.201
2019-09-24 14:39:37,357 fail2ban.actions[698]: WARNING [ssh] Unban 103.89.88.102
2019-09-24 14:41:59,442 fail2ban.actions[698]: WARNING [ssh] Ban 168.195.228.195
2019-09-24 14:52:37,801 fail2ban.actions[698]: WARNING [ssh] Ban 31.162.87.148
2019-09-24 15:20:51,747 fail2ban.actions[698]: WARNING [ssh] Ban 193.201.224.199
2019-09-24 15:31:31,149 fail2ban.actions[698]: WARNING [ssh] Ban 119.29.237.54
2019-09-24 16:33:25,275 fail2ban.actions[698]: WARNING [ssh] Unban 116.31.116.52
2019-09-24 16:34:29,324 fail2ban.actions[698]: WARNING [ssh] Ban 116.31.116.52
2019-09-24 16:44:47,672 fail2ban.actions[698]: WARNING [ssh] Unban 182.100.67.120
2019-09-24 16:56:10,059 fail2ban.actions[698]: WARNING [ssh] Ban 119.193.140.168
2019-09-24 17:21:58,888 fail2ban.actions[698]: WARNING [ssh] Ban 174.103.145.178

 

Configuration de plugins additionnels

Pour activer et configurer les plugins de votre choix, ça se passe donc dans /etc/fail2ban/jail.local

sudo nano /etc/fail2ban/jail.local

Voici un exemple de config qui protège postfix et dovecot

[DEFAULT]
# 1 jour de bannissement pour tous les plugins
bantime = 86400

[sshd]
enabled = true
# 3 mots de passe erronés consécutifs et c'est le bannissement direct pour SSH
maxretry = 3

[postfix]
port = smtp,submission
enabled = true

[dovecot]
port = imaps
enabled = true

N'oubliez pas de redémarrer le service Fail2ban pour activer vos modifications

sudo service fail2ban restart

 

You must have Javascript enabled to use this form.