[GeoIP] [Fail2Ban] Bannir les tentatives de connexions par mod_proxy ou par SSH

Plop

Je vous propose un petit script basé sur l’utilisation de fail2ban, visant à bannir les IP qui font des tentatives de connexion par mod_proxy ou tentent de se loguer en SSH sans déclencher fail2ban (tentatives trop espacées).

A mettre en tâche cron à la fréquence de votre choix, perso je le fais tourner toutes les heures.

Le programme effectue aussi un test geoip sur une base préalablement téléchargée (voir ce topic de @metyun pour automatiser sa récupération) histoire de ne pas trop spammer l’API afin de :

  • loguer le pays de l’IP banni
  • ne pas bannir les tentatives SSH provenant des pays sélectionnés (si comme moi vous faites régulièrement des fautes de frappes et que vous avez une IP dynamique).

  • Le script est prévu uniquement pour les IPv4 (mes serveur n’ont pas d’IPv6). Ca pourrait être interessant d’en dev une version IPv6, il faut regarder comment f2b fonctionne dans ce cas et modifier la façon dont on récupère les IP.
  • Le log n’est pas obligatoire (il suffit en ce cas de désactiver les fonctions le concernant)
  • Le log est prévu pour être mis dans une balise sur une page dokuwiki, mais vous pouvez modifier ça si votre config est différente.

Commentaires et observations bienvenus, forkez le et modifiez le à l’envie.

Edit : testé sur un yuno à base de vieil Atom C2350 avec pas grand chose en tâche de fond, le script tourne en moyenne (100 lancements) en moins d’une seconde quand il n’y a pas d’IP à bannir et sans login desdites IP :

# multitime -q -n 100 "/home/purge_ip.bash"
===> multitime results
1: -q /home/purge_ip.bash
            Mean        Std.Dev.    Min         Median      Max
real        0.806       0.032       0.756       0.801       0.918
user        0.610       0.023       0.547       0.610       0.665
sys         0.221       0.032       0.145       0.217       0.317

Bonjour,

Je suis désolé de déterrer ce post, mais est-ce toujours d’actualité pour Yunohost 12 ?

Depuis quelque temps, je subis des tentatives d’intrusions, SSH, des avertissements postfix [fail2ban] :

banni par Fail2Ban après 5 tentatives

banned by Fail2Ban after 5
152.32.134.156
165.154.128.199

J’ai suivi cette info pour durcir la sécurité Modifier le port SSH et Passer une adresse IP en liste blanche / whitelist

banni par Fail2Ban après 3 tentatives

banned by Fail2Ban after 3
64.226.71.50
207.90.244.15
5.101.0.66
185.165.191.26
207.90.244.11
199.45.155.95
211.252.168.97
15.204.171.201
207.90.244
167.172.176.79
167.172.183.13
185.142.236.36
167.94.145.104
15.204.171.201

J’ai voulu voir avec l’Authentification SSH par clé, mais j’ai l’impression que ce n’est pas complet, je me trompe peut-être.
Qu’il manque quelque chose avant et après cette commande :
sudo yunohost settings set security.ssh.ssh_password_authentication -v no
Avant : Parce que je ne vois pas comment faire si on a déjà modifié le port SSH ?
Après : Parce que, là aussi, que doit-on faire après avoir utilisé la commande ?

Et aujourd’hui, en plus de tout ce que j’ai mentionné ci-dessus, je voudrais mettre en place quelque chose pour bannir certains pays.
Mettre GeoIP en place est-il possible aujourd’hui ?

Merci pour l’aide et réponse.