通过 access.log 中的用户代理使用 fail2ban 阻止 badbot

通过 access.log 中的用户代理使用 fail2ban 阻止 badbot

我如何创建一个过滤器来使用 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)

该列表来自:

sudo cat /var/log/apache2/access.log | awk -F\" '{print $6}' | sort | uniq -c | sort -n

我已经尝试过 apache-badbot.conf,但它似乎不起作用......

答案1

处理烦人的机器人的正确方法是在“robots.txt”中阻止它们。但您的评论表明他们忽略了该指令。通过用户代理进行阻止最终将是一场猫捉老鼠的游戏,但如果您想这样做,您需要以下内容。

因此,您需要启用Apache-badbots 简介jail 读取 Apache 访问日志(如果尚未读取)。创建/etc/fail2ban/jail.d/apache-badbots.local包含以下内容的文件:

[apache-badbots]
enabled = true

主要部分Apache-badbots 简介jail 已被定义,/etc/fail2ban/jail.conf所以您所要做的就是启用它。

接下来,修改Apache-badbots 简介过滤器以包含您的机器人。编辑/etc/fail2ban/filter.d/apache-badbots.conf。其中有一行专门用于自定义机器人:

badbotscustom = EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou music spider

机器人使用正则表达式指定。要么替换那些,要么在末尾添加以|s 分隔的机器人。

badbotscustom = EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou music spider|BLEXBot|ltx71|DotBot|Barkrowler
# OR
badbotscustom = BLEXBot|ltx71|DotBot|Barkrowler

接下来,您需要修改该failregex行,以便正则表达式匹配用户代理的任何部分,而不仅仅是整个部分。更改该行:

failregex = ^<HOST> -.*"(GET|POST).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s)"$

至(请注意另外两个.*):

failregex = ^<HOST> -.*"(GET|POST).*HTTP.*".*(?:%(badbots)s|%(badbotscustom)s).*"$

最后,重新加载fail2ban配置。

sudo fail2ban-client reload

这些信息或许可以作为参考。

看看/etc/fail2ban/filter.d/apache-badbots.conf我拥有的最新 Ubuntu 16.04 服务器更新,它看起来已经过时了。特别是有这样一条评论:

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

我从失败2bangit 存储库,但仍然没有包含这些机器人(可能是源代码过时或不完整)。如果您感兴趣,可以使用以下命令生成一个新的。

git clone https://github.com/fail2ban/fail2ban
cd fail2ban/
./files/gen_badbots

新文件将在config/filter.d/apache-badbots.conf这里在 Github 上)。如果你想使用它,请用/etc/fail2ban/filter.d/apache-badbots.conf它替换。

作为参考,这是Apache-badbots 简介/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

%(apache_access_log)s变量来自/etc/fail2ban/paths-debian.conf并定义为/var/log/apache2/*access.log

作为参考,这是apache-badbots.conf我生成的(未经修改)。

# 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

相关内容