Comment puis-je créer un filtre pour les bloquer avec fail2ban?
476 Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/)
892 ltx71 - (http://ltx71.com/)
5367 Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, [email protected])
6449 Barkrowler/0.9 (+http://www.exensa.com/crawl)
Cette liste en ressort:
Sudo cat /var/log/Apache2/access.log | awk -F\" '{print $6}' | sort | uniq -c | sort -n
J'ai essayé Apache-badbot.conf, mais cela ne semble pas fonctionner ...
La bonne façon de gérer les bots ennuyeux est de les bloquer dans "robots.txt". Mais vos commentaires indiquent qu'ils ignorent cette directive. Le blocage par user-agent sera finalement un jeu de chat et de souris, mais si vous voulez le faire, vous voulez ce qui suit.
Donc, vous devez activer la prison Apache-badbots qui lit le journal d'accès Apache si vous ne l'avez pas déjà fait. Créez le fichier /etc/fail2ban/jail.d/Apache-badbots.local
Avec le contenu:
[Apache-badbots]
enabled = true
La partie principale de la prison Apache-badbots est définie dans /etc/fail2ban/jail.conf
Donc tout ce que vous avez à faire est de l'activer.
Ensuite, modifiez le filtre Apache-badbots pour inclure vos bots. Modifiez /etc/fail2ban/filter.d/Apache-badbots.conf
. Il contient une ligne particulière pour les robots personnalisés:
badbotscustom = EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou music spider
Les bots sont spécifiés à l'aide d'une expression régulière. Remplacez-les ou clouez les vôtres à l'extrémité séparée par |
S.
badbotscustom = EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou music spider|BLEXBot|ltx71|DotBot|Barkrowler
# OR
badbotscustom = BLEXBot|ltx71|DotBot|Barkrowler
Ensuite, vous souhaiterez modifier la ligne failregex
afin que l'expression régulière corresponde à n'importe quelle partie de l'agent utilisateur, pas seulement à l'ensemble. Changez de ligne:
failregex = ^<Host> -.*"(GET|POST).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s)"$
à (notez les deux .*
supplémentaires):
failregex = ^<Host> -.*"(GET|POST).*HTTP.*".*(?:%(badbots)s|%(badbotscustom)s).*"$
Enfin, rechargez les configurations fail2ban.
Sudo fail2ban-client reload
Ces informations peuvent être utiles pour référence.
En regardant /etc/fail2ban/filter.d/Apache-badbots.conf
Sur une mise à jour du serveur Ubuntu 16.04 que j'ai, il semble obsolète. En particulier, il y a ce commentaire:
# DEV Notes:
# List of bad bots fetched from http://www.user-agents.org
# Generated on Thu Nov 7 14:23:35 PST 2013 by files/gen_badbots.
J'en ai généré un nouveau à partir du référentiel fail2ban git, mais il n'a toujours pas inclus ces bots (peut-être que la source est obsolète ou incomplète). Si vous êtes curieux, vous pouvez en générer un nouveau avec les suivants.
git clone https://github.com/fail2ban/fail2ban
cd fail2ban/
./files/gen_badbots
Le nouveau fichier sera disponible à config/filter.d/Apache-badbots.conf
. Si vous souhaitez l'utiliser, remplacez /etc/fail2ban/filter.d/Apache-badbots.conf
Par celui-ci.
Pour référence, il s'agit de la définition de Apache-badbots à partir de /etc/fail2ban/jail.conf
.
[Apache-badbots]
# Ban hosts which agent identifies spammer robots crawling the web
# for email addresses. The mail outputs are buffered.
port = http,https
logpath = %(Apache_access_log)s
bantime = 172800
maxretry = 1
La variable %(Apache_access_log)s
provient de /etc/fail2ban/paths-debian.conf
Et est définie comme /var/log/Apache2/*access.log
.
Pour référence, voici le Apache-badbots.conf
Que j'ai généré (sans modifications).
# Fail2Ban configuration file
#
# Regexp to catch known spambots and software alike. Please verify
# that it is your intent to block IPs which were driven by
# above mentioned bots.
[Definition]
badbotscustom = EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou music spider
badbots = Atomic_Email_Hunter/4\.0|atSpider/1\.0|autoemailspider|bwh3_user_agent|China Local Browse 2\.6|ContactBot/0\.2|ContentSmartz|DataCha0s/2\.0|DBrowse 1\.4b|DBrowse 1\.4d|Demo Bot DOT 16b|Demo Bot Z 16b|DSurf15a 01|DSurf15a 71|DSurf15a 81|DSurf15a VA|EBrowse 1\.4b|Educate Search VxB|EmailSiphon|EmailSpider|EmailWolf 1\.00|ESurf15a 15|ExtractorPro|Franklin Locator 1\.8|FSurf15a 01|Full Web Bot 0416B|Full Web Bot 0516B|Full Web Bot 2816B|8484 Boston Project v 1\.0|Atomic_Email_Hunter/4\.0|atSpider/1\.0|autoemailspider|bwh3_user_agent|China Local Browse 2\.6|ContactBot/0\.2|ContentSmartz|DataCha0s/2\.0|DBrowse 1\.4b|DBrowse 1\.4d|Demo Bot DOT 16b|Demo Bot Z 16b|DSurf15a 01|DSurf15a 71|DSurf15a 81|DSurf15a VA|EBrowse 1\.4b|Educate Search VxB|EmailSiphon|EmailSpider|EmailWolf 1\.00|ESurf15a 15|ExtractorPro|Franklin Locator 1\.8|FSurf15a 01|Full Web Bot 0416B|Full Web Bot 0516B|Full Web Bot 2816B|8484 Boston Project v 1\.0|Atomic_Email_Hunter/4\.0|atSpider/1\.0|autoemailspider|bwh3_user_agent|China Local Browse 2\.6|ContactBot/0\.2|ContentSmartz|DataCha0s/2\.0|DBrowse 1\.4b|DBrowse 1\.4d|Demo Bot DOT 16b|Demo Bot Z 16b|DSurf15a 01|DSurf15a 71|DSurf15a 81|DSurf15a VA|EBrowse 1\.4b|Educate Search VxB|EmailSiphon|EmailSpider|EmailWolf 1\.00|ESurf15a 15|ExtractorPro|Franklin Locator 1\.8|FSurf15a 01|Full Web Bot 0416B|Full Web Bot 0516B|Full Web Bot 2816B|8484 Boston Project v 1\.0|Atomic_Email_Hunter/4\.0|atSpider/1\.0|autoemailspider|bwh3_user_agent|China Local Browse 2\.6|ContactBot/0\.2|ContentSmartz|DataCha0s/2\.0|DBrowse 1\.4b|DBrowse 1\.4d|Demo Bot DOT 16b|Demo Bot Z 16b|DSurf15a 01|DSurf15a 71|DSurf15a 81|DSurf15a VA|EBrowse 1\.4b|Educate Search VxB|EmailSiphon|EmailSpider|EmailWolf 1\.00|ESurf15a 15|ExtractorPro|Franklin Locator 1\.8|FSurf15a 01|Full Web Bot 0416B|Full Web Bot 0516B|Full Web Bot 2816B|8484 Boston Project v 1\.0|Atomic_Email_Hunter/4\.0|atSpider/1\.0|autoemailspider|bwh3_user_agent|China Local Browse 2\.6|ContactBot/0\.2|ContentSmartz|DataCha0s/2\.0|DBrowse 1\.4b|DBrowse 1\.4d|Demo Bot DOT 16b|Demo Bot Z 16b|DSurf15a 01|DSurf15a 71|DSurf15a 81|DSurf15a VA|EBrowse 1\.4b|Educate Search VxB|EmailSiphon|EmailSpider|EmailWolf 1\.00|ESurf15a 15|ExtractorPro|Franklin Locator 1\.8|FSurf15a 01|Full Web Bot 0416B|Full Web Bot 0516B|Full Web Bot 2816B
failregex = ^<Host> -.*"(GET|POST).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s)"$
ignoreregex =
# DEV Notes:
# List of bad bots fetched from http://www.user-agents.org
# Generated on Sat Feb 9 12:59:57 EST 2019 by ./files/gen_badbots.
#
# Author: Yaroslav Halchenko