web-dev-qa-db-fra.com

Bloquer badbot avec fail2ban via les agents utilisateurs dans access.log

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 ...

6
alebal

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
7
user369450