如何创建过滤器以使用 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,但它似乎不起作用......
处理烦人的机器人的正确方法是在“robots.txt”中阻止它们。但是您的评论表明他们忽略了该指令。用户代理阻止最终将是一场猫捉老鼠的游戏,但如果你想这样做,你需要以下内容。
因此,如果您还没有启用读取 Apache 访问日志的apache-badbots jail,则需要启用。使用以下内容创建文件
/etc/fail2ban/jail.d/apache-badbots.local
:apache-badbots jail的主要部分是在其中定义的,
/etc/fail2ban/jail.conf
因此您所要做的就是启用它。接下来,修改apache-badbots过滤器以包含您的机器人。编辑
/etc/fail2ban/filter.d/apache-badbots.conf
. 其中有一个自定义机器人的特定行:机器人是使用正则表达式指定的。要么替换那些,要么把你的用
|
s 分开。接下来,您需要修改该
failregex
行,以便正则表达式匹配用户代理的任何部分,而不仅仅是整个内容。换行:to(注意另外两个
.*
):最后,重新加载 fail2ban 配置。
此信息可能有助于参考。
查看
/etc/fail2ban/filter.d/apache-badbots.conf
我拥有的最新 Ubuntu 16.04 服务器的更新,它看起来已经过时了。特别是有这样的评论:我从fail2ban git 存储库生成了一个新的,但它仍然不包括那些机器人(可能源已过时或不完整)。如果你很好奇,你可以用下面的方法生成一个新的。
新文件将在
config/filter.d/apache-badbots.conf
. 如果你想用它替换/etc/fail2ban/filter.d/apache-badbots.conf
它。作为参考,这是apache-badbots的定义
/etc/fail2ban/jail.conf
。%(apache_access_log)s
变量来自并/etc/fail2ban/paths-debian.conf
定义为/var/log/apache2/*access.log
。作为参考,这是
apache-badbots.conf
我生成的(未经修改)。