Bannir les IP qui tentent d'accéder à certaines URL avec fail2ban

Bannir les IP qui tentent d'accéder à certaines URL avec fail2ban

Si vous administrez un site web en production vous avez certainement été confronté a des vagues de crawl d'urls potentiellement compromettantes dans vos logs. Vous savez les :

  • /phpmyadmin
  • /wp
  • /wp-admin
  • /wordpress
  • ...

alors que votre application n'utilise ni phpMyAdmin ni Wordpress. Ces visites sont l'œuvre de robots ou de personnes bien souvent malintentionnés qui tentent de trouver des failles sur votre serveur.

fail2ban

fail2ban est un applicatif serveur permettant de bannir de façon temporaire ou définitive des adresses IP en fonction de certaines actions. Par défaut fail2ban est configurer pour bannir une IP après un certain nombre de tentative de connexion infructueuse au serveur.

fail2ban s'install avec votre gestionnaire de paquet préféré. Par exemple : apt-get install fail2ban

Filtres

Ajoutez cette configuration au fichier /etc/fail2ban/jail.conf :

[nom-de-votre-filtre]
enabled = true
filter  = nom-de-votre-filtre
logpath = /path/to/your/access/log
maxretry = 1
bantime = 86400
action = iptables-multiport[name=Fail2BanFilter, port="http,https »]

Ici le temps de bannissement sera de 86400s, soit 24h dés la première tentative.

Puis créez le fichier de filtre nom-de-votre-filtre.conf dans /etc/fail2ban/filter.d/ :

failregex = ^<HOST> -.*"(GET|POST).*/(wp|wordpress|phpmyadmin).*$
ignoreregex =

Et enfin redémarrez fail2ban : /etc/init.d/fail2ban start

Le filtre fonctionnera pour toute les requêtes GET et POST sur des chemins commençant par "wp", "wordpress" ou "phpmyadmin". A vous d'enrichir ce filtre, regardez régulièrement vos logs pour ajouter les urls qui vous semble suspectes.

Les commentaires