应对机器人行为异常的策略


9

我有一个网站,出于监管原因,可能不会自动建立索引或搜索。这意味着我们需要让所有机器人远离,并防止它们爬行该站点。

显然,我们有一个robots.txt文件,从一开始就不允许这样做。但是,观察robots.txt文件只是行为良好的机器人所能做的。最近,我们遇到了行为不佳的机器人的一些问题。我已经将Apache配置为禁止一些用户代理,但是解决这个问题很容易。

因此,问题是,是否有某种方法可以配置Apache(也许通过安装某个模块?)来检测类似机器人的行为并做出响应?还有其他想法吗?

目前,我所能做的就是基于对日志的手动检查来禁止IP地址,这根本不是可行的长期策略。


鉴于您正在询问Apache模块(签出mod_evasive),并且您的解决方案可能最终涉及一些自定义日志解析和iptables规则,如果您对阻止特定的bot行为有疑问,则此主题可能是ServerFault.com的更好选择。
danlefree 2011年

Answers:


7

您可以链接到一个隐藏的页面,该页面在被访问时会捕获僵尸程序的用户代理和IP地址,然后将它们中的一个或两个附加到.htaccess文件中,以永久阻止它们。它是自动化的,因此您无需做任何维护。


这是一个非常有趣的想法,尽管万一他们使用的是非常通用的用户代理,您也不想自动覆盖任何用户代理。
克里斯(Kris)

我会坚持使用IP地址。另外,如果您使用I地址并从一组IP中看到一个模式,则可以使用一个简单的规则轻松地将它们全部阻止,而不必维护一长串的单个IP。
约翰·孔德

3
可以使用描述的方法来随意阻止不良的bot爬网您的网站。但是1)有可能绕开(不良机器人及其主人可能会学习如何识别蜜罐并知道如何避免它们);和2)此方法还可能阻止合法的人类用户,这些人类用户已被重新分配的IP(已被列入黑名单,属于行为异常的机器人)。如果您有法律法规义务不对您的网站建立索引或自动锁定,则必须使用正确的身份验证,并且仅授予经过身份验证的用户访问权限。其他一切都不安全。
2013年

好主意。但是,如果我实施了它,我敢打赌自己会一直不小心撞到蜜罐,并且会一直被自己的站点屏蔽。
JW01 2014年

@ JW01您要做的所有避免发生的事情就是不要访问处理此问题的页面。由于没有任何内容,因此应该很简单。
约翰·孔德

2

您可以使用与Project Honeypot的IP黑名单对接的Apache模块,背负其他人在识别不良IP方面所做的工作。如果您要大规模进行此操作,建议您提供运行蜜罐的礼貌。


当我在网站上添加Project Honeypot的IP黑名单时,我感到很惊讶。这么多年的痛苦仅仅通过阻止坏人而结束。我认为您也可以使用它来检测搜索引擎机器人。因此,加上1。
JW01

但问题的症结在于:如果您有公共页面,则希望将其编入索引。因此,需要某种身份验证。参见迈克尔·汉普顿(Michael Hampton)的回答
JW01 2014年

2

正如Gisle Hannemyr 在评论中提到的那样,做到这一点的最佳方法是要求所有用户登录,并且不向未登录的任何人提供受限内容。

如果由于某种原因您不需要登录,仍然可以使用一些后备功能(免责声明:这两者都是我的错,部分或全部):

  1. OWASP的ModSecurity核心规则集包含了一些旨在检测自动化规则,甚至当机器人已经采取措施,把自己伪装成一个浏览器(例如伪造的用户代理字符串)。如果您完全控制服务器(例如VPS,专用服务器或更大的服务器),则可以将这些规则与ModSecurity一起使用

    此规则集还包含其他旨在阻止各种不当行为的规则;如果您没有看过,肯定应该。

  2. 如果您不能完全控制服务器(例如,您位于共享的Web托管上),并且主机不允许您使用自己的ModSecurity规则,则可以在应用程序级别尝试一些操作,例如我自己的Bad行为。我于2005年启动了这个项目,以打击博客垃圾邮件和内容抓取工具(例如与您有关的内容抓取工具)。可以将其添加到任何基于PHP的网站。

    我还应该注意,许多不良行为的规则已被并入ModSecurity Core规则集,因此,只要启用了这些规则,则同时运行这两个规则将是多余的。这些规则在核心规则集中被注释为源自不良行为。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.