Outils pour utilisateurs

Outils du site


bloquer_les_attaques_en_force_brute_avec_fail2ban

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
bloquer_les_attaques_en_force_brute_avec_fail2ban [2026/05/03 10:16] – [Activer une prison] Flazbloquer_les_attaques_en_force_brute_avec_fail2ban [2026/05/10 14:16] (Version actuelle) – [Ne pas bannir] Flaz
Ligne 24: Ligne 24:
 Avant d'utiliser un filtre dans une prison, il faut impérativement tester ce filtre pour s'assurer qu'il détecte correctement les événements souhaités et eux seuls ! Avant d'utiliser un filtre dans une prison, il faut impérativement tester ce filtre pour s'assurer qu'il détecte correctement les événements souhaités et eux seuls !
  
-Pour ce faire, on utilise la commande //fail2ban-regex// dont la forme générale est la suivante :+Pour ce faire, on utilise la commande [[https://manpages.debian.org/trixie/fail2ban/fail2ban-regex.1.en.html|fail2ban-regex]] dont la forme générale est la suivante :
  
 <code>fail2ban-regex [OPTIONS] LOG REGEX [IGNOREREGEX]</code> <code>fail2ban-regex [OPTIONS] LOG REGEX [IGNOREREGEX]</code>
Ligne 65: Ligne 65:
 ==== Activer une prison ==== ==== Activer une prison ====
  
-Une fois définie dans //jail.local//, la nouvelle prison n'est pas active. Il n'est pas nécessaire de relancer (restart) //fail2ban//. Un simple rechargement suffit à déclencher la relecture des fichiers de configuration et la prise en compte des modifications qu'on y a faites :+Déclarer une prison dans //jail.local// ne suffit pas à l'activer. Il n'est pas nécessaire de relancer (restart) //fail2ban//. Un simple rechargement (reload) suffit à déclencher la relecture des fichiers de configuration et la prise en compte des modifications qu'on y a faites :
  
 <code>service fail2ban reload</code> <code>service fail2ban reload</code>
Ligne 77: Ligne 77:
   * [[https://github.com/fail2ban/fail2ban/discussions/2952|Using fail2ban over longer time spans]]   * [[https://github.com/fail2ban/fail2ban/discussions/2952|Using fail2ban over longer time spans]]
  
 +===== Idées de filtres =====
 +
 +==== apache-badbots ====
 +Le filtre fourni avec Fail2ban contient une liste prédéfinie de robots malveillants. Pour compléter cette liste sans qu'elle soit écrasée par les mises à jour du filtre d'origine, j'ai créé un filtre dérivé qui me permet de gérer ma propre liste qui vient compléter la liste prédéfinie :
 +
 +<code - apache-badbots-custom.local>
 +[INCLUDES]
 +before = apache-badbots.conf
 +[Definition]
 +mybotcustom = Bytespider|MJ12bot|SeekportBot|serpstatbot|Barkrowler|YandexBot|AhrefsBot|DotBot|MojeekBot|ZoominfoBot|PetalBot|serpstatbot|BitSightBot|wpbot|WellKnownBot|BLEXBot|AwarioBot|ImagesiftBot|Dataprovider|Amazonbot|GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|SemrushBot|externalhit_uatext|SERankingBacklinksBot
 +failregex = ^<HOST> -.*(GET|POST|HEAD).*HTTP.*(?:%(badbots)s|%(badbotscustom)s|%(mybotcustom)s)
 +</code>
 +
 +
 +==== apache-ratelimit ====
 +L'idée est de détecter des robots qui ne se présentent pas comme tels. Dans ce cas, le filtre //apache-badbots// devient inopérant. Cependant, si une même IP fait 200 requêtes en 5 secondes, c'est louche.
 +
 +Attention à l'action qu'on associera à ce filtre car il détectera aussi les robots légitimes que l'on a explicitement autorisés explicitement autorisés ou pas interdits. Personnellement, je m'en sers pour générer un mail d'alerte, sans bannir l'IP.
 +
 +Source : [[https://odd.blog/2026/03/26/stopping-web-server-abuse-with-fail2ban/Stopping Web Server Abuse with Fail2Ban]] (en)
 +
 +===== Idées d'actions =====
 +==== Ne pas bannir ====
 +Une des actions envisageable est de signaler un bannissement potentiel sans effectuer le bannissement. C'est tout à fait possible mais le fichier jail.conf ne définit pas le raccourci d'action correspondant.
 +
 +Un tel raccourci se déduit facilement d'un raccourci existant. Par exemple :
 +<code>
 +# ban & send an e-mail with whois report to the destemail.
 +action_mw = %(action_)s
 +            %(mta)s-whois[sender="%(sender)s", dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]
 +</code>
 +devient, par simple suppression de l'action de bannissement,
 +<code>
 +# send an e-mail with whois report to the destemail.
 +action_noban_mw = %(mta)s-whois[sender="%(sender)s", dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]
 +</code>
 +que l'on pourra ajouter dans la section //[DEFAULT]// de //jail.local//.
bloquer_les_attaques_en_force_brute_avec_fail2ban.1777803392.txt.gz · Dernière modification : de Flaz