Fail2ban
Publié le 13/06/2016
Dans la catégorie des petits outils top biches, on a fail2ban, qui est un framework de prévention contre les intrusions. Il permet par exemple de détecter un trop grand nombre de tentative de connexion. Fail2Ban est ensuite utilisé pour modifier les règles du pare-feu, pour rejeter par défaut l'adresse IP incriminée.
Par exemple, juste après son installation, on peut trouver ceci parmi les logs:
2016-06-13 05:23:40,337 fail2ban.actions[4160]: WARNING [ssh] Ban 5.39.218.148
2016-06-13 05:33:41,022 fail2ban.actions[4160]: WARNING [ssh] Unban 5.39.218.148
2016-06-13 05:33:47,040 fail2ban.actions[4160]: WARNING [ssh] Ban 5.39.218.148
2016-06-13 05:43:47,717 fail2ban.actions[4160]: WARNING [ssh] Unban 5.39.218.148
2016-06-13 05:43:50,732 fail2ban.actions[4160]: WARNING [ssh] Ban 5.39.218.148
2016-06-13 05:53:51,398 fail2ban.actions[4160]: WARNING [ssh] Unban 5.39.218.148
2016-06-13 05:53:56,415 fail2ban.actions[4160]: WARNING [ssh] Ban 5.39.218.148
2016-06-13 06:03:57,097 fail2ban.actions[4160]: WARNING [ssh] Unban 5.39.218.148
2016-06-13 06:04:01,113 fail2ban.actions[4160]: WARNING [ssh] Ban 5.39.218.148
2016-06-13 06:14:01,807 fail2ban.actions[4160]: WARNING [ssh] Unban 5.39.218.148
2016-06-13 06:14:07,825 fail2ban.actions[4160]: WARNING [ssh] Ban 5.39.218.148
2016-06-13 06:24:08,516 fail2ban.actions[4160]: WARNING [ssh] Unban 5.39.218.148
On voit clairement qu'il s'agit d'une tentative de connexion malicieuse: toujours la même adresse IP, à des heures pas franchement folichonnes. Ici, Fail2Ban est configuré pour relâcher une IP après une dizaine de minutes.
Pour modifier ce comportement, on va ajouter un mécanisme de jails: ouvrez le fichier /etc/fail2ban/jail.conf
. La section [DEFAULT]
reprend des paramètres classiques (bantime de 10 minutes, nombre maximal de tentatives à 6, ...). Il est possible de spécifier ces jails, en prenant par exemple la configuration pour SSH
:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
Et voila! Ban d'1h, nombre max de tentatives: 3. On redémarre ensuite Fail2Ban via /etc/init.d/fail2ban restart
.
Deux-trois liens supplémentaires:
- How to protect SSH with Fail2ban on Ubuntu 14.04
- How to protect Nginx with Fail2ban on Ubuntu 14.04 (parce que oui, on peut aussi monitorer les tentatives de connexion foireuses directement via Nginx).