Debian 9 Stretch : sécuriser votre serveur avec Fail2ban
dim, 07/09/2017 - 13:12 — geek17C'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