Fail2ban : « t’as des baskets, tu rentres pas ! »

Fail2banSalut à tous, aujourd’hui je vous fait un point rapide sur fail2ban que vous avez installé sur votre serveur linux. Vous ne connaissez pas ? fail2ban c’est un petit utilitaire qui analyse les logs de votre serveur à la recherche d’échecs d’authentification successifs dans ces derniers. Lorsqu’il trouve, il récupère l’adresse IP essayant de se connecter et bloque celle-ci pour empêcher tout autre tentative.

C’est diablement efficace contre les scan-bots si vous avez un serveur avec un port SSH accessible depuis tout l’internet. Et si vous pensiez que votre serveur n’est pas scanné : allez-donc faire un tour dans vos logs SSH… Je vous propose ce TP car sur mon ancien serveur j’utilisais DenyHost qui n’est plus dispo avec Debian 8, j’ai donc basculer sur son remplaçant.

Fail2ban

Comme d’habitude sur une Debian pour installer fail2ban :

apt-get install fail2ban

Le fichier de config à modifier est /etc/fail2ban/jail.conf, et par défaut il ne s’occupe que de SSH, niveau configuration, je vous conseille tout de même d’ajouter votre IP dans l’option

ignoreip = 127.0.0.1/8 <VotreIP> <UneAutreIP> # C'est toujours mieux de ne pas scier la branche sur laquelle on est assis...

Sauf si vous êtes prêt à prendre le risque de vous faire bannir de votre propre serveur lorsque bien bourré après votre réveillon, vous vous emmêlerez les doigts X fois avec votre mot de passe… Comme j’ai dit, SSH est déjà configuré, il suffit de vérifier que la section SSH du fichier jail.conf est bien active :

[ssh]

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 42

Autres services

Après il est tout à fait possible d’ajouter d’autres sources de données à fail2ban comme apache, vsftpd, postfix, sasl, dovecot, mysql, ou encore nagios. Je vous laisse trouver les sections et comment ça fonctionne, c’est assez bien documenté globalement. Je vous propose la doc de online.net sur le sujet qui est, je trouve, « juste ce qu’il faut« . Vous noterez dedans qu’il est possible de configurer fail2ban pour qu’il vous envoi des mails lorsqu’il banni une IP.

Avant de finir, notez que fail2ban utilise votre firewall pour bannir les ip (essayer un iptables -L).

Chain fail2ban-ssh (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere

Que par défaut fail2ban ne banni que pour 10 minutes… c’est un peu court (mais suffisant pour décourager la majorité des bot-nets) je vous conseille de le monter un peu (genre 8 à 12h) histoire de pas laisser trop de marge à un attaquant un peu trop motivé et de baisser le maxretry à 3 à 5 essais. Notez que ces valeurs dépendent du service à protéger, pour un site web avec 2 000 utilisateurs, si vous appliquer 3 à maxretry vous allez en perdre la moitié…^^

Et voilà pour finir un petit

service fail2ban restart

Et votre machine se mettra à « paranoïaquer » les Scripts Kiddies qui veulent brute-forcer votre ssh.

Conclusion

Alors ne voyez pas en fail2ban la solution miracle pour sécuriser votre serveur, les mises à jour de sécurité régulières ou encore un firewall (bien paramétré) sont deux autres exemples d’éléments absolument nécessaires sur votre serveur dédié. Néanmoins, j’aime bien fail2ban car en éliminant les brute-force « bêtes et méchants » il réduit pas mal le volume de log générés par le bruit de fond d’internet et ne laisse alors dans les logs que les tentatives vraiment dangereuses et votre trafic légitime et vous permet de mieux les repérer :

I am your enemy, the first one you’ve ever had who was smarter than you. There is no teacher but the enemy. No one but the enemy will tell you what the enemy is going to do. No one but the enemy will ever teach you how to destroy and conquer. Only the enemy tells you where he is strong. And the rules of the game are what you can do to him and what you can stop him from doing to you. I am your enemy from now on. From now on I am your teacher

– Mazer Rackham, rom Ender’s Game (1985) by Orson Scott Card

Sur ce, @+

Laisser un commentaire

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