ADC

机器人检测

NetScaler 机器人管理系统使用各种技术来检测传入的机器人流量。这些技术用作检测规则来检测机器人类型。技巧如下:

注意:

机器人管理最多支持 32 个配置实体用于阻止列表、允许列表和速率限制技术。

机器人允许列表 - 可作为允许列表绕过的 IP 地址(IPv4 和 IPv6)、子网(IPv4 和 IPv6)和策略表达式的自定义列表。

机器人阻止列表 - 必须阻止访问 Web 应用程序的 IP 地址(IPv4 和 IPv6)、子网(IPv4 和 IPv6)和策略表达式的自定义列表。

IP 信誉 - 此规则检测传入的机器人流量是否来自恶意 IP 地址。

设备指纹 - 此规则检测传入的机器人流量在传入的请求标头中是否包含设备指纹 ID,以及传入的客户端机器人流量的浏览器属性。

限制:

  1. 必须在客户端浏览器中启用 JavaScript。
  2. 不适用于 XML 响应。

机器人日志表达式 - 检测技术使您能够捕获其他信息作为日志消息。数据可以是请求 URL 的用户的姓名、源 IP 地址以及用户发送请求的源端口或表达式生成的数据。

速率限制 -此规则限制来自同一个客户端的多个请求。

机器人陷阱 - 通过在客户端响应中发布陷阱 URL 来检测和阻止自动机器人。如果客户端是人类用户,则该 URL 将显示为不可见且无法访问。该检测技术可有效阻止来自自动机器人的攻击。

TPS -如果最大请求数和请求增加百分比超过配置的时间间隔,则以机器人身份检测传入流量。

CAPTCHA -此规则使用验证码来缓解机器人攻击。CAPTCHA 是一种挑战响应验证,用于确定传入的流量是来自人类用户还是自动机器人。该验证有助于阻止导致 Web 应用程序安全违规的自动机器人。您可以在 IP 信誉和设备指纹检测技术中将 CAPTCHA 配置为机器人操作。

现在,让我们看看如何配置每种技术来检测和管理机器人流量。

如何将设备升级到基于 NetScaler CLI 的机器人管理配置

如果要从旧版本(NetScaler 版本 13.0 版本版本 58.32 或更早版本)升级设备,则必须首先仅将现有的机器人管理配置手动转换为基于 NetScaler CLI 的机器人管理配置一次。完成以下步骤手动转换机器人管理配置。

  1. 升级到最新版本后,使用以下命令连接到升级工具“upgrade_bot_config.py”

    在命令提示符下,键入:

    shell "/var/python/bin/python /netscaler/upgrade_bot_config.py > /var/bot_upgrade_commands.txt"

  2. 使用以下命令运行配置。

    在命令提示符下,键入:

    batch -f /var/bot_upgrade_commands.txt

  3. 保存升级后的配置。

save ns config

配置 NetScaler 基于 CLI 的机器人管理

机器人管理配置使您能够将一种或多种机器人检测技术绑定到特定的机器人配置文件。 要配置基于 NetScaler 的自动程序管理,必须完成以下步骤:

  1. 启用机器人管理
  2. 导入机器人签名
  3. 添加机器人资料
  4. 绑定机器人资料
  5. 添加机器人策略
  6. 绑定机器人策略
  7. 配置机器人设置

注意:

如果要从旧版本升级设备,则必须首先手动转换现有的机器人管理配置。有关更多信息,请参阅 如何升级到基于 NetScaler CLI 的机器人管理配置 部分。

启用机器人管理

在开始之前,请确保在设备上启用了机器人管理功能。如果您有新的 NetScaler 或 VPX,则必须在配置该功能之前启用该功能。如果要将 NetScaler 设备从早期版本升级到当前版本,则必须先启用该功能,然后再对其进行配置。在命令提示符下,键入:

enable ns feature Bot

导入机器人签名

您可以导入默认的签名机器人文件并将其绑定到机器人配置文件。在命令提示符下,键入:

import bot signature [<src>] <name> [-comment <string>] [-overwrite]

其中:

src -本地路径名或 URL(协议、主机、路径和文件名)。最大长度:2047。 > 注意: > > 如果要导入的对象位于需要客户端证书验证才能访问的 HTTPS 服务器上,则导入失败。

name -机器人签名文件对象的名称。这是一个强制性的参数。最大长度:31。

comment -有关签名文件对象的描述。最大长度:255。

overwrite -覆盖现有文件的操作。 > 注意: > > 使用 overwrite 选项更新签名文件中的内容。或者,使用 update bot signature <name> 命令更新 NetScaler 设备上的签名文件。

示例

import bot signature http://www.example.com/signature.json signaturefile -comment commentsforbot –overwrite

注意:

您可以使用覆盖选项更新签名文件中的内容。此外,您可以使用 update bot signature <name> 命令更新 NetScaler 设备中的签名文件。

添加机器人资料

机器人配置文件是用于在设备上配置机器人管理的配置文件设置的集合。您可以配置设置以执行机器人检测。

在命令提示符下,键入:

add bot profile <name> [-signature <string>] [-errorURL <string>] [-trapURL <string>] [-whiteList ( ON | OFF )] [-blackList ( ON | OFF )] [-rateLimit ( ON | OFF )] [-deviceFingerprint ( ON | OFF )] [-deviceFingerprintAction ( none | log | drop | redirect | reset | mitigation )] [-ipReputation ( ON | OFF )] [-trap ( ON | OFF )]

示例:

add bot profile profile1 -signature signature -errorURL http://www.example.com/error.html -trapURL /trap.html -whitelist ON -blacklist ON -ratelimit ON -deviceFingerprint ON -deviceFingerprintAction drop -ipReputation ON -trap ON

绑定机器人资料

创建机器人配置文件后,必须将机器人检测机制绑定到配置文件。

在命令提示符下,键入:

bind bot profile <name> | (-ipReputation [-category <ipReputationCategory>] [-enabled ( ON | OFF )] [-action ( none | log | drop | redirect | reset | mitigation )] [-logMessage <string>]

示例:

以下示例用于将 IP 信誉检测技术绑定到特定的机器人配置文件。

bind bot profile profile5 -ipReputation -category BOTNET -enabled ON -action drop -logMessage message

添加机器人策略

您必须添加用于评估机器人流量的机器人策略。

在命令提示符下,键入:

add bot policy <name> -rule <expression> -profileName <string> [-undefAction <string>] [-comment <string>] [-logAction <string>]

其中,

Name-机器人策略的名称。必须以字母、数字或下划线字符 (_) 开头,并且必须只包含字母、数字和连字符 (-)、句点 (.) 井号 (#)、空格 ()、at (@)、等号 (=)、冒号 (:) 和下划线字符。添加机器人策略后可以更改。

Rule-策略用来确定是否对指定请求应用机器人配置文件的表达式。这是一个强制性的参数。最大长度:1499

profileName-如果请求与该机器人策略相匹配,则要应用的机器人配置文件的名称。这是一个强制性的参数。最大长度:127

undefAction-策略评估结果未定义时要执行的操作 (UNDEF)。UNDEF 事件表示存在内部错误情况。最大长度:127

Comment- 有关此机器人策略的描述。最大长度:255

logAction -用于与该策略匹配的请求的日志操作的名称。最大长度:127

示例:

add bot policy pol1 –rule "HTTP.REQ.HEADER(\"header\").CONTAINS(\"custom\")" - profileName profile1 -undefAction drop –comment commentforbotpolicy –logAction log1

全局绑定机器人策略

在命令提示符下,键入:

bind bot global -policyName <string> -priority <positive_integer> [-gotoPriorityExpression <expression>][-type ( REQ_OVERRIDE | REQ_DEFAULT )] [-invoke (-labelType ( vserver | policylabel ) -labelName <string>) ]

示例:

bind bot global –policyName pol1 –priority 100 –gotoPriorityExpression NEXT -type REQ_OVERRIDE

将机器人策略绑定到虚拟服务器

在命令提示符下,键入:

bind lb vserver <name>@ ((<serviceName>@ [-weight <positive_integer>] ) | <serviceGroupName>@ | (-policyName <string>@ [-priority <positive_integer>] [-gotoPriorityExpression <expression>]

示例:

bind lb vserver lb-server1 –policyName pol1 –priority 100 –gotoPriorityExpression NEXT -type REQ_OVERRIDE

配置机器人设置

如有必要,您可以自定义默认设置。 在命令提示符下,键入:

set bot settings [-defaultProfile <string>] [-javaScriptName <string>] [-sessionTimeout <positive_integer>] [-sessionCookieName <string>] [-dfpRequestLimit <positive_integer>] [-signatureAutoUpdate ( ON | OFF )] [-signatureUrl <URL>] [-proxyServer <ip_addr|ipv6_addr|\*>] [-proxyPort <port|\*>]
<!--NeedCopy-->

其中,

defaultProfile -连接与任何策略不匹配时使用的配置文件。默认设置为 “ “,这会将不匹配的连接发送回 NetScaler,而无需尝试对其进行进一步筛选。最大长度:31

javaScriptName -僵尸网络功能在响应中使用的 JavaScript 的名称。必须以字母或数字开头,并且可以由 1 到 31 个字母、数字以及连字符 (-) 和下划线 (_) 符号组成。以下要求仅适用于 NetScaler CLI:如果名称包含一个或多个空格,请将名称用双引号或单引号括起来(例如,“我的 Cookie 名称”或“我的 Cookie 名称”)。最大长度:31

sessionTimeout -会话超时(以秒为单位),之后用户会话终止。

Minimum value -1,最大值:65535

sessionCookieName -僵尸网络功能使用它进行跟踪的 SessionCookie 的名称。必须以字母或数字开头,并且可以由 1 到 31 个字母、数字以及连字符 (-) 和下划线 (_) 符号组成。以下要求仅适用于 NetScaler CLI:如果名称包含一个或多个空格,请将名称用双引号或单引号括起来(例如,“我的 Cookie 名称”或“我的 Cookie 名称”)。最大长度:31

dfpRequestLimit -如果启用了设备指纹,则允许在没有机器人会话 cookie 的情况下允许的请求数量。最小值:1,最大值:4294967295

signatureAutoUpdate -用于启用/禁用机器人自动更新签名的标志。可能的值:ON、OFF。 默认值:OFF

signatureUrl -用于从服务器下载机器人签名映射文件的 URL。默认值:https://nsbotsignatures.s3.amazonaws.com/BotSignatureMapping.json。最大长度:2047

proxyServer - 用于从 AWS 获取更新的签名的代理服务器 IP。

proxyPort - 代理服务器端口,用于从 AWS 获取更新的签名。默认值:8080

proxyUsername -用于向代理服务器进行身份验证以下载签名更新的用户名。

proxyPassword — 用于向代理服务器进行身份验证以下载签名更新的密码。

示例:

set bot settings –defaultProfile profile1 –javaScriptName json.js –sessionTimeout 1000 –sessionCookieName session -proxyServer 10.102.30.112 -proxyPort 3128 -proxyUsername defaultuser -proxyPassword defaultPassword

使用 NetScaler GUI 配置机器人管理

您可以通过首先在设备上启用该功能来配置 NetScaler 机器人管理。启用后,您可以创建机器人策略来评估作为机器人的传入流量,然后将流量发送到机器人配置文件。然后,创建一个机器人配置文件,然后将配置文件绑定到机器人签名。或者,您还可以克隆默认的机器人签名文件,然后使用签名文件来配置检测技术。创建签名文件后,您可以将其导入机器人配置文件。

机器人管理页

  1. 启用机器人管理功能
  2. 配置机器人管理设置
  3. 克隆 NetScaler 机器人的默认签名
  4. 导入 NetScaler 机器人签名
  5. 配置机器人配置文件和签名设置
  6. 创建机器人资料
  7. 创建机器人策略

启用机器人管理功能

完成以下步骤以启用机器人管理:

  1. 在导航窗格上,展开 “ 系 ”,然后单击 “ 设置” > “配置高级功能”。
  2. 在 “ 配置高功能 ” 页面上,选中 NetScaler 机器人管理复 选框。
  3. 单击确定

配置机器人管理设置

完成以下步骤以配置设备指纹技术:

  1. 导航到安全 > NetScaler 机器人管理
  2. 在详细信息窗格的设置下,单击更改 NetScaler 机器人管理设置
  3. 配置 NetScaler 机器人管理设置中,设置以下参数。

    1. 默认配置文件。选择机器人配置文件。
    2. JavaScript 名称。机器人管理在响应客户端时使用的 JavaScript 文件的名称。
    3. 会话超时。超时(以秒为单位),在此之后终止用户会话。
    4. 会话 Cookie。机器人管理系统用于跟踪的会话 cookie 的名称。
    5. 设备指纹请求限制。如果启用了设备指纹,则在不使用机器人会话 cookie 的情况下允许的请求数。
    6. 代理服务器-上载最新签名的代理服务器 IP 地址。
    7. 代理端口 — 上载最新签名的计算机的端口号。
    8. 代理用户名-用于验证代理服务器的用户名
    9. 代理密码-用于验证代理服务器的密码。

      注意:

      如果配置了“代理服务器”和“代理端口”字段,则会启用代理用户名和代理密码字段。

  4. 单击确定

克隆机器人签名文件

完成以下步骤以克隆机器人签名文件:

  1. 导航到安全性 > NetScaler 机器人管理签名
  2. NetScaler 机器人管理签名页面中,选择默认的机器人签名记录,然后单击“克隆”。
  3. 克隆机器人签 名页面中,输入名称并编辑签名数据。
  4. 单击 Create(创建)。

导入机器人签名文件

如果您有自己的签名文件,则可以将其导入为文件、文本或 URL。执行以下步骤导入机器人签名文件:

  1. 导航到安全性 > NetScaler 机器人管理签名
  2. NetScaler 机器人管理签名页面上,将文件导入为 URL、文件或文本。
  3. 单击继续
  4. 在“导入 NetScaler 机器人管理签名”页面上,设置以下参数。
    1. 名称-机器人签名文件的名称。
    2. 注释-关于导入文件的简要描述。
    3. 覆盖-选中允许在文件更新期间覆盖数据的复选框。
    4. 签名数据-修改签名参数
  5. 单击 Done(完成)。

配置 IP 信誉

IP 信誉机器人技术使用 Webroot 的 IP 信誉数据库和云服务提供商数据库来验证客户端请求是恶意 IP 地址还是公有云 IP 地址。作为机器人类别的一部分,然后将一个机器人操作与其关联。完成以下步骤以配置 Webroot IP 信誉和云服务提供商数据库类别。

  1. 导航到 安全 > NetScaler 机器人管理配置文件
  2. NetScaler 机器人管理配置文件页面上,选择一个配置文件,然后单击编辑
  3. NetScaler 机器人管理配置文件页面上,转到“配置文件设置”部分,然后单击 IP 信誉
  4. IP 信誉 部分,设置以下参数:
    1. 已启用。选中该复选框可在检测过程中验证传入的机器人流量。
    2. 配置类别。您可以使用 IP 信誉技术处理不同类别下的传入机器人流量。根据配置的类别,您可以删除或重定向机器人流量。单击 添加 以配置恶意机器人类别。
    3. 配置 NetScaler 机器人管理配置文件 IP 信誉绑定页面中,设置以下参数:

      1. Category(类别)。选择 Webroot IP 信誉机器人类别,将客户端请求验证为恶意 IP 地址。

        1. IP_BASED - 此类别检查客户端 IP 地址(IPv4 和 IPv6)是否为恶意地址。
        2. BOTNET - 此类别包括僵尸网络 C&C 频道,以及由机器人主服务器控制的受感染的僵尸计算机。
        3. SPAM_SOURCES - 此类别包括通过代理发送垃圾邮件、异常 SMTP 活动和论坛垃圾邮件活动。
        4. SCANNERS - 此类别包括所有侦测,例如探测器、主机扫描、域扫描和密码暴力破解攻击。
        5. DOS - 此类别包括 DOS、DDOS、异常同步泛洪和异常流量检测。
        6. REPUTATION - 此类别拒绝来自当前已知感染了恶意软件的 IP 地址(IPv4 和 IPv6)的访问。此类别还包括 Webroot 信誉指数平均得分较低的 IP 地址。启用此类别将阻止从已识别为联系恶意软件分发点的来源访问。
        7. PHISHING - 此类别包括托管钓鱼网站和其他类型的欺诈活动的IP地址(IPv4和IPv6),例如广告单击欺诈或游戏欺诈。
        8. PROXY - 此类别包括提供代理服务的 IP 地址(IPv4 和 IPv6)。
        9. NETWORK - 提供代理和匿名服务的IP,包括洋葱路由器又名 TOR 或暗网。
        10. MOBILE_THREATS - 此类别使用对移动设备有害的地址列表检查客户端 IP 地址(IPv4 和 IPv6)。
      2. Category(类别)。选择 Webroot 公有云服务提供商类别以验证客户端请求是公有云 IP 地址。

        1. AWS - 此类别使用来自 AWS 的公有云地址列表来检查客户端 IP 地址。
        2. GCP - 此类别使用来自 Google Cloud Platform 的公有云地址列表来检查客户端 IP 地址。
        3. AZURE - 此类别使用 Azure 中的公有云地址列表检查客户端地址。
        4. ORACLE - 此类别将客户端 IP 地址与来自 Oracle 的公有云地址列表一起检查
        5. IBM - 此类别将客户端 IP 地址与 IBM 的公有云地址列表一起检查。
        6. SALESFORCE - 此类别使用 Salesforce 的公有云地址列表来检查客户端 IP 地址。

        Webroot IP 信誉机器人类别的可能值:IP、BOTNETS、SPAM_SOURCES、SCANNERS、DOS、REPUTATION、PHISHING、PROXY、NETWORK、MOBILE_THREATS。

        Webroot 公有云服务提供商类别的可能值:AWS、GCP、AZURE、ORACLE、IBM、SALESFORCE。

      3. 已启用。选中该复选框以验证 IP 信誉签名检测。
      4. 机器人操作。根据配置的类别,您不能分配任何操作、删除、重定向或缓解措施。
      5. 日志。选中该复选框以存储日志条目。
      6. 日志消息。日志的简要说明。
      7. 评论。关于机器人类别的简要说明。
  5. 单击确定
  6. 单击更新
  7. 单击 Done(完成)。

    配置 IP 信誉

注意

如果您禁用 IP 信誉,请确保停止其下载。完成以下步骤以停止 IP 信誉下载:

  1. 导航到 安全 > NetScaler 机器人管理 > 更改 NetScaler 机器人管理设置
  2. 默认非侵入性配置文件 更改为 BOT_BYPASS

有关配置文件设置的更多信息,请参阅配置机器人配置文件设置

配置机器人静态签名

此检测技术使您能够从浏览器详细信息中识别用户代理信息。根据用户代理信息,该机器人被标识为坏机器人或好机器人,然后您将机器人操作分配给它。

执行以下步骤来配置静态签名技术:

  1. 在导航窗格上,展开“安全”>“NetScaler 机器人管理”“签名”。
  2. NetScaler 机器人管理签名页面上,选择签名文件并单击“编辑”。
  3. NetScaler 机器人管理签名页面上,转到“签名设置”部分,然后单击“机器人签名”。
  4. 机器人签名 部分中,设置以下参数:
    1. 配置 静态签名。本节有机器人静态签名记录的列表。您可以选择一条记录,然后单击 编辑 以为其分配机器人操作。
    2. 单击确定
  5. 单击 更新签名
  6. 单击 Done(完成)。

机器人静态签名

机器人静态签名描述

NetScaler 机器人管理可保护您的 Web 应用程序免受机器人机器人静态签名有助于根据传入请求中的用户代理等请求参数识别好机器人和坏机器人。
文件中的签名列表非常庞大,还会添加新的规则,并定期删除陈旧的规则。作为管理员,您可能希望在某个类别下搜索特定签名或签名列表。为了轻松过滤签名,机器人签名页面提供了增强的搜索功能。使用搜索功能,您可以查找签名规则并根据一个或多个签名参数(如操作、签名 ID、开发人员和签名名称)配置其属性。

操作-选择您希望为特定签名规则类别配置的机器人操作。以下是可用的操作类型:

  • 启用所选-启用所有选定的签名规则。
  • 禁用选定的-禁用所有选定的签名规则。
  • 删除选定内容-对所有选定的签名规则选择“删除”操作。
  • 重定向选定项-将“重定向”操作应用于所有选定的签名规则。
  • 重置选定项-将“重置”操作应用于所有选定的签名规则。
  • 记录选定内容-将“日志”操作应用于所有选定的签名规则。
  • 移除删除选定内容-取消对所有选定签名规则的删除操作。
  • 移除选定重定向-取消对所有选定签名规则的重定向操作。
  • 移除重置选定内容-取消对所有选定签名规则的重置操作。
  • 移除选定日志-取消对所有选定签名规则的日志操作。

类别-选择一个类别以相应地筛选签名规则。以下是可用于对签名规则进行排序的类别列表。

  • 操作-根据机器人操作进行排序。
  • 类别-根据机器人类别进行排序。
  • 开发者-根据主办公司发布商进行排序。
  • 已启用-根据启用的签名规则进行排序。
  • ID-根据签名规则 ID 进行排序。
  • 日志-根据启用了日志记录的签名规则进行排序。
  • 名称-根据签名规则名称进行排序。
  • 类型-根据签名类型进行排序。
  • 版本-根据签名规则版本进行排序。

使用 NetScaler GUI 根据操作和类别类型搜索机器人静态签名规则

  1. 导航到安全性 > NetScaler 机器人管理 > 签名
  2. 在详细信息页面中,单击 添加
  3. NetScaler 机器人管理签名页面中,单击“静态签名”部分中的编辑。
  4. 配置静态签名 部分,从下拉列表中选择签名操作。
  5. 使用搜索功能选择一个类别并相应地筛选规则。
  6. 单击更新

使用 NetScaler GUI 编辑机器人静态签名规则属性

  1. 导航到安全性 > NetScaler 机器人管理 > 签名
  2. 在详细信息页面中,单击 添加
  3. NetScaler 机器人管理签名页面中,单击“静态签名”部分中的编辑。
  4. 配置静态签名 部分,从下拉列表中选择一个操作。
  5. 使用搜索功能选择一个类别并相应地筛选规则。
  6. 从静态签名列表中,选择一个签名以修改其属性。
  7. 单击确定进行确认。

有关配置文件设置的更多信息,请参阅配置机器人签名设置

创建机器人管理档案

机器人配置文件是用于检测机器人类型的机器人管理设置的集合。在配置文件中,您可以确定 Web App Firewall 如何将其每个过滤器(或检查)应用于网站的机器人流量以及来自这些过滤器的响应。

完成以下步骤来配置机器人配置文件:

  1. 导航到安全 > NetScaler 机器人管理 > 配置文件
  2. 在详细信息窗格中,单击“添加”。
  3. 在“创建 NetScaler 机器人管理配置文件”页面中,设置以下参数。

    1. 名称。机器人配置文件名称。
    2. 签名。机器人签名文件的名称。
    3. 错误的 URL。用于重定向的 URL。
    4. 评论。关于配置文件的简要说明。
  4. 单击创建关闭

创建机器人策略

机器人策略控制进入机器人管理系统的流量,还控制发送到审核日志服务器的机器人日志。按照过程配置机器人策略。

  1. 导航到安全性 > NetScaler 机器人管理 > 机器人策略
  2. 在详细信息窗格中,单击“添加”。
  3. 创建 NetScaler 机器人管理策略页面中,设置以下参数。
    1. 名称。机器人策略的名称。
    2. 表达式。直接在文本区域中键入策略表达式或规则。
    3. 机器人配置文件。机器人配置文件以应用机器人策略。
    4. 未定义的动作。选择您希望分配的操作。
    5. 评论。有关该策略的简要说明。
    6. 记录操作。审核记录机器人流量的日志消息操作。有关审核日志操作的更多信息,请参阅审核日志记录主题。
  4. 单击创建关闭

NetScaler 机器人管理删除的请求标头

许多与缓存相关的请求标头都会被删除,以查看会话上下文中的每个请求。同样,如果请求包含允许网络服务器发送压缩响应的编码标头,则机器人管理层会删除此标头,以便机器人管理层检查未压缩的服务器响应中的内容以插入 JavaScript。

机器人管理会删除以下请求标头:

范围-用于从失败或部分文件传输中恢复。

If-Range-允许客户端在缓存中已包含部分对象时检索部分对象(有条件获取)。

If-Modified-Since-如果自此字段中指定的时间起未修改请求的对象,则不会从服务器返回实体。您会得到一个HTTP 304未修改的错误。

If-None-Match-允许以最小的开销高效更新缓存的信息。

接受编码-允许对特定对象(例如 gzip)使用哪些编码方法。

机器人检测