Fail2banLorsqu’on fait de l’infogérance sur un serveur dédié – c’est-à-dire une machine avec une ouverture frontale sur Internet – c’est un peu comme lorsqu’on construit une banque dans un quartier chaud. On a à peine fini les travaux de peinture et les meubles ne sont pas encore installés, mais voilà déjà les voitures bélier qui arrivent pour défoncer la porte d’entrée.

Concrètement, voilà à quoi ressemblent les tentatives de connexion hostiles sur un serveur Online fraîchement installé.

SSH force brute

Fail2ban est une solution simple et efficace pour mettre tout ce petit monde dehors. C’est une application qui lit et analyse les logs des services comme SSH et cherche des motifs comme les tentatives de connexion infructueuses. Les adresses IP trouvées sont ensuite bannies à l’aide du pare-feu.

Sous Red Hat Enterprise Linux et CentOS, Fail2ban est fourni par le dépôt de paquets EPEL. Le métapaquet fail2ban dépend d’une série de paquets.

  • fail2ban-server
  • fail2ban-systemd
  • fail2ban-mail
  • fail2ban-firewalld
  • etc.

La mise en place d’une configuration simple qui obéit au principe KISS nécessite le seul paquet fail2ban-server. Notons au passage que je ne souhaite pas installer firewalld, étant donné que je dispose déjà d’un pare-feu géré par un script Iptables.

$ sudo yum install fail2ban-server

Les fichiers de configuration de Fail2ban sont rangés dans l’arborescence /etc/fail2ban. La bonne pratique consiste ici à ne pas toucher au fichier de configuration /etc/fail2ban/jail.conf.

Dans un premier temps, je souhaite protéger le service SSH. Je vais donc créer un fichier /etc/fail2ban/jail.d/sshd.local et l’éditer comme ceci.

# /etc/fail2ban/jail.d/sshd.local

[DEFAULT]
bantime = 86400
ignoreip = 78.197.22.147 163.172.63.88

[sshd]
enabled = true
  • La directive bantime définit la durée du bannissement, qui est de dix minutes (600 secondes) par défaut. Je la passe carrément à une journée (86400 secondes).
  • La directive ignoreip définit les adresses IP pour lesquelles Fail2ban est censé faire une exception, séparées par un espace. En l’occurence, j’ai indiqué l’IP fixe de mon bureau et celle du serveur de sauvegardes qui se connecte automatiquement à cette machine via SSH.

J’active et je démarre le service.

$ sudo systemctl enable fail2ban --now

J’affiche l’état de Fail2ban.

$ sudo fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd

Lorsque j’affiche l’état de mon pare-feu (sudo iptables -L -vn), je constate que Fail2ban a ajouté une chaîne personnalisée avec une série d’adresses IP.

Fail2Ban Iptables

Pour suivre en direct le bannissement des adresses IP trop insistantes, on peut afficher les logs de Fail2ban comme ceci.

$ sudo tail -f /var/log/fail2ban.log

Fail2ban logs

Une petite mise en garde s’impose. Si vous utilisez un script Iptables « fait maison » pour gérer votre pare-feu, il faudra songer à recharger Fail2ban lorsque vous invoquez le script. Dans le doute, vérifiez si vous voyez bien la chaîne f2b-sshd lorsque vous affichez l’état du pare-feu.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 


0 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.