Debian 9 Stretch : 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, ça se passe donc dans /etc/fail2ban/jail.d/defaults-debian.conf

sudo nano /etc/fail2ban/jail.d/defaults-debian.conf

Par défaut, vous constaterez que le plugin sshd est activé. Grâce à la ligne

[sshd]
enabled = true

Ce plugin surveille les tentatives de connexions SSH sur votre serveur.
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 defaults-debian.conf, 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. Ca vous évitera de vous faire bannir de votre propre serveur !
Pour cela, ouvrez le fichier de configuration /etc/fail2ban/jail.d/defaults-debian.conf

sudo nano /etc/fail2ban/jail.d/defaults-debian.conf

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 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

2017-07-03 14:16:52,587 fail2ban.actions[698]: WARNING [ssh] Ban 181.22.18.162
2017-07-03 14:22:09,770 fail2ban.actions[698]: WARNING [ssh] Unban 114.241.70.201
2017-07-03 14:39:37,357 fail2ban.actions[698]: WARNING [ssh] Unban 103.89.88.102
2017-07-03 14:41:59,442 fail2ban.actions[698]: WARNING [ssh] Ban 168.195.228.195
2017-07-03 14:52:37,801 fail2ban.actions[698]: WARNING [ssh] Ban 31.162.87.148
2017-07-03 15:20:51,747 fail2ban.actions[698]: WARNING [ssh] Ban 193.201.224.199
2017-07-03 15:31:31,149 fail2ban.actions[698]: WARNING [ssh] Ban 119.29.237.54
2017-07-03 16:33:25,275 fail2ban.actions[698]: WARNING [ssh] Unban 116.31.116.52
2017-07-03 16:34:29,324 fail2ban.actions[698]: WARNING [ssh] Ban 116.31.116.52
2017-07-03 16:44:47,672 fail2ban.actions[698]: WARNING [ssh] Unban 182.100.67.120
2017-07-03 16:56:10,059 fail2ban.actions[698]: WARNING [ssh] Ban 119.193.140.168
2017-07-03 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.d/defaults-debian.conf

sudo nano /etc/fail2ban/jail.d/defaults-debian.conf

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

 

Add new comment

You must have Javascript enabled to use this form.